Baixe o app para aproveitar ainda mais
Prévia do material em texto
ETB - Escola Técnica de Brasília FIC EAD - DESENVOLVEDOR DE APLICATIVOS PARA MÍDIAS DIGITAIS Material Base para o curso Desenvolvedor de Aplicativos para Mídias Digitais na modali- dade EAD Orientador: Prof. Gustavo Vinícius Martins Arvelos Brasília, DF 2020 Sumário 1 MÍDIAS DIGITAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 O que são Mídias digitais? . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Tipos de mídias digitais . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 Mídia paga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.2 Mídia ganha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.3 Mídia própria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Benefícios da mídia digital . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Estratégias de mídia digital . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Planejamento de mídias digitais . . . . . . . . . . . . . . . . . . . . . 9 1.6 Mídias Sociais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 FUNDAMENTOS DE HARDWARE . . . . . . . . . . . . . . . . . . 13 2.1 Componentes físicos do Computador . . . . . . . . . . . . . . . . . . 13 2.2 Componentes lógicos do Computador . . . . . . . . . . . . . . . . . . 15 2.3 Aplicações Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.1 Protocolo HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.4 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.5 Swift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3 LÓGICA DE PROGRAMAÇÃO . . . . . . . . . . . . . . . . . . . . . 23 4 DESIGN DE INTERFACE . . . . . . . . . . . . . . . . . . . . . . . . 31 5 APLICATIVOS HÍBRIDOS . . . . . . . . . . . . . . . . . . . . . . . 35 6 AMBIENTE E DESENVOLVIMENTO . . . . . . . . . . . . . . . . . 41 3 1 Mídias Digitais 1.1 O que são Mídias digitais? Mídia Digital é toda comunicação feita através da Internet. Portanto, banners em sites, anúncios pagos, comerciais que antecedem vídeos no Youtube, Links Patrocinados e Anúncios feitos no Instagram, são alguns dos exemplos de Mídia Digital. Gerar conteúdos para páginas, blogs e sites também fazem parte da Mídia Digi- tal. Essa forma de trabalho de gerar conteúdo, tem como principal função em criar um relacionamento com os usuários, principalmente quando falamos de redes sociais. Figura 1 – Mídias Digitais Mídia Digital tem um enorme leque de funcionalidades, ferramentas e técnicas para divulgação de empresas ou marcas. O profissional de Mídia Digital, deve buscar sempre se atualizar, pois a sua área de atuação está em constante avanço. É necessário buscar conhecimento o tempo todo e ter muita criatividade, pois esse mercado necessita de inovação constantemente. De acordo com o IAB Brasil, a publicidade online vem em crescimento. No ano de 2014 teve investimento de R$ 8,3 bilhões. Em 2015 é previsto o aumento em 14% , resultando em R$ 9,5 bilhões. Considerando que são dados antigos, e o espaço que esse tipo de mídia tem ganhado nós últimos anos a expectativa é ainda maior para os dias atuais. A mídia digital no Brasil já responde por um terço do investimento em marketing e publicidade no país — nada menos que R$16,1 bilhões apenas em 2018 —, segundo a Digi- tal AdSpend 2019, levantamento realizado pela PwC e pela IAB (Interactive Advertising 4 Capítulo 1. Mídias Digitais Bureau). A capacidade de interação com os consumidores, adequados investimentos, que podem acompanhar tanto o tamanho quanto o capital de investimento do comerciante, são importante fatores que tem feito esse tipo de mídia ganhar espaço. Acompanhada de diversas vantagens, esse tipo de publicidade ainda permite o controle e acompanhamento em tempo real, com as mais diversas ferramentas, de como a campanha está se saindo. Incluindo ainda meios de alavancagem e estas titicas. Um dos motivos mais importantes do sucesso é a facilidade de uso e a alta capaci- dade de envolvimento gerada com o usuário final. São desde jogos a sistemas interativos. A Mídia Digital é uma mistura de tecnologia e conteúdo e a criação de produ- tos de mídia digital requer equipes de profissionais com diversas habilidades, incluindo habilidades técnicas, artísticas, de coordenação analítica e de produção. Hoje, o clima é de ampla consolidação para as mídias digitais e o YouTube, o Facebook e o Instagram são as principais estrelas desse novo cenário da comunicação. O nosso mundo é preenchido por produtos de mídia digital e esses produtos possibilitam e fornecem experiências em muitos setores, incluindo setores que normalmente não estão associados ao digital, como saúde, governo e educação. São exemplos onde a mídia digital podem ser encontrada: • e-Commerces • Jogos – console, online e celular • Mídia social • Vídeo • Realidade aumentada • Realidade virtual 1.2 Tipos de mídias digitais Analisando em um alto grau, a maioria do conteúdo consumido trabalham com mídias digitais, mas o que interessa um profissional de marketing são as aquelas que farão o seu produto ou serviço vender mais. Nesse sentido o veiculo vinculador da mensagem, jogos, letreis de ônibus, só criam valor de alcançarem o seu objetivo que é a venda. Diante a quantidade de conteúdo que pode ser classificada como mídia digitai e para um melhor entendimento essas podem ser distribuídas em mídia paga, mídia ganha 1.2. Tipos de mídias digitais 5 e mídia própria, cada uma delas com um conjunto de ferramentas específico e um papel essencial nas estratégias de divulgação. 1.2.1 Mídia paga A mídia digital paga é a que mais se assemelha aos outros tipos de mídia tradi- cionais. Tal como um patrocinador paga a uma rede de TV ou rádio para exibirem seu anúncio, na internet, empresas e profissionais pagam para terem seus domínios e banners promovidos em sites e plataformas de grande alcance. Se inserem aqui as famosas ferramentas de publicidade na internet, como: Google Ads (antigo Google AdWords); Google Adsense Facebook Ads, Instagram Ads. No Google Ads, você paga para que seu site seja listado nas primeiras posições do resultado de busca de uma palavra-chave específica, já no Google AdSense, você paga para que milhares de páginas parceiras do Google exibam banners da sua empresa. Nas redes sociais, as ferramentas de publicidade em geral são usadas para aumentar o alcance de perfis, páginas e postagens, embora algumas delas, como o Facebook, também exibam banners em suas páginas. A maior vantagem da mídia digital paga é que ela é rápida. Em poucos cliques você consegue gerar uma ampla visibilidade para a sua marca. Entretanto, não podemos esquecer que existem milhões de empresas anunciando na internet e as pessoas comumente ignoram anúncios, justamente devido à poluição de conteúdo publicitário disponível. Outro ponto negativo é o investimento. Esse tipo de serviço está se tornando cada vez mais caro e competitivo, principalmente em plataformas que adotam o modelo de “leilão virtual” como o Google Ads. Ainda assim, é inegável que a mídia paga é muito efetiva e essencial, principalmente para grandes empresas que precisam alcançar vastos públicos constantemente. No Marke- ting Digital, as estratégias que utilizam mídia paga são inseridas no chamado Outbound Marketing. 1.2.2 Mídia ganha A mídia digital ganha ou gratuita pode ser comparada à mídia espontânea, ou seja, o conhecido “boca a boca” do Marketing na internet. Entretanto, essa definição é bastante limitada, pois sugere que os resultados são obtidos de uma maneira demasiadamente natural, o que não é verdade. A mídia ganha é aquela em que não há um pagamento direto para a exibição, distribuição ou promoção do conteúdo, porém, embora ela seja essencialmente gratuita, investimentos são necessários para que o público seja atingido e engajado. 6 Capítulo 1. Mídias Digitais Nos buscadores, a mídia ganha pode ser vista logo abaixo dos sites patrocinados,são os resultados orgânicos no ranking de pesquisa, assim como as postagens nas redes sociais que não são promovidas. Ainda que não seja necessário realizar nenhum pagamento ao Google ou para as redes sociais para que seu conteúdo seja exibido, serão necessários investimentos na produção de materiais relevantes, gerenciadores de conteúdo (CMS), estratégias de SEO (otimização para os motores de busca) e ferramentas de monitoramento. Nesse caso, temos as estratégias de Inbound Marketing, que, ao contrário do Out- bound, buscam atrair um público definido e conduzi-lo por um funil de vendas até o fechamento, disponibilizando conteúdos de interesse da audiência. A maior vantagem dessa abordagem é a segmentação e o relacionamento. Em vez de atingir uma grande massa, podemos nos concentrar em um nicho e desenvolver um relacionamento com essas pessoas de uma forma muito mais efetiva. A maior desvantagem é o tempo. Estratégias de atração e SEO costumam demorar um pouco mais para se consolidarem, portanto, ao optar por esse tipo de comunicação, é fundamental adotar uma visão estratégica (de longo prazo). A mídia ganha é gratuita, adquirida por boas práticas estratégicas em mídias sociais e SEO, bem como boas práticas de RP. Você não pode comprar a boa opinião de alguém online e é por isso que é conhecido como mídia “ganha” – você precisa trabalhar para isso. Às vezes, esse trabalho pode ser bastante difícil, especialmente se o seu negócio estiver em um campo altamente competitivo. Mas pode ser imensamente eficaz por causa de sua natureza orgânica. Também é mais credível do que um anúncio pago – mais pessoas ouvirão o endosso de uma pessoa real. A mídia ganha pode ser problemática porque você não a controla e, às vezes, suas partes interessadas têm opiniões negativas sobre seu serviço. No entanto, o boca-a-boca é um dos principais impulsionadores de vendas, por isso é muito valioso cultivar a mídia ganha. 1.2.3 Mídia própria Talvez o menos compreendido dos três tipos de mídias digitais, a mídia digital própria, como o próprio termo esclarece, é a mídia controlada diretamente pela empresa em questão. O site corporativo, blog, e-commerce ou aplicativo de uma organização geral- mente são canais com conteúdo e estrutura totalmente pertences e dirigidas pela marca responsável. Isso significa que o a empresa tem total controle sobre o material podendo assim ser totalmente modificado de acordo com as necessidades da empresa, contudo a 1.3. Benefícios da mídia digital 7 mesma também possui total responsabilidade pelo conteúdo divulgado. Observe que, ainda que a sua empresa crie e gerencie os materiais postados em uma página ou perfil dentro de uma rede social, aquele espaço está sendo cedido por outra companhia que impõe regras e condições para todas as atividades realizadas dentro da sua plataforma. Veja, também, que as mídias próprias se entrelaçam com os outros tipos de mí- dia citados. Você pode promover o seu site dentro de uma rede social, por exemplo, ou trabalhar o SEO do seu conteúdo para que ele conquiste uma boa posição nos resultados orgânicos das pesquisas. Essa definição, portanto, está mais atrelada à propriedade do conteúdo. Plata- formas populares como YouTube, Facebook e Instagram apresentam uma posição sólida no mercado atualmente, mas suas regras e resultados estão sempre mudando — nunca saberemos se elas continuarão entregando os mesmos retornos nos próximos anos. É justamente por isso que é fundamental investir em canais próprios para garantir a longevidade e o controle sobre o seu conteúdo e, a partir deles, se beneficiar do espaço gerenciado por empresas terceiras. Isso trás uma sólida consolidação diante os clientes o que pode garantir a estabilidade da empresa diante crises e situações adversas. Quando seu público interage com as mídias próprias de uma empresa, geralmente são atraídas para explorar mais seu conteúdo. Se alguém gota de uma postagem de blog em seu site, ele pode clicar e ver os recursos de sua empresa. A mídia de propriedade também tem o benefício da longevidade. Os anúncios só serão exibidos por um determinado período de tempo, mas seu site continuará atraindo clientes, desde que estejam ativos e atualizados. A desvantagem é que não há garantias. Você pode criar conteúdo de alta qualidade e com a mesma marca e ter poucas pessoas visualizando seu site a cada semana. 1.3 Benefícios da mídia digital Como foi visto acima, devido a amplitude, preço, facilidade de acesso dentre outras, investir em mídias digitais pode ser muito vantajoso, abaixo algumas vantagens desse tipo de investimento. • Preço: Comparado aos grandes meios de comunicação, pode se considerar que as campanhas na internet serão mais baratas do que as feitas por mídias tradicionais como televisão e publicidade em massa. • Flexibilidade e Segmentação: Devido a velocidade com que os dados podem ser transmitidos, as campanhas podem ser modificadas para caber ao contexto necessá- 8 Capítulo 1. Mídias Digitais rio requerido pela empresa. Podendo ainda serem distribuídas a segmentos e pessoas dos mais distintos interesses. • Monitoramento e Mensuração de resultados: Existem diversas ferramentas que são responsáveis pelo acompanhamento em tempo real do canais utilizados. Isso torna possível a identificação de falhas e melhorias que podem causar o sucesso ou não da campanha. Considerando que essas informações fazem parte da campanha, esses dados podem indicar qual é o rumo correto pelo qual essas precisa seguir, indicando ainda que esses dados, muitas vezes, tem um valor maior do que os resultados em si. • Redução de custos e riscos; Devido a capacidade de mensuração das campanhas, os testes de estrategias são mais rápidos e mais baratos, aumentando assim a asserti- vidade em campanhas maiores. • Relacionamento e Fidelização; A alta capacidade de distribuição faz com que seja possível uma maior comunicação com os seus públicos alvos. Criando assim uma maior consolidação nas rotinas dos seus clientes e uma maior fidelização. Citando ainda, o alto envolvimento com as redes sociais, que gera um alto engajamento dos clientes diante as marcas. • Alcance e Modernização; Não existem barreiras físicas, criativas ou pessoais para as mídias digitais, isso faz com que a constante evolução, traga conteúdos cada vez mais modernos e atualizados. 1.4 Estratégias de mídia digital Devido as capacidades de cada um dos tipo de mídias digitais acima mostradas, cada um desses tem vantagens e desvantagens, dessa maneira, a melhor estrategia é fazer o uso das três em momentos adequados. Comece com mídia própria e crie uma identidade de marca forte A mídia própria é o alicerce de uma estratégia de mídia digital. Sem uma forte presença e identidade nos espaços que você possui, é difícil convencer o público em outros espaços a prestar atenção em você. Priorize a criação de um site de alta qualidade, um conteúdo bom e relevante que informe, ao invés de promover, como um blog da empresa, e-books ou vídeos explicativos. Alie a esse planejamento uma estratégia de SEO robusta para potencializar o alcance orgânico do conteúdo produzido. Tire um tempo para desenvolver uma voz com personalidade em suas contas de mídia social. Reforce seu bom conteúdo com um bom design. E certifique-se de que todas 1.5. Planejamento de mídias digitais 9 as suas propriedades de mídia sejam vinculadas a uma identidade de marca consistente e atraente. Use mídia paga para atrair novos públicos-alvo para sua mídia própria e desenvol- ver sua mídia ganha. Um dos problemas com a mídia de própria é que não há garantia de que alguém verá o ótimo conteúdo que você criou. Você pode resolver esse problema promovendo seu conteúdo por meio do Google AdWords ou de anúncios gráficos digitais. Uma campanha de anúncios pagos estratégicos colocará seu conteúdo diante de novos olhos – e esperamos que ele os atraia para o resto de sua mídia própria. Aumentar seu público de maneira orgânica é lento, muitas vezes frustrante e a utilização de mídia pagapode impulsionar esse crescimento. Mídia paga também pode ser usada para promover o nome da sua empresa, marca e produtos, expandindo sua reputação online. Quanto mais os clientes ouvirem sobre você, maior a chance de espalhar sua repu- tação usando o boca-a-boca online.Cultive positivamente a mídia ganha por meio de boas práticas de mídia própria e paga se o burburinho online sobre uma empresa é negativo ou positivo depende de como a empresa se promove. Se o conteúdo do seu site ou blog oferecer informações valiosas que ajudem a in- formar os processos de compra do cliente e se seus anúncios pagos estão bem posicionados e entram em contato com os clientes, isso gera uma repercussão positiva. Por outro lado, as empresas que parecem fora de contato ou que têm uma identi- dade de marca ruim geram um olhar negativo. Você não pode controlar o que as pessoas dizem sobre sua empresa online, mas quanto melhor sua mídia paga e própria forem executadas, maior a chance de as pessoas visualizarem você de maneira positiva. 1.5 Planejamento de mídias digitais Diante os tipos de mídias digitais, e para o sucesso de uma boa campanha é importante o planejamento de implantação das mídias digitais. Conforme pode ser visto na figura abaixo, o mesmo é feito de forma cíclica, indicando que os processos devem se repetir de acordo com a aplicação da campanha. • Briefing: É marcado como o processo inicial da campanha, tem o objetivo de ga- rantir informações suficientes sobre o cliente, e uma boa compreensão dos objetivos, público, tom de voz, concorrentes e cultura empresarial. São muitas as questões que podem ser elaboradas, mas é importante manter, um roteiro preestabelecido, para não esquecer de coletar algum dado importante e não se perder durante o processo. 10 Capítulo 1. Mídias Digitais Figura 2 – Mídias Digitais Costuma-se utilizar perguntas para se nortear o mesmo, como, qual o período da campanha? qual o investimento disponível?. Identificar e analisar a concorrência é uma etapa importante nesse processo, e a dica é fazer um verdadeiro benchmarking para compreender melhor o cenário do agenciado e também detectar as forças e fraquezas dos concorrentes • Estratégia: Baseado nas respostas apresentadas, será mapeada uma estratégia de quais serão os passos a serem seguidos. • Canais: Com base nas personas criadas, identifique os principais canais de divul- gação, como mídias sociais, influenciadores digitais, blog corporativo, e-mail mar- keting, assessoria de imprensa visando os grandes portais digitais, etc. É possível escolher um ou mais canais (dependendo da verba disponível e dos objetivos), sem- 1.5. Planejamento de mídias digitais 11 pre pensando onde os consumidores estão e quais mídias possuem maiores chances de conversão. • Conteúdo; Toda estratégia de marketing digital precisa de conteúdo, afinal, é por meio dele que você vai despertar a atenção do público, auxiliar essas pessoas a en- contrarem soluções, se relacionar adequadamente com elas e apresentar os produtos ou serviços do seu cliente. Então, considere as particularidades dos canais escolhidos, as características das per- sonas, as palavras-chaves mais usadas e o funil de vendas para criar um cronograma de conteúdos e planejar corretamente as interações com o seu público. Pense, também, na linguagem mais adequada e na forma de abordagem, sempre relacionando a persona à cultura da empresa do cliente. • Cronograma; Muitas dessas estratégias podem ser aplicadas de maneira simultânea e é essencial que o seu cliente e a sua equipe saibam quando cada uma das ações deverá ser executada. • Monitoramento; A principal vantagem de uma estratégia on-line é a capacidade de mensuração dos resultados. Por isso, na hora de realizar o planejamento, é indispen- sável, também, destacar quais métricas serão usadas para monitorar as ações em cada um dos canais, acompanhando o desempenho dentro do funil de vendas. • Apresentação; Após tudo definido, é hora de apresentar as suas ideias ao cliente e, juntos, chegarem a um acordo sobre as melhores ações a serem tomadas. Indepen- dentemente do tamanho da empresa, essa etapa de aprovação é bastante comum — e até necessária — para que todos saibam onde e como a verba será aplicada. É essencial desenvolver um documento formalizando todas as etapas e estudos realiza- dos, além de uma apresentação mais visual e “palpável” para o cliente, respeitando o cronograma e a forma com que será aplicada. • Execução; Após a aprovação do cliente, é hora de colocar em prática o planejamento. Com toda a pesquisa elaborada e os planos de ação bem traçados e explicados ao cliente, será muito mais fácil acompanhar as estratégias de perto e conseguir identi- ficar se tudo está correndo como o planejado — ou se será preciso intervir (fazendo mudanças rápidas e evitando perder dinheiro). Ao fim do período ajustado com o cliente, não se esqueça de montar relatórios específicos, mostrando os resultados alcançados com cada uma das ações e oferecendo um feedback. 12 Capítulo 1. Mídias Digitais 1.6 Mídias Sociais A mídia digital é dita como o conjunto de meios e sistemas que permitem a co- municação por meios digitais, dessa maneira, esta é como uma parte do marketing digital que é um conjunto de ferramentas digitais que tem como principal objetivo promover a comunicação por meio de diversas ações; Dessa maneira as mídias digitais correspondem a todas aquelas possibilidades pelas quais é possível atingir alguns dos muitos objetivos do marketing digital. Já o marketing digital é responsável por criar estratégias de comunicação que usam dispositivos digitais para atingir objetivos. Os dispositivos digitais, na maioria das vezes conectados à inter- net, acessam informações em sites, vídeos, aplicativos, jogos, entre outros, que possuem espaços para propagação de informações, como peças publicitárias ou conteúdos pagos, que podemos chamar de mídias digitais. Devemos pensar que as estrategias de marketing digital não são construídas so- mente para as mídias digitais. Essas precisam ser feitas para alcançar objetivos maiores. Além da divulgação da marca o importante é alcançar o aspecto humano, pois essa é a forma de alcançar o objetivo principal, a venda. Considerando esses aspectos, uma relação humana direta com a mídia digital é a rede social. As redes sociais é um ótimo exemplo de uso e aplicação das mídias digitais co- brindo a maior parte dos seus benefícios. Cada rede social possui um público alvo de alta abrangência, ou seja, alcançando outros públicos. Essa são importantes ferramentas para um boa estrategia de marketing. Referencias utilizadas nesse capitulo; • https://rockcontent.com/blog/midia-digital/ • https://www.linksexperts.com.br/blog/tipos-de-midias-digitais/ • https://pt.slideshare.net/edilsonstm/projeto-midias-sociais-11226698 • https://digitalks.com.br/artigos/a-diferenca-de-midia-digital-e-marketing-digital-para- o-sucesso-nas-vendas-online/ • https://v4company.com/midias-digitais/ • https://www.esauce.com.br/blog/quais-as-principais-midias-do-marketing-digital-e- como-utiliza-las/ • https://guiadoestudante.abril.com.br/profissoes/comunicacao-em-midias-digitais/ • https://rockcontent.com/blog/tudo-sobre-redes-sociais/ 13 2 Fundamentos de hardware e software O mundo em que vivemos os computadores são algo cada vez mais comum. Compu- tadores são basicamente definidos como máquinas que leem, processam, efetuam cálculos e apresentam resultados de dados. Dessa forma, celulares, calculadoras, máquinas pesadas, podem ser tratadas como computadores. 2.1 Componentes físicos do Computador • Sistema Central; É basicamente a estrutura física que mantem o computador, pode ser uma caixa de metal com elementos de plástico, vertical ou horizontal responsável por armazenar periféricos do computador como a placa mãe, HD, memorias. Um dos principais elementos que ela armazena é a fonte de alimentação que converte a corrente alternada para contínua com o objetivo de alimentar os componentes do computador.O gabinete do computador pode ser em forma de Desktop, onde o gabi- nete que fica na horizontal ou vertical, geralmente máquinas com menor capacidade de processamento, ou Torre, que ficam na posição vertical. • Processador: O processador é chamado de CPU (unidade central de processamento) e está acoplado à placa-mãe. Ele é um pequeno chip que faz todo o controle das ope- rações que serão realizadas pelo computador. Quanto melhor o processador, maior agilidade as tarefas serão realizadas. Devido o processamento de informações o pro- cessador é um dos componentes que mais esquentam o que exige que seja composto pelo cooler, que é basicamente um sistema de retirada forçada de calor, isso acontece para que o sistema possa funcionar e seja aumentada a vida útil do mesmo. Todo processador é formado por um conjunto de pinos (contatos) que servem para serem conectados em determinado tipo de placa-mãe. Os fabricantes mais conhecidos deste componente são Intel e AMD. • Memória de Acesso Randômico(RAM): É uma memória volátil e rápida para acesso pelo processador, porém mais cara. A CPU a utiliza para armazenar temporaria- mente os dados dos programas que estão rodando no computador. Esta memória somente fica ativa enquanto o computador estiver ligado e os conteúdos devem ser salvos, pois quando ele for desligado, tudo o que estiver armazenado nesta memória perde-se. • Memória Somente de Leitura(ROM): Memória responsável pelo armazenamento per- manente dos dados, Esses dados não podem ser apagados ou alterados, apenas se 14 Capítulo 2. Fundamentos de hardware forem utilizados procedimentos específicos. Quando a energia acaba ou o computa- dor é desligado os dados não se perdem, sendo uma memória não volátil. Existem vários tipos de memória ROM, como: memória flash, cd-rom, dvd-rom e outros relacionados, EPROM (Erasable Programmable Read-Only Memory), PROM (Pro- grammable Read-Only Memory), etc. • Memória Externas: Existem uma infinidade de tipos e capacidades de armazena- mento. Alguns exemplos: Pen-drives, CDs, DVDs, HDs, SSDs, disquetes, fitas, SDs etc. São dispositivos que geralmente utilizam portas USB ou encaixes para conexão ao computador, não fazem parte do computador propriamente dito, mas podem ser facilmente instalados e removidos. A taxa de transferência dos dados também varia de modelo, mas geralmente são bastante rápidos. • Memória Cache: A memória cache é um tipo de memória de acesso randômico mais rápida que armazena os dados mais utilizados pelo processador. Para processar da- dos, ele verifica primeiramente na memória cache se esses dados estão armazenados lá, se os encontra (proveniente de leituras anteriores desses mesmos dados) não necessita obtê-los de outra memória mais lenta (memória RAM). • Disco Rígido (HD): É um tipo de disco de grande capacidade para armazenamento de dados permanentes ou até que sejam removidos do computador. Ela é mais lenta para acesso, porém muito mais barata. Nela se armazenam todos os dados e programas que devem permanecer no computador, mesmo estando ele desligado. Para seu correto funcionamento é necessário que hajam interfaces de controle, como IDE (Integrated Drive Electronics), SATA (Serial ATA) e SCSI (Small Computer System Interface). • Placa Mãe: Placa central que se destina a conexão com todas as outras placas e componentes do computador. Ela é chamada de ’espinha dorsal’. Assim, ela possui diferentes conectores e é nela que o processador é instalado, num suporte chamado de ’socket’. Já o HD é conectado por meio das portas IDE ou SATA e a placa de vídeo em slots.As placas-mãe possuem um software de controle localizado em um chip que armazena todas as informações do hardware relativas à data e hora do computador. Esse programa é chamado de BIOS (Basic Input Output System – Sistema Básico de Entrada e Saída). Ele é responsável, principalmente, por carregar o sistema operacional para a memória RAM e executar o programa POST (programa que executa testes básicos de hardware). • Placa de Vídeo: É um dispositivo responsável por garantir o aparecimento das ima- gens em seu monitor. Existem placas de vídeo no mercado que já vem embutidas em placas-mães, são conhecidas como onboard. O custos dessas integradas é bem 2.2. Componentes lógicos do Computador 15 menor, mas é aconselhável que seja utilizado apenas em computadores que executem atividades básicas, pois podem atrapalhar no seu desempenho. 2.2 Componentes lógicos do Computador Os componentes Lógicos do computador são os programas desenvolvidos para transformar cálculos e processamento de dados em informações legíveis ao ser humano. O Software é um termo técnico (e anglicismo de tecnologia da informação) que foi traduzido para a língua portuguesa como logiciário ou suporte lógico, é uma sequência de instruções a serem seguidas e/ou executadas, na manipulação, redirecionamento ou modificação de um dado (informação) ou acontecimento. O Sistema Operacional é um dispositivo lógico-físico que realiza trocas entre o usuário e o computador. Nele são inseridos alguns softwares que administram todas as partes do sistema e apresentam-no de forma amigável ao usuário. Ele também tem a função de fazer o gerenciamento dos vários usuários da má- quina e é sobre esse sistema que os programas são inseridos e os recursos do computador são gerenciados, como a memória principal, as interrupções, a memória secundária e os dispositivos de entrada e saída do computador. Um sistema operacional possui duas camadas, a primeira é chamada de Kernel, é o seu núcleo principal, uma das partes essenciais e básicas que dá suporte a conversa entre software e hardware. O segundo são os utilitários, programas utilizados para ’rodar’ dentro do Kernel, ou seja, os softwares aplicativos. Os Sistemas Operacionais ou OS são desenvolvidos de acordo com necessidade do uso, dessa forma, possuem características e funcionalidades especificas para determinados ambientes, usuários e aplicações. Abaixo alguns OSs muito difundidos. • UNIX: É um sistema multiusuário (vários usuários em única vez) e multiprogra- mável, com uma estrutura mais complexa, organização de arquivos por meio de subdiretórios, garantindo a proteção das informações e redirecionamento de entrada e saída de dados.Ele foi criado na década de 1970, por desenvolvedores da AT&T, sendo distribuído comercialmente em linguagem ’C’ após 1980 e considerado um dos primeiros sistemas operacionais modernos. A partir dele foram criados con- ceitos importantes no mundo da computação. O Unix foi projetado para grandes universidades e corporações e após ele, foram lançados outros sistemas inspirados em sua interface gráfica e linguagem, como o BSD (Berkeley Software Distribuition). • Mac OS: Uma das primeiras empresas a pensar em computadores pessoais foi a Apple, empresa fundada em 1970 por Steve Jobs. Ele lançou, inicialmente, o com- putador Apple I, com um sistema operacional próprio chamado de Mac OS (Macin- 16 Capítulo 2. Fundamentos de hardware tosh Operating System) que era conhecido como System. Posteriormente lançou o Apple II, III, Macintosh e Lisa. Com o aparecimento de problemas que atingiram drasticamente esse sistema operacional, ocasionadas pela diminuição de seu uso e domínio do sistema operacional da Microsoft, a Apple decidiu reescrever todo o código com base no Unix, sendo chamado de MAC OSX. Esse sistema, tem como características: qualidade na interface gráfica do computador, com o lançamento do Aqua (interface gráfica que permite a produção de relevos, sombreamentos, reflexos e outros elementos de design), além de comandos diferenciados em suas últimas ver- sões, como permissão de múltiplos toques e uma navegação baseada na intuição do usuário. • Windows: A palavra Windows traduzida do inglês quer dizer ’janelas’, um geren- ciador de interfaces que permite o usuário ver informações e se comunicar com o computador. Ele foi desenvolvido, na década de 1980, por Bill Gates, mas somente se tornou um sistema operacional a partir do Windows NT, lançado na décadade 90. A partir da primeira interface, foram surgindo outras versões para Windows, como 1.01, 2.03, 2.1, 3.0, etc. O Windows NT (New Tecnology) foi desenvolvido para o ambiente corporativo. Ele é multiusuário, multitarefa e multiplataforma, rodando não somente em plataformas como INTEL, mas em DEC Alpha, MIPS, etc. Uma das características dos NT é a de se transformar em servidor na internet, sendo dividido em Windows NT Server e Windows NT Workstation. • O sistema operacional GNU/Linux foi desenvolvido por Linus Torvalds, na Fin- lândia, em 1991. Ele é uma versão do SO Unix que possui código aberto e pode ser escrito e distribuído por qualquer tipo de usuário na internet, por ser um soft- ware gratuito (free software), sendo proibido a comercialização do sistema. Qualquer pessoa poderá ver o código fonte de um sistema Linux, resolver problemas através de uma lista de discussão online, em que consultores e usuários que trabalham na manutenção do código poderão solucionar, fazer atualizações, etc. Além disso, ele dá suporte a placas, cd-rom e outros dispositivos mais ultrapassados e/ou avan- çados.Das características desse sistema estão a multitarefa, multiusuário, conexão com outros tipos de sistemas operacionais, segurança quanto a proteção de processos executados na memória RAM, não há licença para seu uso, etc. Cada distribuição linux tem características diferentes e foram criadas para usuários específicos. 2.3 Aplicações Web O servidor é basicamente um computador dedicado. Devido as exigências de hoje ele não é qualquer computador e na maior parte das vezes, nem mesmo se assemelha fisicamente aos computadores que temos em nossas casas. Devido às extremas exigências 2.3. Aplicações Web 17 computacionais e ao fato de que atualmente podemos ter dezenas de milhares de servi- dores acomodados em prédios especializados em abrigá-los, os chamados datacenters, até fisicamente os servidores assumiram características próprias. Hoje um gabinete de servidor tem dimensões padrão justamente para permitir que sejam instalados dentro de racks – também com medidas padrão – favorecendo sua distribuição física otimizada no espaço, o fornecimento de energia, conectividade com a rede, resfriamento e até manutenção. Além dos aspectos acima, um gabinete deve ser capaz de abrigar muito mais com- ponentes do que um computador doméstico, já que frequentemente um servidor pode ter até dezenas de processadores e pentes de memória, várias unidades de armazenamento, muitos coolers para circular o ar ordenadamente no interior do gabinete e toda a gama de componentes para fazer esta arquitetura funcionar adequadamente. Figura 3 – Representação de um rack com os servidores A função do servidor web é receber uma solicitação (requisição) e devolver (res- posta) algo para o cliente. O browser permite ao usuário solicitar um recurso e quando o servidor responde a uma solicitação são encontrados recursos como: páginas HTML, figuras e documento PDF que são exibidas depois para o usuário. Geralmente os servido- res enviam instruções para o browser escritas em HTML. O HTML diz ao browser como apresentar conteúdo ao usuário web. 18 Capítulo 2. Fundamentos de hardware Figura 4 – Funcionamento sistema Cliente-Servidor 2.3.1 Protocolo HTTP É um protocolo que os clientes e os servidores usam para se comunicar. Essa co- municação é baseada em requisições (request) e respostas (responses). HTTP é a sigla em língua inglesa de HyperText Transfer Protocol (Protocolo de Transferência de Hiper- texto). Um sistema de comunicação em rede possui diversos protocolos que trabalham em conjunto para o fornecimento de serviços. Para que o protocolo HTTP consiga transferir seus dados pela Web, é necessário que os protocolos TCP e IP (Internet Protocol, Proto- colo de Internet) tornem possível a conexão entre clientes e servidores através de sockets TCP/IP. Esse protocolo é baseado em requisições e respostas, onde a requisição é feita com um método HTTP, a página que será acessada e os parâmetros, e a resposta é dada pelo código de status, tipo do conteúdo e o conteúdo. A solicitação HTTP possui outra solicitação conhecida como URL (Localizador Uniforme de Recursos). Os métodos HTTP são: • GET : Solicita ao servidor um recurso chamado de solicitação URl. Este é o método padrão, pois é a forma como o browser chama o servidor quando digita-se uma URL para que ele a recupere. • POST : Contém um corpo nos quais seus parâmetros de solicitação já são codifica- dos. O mais frequente uso desse método é na submissão de formulários. • HEAD : Similar ao método GET, o servidor apenas retoma a linha de resposta e os cabeçalhos de resposta. • PUT : Esse método permite o envio de arquivos par ao servidor Web. 2.4. Android 19 • DELETE : Permite a exclusão de documentos dentro do servidor Web. • TRACE : Permite depurar as requisições, devolvendo o cabeçalho de um documento. 2.4 Android Android é um sistema operacional (SO) baseado no núcleo Linux, desenvolvido por um consorcio de desenvolvedores conhecido como Open Handset Alliance, sendo o principal colaborador o Google. Com uma interface de usuário baseada na manipulação direta, o Android é projetado principalmente para dispositivos móveis com tela sensível ao toque como smartphones e tablets; com interface específica para TV (Android TV), carro (Android Auto) e relógio de pulso (Android Wear). O sistema operacional utiliza-se da tela sensível ao toque para que o usuário possa manipular objetos virtuais e também de um teclado virtual. Apesar de ser principalmente utilizado em dispositivos com tela sensível ao toque, também é utilizado em consoles de videogames, câmeras digitais, computadores e outros dispositivos eletrônicos. O Android é o sistema operacional móvel mais utilizado do mundo, e, em 2013, possuía a maior percentagem das vendas mundiais de SO móveis. Dispositivos com o sistema Android vendem mais que eletrônicos com Windows, iOS e Mac OS X combinados, com vendas em 2012, 2013 e 2014 perto da base de computadores do mundo. Em julho de 2013, a loja de aplicativos Google Play possuía mais de 1 milhão de aplicativos disponíveis, baixados mais de 50 bilhões de vezes. Uma pesquisa com progra- madores entre abril e maio de 2013 revelou que 71% dos programadores para sistemas móveis desenvolviam para o Android. Na conferência anual Google I/O de 2014, a com- panhia revelou que existem mais de 1 bilhão de usuários Android ativos. Em junho de 2013, este número era de 538 milhões. O maior número de usuários no mundo também reflete no número de ataques de hackers no sistema, com cerca de 5.000 novos malwares sendo criados todos os dias para usuários Android. O fato do Android ser um sistema aberto e extremamente customizável permite que ele seja usado em outros eletrônicos além de tablets e smartphones, o que inclui netbooks, smartbooks, smart TVs (Android TV e Google TV), e câmeras (Galaxy Camera). Além destes mais usados, há também sistema Android em óculos (Google Glass), smartwatches, fones de ouvido, tocadores de CD e DVD de carros, espelhos, MP3s, telefones fixos, e consoles de videogames. 20 Capítulo 2. Fundamentos de hardware Figura 5 – Logo do Sistema Operacional Android 2.5 Swift Swift é uma linguagem de programação desenvolvida pela Apple para desenvol- vimento no iOS, macOS, watchOS, tvOS e Linux. Swift foi desenvolvida para manter compatibilidade com a API Cocoa e com código existente em Objective-C. O compilador usa a infraestrutura do LLVM e é distribuído junto do Xcode desde a versão 6. O desenvolvimento do Swift teve início em Julho de 2010 por Chris Lattner, com a eventual colaboração de muitos outros programadores da Apple. O Swift é inspirado em linguagens como Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, entre outras. Uma versão beta da linguagem foi disponibilizada a desenvolvedores Apple durante a WWDC de 2014 . Em março de 2017, Swift ficou entre as 10 linguagens mais populares, de acordo com o Índice Tiobe, e atualmente está entre as 20 mais populares.De acordo com uma pesquisa conduzida pela RedMonk, está entre as 10 linguagens mais populares. Swift é uma alternativa à linguagem Objective-C que emprega conceitos modernos da teoria de linguagem de programação e se empenha em oferecer uma sintaxe mais simples. Em sua apresentação, foi descrita como "Objective-C sem a corpulência do C". O Swift retém conceitos chave do Objective-C como protocolos, clausura e categorias, porém, frequentemente substituindo a sintaxe por versões mais limpas e permitindo a aplicação desses conceitos em outras estruturas da linguagem, como tipos enumerados (enums). Sendo em código aberto, a linguagem proporciona perspectivas de implementações para web. Um grupo de trabalho oficial para "APIs de Servidor"também foi criado pela Apple, com membros da comunidade de desenvolvedores Swift ocupando papel central. 2.5. Swift 21 Figura 6 – Logo do Sistema Operacional Swift Referencias utilizadas nesse capitulo; • https://www.okconcursos.com.br/apostilas/apostila-gratis/130-informatica-para-concursos/1687- hardware-e-software-conceitos-basicos • https://pt.wikipedia.org/wiki/Software • https://www.okconcursos.com.br/apostilas/apostila-gratis/130-informatica-para-concursos/1633- nocoes-de-sistema-operacional-windows-e-linux • http://fastprado.ueuo.com/Apostilas/Computacao%20Instrumental.pdf • https://www.devmedia.com.br/como-funcionam-as-aplicacoes-web/25888 • https://www.hostmidia.com.br/blog/o-que-e-servidor/ • https://pt.wikipedia.org/wiki/Android • https://pt.wikipedia.org/wiki/Swift_(linguagem_de_programa%C3%A7%C3%A3o) 23 3 Lógica de programação Para o correto funcionamento de um computador, é necessário que especificado com clareza e exatidão o que deve ser feito cada uma das fases. Diferente do ser humano, o processo criativo da máquina é estruturado no que é desenvolvido e aplicado para ela. Mesmo com as tecnologias atuais de Inteligência Artificial, um computador só é capaz de replicar e tentar imitar o que um cérebro faz. À sequência ordenada de passos que deve ser seguida para a realização de uma tarefa, tem o nome de algoritmo. Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. O critério usado para classificar hierarquicamente estas for- mas está diretamente ligado ao nível de detalhe ou, inversamente, ao grau de abstração oferecido. Algumas formas de representação de algoritmos tratam os problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado existem formas de re- presentação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as ideias. O critério usado para classificar hierarquicamente estas formas está diretamente li- gado ao nível de detalhe ou, inversamente, ao grau de abstração oferecido. Algumas formas de representação de algoritmos tratam os problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de pro- gramação específica. Por outro lado existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as ideias principais do algoritmo, dificultando seu entendimento. • Descrição Narrativa: os algoritmos são expressos diretamente em linguagem natural, muitas vezes dá oportunidade a más interpretações, ambiguidades e imprecisões. • Fluxograma Convencional: É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal pro- priedade facilita o entendimento das ideias contidas nos algoritmos e justifica sua popularidade. Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo (subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo das variáveis usadas. O material de apoio abaixo mostra mais detalhes da construção e das regras usadas nesse tipo de desenvolvimento. • Pseudocódigo: Esta forma de representação de algoritmos é rica em detalhes, como a definição dos tipos das variáveis usadas no algoritmo. Por assemelhar-se bastante 24 Capítulo 3. Lógica de programação à forma em que os programas são escritos, encontra muita aceitação. O material de apoio abaixo mostra mais detalhes da construção e das regras usadas nesse tipo de desenvolvimento além de exemplos. https://www.dca.ufrn.br/ affonso/DCA800/pdf/algoritmos_parte1.pdf Figura 7 – Exemplo de diagrama utilizando um sistema condicional A todo momento durante a execução de qualquer tipo de programa os computado- res estão manipulando informações representadas pelos diferentes tipos de dados descritos no capítulo anterior. Para que não se "esqueça"das informações, o computador precisa guardálas em sua memória. Cada um dos diversos tipos de dados, números, textos den- tre outros necessita de uma certa quantidade de memória para armazenar a informação representada por eles. Um tipo literal é um conjunto de caracteres que podem ser letras, dígitos ou sím- bolos especiais. A união de todos os caracteres existentes nos computadores resulta num conjunto com um número de elementos menor que 256. Deste resultado surgiu a ideia de associar a cada caractere um número (código) variando de 0 a 255 (256 possibilidades). No princípio, cada fabricante de computador adotava uma convenção diferente para este código. Mais recentemente, esta convenção foi padronizada a fim de facilitar a portabili- dade (migração) de programas entre máquinas diferentes. Esta convenção é representada 25 na forma de uma tabela de mapeamento de caracteres em números. O padrão mais uni- versalmente aceito é o ASCII. Assim, cada célula de memória (byte) pode conter um caractere, representado pelo seu código ASCII. Para guardar um dado do tipo literal devemos alocar(reservar) um espaço contíguo de memória igual ao comprimento do mesmo, destinando um byte para cada caractere da informação. Assim a palavra "pronatec"precisa de 8 bytes para ser armazenada na memória. A primeira posição deste conjunto de bytes é absolutamente arbitrária e sua escolha geralmente é feita automaticamente pelo compilador, que é programa que traduz a linguagem de programação em linguagem entendível pela máquina. Uma informação do tipo lógico só possui dois valores possíveis 0 ou 1, Verdadeiro ou Falso. Assim uma informação do tipo lógico é armazenada em um byte de memória. Em geral utilizam-se dois bytes para representar os números inteiros junto com os sinais. Contudo, restam algumas aplicações em que se precisa de um conjunto ainda maior, que são chamados de inteiros longos e possuem 4 bytes. Os números reais também utilizam 4 bytes para sua representação, tendo ainda o real estendido que são 8 bytes. Variável é uma entidade dotada de um nome para diferenciá-la das demais e um tipo de dado que define o tipo de informação que ela é capaz de guardar. Geralmente são tipadas, ou seja , sendo de um tipo especifico. Contudo as linguagens de programação mais atuais, adotam um tipo especifico e dentro desse encaixam os demais, ou ainda podem não ser tipadas, veremos isso de forma prática. Os computadores são construídos para fazer cálculos, portanto possuem operadores e expressões. Uma expressão é uma combinação de variáveis, constantes e operadores, que resulta num valor quando avaliada. Operadores são elementos funcionais que atuam sobre operandos. Um tipo especial de operador é o relacional, que é usado na comparação de operandos de um mesmo tipo de dado e cujo resultado da avaliação é sempre um valor lógico. Figura 8 – Operadores relacionais Os operadores relacionais são utilizados para comparar String de caracteres e nú- meros. Os valores a serem comparados podem ser caracteres ou variáveis. Estes operadores 26 Capítulo 3. Lógica de programação sempre retornam valores lógicos (verdadeiro ou falso/ True ou False). Para estabelecerprioridades no que diz respeito a qual operação executar primeiro, utilize os parênteses. Já os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. Os operadores lógicos são, a expressão AND (E), verdadeira se todas as condições forem verdadeiras, a expressão OR (OU), verdadeira se pelo menos uma condição for verdadeira, a expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa. Conforme pode ser visto abaixo no exemplo: Seguindo o exemplo, na primeira linha, a expressão A não é igual a B, mas B é maior que C, contudo, utilizando o operador AND que é equivalente ao E, devido a primeira condição ser falsa, toda a operação também é falsa. Na segunda linha, utilizando o operador <> indica que A é diferente B, contudo, B não é menor do que C, considerando a expressão OR equivalente ao OU, uma das condições é verdadeira, o que torna o resultado verdadeiro. Na maioria das vezes necessitamos tomar decisões no andamento do algoritmo. Essas decisões interferem diretamente no andamento do programa. Temos ainda dois tipos de estrutura principais. A estrutura de Decisão e a estrutura de Repetição. A estrutura de decisão “SE/IF” normalmente vem acompanhada de um comando, ou seja, se determinada condição for satisfeita pelo comando SE/IF então execute deter- minado comando. Conforme o exemplo abaixo. A estrutura de decisão “SE/ENTÃO/SENÃO”, funciona exatamente como a es- trutura “SE”, com apenas uma diferença, em “SE” somente podemos executar comandos caso a condição seja verdadeira, diferente de “SE/SENÃO” pois sempre um comando será executado independente da condição, ou seja, caso a condição seja “verdadeira” o comando da condição será executado, caso contrário o comando da condição “falsa” será executado 27 A estrutura de decisão CASO/SELECIONE é utilizada para testar, na condição, uma única expressão, que produz um resultado, ou, então, o valor de uma variável, em que está armazenado um determinado conteúdo. Compara-se, então, o resultado obtido no teste com os valores fornecidos em cada cláusula “Caso”. Os comandos de repetição quando desejamos que um determinado conjunto de instruções ou comandos sejam executados um número definido ou indefinido de vezes, ou enquanto um determinado estado de coisas prevalecer ou até que seja alcançado. Os modelos de repetição podem ser utilizados de diversas formas, dessa maneira, seguem alguns modelos: Enquanto x, processar (Do While ...Loop); Neste caso, o bloco de operações será executado enquanto a condição x for verda- deira. O teste da condição será sempre realizado antes de qualquer operação. Enquanto a condição for verdadeira o processo se repete. Podemos utilizar essa estrutura para traba- lharmos com contadores. Até que x, processar ... (Do Until ... Loop) Neste caso, o bloco de operações será executado até que a condição seja satisfeita, ou seja, somente executará os comandos enquanto a condição for falsa. 28 Capítulo 3. Lógica de programação Por fim a lógica de programação é basicamente a forma com que seu código precisa ser construído para o entendimento da máquina. Na pratica o desenvolvimento de software é basicamente estruturado em identificar o que o cliente precisa e de forma organizada traduzir aquilo em um sistema funcional. Referencias utilizadas nesse capitulo; • https://www.dca.ufrn.br/ affonso/DCA800/pdf/algoritmos_parte1.pdf • http://professores.dcc.ufla.br/ monserrat/download/logica.pdf • https://www.dca.ufrn.br/ affonso/DCA800/pdf/algoritmos_parte1.pdf • https://fit.faccat.br/ fpereira/apostilas/apostila_algoritmos_mar2007.pdf 29 31 4 Design de interface O design de interface é o recurso que conduz a interação do ser humano com um produto físico ou virtual. A interface varia de um brinquedo, aparelho eletrodoméstico, até um aplicativo para smartphone ou uma página na web. O trabalho do designer de interface vai além do entendimento do problema do usuário e suas necessidades. Este tipo de design envolve o conhecimento técnico e estético para a construção de ferramentas funcionais. Na prática, o design de interface é responsável pela parte visual, à usabilidade, arquitetura da informação, navegação, transição de telas. Ou seja, todos os recursos que incrementam e melhoram a forma como o usuário lida com o produto. Nesse sentido, a experiência do usuário, ou User Experience (UX), deve ser o centro das atenções no desenvolvimento de um produto, serviço ou sistema. Um bom projeto, seja grande ou pequeno, deve passar por uma etapa de antecipação do pensamento e necessidades do usuário. O design de interface está envolvido em uma série ampla de projetos de sistemas de computador, carros, até à aviação comercial; todos esses projetos envolvem muitos das mesmas interações humanas básicas mas também exigem algumas habilidades e conheci- mentos únicos. Como resultado, os designers tendem a se especializar em determinados tipos de projetos e possuir habilidades centradas em torno das suas experiências, quer seja design de software, a pesquisa de utilizadores, design web ou design industrial. A avaliação da experiência do usuário não é subjetiva ou simplesmente uma questão de gosto. A norma ISO 9241 descreve a prática de forma objetiva e clara. De acordo com a norma, para verificar o nível de usabilidade de uma interface, deve-se avaliar a eficácia, eficiência e satisfação. A eficácia implica que a tarefa que se pretende executar deve ser realizada de forma correta e completa. Em outras palavras, se o aplicativo ou site desempenha a função a que se propõe quando o usuário a solicita. A eficiência está associada aos recursos utilizados para que a tarefa seja desempe- nhada. Ou seja, desde o recursos finânceiros e tempo utilizados para desenvolver a fun- cionalidade, até a quantidade de memória que ela gasta para ser executada. Assim, para um design eficiente, determinadas funcionalidades devem reduzir ao mínimo os recursos empregados. Por fim, a satisfação diz respeito ao conforto e facilidade que o usuário tem ao usar a ferramenta. A navegação é intuitiva? As funcionalidades estão bem exibidas? Cada 32 Capítulo 4. Design de interface comando é bem explicado? A satisfação é uma diretriz para pensar essas questões. Na web. Existem diversas ferramentas que conseguem acompanhar dados de na- vegação do usuário como: tempo para realizar determinada ação, caminho que tem sido usado para chegar a uma conversão, etc. O Google Analytics é uma ferramenta gratuita que acompanha todos os dados de visitação de um site. É possível acompanhar o compor- tamento do usuário por sistema operacional, navegador ou dispositivo que está usando, entre outros. Desta forma, é possível entender as dificuldades de navegação e propor novas soluções. Outro exemplo de ferramenta de monitoramento usada na web é o Crazy Egg. O sistema permite enxergar o mapa de calor do site: onde usuários estão clicando, qual parte não visualizando, etc. Nas aplicações Mobile esse tipo de ferramenta também existe, mas geralmente estão diretamente ligadas as linguagens utilizadas. Esse tipo de recurso pode ser imple- mentado pelo próprio desenvolvedor, indicando o que o cliente mais precisa para evoluir o produto cabendo ao mesmo em conjunto com a equipe de desenvolvimento desenhar o que é mais importante para o bom funcionamento do seu negocio. É importante tam- bém garantir que a página da é no mínimo adaptável para mobile sem prejuízo de suas funcionalidades. Uma interface bem projetada é a principal responsável pela manutenção de um usuário em navegação em um site ou aplicativo. Também é seu objetivo incentivar e garantir a fidelização desse usuário. Se bem pensada, portanto, tem o poder de facilitar a vida e se tornar uma ferramenta presente na vida das pessoas. O que importa para o usuário é que o sistema seja de fácil uso e que cumpra a função para a qual foi criado. Sendo assim, o design de interface tem a finalidade de auxiliar nacriação de algo que seja atraente, útil e eficaz na resolução de seus problemas. Certifique-se, portanto, de que a página da empresa é no mínimo adaptável para mobile sem prejuízo de suas funcionalidades. Atualmente, a tecnologia permite investir em serviços e ações exclusivas para dispositivos móveis, tornando as interações mais intuitivas aos usuários. O Material Design é uma metodologia de design criada pela Google, pensado para ser fluido, natural, intuitivo e de simples compreensão, tem sido largamente utilizado pelo mundo todo como base para diversas aplicações. Ele funciona como um guia, que mostra como construir designs de forma que fiquem mais naturais, chamativos, dentre outras características que estão associadas a aplicações em todas as plataformas. Devido o tempo disponível de curso, não iremos aprofundar essa metodologia, mas segue abaixo um link que explica com mais detalhes e vale a leitura: https://rockcontent.com/blog/material-design/ Ben Shneiderman, cientista da computação e professor, desenvolveu uma lista cha- 33 mada Eight Golden Rules of Interface Design que, como o nome já indica, apresenta oito regras essenciais para o Design de Interfaces. • Mantenha a consistência: Utilizar ícones, cores, hierarquias, menus, fluxos de uso si- milares em situações similares é essencial para construir uma boa interface e fornecer uma ótima experiência para o usuário; • Permita que os usuários utilizem atalhos: De acordo com o entendimento do usuário sobre a interface cresce a necessidade de formas mais rápidas de interação para rea- lizar tarefas, portanto o uso de atalhos a funcionalidade muito usadas é importante para manter o usuário com a aplicação. • Responda o seu usuário quando ele perguntar: O usuário precisar saber onde ele está, o que está acontecendo e para onde ele será direcionado após o término de sua ação, isso exige que o feedback apresentado a ele seja apropriado, ou seja, deve conter algum significado compreensível pelo usuário. Seja de erro ou de confirmação. • Crie diálogos que indiquem o fim de uma ação: Permitir que a ação simplesmente acabe sem comunicar ao usuário causa a dúvida se feita por ele foi correta. Não permita que seus usuários achem alguma coisa, dê a certeza de que a ação dele resultou em algo. • Mostre uma maneira de reparar um erro: Toda interface deve possuir mecanismos capazes de evitar o máximo possível que o usuários cometam erros, mas quando erros impossíveis de serem evitados acontecem devemos apresentar ao usuário uma forma simples, passo-a-passo de como solucionar o erro ocorrido. • Deixe seu usuário reverter ações: Uma das principais funções que toda interface deve fornecer ao usuário é de permitir que ele retorne uma ação ou até mesmo um grupo de ações realizadas durante a utilização, ou ainda se antever diante situações que podem ser revertidas, como o uso de caixas de confirmação. • Dê ao usuário a sensação de controle: Uma das principais funções que toda interface deve fornecer ao usuário é de permitir que ele retorne uma ação ou até mesmo um grupo de ações realizadas durante a utilização. • Reduza a carga de memória de curta duração: Somos capazes de armazenar aproxi- madamente cinco informações diferentes de uma vez durante um período bem curto de tempo. Por conta disso toda interface deve possuir hierarquias muito bem de- senvolvidas de forma que permita ao usuário encontrar as informações que procura de forma rápida sem a necessidade de ficar anotando dados de uma página para comparar com outros dados de outras páginas “perdidas” na aplicação. 34 Capítulo 4. Design de interface Referencias utilizadas nesse capitulo; • https://agenciaduo.me/design-de-interface-voce-sabe-o-que-e-e-qual-a-importancia/ • https://brasil.uxdesign.cc/as-8-regras-de-ouro-do-design-de-interfaces-f188cf75f9b7 • https://pt.wikipedia.org/wiki/Design_de_interface_de_usu%C3%A1rio • https://medium.com/ui-lab-school/caracter%C3%ADsticas-que-fazem-uma-interface- de-usu%C3%A1rio-ser-eficaz-54d60c023092 • https://rockcontent.com/blog/material-design/ 35 5 Aplicativos híbridos O mundo em que vivemos exige tecnologias que sejam de fácil e ágil desenvolvi- mento dessa forma, surgem opções de linguagem de programação, design e tudo relaci- onado a tecnologia a todo tempo. Vamos começar pela definição do que são Aplicativos Nativos, Web App e Híbridos. Cada um possui suas vantagem e diferenças, cabe ao de- senvolvedor entender cada um deles para saber qual é a melhor opção de acordo com a necessidade e limitações do cliente. O aplicativo nativo fica armazenado no dispositivo (smartphone) e é baixado dire- tamente pelas lojas, Google Play (Android) ou App Store (iOS). Este app é desenvolvido pelas linguagens nativas destas plataformas e podem utilizar as funcionalidades específicas do dispositivo, como câmera, GPS, contatos, etc, além de possuir uma integração direta- mente com as bibliotecas de cada um deles o que da um controle maior ao desenvolvedor. O app nativo tem um custo mais elevado, pois tem uma linguagem própria e específica do sistema operacional, desenvolvida para cada plataforma, o que exige uma qualificação especifica para o sistema que será desenvolvido. Para você publicar o aplicativo nas lojas é necessário uma aprovação, ou seja, ele precisa estar de acordo com as políticas de cada uma delas. São alguns aplicativos nativos, largamente utilizados, Facebook Messenger, Whatsapp, Skype, Google Maps. Vantagens dos aplicativos nativos • Rica experiência do usuário: Os aplicativos nativos possuem sua próprias linguagens de desenvolvimento para interface, o que garante uma maior flexibilidade, robustez. Dessa maneira é possível definir exatamente o que cada tela vai ter, as transições, animações, isso trás uma fluidez maior e uma navegação mais intuitiva. • Alta performance: O aplicativo que foi criado e otimizado para uma plataforma específica pode demonstrar um nível de desempenho maior. Os aplicativos nativos são executados rapidamente não apenas por causa da otimização, mas do próprio código. Ele funciona mais rápido conforme é escrito na linguagem de programação suportada nativamente pela plataforma. Além disso, isso permite integrar novos recursos de maneira mais rápida. • Questão de segurança: O aplicativo nativo pode ser a única maneira de garantir a seus usuários uma proteção de dados confiável. Por ser uma aplicação nativa, é possível usar todos os recursos de hardware e software e isso garante uma maior mobilidade para esse tipo de funcionalidade. 36 Capítulo 5. Aplicativos híbridos • Funcionalidade completa: Por rodar nativamente, o acesso é completo a funcionali- dade como banco de dados, GPS, SMS. Eles não dependem de plug-ins ou outras ferramentas para funcionarem não possuindo limitações que são comuns nos aplica- tivos híbridos. Isso também vale para interfaces. • Personalização: Os aplicativos Híbridos, geralmente, utilizam interfaces mais padro- nizadas, o que faz com que a personalização seja comprometida. Já o nativo, por ser desenvolvido para cada plataforma, mantem cada uma das característica. Desvantagens dos aplicativos nativos • Custo de desenvolvimento: por se tratar de uma plataforma especifica, é necessário uma equipe maior e qualificada especificamente a linguagem que será usada, isso pode deixar o custo do projeto muitas vezes maior. • Tempo de desenvolvimento: Além da mão de obra mais qualificada, nesse caso será necessário o desenvolvimento de cada uma das plataformas, ou seja, caso queira um aplicativo Android e IOs, serão desenvolvidos dois aplicativos. Cada um exige uma equipe e um investimento especifico. Como um grande número de desenvolvedores tem migrado para o mercado de aplicativos híbridos esse tipo de aplicativo tem se tornado ainda mais caro O web app, é uma página na internet acessada como qualquer outro site através de um navegador e desenvolvido, geralmente, em HTML. O acesso é por uma URL e o usuário tem a opção de instalar o app na tela inicial do aparelho, criando um atalhopara acessá-lo. Diferentemente do app nativo e do híbrido, o web app não utiliza as funcionalidades do dispositivo, como câmera e GPS, além disso não ocupa espaço na memória do aparelho, a visualização é por um navegador e só funciona se estiver conectado à internet ou via PWA, com algumas limitações de uso. O design é de um web app com a interface mobile e o custo é bem mais baixo comparado ao aplicativo nativo. Vantagens do Web App • Progressivo: Qualquer usuário pode ter acesso ao conteúdo disponível, independente do navegador que ele esteja usando. • Responsivo: Tem a capacidade de se adequar a qualquer dispositivo: desktop, celular ou tablet. • Independente de conectividade: Possui tecnologias que garantem ao usuário o fun- cionamento das principais funcionalidades da aplicação sem a necessidade de conec- tividade. Também é otimizado para trabalhar em redes de baixa qualidade. 37 • Semelhante a aplicativos: A navegação e interação com o usuário é semelhante a de um App, já que utiliza a mesma estrutura visual e de percepção. • Instalável: Mesmo não tendo a necessidade de ser baixado em uma loja de aplicati- vos, um PWA garante com que o usuário possa colocar o ícone da aplicação em sua tela principal, se comportando de forma semelhante a um App depois disso. • Seguro: Por conta do HTTPS (criptografia na conexão dos dados), as informações partilhadas em uma aplicação PWA não podem ser adulteradas e tem pouco risco de invasão. Desvantagens do Web App • Baixa oferta de Funcionalidades: por não estar instalado e nem rodar nativamente, as funcionalidades oferecidas ao usuário estão limitadas ao o que um navegador pode oferecer, não tendo acesso a recursos nativos. • Por não estarem ligados diretamente ao sistema que estão rodando e sim ao nave- gador, são considerados mais lentos se comparados aos aplicativos nativos • Dependência de conexão à internet. Se você não estiver conectado, não conseguirá utilizar o aplicativo. • Como não é um aplicativo e sim uma página da internet, ele não estará disponível nas lojas, e será necessário um trabalho mais complexo de divulgação para atingir os usuários. Dependendo da situação isso pode ser bem problemático quando se trata de marca, pois como não está disponível nas lojas, a oferta é menor e a marca associada ao mesmo não é divulgada. O aplicativo híbrido, diferente do nativo, não é desenvolvido completamente na linguagem específica de cada sistema operacional, o app utiliza várias linguagens e engloba dois formatos: é metade nativo e metade web app. Assim como os nativos, também pode ser baixado pelas lojas e utilizar as funcionalidades do dispositivo, mas a diferença é que também permite o acesso através da Web App, inserindo uma página web, por exemplo, onde as informações são integradas do site para o app. O app híbrido tem um custo mais baixo, pois envolve parte de linguagem nativa e a outra parte é web apps, então a usabilidade bem próxima do nativo. A comunidade web é gigantesca e trabalha para facilitar cada vez mais esta tecnologia. Este será o tipo de aplicativo que vamos desenvolver no curso. Vantagens do aplicativo Híbrido 38 Capítulo 5. Aplicativos híbridos • Trabalhe em várias plataformas: Aplicativos híbridos podem rodar tanto o Android quanto o iOS com apenas uma base de código. Isso significa que você não precisa criar o aplicativo para cada plataforma, como no caso de aplicativos nativos. Os desenvolvedores de dispositivos móveis criam a base de código única que pode fun- cionar no Android e no iOS. Isso permite atingir o máximo de público possível além de não precisam decidir qual plataforma criar primeiro, pois o amplo alcance pode ser alcançado com uma única solução. • Mais rápido para construir: É menos demorado criar um aplicativo híbrido em com- paração com o nativo. Não é necessário criar uma nova base de código para cada plataforma. Além disso, os processos de construção e teste são mais fáceis até certo ponto, precisará de menos tempo para garantir que o produto esteja livre de bugs e de alta qualidade. • Mais fácil de mudar e atualizar: Aplicativos nativos e híbridos também diferem em aspectos como fazer alterações e atualizar. É suficiente fazer alterações apenas uma vez e elas serão aplicadas a todas as plataformas em que seu aplicativo híbrido funciona. Comparando aplicativos híbridos com aplicativos nativos, vale a pena mencionar que as atualizações contendo correções de bugs e aprimoramentos são implementadas de maneira melhor em aplicativos híbridos. • Mais barato para construir: Devido à única base de código, o aplicativo híbrido que executa o iOS e o Android pode ser implementado por quase o mesmo período de tempo necessário para criar um aplicativo nativo para uma plataforma. O tempo de desenvolvimento influencia diretamente o custo final do seu produto. Desvantagens de aplicativos híbridos • Conexão de internet: Aplicativos híbridos são sites em seu núcleo e eles exigem uma conexão de internet constante para fornecer a gama completa de recursos para os usuários. Dessa forma, você pode enfrentar certas dificuldades ao implementar o acesso off-line a uma parte de sua funcionalidade. • Mais tempo para o carregamento: Comparando aplicativos híbridos com aplicativos nativos, devemos dizer que leva mais tempo para que aplicativos híbridos carreguem todos os seus elementos e, respectivamente, eles possam funcionar mais lentamente. Essa é a razão pela qual a abordagem híbrida é adequada para aplicativos orientados a conteúdo. Eles são bastante simples e não sobrecarregados com funções complexas para trabalhar rápido o suficiente. • Capacidades limitadas: Devido à natureza da arquitetura de aplicativos móveis hí- bridos, eles contam com plug-ins para acessar os recursos internos de um dispositivo. 39 A desvantagem de tal método é que esses plugins podem estar desatualizados ou não confiáveis. Além disso, os desenvolvedores podem precisar criar plug-ins por conta própria, caso não haja soluções prontas que permitam acessar uma certa parte da funcionalidade do dispositivo que você precisa. • Má experiência do usuário: Infelizmente, a experiência do usuário não é o lado forte dos aplicativos híbridos, pois a interface das plataformas iOS e Android deve se encontrar em algum lugar no meio. Caso você se concentre demais no Android, a experiência será pior para os usuários do iOS e vice-versa. No link abaixo temos uma descrição dos principais frameworks de desenvolvimento para aplicativos híbridos, durante o nosso curso iremos utilizar o a Plataforma React, vale muito a leitura, para o entendimento e também para a execução das atividades. https://medium.com/trainingcenter/aplicativos-h%C3%ADbridos-vil%C3%B5es-ou- mocinhos-b22276f523c0 Referencias utilizadas nesse capitulo; • https://codificar.com.br/aplicativos-nativos-vs-aplicativos-hibridos-o-que-escolher/ • https://medium.com/trainingcenter/aplicativos-h%C3%ADbridos-vil%C3%B5es-ou- mocinhos-b22276f523c0 • https://blog.fabricadeaplicativos.com.br/fabrica/qual-diferenca-entre-web-app-app- nativo-e-aplicativo-hibrido/ • https://blog.fitmobile.com.br/aplicativos-hibridos/ • http://blog.penseavanti.com.br/aplicativos-nativos-de-sucesso/ • https://gobacklog.com/blog/progressive-web-apps/ 41 6 Ambiente e desenvolvimento Neste capítulo daremos inicio a nossa parte prática, é importante seguir cada passo, para que não haja problema na instalação e execução do sistema. Caso tenha problemas, é importante que utilize o fórum de dúvidas ou entrem em contato com o Orientador. Utilizaremos a plataforma ReactJS e React Native para o desenvolvimento de toda essa parte. Gerenciado pelo Facebook, Instagram e uma grande comunidade de empresas e desenvolvedores, o React é um dos frameworks em maior acensão. É utilizado em sites como Walmart, Netflix, Airbnb. Ele oferece sites com alto desempenho e escalabilidade. React garante a reusabilidade de código, permitindo aos desenvolvedores otimizar seu tempo na criação de códigos. React Native é um frameworkpara desenvolvimento mobile que reúne todos os componentes de um aplicativo nativo, auxiliando você a criar os aplicativos móveis nativos para Android, Windows e iOS em JavaScript. Isso permite que o usuário utilize o React JS para construir os componentes. O React JS, também conhecido como React.js, é outro framework usado em desen- volvimento de interfaces de usuário para aplicativos da web. Para navegar pelas páginas da web, ele faz uso do React Router. Também faz uso de bibliotecas JavaScript e CSS para fins de animação. Utilizaremos o React Native na nossa seção de mobile, e o React JS para o de- senvolvimento web. O importante é observar que a arquitetura React JS é usada para compor a view, ou seja a interface que o usuário tem acesso, por trás dessa estrutura vamos utilizar o Node. Node.js é uma plataforma construída sobre o JavaScript para facilmente construir aplicações de rede rápidas e escaláveis. Node.js usa um modelo de entrada direcionada a evento não bloqueante que o torna leve e eficiente, ideal para aplicações em tempo real com troca intensa de dados através de dispositivos distribuídos. A aplicação será desenvolvida utilizando um computador com sistema Operacional Linux. Caso esteja utilizando Windows recomendo que faça um dual boot instalando um distribuição Linux, porém também pode ser executado usando o windows. Para os usuários de MAC OS, o mesmo utiliza a mesma base do Linux então serão passos semelhantes. O desenvolvimento Android e IOs exige mais recursos de máquina, portanto, de- vido a essa necessidade é importante que se tenha um computador com o mínimo de Folha de rosto Sumário Mídias Digitais O que são Mídias digitais? Tipos de mídias digitais Mídia paga Mídia ganha Mídia própria Benefícios da mídia digital Estratégias de mídia digital Planejamento de mídias digitais Mídias Sociais Fundamentos de hardware Componentes físicos do Computador Componentes lógicos do Computador Aplicações Web Protocolo HTTP Android Swift Lógica de programação Design de interface Aplicativos híbridos Ambiente e desenvolvimento
Compartilhar