Baixe o app para aproveitar ainda mais
Prévia do material em texto
Allen Oberleitner Algoritmos e programação I Dados Internacionais de Catalogação na Publicação (CIP) (Jeane Passos de Souza – CRB 8a/6189) Oberleitner, Allen Algoritmos e programação I / Allen Oberleitner. – São Paulo: Editora Senac São Paulo, 2020. (Série Universitária) Bibliografia. e-ISBN 978-65-5536-119-3 (ePub/2020) e-ISBN 978-65-5536-120-9 (PDF/2020) 1. Desenvolvimento de sistemas 2. Linguagem de programação 3.Algoritmos – Conceitos I. Título. II. Série 0 20-1129t CDD-005.13 003 BISACCOM051300 COM051230 Índice para catálogo sistemático 1. Linguagem de programação : Algorítimos 005.13 2. Desenvolvimento de sistemas 003 M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . ALGORITMOS E PROGRAMAÇÃO I Allen Oberleitner M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Administração Regional do Senac no Estado de São Paulo Presidente do Conselho Regional Abram Szajman Diretor do Departamento Regional Luiz Francisco de A. Salgado Superintendente Universitário e de Desenvolvimento Luiz Carlos Dourado Editora Senac São Paulo Conselho Editorial Luiz Francisco de A. Salgado Luiz Carlos Dourado Darcio Sayad Maia Lucila Mara Sbrana Sciotti Jeane Passos de Souza Gerente/Publisher Jeane Passos de Souza (jpassos@sp.senac.br) Coordenação Editorial/Prospecção Luís Américo Tousi Botelho (luis.tbotelho@sp.senac.br) Márcia Cavalheiro Rodrigues de Almeida (mcavalhe@sp.senac.br) Administrativo João Almeida Santos (joao.santos@sp.senac.br) Comercial Marcos Telmo da Costa (mtcosta@sp.senac.br) Acompanhamento Pedagógico Ariádiny Carolina Brasileiro Designer Educacional Sueli Brianezi Carvalho Revisão Técnica Thyago Conchado Quintas Coordenação de Preparação e Revisão de Texto Luiza Elena Luchini Preparação de Texto Eloiza Mendes Lopes Revisão de Texto Eloiza Mendes Lopes Projeto Gráfico Alexandre Lemes da Silva Emília Corrêa Abreu Capa Antonio Carlos De Angelis Editoração Eletrônica Sidney Foot Gomes Ilustrações Sidney Foot Gomes Imagens iStock Photos E-pub Ricardo Diana Proibida a reprodução sem autorização expressa. Todos os direitos desta edição reservados à Editora Senac São Paulo Rua 24 de Maio, 208 – 3o andar Centro – CEP 01041-000 – São Paulo – SP Caixa Postal 1120 – CEP 01032-970 – São Paulo – SP Tel. (11) 2187-4450 – Fax (11) 2187-4486 E-mail: editora@sp.senac.br Home page: http://www.livrariasenac.com.br © Editora Senac São Paulo, 2020 M at er ia l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Sumário Capítulo 1 Apresentação inicial sobre desenvolvimento de sistemas, 7 1 Apresentação da área, 8 2 Evolução do desenvolvimento de sistemas, 10 3 Utilização dos conceitos na prática, 16 Considerações finais, 19 Referências, 19 Capítulo 2 Introdução aos algoritmos, 21 1 Introdução aos algoritmos, 22 2 Conceito de algoritmo, 25 Considerações finais, 32 Referências, 32 Capítulo 3 Algoritmos – variáveis, 35 1 Programação imperativa, 36 2 Utilização de pseudocódigos, 38 3 Declaração de variáveis e constantes, 42 4 Expressões aritméticas, literais, relacionais, de lógica booleana, 47 Considerações finais, 52 Referências, 53 Capítulo 4 Algoritmos – condicionais, 55 1 Estrutura de controle condicional, 56 2 Estrutura de controle condicional simples, 59 3 Estrutura de controle condicional composta, 65 Considerações finais, 71 Referências, 72 Capítulo 5 Algoritmos – repetição, 73 1 Por que repetir?, 74 2 Estruturas de repetição: enquanto (while), 76 3 Estruturas de repetição: para (for), 83 Considerações finais, 87 Referências, 88 Capítulo 6 Algoritmos – vetores, 89 1 Conceito de vetor, 90 2 Manipulando vetores, 93 Considerações finais, 103 Referências, 103 Capítulo 7 Algoritmos – matrizes, 105 1 Conceito de matriz, 106 2 Manipulando uma matriz, 110 Considerações finais, 120 Referências, 121 Capítulo 8 Programação estruturada, 123 1 Linguagem de programação, 124 2 Programação estruturada, 127 Considerações finais, 137 Referências, 138 Sobre o autor, 141 7 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 1 Apresentação inicial sobre desenvolvimento de sistemas Vivemos em uma era marcada pelos recursos digitais, tecnologia, internet e manipulação de dados. Praticamente, todas as pessoas nas- cidas no século XXI têm um celular e acesso à internet. Mas, acredite, nem sempre foi assim! A ideia de computador e de internet nasce durante a Segunda Grande Guerra Mundial, com a necessidade de descobrir as estratégias cripto- grafadas do inimigo e, assim, vencê-lo. Computadores como o Eniac (primeiro do mundo) eram operados por chaves manuais (como se fos- sem grandes disjuntores) e funcionavam movidos a válvulas. 8 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Entretanto, no início, os computadores não tinham muita utilidade para as pessoas comuns. Eles eram usados, exclusivamente, por mate- máticos, cientistas e pesquisadores. Foi na segunda metade do século XX que alguns gênios da tecnologia e dos negócios, como Bill Gates e Steve Jobs, enxergaram uma grande oportunidade de comercializar computadores pessoais a todos os usuários. A partir daí, grandes empresas de tecnologia nasceram e começa- ram a criar softwares para uso diário como pagamento, estoque, pedido (para as empresas) e, posteriormente, compras on-line, sites de entrete- nimento e até de relacionamento para o público em geral. Isso deu início à chamada Terceira Revolução Industrial. Hoje, podemos perceber a utilização desses recursos em pratica- mente todas as áreas da nossa vida. Entretanto, para que tudo isso seja possível, é necessário implementar um sistema (criando um projeto de software) por meio de uma linguagem de programação escrito num am- biente apropriado. 1 Apresentação da área Esta obra tem como objetivo apresentar ao futuro profissional de tecnologia de informação os conhecimentos necessários para desen- volver sistemas e entender a lógica envolvida nas linhas de código de um software, assim como suas principais estruturas. Traduzir as necessidades dos usuários do sistema e os desenhos (modelos e diagramas) em códigos executáveis pelo computador para desempenhar uma tarefa específica e complexa é nossa missão. Mas, afinal, o que são sistemas? Como podemos interpretar uma necessidade de um usuário em uma ação computacional?Como sabe- mos por onde começar? Como saberemos se o que foi feito está certo e de acordo com as condições estabelecidas pelo usuário? 9Apresentação inicial sobre desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Se você se preocupou com essas perguntas, está pensando em um projeto de software. Independentemente da área que você escolha den- tro da tecnologia, ao pensar em sistema, devemos nos preocupar com o projeto desse sistema. Todas essas dúvidas serão esclarecidas ao longo desta obra e, ao final dela, teremos realizado nosso primeiro pro- jeto de software. Para isso, abordaremos os seguintes temas: • O desenvolvimento dos programas desde o início até os dias de hoje e quais suas utilizações na prática. • A introdução aos algoritmos, o que é lógica de programação e como podemos escrever e representar esses algoritmos. • Como podemos passar instruções para o computador e como podemos representar os valores com que nosso programa vai interagir. • Como o computador toma decisões? Podemos dizer o que ele deve fazer em cada caso. • Como controlar ações que o computador tem que repetir várias vezes? • Armazenamento de valores similares e criação de buscas desses valores. • Como armazenar valores em matrizes e como manipulá-las com o uso de algoritmos. • O que é programação estruturada e como utilizar os recursos desse paradigma de programação. Vamos criar um projeto de software desde o início e, conforme for- mos evoluindo, conseguiremos testar suas funcionalidades e apresentar nosso sistema ao usuário para que ele o utilize e verifique o resultado. Preparados? 10 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . 2 Evolução do desenvolvimento de sistemas Basicamente, em todas as coisas hoje em dia existe um sistema de computador. Nosso inseparável celular é uma eficiente e complexa máquina computacional na qual conseguimos fazer praticamente tudo! Agora, vamos pensar onde mais a tecnologia, por meio de programas de computadores está presente. Que tal na TV? A maioria dos televisores são smart, o que confere “inteligência” a esse aparelho, capacidade de se conectar à internet, por exemplo. E vários aparelhos domésticos já têm essa capacidade: gela- deiras, cafeteiras, máquina de lavar e até lâmpadas! Os sistemas de computadores estão presentes em nossas tarefas diárias, também. Escovar os dentes (com escovas inteligentes que en- tendem se você esqueceu de limpar alguma área da sua boca), trans- portar-se (com a utilização de aplicativos ou com o bilhete eletrônico nas catracas de ônibus), candidatar-se a uma vaga de emprego (bus- cando por milhares de bases de dados as oportunidades das empre- sas), realizar uma compra on-line (enviando dados de cartão de crédito – e aqui devemos, também, nos preocupar com a segurança dos dados enviados) ou mesmo se entreter (com videogames e realidade virtual). Realmente, não dá para negar a importância dos sistemas compu- tacionais no dia a dia. Entretanto, como isso surgiu? Como evoluiu para os dias de hoje? A evolução da programação está diretamente ligada à história dos computadores e, para a entendermos melhor, vamos recor- rer a um pouco de história mundial. 2.1 O grande início Foi durante a Segunda Grande Guerra Mundial que surgiu a necessi- dade de se ter uma máquina que quebrasse os códigos de comunica- ção de exércitos inimigos para ajudar tropas aliadas a desenvolverem 11Apresentação inicial sobre desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. suas estratégias militares. Em 1940, os norte-americanos John Eckert e John Mauchly criaram o Eniac, primeiro computador digital produ- zido em larga escala. Este ocupava o espaço de uma sala inteira e funcionava com quase 18 mil válvulas. Além disso, essa magnífica má- quina foi programada por seis grandes mulheres, como Ada Lovelace e Grace Hopper, porém, na época, nenhuma recebeu o devido crédito (MATSUURA, 2015). Figura 1 – Eniac Outro fato interessante a respeito do Eniac é que ele não foi pro- gramado com uma linguagem de programação, mas com chaves ma- nuais (como disjuntores), embora seu sistema operacional fosse feito por cartões perfurados. Essa máquina chamou muito atenção de pesquisadores do mundo todo e, no fim da Segunda Guerra Mundial, a maioria das pesquisas sobre programas eram financiadas pelos governos e desenvolvidos como projetos de ciência por universidades; outros, mais específicos, pelo exército. Os computadores eram muito grandes e caros, por isso, só eram usados por especialistas. Segundo Carvalho (2006) o acesso a eles era restrito apenas aos cientistas e matemáticos, porém havia um trabalho 12 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .conjunto para popularizar essas máquinas para executarem tarefas es- pecíficas diárias. Nessa fase, não existia grandes investimentos, pois ainda não havia interesse por parte das empresas e do público. Foi na metade do século XX que a grande evolução tecnológica teve início, com o interesse de cientistas e, principalmente, das indústrias. Isso deu início à chamada Terceira Revolução Industrial (RIFKIN, 2014). Os computadores se tornavam cada vez menores, mais baratos, padro- nizados e acessíveis, principalmente para as empresas. 2.2 O surgimento das grandes empresas de tecnologia O interesse do público nessas máquinas poderosas criou uma enor- me oportunidade de negócio na década de 1970. Dois jovens muito ha- bilidosos, um em programação e outro em vendas, criaram a primeira empresa a vender computadores de grande performance para o público comum (usuários que não tinham grande conhecimento em computa- ção e tecnologia). Esses dois jovens são Steve Wozniak e Steve Jobs, e a empresa em questão é a, hoje gigante, Apple. PARA SABER MAIS Por que o símbolo da Apple é uma maçã mordida? Uma das teorias mais aceitas tem a ver com o conhecimento. Segun- do Jobs, morder a maçã representaria a aquisição do conhecimento (como fizeram Adão e Eva). Outra versão interessante refere-se à ambi- guidade do slogan da marca, que dizia “Byte into an Apple” (algo como um “byte dentro de uma maçã”), fazendo uma brincadeira com a pala- vra inglesa “bite” (que significa “morder”). De acordo com Quinafelex (2014) a intenção era desenvolver um computador confiável, pequeno e que pudesse ser usado em qualquer residência. As pessoas só conheciam, na época, eletrodomésticos, 13Apresentação inicial sobre desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. portanto o computador deveria se parecer com eles. Os pesquisadores tiveram, então, que tornar os comandos mais acessíveis e amigáveis,com a criação de ícones e figuras representativas. Figura 2 – O Apple I, o primeiro computador pessoal, criado por Steve Wozniak. O gabinete tinha que ser adaptado pelo usuário Um problema enfrentado pela Apple era desenvolver um sistema operacional que fosse mais amigável ao usuário e que resolvesse gran- des tarefas com comandos simples. Foi nesse cenário que outra gigante da tecnologia teve um grande desafio: entregar ao mercado um sistema operacional simples. Bill Gates, Paul Allen e Steve Ballmer, fundadores da Microsoft, desenvolveram, em 1980, o DOS, sigla que significa disk operating system, ou sistema operacional de disco (figura 3). PARA SABER MAIS Bill Gates, Paul Allen e Steve Ballmer tinham um grande desafio nas mãos: fornecer um sistema operacional para um grupo de empresas em um período de tempo muito pequeno, Assim, em 1980, nasceu o primeiro sistema operacional comercial, o DOS (aprimorado do falho e inoperante QDOS), comprado pela Microsoft. 14 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Segundo Bill Gates (1995), o público comum tinha muito interesse em adquirir um computador para sua casa, e empresas como a IBM, que tinham o controle da produção de hardwares, decidiram fabricar seus próprios computadores pessoais. Figura 3 – Tela da DOS, sistema operacional da Microsoft, primeiro a ser utilizado pelos computadores pessoais – personal computer (PC) O fato de as pessoas possuírem, em suas casas e escritórios, um computador, inflamou a economia. Ainda assim, os computadores eram muito caros, pois os gastos com estudos e pesquisas eram altos (RIFKIN, 2014). É compreensível, pois utilizavam-se produtos, até então, somente usados na área da robótica e da telefonia, e essa matéria-prima tinha um custo elevado. Essa dependência entre produtos e inovação tecno- lógica estava muito evidente. Com esse crescimento de mercado, na década de 1990, começaram a aparecer os computadores com am- biente gráfico e acesso à internet. Você sabia que a rotina de um escritório era toda feita em folhas de papel que eram arquivadas em grandes arquivos de aço, cheios de 15Apresentação inicial sobre desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. gavetas e fichários, separados em ordem alfabética? Pois é, não havia computadores, tampouco internet. Tudo era transportado por cartas ou malote. O computador revolucionou a maneira como os dados eram armaze- nados. Antes, em grandes arquivos de ferro nos escritórios e empresas. Agora, em memórias, como discos rígidos (HD), pen drives (flash drives) e até na nuvem (cloud). Toda a forma de trabalho mudou. Havia siste- mas computacionais que executavam as tarefas diárias das empresas, como controle de estoque, cadastro de clientes, folha de pagamento, controle de vendas, etc. Figura 4 – Arquivo de ferro onde eram armazenados dados das atividades das empresas e fichas com documentos Entretanto, não pense que tudo eram flores. Os sistemas, no início, não eram integrados, ou seja, não se comunicavam. Imagine um pro- duto vendido por uma empresa: esse produto precisava ser retirado do estoque, correto? Mas, eles não eram interligados. Isso era feito manu- almente. Outro ponto negativo eram os formatos desses sistemas. Por serem produzidos em massa (não havia personalização do usuário), nem sempre funcionavam de maneira adequada. 16 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Claro que esses problemas foram identificados e tratados ao longo dos anos. Atualmente, os softwares são desenvolvidos exclusivamen- te, conforme a necessidade de cada empresa. São sistemas integra- dos que atendem a todas as áreas da empresa, automatizando todas as informações, bem como se conectando com as filiais, as empresas parceiras e os fornecedores. 3 Utilização dos conceitos na prática Podemos citar milhares de exemplos de sistemas computacionais e suas contribuições práticas para o desenvolvimento da indústria, do comércio e das pessoas. Entretanto, para que tudo isso seja possível e para um bom entendi- mento do que será exposto nesta obra, precisamos compreender que, na prática, tudo é código, tudo é instrução e comando, ou seja, basica- mente, para nós, o importante é interpretarmos o que o usuário quer em uma linguagem de programação. Falaremos, mais à frente, sobre linguagens de programação. Antes disso, no entanto, vamos nos familiarizar com alguns conceitos importantes: 1. Uma linguagem de programação é um método padronizado para comunicar instruções para um computador. 2. Existem vários tipos de linguagem de programação (assim como existem várias línguas pelo mundo). 3. Vamos utilizar, nessa obra, uma linguagem específica para co- locar em prática nosso projeto de software e conseguir ver os resultados. 4. Nosso objetivo, aqui, não é aprender uma linguagem de progra- mação (com todos seus recursos, métodos e estruturas), mas 17Apresentação inicial sobre desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. apresentar uma visão geral do processo de programação e os fundamentos das linguagens de programação. Uma vez colocados esses pontos, a linguagem que utilizaremos nes- ta obra é o JavaScript. De acordo com artigo de Silva: O JavaScript é uma linguagem de programação criada em 1995 por Brendan Eich enquanto trabalhava na Netscape Communications Corporation. Originalmente projetada para ro- dar no Netscape Navigator, ela tinha o propósito de oferecer aos desenvolvedores formas de tornar determinados processos de páginas web mais dinâmicos, tornando seu uso mais agradável. Um ano depois de seu lançamento, a Microsoft portou a lingua- gem para seu navegador, o que ajudou a consolidar a linguagem e torná-la uma das tecnologias mais importantes e utilizadas na internet. (2015) Segundo Deitel e Deitel (2008), o JavaScript é a linguagem-padrão para a criação de scripts no lado cliente de aplicações baseadas na web, em virtude de sua alta portabilidade. Isso torna as páginas web mais dinâmicas e interativas. PARA SABER MAIS Muitas pessoas confundem a linguagem de criação de scripts JavaScript com a linguagem de programação Java, da SunMicrosystems, Unc. Java é uma linguagem de programação completa, orientada a obje- tos, que pode ser usada para desenvolver aplicações executáveis em diversos dispositivos – desde os menores, como telefones celulares e PDAs, até supercomputadores. JavaScript, por sua vez, é uma lin- guagem de criação de scripts baseada em navegador, desenvolvida pela Netscape e implementada em todos os principais navegadores (DEITEL; DEITEL 2008, p. 97). 18 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a corre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .A linguagem JavaScript é amplamente utilizada no mundo inteiro e será muito útil para nosso propósito: entender a lógica de programação e aplicação de algoritmos em nosso projeto de software. Entretanto, não vamos abordar a estrutura das páginas world wide web, tampouco a arquitetura cliente-servidor. Esse é um assunto para outro momento, que talvez virá quando o conteúdo desta obra já tenha sido dominado. Aliás, você pode estar se perguntando: onde vou escre- ver meus scripts e ver meu sistema funcionando, afinal? Essa é uma ótima pergunta e esse assunto nos interessa muito. Existem inúmeras ferramentas, pagas e gratuitas, para o desenvol- vimento da linguagem de programação JavaScript. Algumas gratui- tas são: Oracle NetBeans IDE, Eclipse JavaScript Development Tools e dotCloud JS. Existem, também, algumas ferramentas on-line (você não precisa baixar nem instalar nada), como Codenvy, Koding e Repl, que são muito fáceis de utilizar, são gratuitas e suportam várias linguagens. NA PRÁTICA Para você entender um pouco mais do que estamos tratando aqui e ter a primeira experiência com a linguagem, vamos fazer uma de- monstração prática. Abra uma dessas ferramentas citadas, faça o cadastro necessário, es- colha a linguagem JavaScript e, na IDE, escreva a seguinte instrução: Console.log (“Olá. Esse é seu primeiro código JavaScript!”) Depois, clique no botão “RUN” e veja o resultado! 19Apresentação inicial sobre desenvolvimento de sistemas M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Considerações finais A evolução tecnológica impulsionou o desenvolvimento econômico e mudou a forma de trabalho e de pensamento humano. Essa evolução é cíclica e depende do estudo contínuo de muitas áreas do conhecimento. A contribuição e o estudo dos algoritmos, assim como a programa- ção, suas linguagens e estruturas, são de primordial importância para qualquer profissional de tecnologia da informação, independentemente da área em que ele vai atuar. Familiarizar-se com um ambiente apropriado para a implementação de uma linguagem de programação por meio de códigos, comandos e estruturas básicas é o primeiro passo para a construção de um projeto de software, na qual vários profissionais de tecnologia estão envolvidos. Referências CARVALHO, Marcelo Sávio Revoredo Menezes de. A trajetória da internet no Brasil: do surgimento das redes de computadores à instituição dos mecanismos de governança. 2006. Dissertação (Mestrado em Ciências de Engenharia de Sistemas e Computação) – Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2006. DEITEL, Paul J.; DEITEL, Hervey M. Ajax, rich internet applications e desenvolvimento web para programadores. São Paulo: Pearson Prentice Hall, 2008. GATES, Bill. A estrada do futuro. São Paulo: Companhia de Letras, 1995. MATSUURA, Sérgio. Hoje minoria na indústria de tecnologia, mulheres foram fundamentais na gênese da computação. O Globo, 2015. Disponível em: https://oglobo.globo.com/sociedade/historia/hoje-minoria-na-industria- de-tecnologia-mulheres-foram-fundamentais-na-genese-da-computacao- 15336779#ixzz5PJ1tCp6j. Acesso em: 29 out. 2019. 20 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .QUINAFELEX, Rodolfo. Confira a evolução dos computadores de mesa da Apple, desde a origem. Techtudo, 2014. Disponível em: https://www.techtudo.com.br/ noticias/noticia/2014/10/confira-evolucao-dos-computadores-de-mesa-da- apple-desde-origem.html. Acesso em: 29 out. 2019. RIFKIN, Jeremy. A Terceira Revolução Industrial. São Paulo: Bertrand Editora, 2014. SILVA, Giancarlo. O que é e como funciona a linguagem JavaScript? Canaltech, 2015. Disponível em: https://canaltech.com.br/internet/O-que-e-e-como- funciona-a-linguagem-JavaScript/. Acesso em: 29 out. 2019. https://www.techtudo.com.br/noticias/noticia/2014/10/confira-evolucao-dos-computadores-de-mesa-da-apple-desde-origem.html https://www.techtudo.com.br/noticias/noticia/2014/10/confira-evolucao-dos-computadores-de-mesa-da-apple-desde-origem.html https://www.techtudo.com.br/noticias/noticia/2014/10/confira-evolucao-dos-computadores-de-mesa-da-apple-desde-origem.html https://canaltech.com.br/internet/O-que-e-e-como-funciona-a-linguagem-JavaScript/ https://canaltech.com.br/internet/O-que-e-e-como-funciona-a-linguagem-JavaScript/ 21 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 2 Introdução aos algoritmos Algoritmos estão associados a todas as tarefas que executamos, in- clusive em nosso dia a dia. Escovar os dentes, cozinhar, pegar um trans- porte, estudar, são todos exemplos de tarefas que podem ser resolvidas com o uso de algoritmos. Eles podem, portanto, ser descritos de maneira simples, como um passo a passo de tarefas, ordenadas de maneira que resolvam um pro- blema proposto. De maneira geral, os algoritmos estão associados a procedimentos, de qualquer natureza, não só computacionais. Porém, nosso foco serão os processos que podem ser resolvidos e processados por máquinas e, para isso, deveremos fazer uso de conceitos de lógica de programação. 22 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Todos os processos que dependem de um computador envolvem lógica. Ler esta obra em seu computador ou celular, neste momento, está exigindo um conjunto de algoritmos trabalhando para cumprir essa tarefa. Abrir um programa, baixar um aplicativo, assistir a sua série favorita em uma plataforma de streaming, realizar uma busca na internet, falar com seus amigos em aplicativos de mensagens instantâneas e estudar num ambiente virtual de aprendizagem on-line: tudo isso é possível por meio de instruções e comandos que as máquinas são capazes de en- tender e processar. Neste capítulo, você entenderá os principais conceitos envolvidos nos algoritmos, como a lógica de programação, e vai se deparar com as representações textuais e gráficas nas quais os algoritmos podem ser expressos. Bem-vindo ao incrível mundo dos algoritmos! 1 Introdução aos algoritmos A palavra “algoritmo”, de acordo com o Dicionário Aurélio (FERREIRA, 2010), é um “conjunto das regras e procedimentos lógicos perfeitamen- te definidos que levam à solução de um problema em um número finito de etapas”. O uso corriqueiro da palavra “lógica” está normalmente relacionado à coerência e à racionalidade. Portanto, segundo Forbellone e Eberspacher (2005), podemos rela- cionar a lógica com a correção do pensamento, pois uma de suas pre- ocupações é determinar quais operações são válidas e quais não são, fazendo análises de formas e leis do pensamento. Com base nesses conceitos, surgiu a necessidade da utilização de processos padroni- zados que executassem um problema de acordo com algumas regras determinadas.23Introdução aos algoritmos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Eis que surgem os algoritmos. Já sabemos que eles são um conjunto de regras que resolvem um problema de acordo com etapas determinadas. Mas seu surgimento não se deu na computação. Os algoritmos são tão antigos quanto a ma- temática e podem ser usados para várias ciências, como astro nomia e geografia. A história conta que a origem da palavra “algoritmo” vem de Abu Abdullah Muhammad Ibn Musa Al-Khwarizmi, mais conhecido como Al-Khwarizmi ou Alcuarismi, matemático, astrônomo, astrólogo, geógrafo e autor persa do século IX. Figura 1 – Grande matemático Al-Khwarizmi – seu nome deu origem ao termo algoritmo que usamos hoje Com o avanço das ciências, principalmente a computação, foi pos- sível criar instruções e rotinas para que os computadores, por meio de expressões aritméticas, por exemplo, processassem e produzissem resultados com esses comandos. De acordo com Manzano e Oliveira (1996), os algoritmos são a base para o desenvolvimento de sistemas computacionais, sejam eles simples ou complexos. O poder computacional associado a novas tecnologias, assim como ao armazenamento de dados, possibilitou a execução de tarefas mais complexas e elaboradas, como realidade virtual, reconhecimento facial, internet das coisas e inteligência artificial, conforme a figura 2. 24 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Figura 2 – Interação homem-máquina por meio de inteligência artificial Um dos maiores exemplos de algoritmos são os buscadores (aque- les que utilizamos para procurar alguma coisa no Google, por exem- plo). Existe uma complexidade e uma inteligência muito grande por trás de um algoritmo de busca para que ele retorne com precisão e grande performance (muito rapidamente) as palavras, as imagens, os vídeos e quaisquer outros elementos associados ao resultado da busca. PARA SABER MAIS Outro exemplo, bastante interessante, é o crescimento de serviço de atendimento efetuados por robôs, os famosos chatbots. Os algoritmos utilizados nesse tipo de tecnologia estão associados à inteligência artificial, como o Watson, da IBM. Ele é capaz de responder, com um grau alto de confiabilidade, a qualquer pergunta feita a ele e até mesmo participou de um talkshow, nos Estados Unidos, em 2011, no qual res- pondeu a perguntas competindo com um dos maiores vencedores de programas de TV. Adivinha o que aconteceu! O Watson teve uma vitória avassaladora. Incrível, não? É claro que existem milhares de exemplos do poder dos algoritmos e de como eles podem nos ajudar com o auxílio das tecnologias. Poderíamos falar por horas sobre isso. Entretanto, vamos nós mesmos construir nos- sos algoritmos e dar finalidade ao nosso projeto de software. 25Introdução aos algoritmos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. 2 Conceito de algoritmo O conceito mais importante para a construção de algoritmos é a ló- gica. A lógica, de acordo com Forbellone e Eberspacher (2005, p. 1), é a “arte de pensar bem”. E pensar bem requer um raciocínio coerente, com a observação de fatos para uma tomada de decisão assertiva. Por exemplo: • Toda ave é um animal. • Todo beija-flor é uma ave. • Portanto, todo beija-flor é um animal. Você consegue, caro leitor, compreender que, logicamente, podemos concluir que todo beija-flor é um animal com base nos dois fatos ante- riores? Esse é o princípio da lógica. Vamos a outro exemplo: • Você é mais novo que seu pai. • Seu pai é mais novo que seu avô. • Portanto, você é mais novo que seu avô. Simples, não é mesmo? A ideia é, realmente, simplificar ao máximo as instruções fornecidas ao computador, para que não haja dúvidas nem informações dúbias. PARA SABER MAIS Dúbio é um adjetivo que significa duvidoso, incerto, indefinido. É tudo aquilo que deixa dúvida, em que falta certeza sobre a realidade de um fato ou sobre a verdade de uma alegação. É o que não está claro, que não se percebe facilmente, que não é apresentado com exatidão, por exemplo, uma informação dúbia (FERREIRA, 2010, p. 124). 26 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Mais um exemplo, para reforçar: • O celular está dentro da casa. • A casa está trancada. • Precisamos, primeiro, abrir a porta da casa para, depois, pegar o celular. Lembre-se: para pensarmos em alguma solução, precisamos sempre considerar o problema a ser resolvido. Por exemplo, a necessi- dade de locomoção mais rápida levou à criação do Uber; a necessidade de termos comida, na comodidade de nossas casas, levou à criação do Ifood; a necessidade de vermos séries e filmes on demand levou à criação da Netflix, etc. 2.1 Descrição narrativa de um algoritmo Agora, vamos “algoritmizar” a lógica. Ou seja, temos que construir instruções para que, sempre que acontecerem os dois fatos anteriores, nossa decisão estará correta. Significa o uso correto das leis do pensa- mento, da ordem da razão e de processos de raciocínio e simbolização formais na programação de computadores. IMPORTANTE Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido em lógica de programação e, dessa forma, permite-nos abstrair de uma série de detalhes computacionais, que podem ser acrescentados mais tarde, focalizando nossa atenção naquilo que é mais importan- te: a lógica de construção de algoritmos. (FORBELLONE; EBERSPACHER, 2005, p. 3) 27Introdução aos algoritmos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Complicou? Vamos a outro exemplo, um do nosso dia a dia: Estamos com muita fome e resolvemos cozinhar. Que tal um macar- rão? Mas não sabemos cozinhar macarrão! E agora? Existe um procedimento para cozinhar e buscamos na internet uma receita (note que estamos, na verdade, buscando um conjunto de regras e tarefas determinadas para realizar uma tarefa: cozinhar o macarrão). Depois da busca, encontramos esta receita: 1. Coloque a água em uma panela e ligue o fogo. 2. Depois que a água ferver, coloque o sal, mas antes de acrescentar a massa que será cozida. Se você colocar sal na água ainda fria, ela demorará mais para ferver. 3. Coloque um pouco de azeite na água para o macarrão não grudar. 4. Coloque o macarrão na panela. 5. Quando o macarrão estiver cozido, apague o fogo. 6. Se preferir servir com o molho separado, coloque um pouco de manteiga para derreter no macarrão, assim ele não ficará seco. Usamos a lógica para guiar nossos pensamentos ou ações para che- garmos a uma solução. Devemos ter sempre em mente que a lógica está correta se ela atingir o objetivo para que ela foi proposta. Inserir lógica nesse conjunto de atividades significa aperfeiçoar a for- made pensar, estruturando o passo a passo de ações, numa sequência de raciocínio, até chegar ao objetivo final que é a solução do problema. Nossa receita de macarrão está descrita de maneira narrativa, ou seja, cada instrução foi escrita textualmente, utilizando a língua portu- guesa e separada por linha (uma instrução por linha). É uma forma bem usual de expressarmos um algoritmo. 28 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Porém, nem sempre essa forma de representarmos um procedimen- to é muito clara e objetiva, pois as palavras podem ser interpretadas de diferentes maneiras e dar significado dúbio ao processo. 2.2 Representação de algoritmos por fluxogramas Uma maneira bastante eficiente de representarmos um algoritmo é a forma gráfica, por meio de fluxogramas. Os fluxogramas são representações visuais (desenhos) formados por figuras geométricas como losangos, retângulos, circunferências e paralelogramos. Cada uma dessas figuras representa uma ação, toma- da de decisão ou mesmo um fluxo desse diagrama. A sequência orde- nada dessas figuras nos leva a uma leitura lógica do que nosso algorit- mo executa, passo a passo. Segundo Xavier (2014), os fluxogramas são utilizados para representar algoritmos de pouca complexidade. O fluxograma é um intermediário para a compreensão do nosso algoritmo. O objetivo final são os códigos computacionais escritos por meio de instruções em linguagem de programação. São esses códigos que serão lidos e interpretados pelo computador para rea- lizar as tarefas que estamos solicitando e o resultado será a solução do problema. IMPORTANTE É importante lembrarmos que, como linguagem de programação, uti- lizaremos, nessa obra, o JavaScript. Essa linguagem nos dará todo o suporte para a construção dos nossos algoritmos. O quadro 1 mostra os símbolos mais utilizados nos fluxogramas e seus significados: 29Introdução aos algoritmos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Quadro 1 – Elementos principais componentes de um fluxograma Terminal Indica o início ou o fim de um processo. Entrada manual Indica a entrada de dados feita pelos usuários. Processamento Indica cada ação que deve ser processada. Pode ser uma operação lógica ou matemática. Exibição Indica a saída de dados do sistema para visualização dos usuários. Decisão Indica um ponto de tomada de decisão. Geralmente, uma decisão lógica. Preparação Indica o ponto limítrofe ou de intersecção entre processos. Processo predefinido Indica as operações de sub-rotinas do diagrama. Processamento Indica os documentos utilizados no processo. Conector Indica que o fluxograma continua em outro ponto, como se fosse uma quebra do diagrama em duas partes. Para isso, devemos indicar um número a ser seguido, dentro do conector. Linha Indica a direção do fluxo. Vamos montar o fluxograma do nosso procedimento de cozinhar o macarrão. Observe, na figura 3, que cada “caixa” representa um signi- ficado que deve ser lido e interpretado para a compreensão da lógica 30 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .envolvida no processo para resolver o problema. O final do fluxograma deve trazer a solução do problema proposto: o macarrão cozido. Figura 3 – Fluxograma do procedimento de cozinhar um macarrão Início Colocar água na panela Ligar o fogo Medir a temperatura Água ferveu ? Adicionar sal Adicionar azeite Colocar o macarrão Panela encheu? Observar densidade Macarrão cozido? cozinhou ? Apagar o fogo Não Não Sim Adicionar manteiga? Fim Sim Sim Não Servir com molho? 31Introdução aos algoritmos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. A leitura de um fluxograma é limpa e organizada. A partir deste momento, estamos prontos para desenvolver as instruções necessá- rias para o computador processar os códigos de uma linguagem de programação. Agora, vamos apresentar nosso projeto de software. Esse projeto será desenvolvido ao longo desta obra, passo a passo, do início ao fim. Nosso problema será o seguinte: criar um sistema de boletim acadêmi- co do aluno. As regras são as seguintes: 1. O aluno escolherá a disciplina cuja média quer verificar (caso não haja disciplina cadastrada, o aluno pode inserir uma discipli- na. Vamos limitar a um total de cinco disciplinas cadastradas). 2. O aluno poderá inserir suas notas (quantas ele quiser) ou sim- plesmente verificar sua média (para isso, o sistema deverá ter as notas desse aluno previamente inseridas). 3. O sistema vai calcular a média ponderada das notas inseridas (para isso, o sistema deve perguntar o peso de cada nota no mo- mento da inserção). 4. O sistema deve informar se o aluno está aprovado ou reprovado (a média para aprovação será 7,0 ou mais). 5. Se o aluno estiver aprovado, o sistema o parabeniza e pergunta se ele quer verificar outra média. 6. Se o aluno estiver reprovado, o sistema informa que ele deve fazer uma prova de exame. Desafio entendido? Agora é com você! Faça o fluxograma do projeto de boletim acadêmico e leve em con- sideração as tomadas de decisão e a volta para algum passo anterior 32 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .quando o aluno quiser continuar inserindo notas ou disciplinas. Não se esqueça de testar os limites (disciplinas estão limitadas em cinco, por exemplo). Considerações finais Algoritmos são formas ordenadas de organizar o pensamento. Partindo de um problema existente, nossa função é encontrar uma solução adequada que nos leve à solução do problema. Essa solução consiste na execução de um conjunto de atividades ordenadas numa sequência lógica que faça sentido para chegar ao objetivo final. Mostramos duas formas de se representar um algoritmo: narrativa e fluxograma. A forma narrativa descreve, textualmente, o passo a passo das atividades componentes da nossa solução. Geralmente, escrevemos uma atividade por linha, utilizando a língua portuguesa. A forma grá- fica, chamada de fluxograma, é a representação visual, por meio de desenhos, do nosso algoritmo. O fluxograma utiliza figuras geométri- cas para representar suas ações e tomadas de decisão. É bastante utilizado para descrever algoritmos de pouca complexidade. Por fim, apresentamos nosso projeto de software, que será desen- volvido ao longo desta obra. O importante agora é compreender o pro- blema e começar a pensar no conjunto de atividades que nos levará à solução dele. Referências FERREIRA, Aurélio Buarque de Holanda. Dicionário Aurélio daLíngua Portuguesa. São Paulo: Positivo, 2010. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de pro- gramação: a construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Pearson Prentice Hall, 2005. 33Introdução aos algoritmos M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. MANZANO, José Augusto; OLIVEIRA, Jayr Figueiredo. Algoritmos: lógica para desenvolvimento de programação. São Paulo: Érica, 1996. MUHAMMAD ibn Musa al-Khwarizmi. Biografie, [s. d.]. Disponível em: http9s:// biografieonline.it/biografia-muhammad-ibn-musa-al-khwarizmi. Acesso em: 11 nov. 2019. XAVIER, Gley Fabiano Cardoso. Lógica de programação. São Paulo: Editora Senac São Paulo, 2014. https://biografieonline.it/biografia-muhammad-ibn-musa-al-khwarizmi https://biografieonline.it/biografia-muhammad-ibn-musa-al-khwarizmi 35 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 3 Algoritmos – variáveis Os computadores são máquinas incríveis, muito poderosas e com- plexas, que resolvem, em pouco tempo, problemas matemáticos e aná- lises de grandes volumes de dados, além de tomadas de decisão. Porém, tudo o que o computador faz é seguir instruções impostas a ele por um ser humano. Essas instruções são compreendidas por meio de uma linguagem de programação e comandos que fazem a máquina reservar espaço de memória, armazenar dados, processar informações, relacionar valores e executar funções específicas. Essas instruções e comandos são escritos e organizados logica- mente por programadores depois que eles compreendem o problema e estruturam seus algoritmos com base nas necessidades dos usuários do sistema. 36 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Neste capítulo, vamos entender como atribuir valores às variáveis com a finalidade de manipular dados, uma das principais funções de um computador. Além disso, veremos as principais expressões do JavaScript: aritméticas, relacionais e lógicas. 1 Programação imperativa Sempre que vamos executar uma tarefa, por mais simples que ela seja, pensamos na sequência das ações a serem cumpridas para finalizá-la. Por exemplo, imagine que vamos escovar os dentes. Por mais simples e automática que seja essa tarefa, estamos seguindo uma sequência de ações para cumpri-la: 1. Pegar a escova. 2. Pegar a pasta. 3. Colocar a pasta nas cerdas da escova. 4. Levar a escova à boca. 5. Escovar dentes e massagear gengivas. 6. Enxaguar a boca. 7. Enxaguar a escova. Já parou para pensar por que seguimos essas instruções, mesmo sem pensar? Eu respondo: porque funciona! Simples, não é mesmo? Usamos, como um exemplo de modelo, aquilo que já foi testado e tem um resultado satisfatório. Tudo o que fazemos segue um modelo ou padrão, pode reparar! Na computação, chamamos esse padrão de paradigma. Paradigma de programação é um meio de se classificarem as linguagens de programação com base em suas funcionalidades. Por exemplo, o 37Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. paradigma orientado a objetos é um tipo de programação baseado nos objetos (que são representações dos objetos que temos no mundo real). Nesse caso, toda a programação tem como elemento principal o objeto, com suas características e funções. Mas não vamos abordar o paradigma orientado a objetos nesta obra. O paradigma que nos interessa, neste momento, é o paradigma im- perativo. Melo e Silva (2010) afirma que linguagens imperativas podem ser vistas como ferramentas para construir soluções de problemas orientadas por dados. E os dados terão extrema importância para nós neste capítulo. Mas falaremos deles daqui a pouco! Um dos primeiros paradigmas de linguagem de programação exis- tentes é o imperativo. O nome “imperativo”, que na língua portuguesa tem o significado de autoridade ou de exprimir uma ordem, se deu ao fato de as primeiras linguagens de programação terem sido projetadas em função da arquitetura do computador, chamada de “arquitetura von Neumann”. De acordo com Sebesta (2003, p. 17), por causa da arquitetura von Neumann, os recursos centrais das linguagens imperativas são as va- riáveis, as quais modelam as células de memória, as instruções de atri- buição e a forma iterativa de repetição, o método mais eficiente dessa arquitetura. Ao longo desta obra, veremos todos esses elementos e va- mos aplicá-los em nosso projeto de software. O importante, até aqui, é saber que linguagens de programação im- perativas são baseadas em instruções diretamente destinadas à má- quina. Um dos elementos da máquina é a memória (e ela será objeto de estudo, neste capítulo, quando falarmos das variáveis). A linguagem de programação JavaScript é multiparadigma, ou seja, suporta vários padrões, inclusive o imperativo. 38 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .PARA SABER MAIS As linguagens multiparadigma, como seu próprio nome já diz, supor- tam vários paradigmas de programação. Assim, podemos utilizar cada paradigma para solucionar um problema da maneira mais elegante e simples possível, conforme seu objetivo. Para saber mais sobre elas, recomendo a leitura do capítulo 1 do livro Conceitos de linguagens de programação, de Sebesta (2003). A ideia é bem simples: o desenvolvedor (ou programador) escreve os comandos (ou instruções) para que o computador leia e execute as ações até que a tarefa final seja concluída. Essas instruções estarão ba- seadas em variáveis, expressões e estruturas de decisão e de repetição. No exemplo de escovar os dentes, valores como a quantidade de pasta na escova e o tempo de escovação poderiam ser armazenados em variáveis e escovar dentes e massagear gengivas, enxaguar a boca e enxaguar a escova são as ações necessárias para que cheguemos ao nosso objetivo final: limpar os dentes. 2 Utilização de pseudocódigos Uma das formas utilizadas para iniciarmos nossa compreensão em linguagens de programação e os paradigmas envolvidos é o uso de pseudocódigos (às vezes chamados de “português estruturado” ou “portugol”). Não podemos confundir o pseudocódigo com linguagem de programação. É apenas uma maneira de entendermos um problema e interpretá-lo em instruções para a máquina. Segundo Martins (2009), pseudocódigo é uma forma genérica de escrever um algoritmo que utiliza uma linguagem simples, sem que haja necessidade de se conhecer a sintaxe de nenhuma linguagem de programação. 39Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. IMPORTANTE Sintaxeé a parte da gramática que estuda a disposição das palavras nas frases. Em computação, a sintaxe de uma linguagem de programa- ção é a forma como devemos escrever as palavras e as frases para que a instrução faça sentido para a execução da tarefa. Para entender como as instruções são escritas e interpretadas pela máquina, vamos utilizar o portugol em um exemplo de algoritmo. Nosso problema: identificar se uma pessoa tem idade para votar ou não. Regras: 1. Informar a idade da pessoa. 2. Identificar se a pessoa tem idade para votar: 2.1 Se ela tiver 16 anos ou mais, estará apta para votar. 2.2 Caso contrário, não poderá votar. Essas são as condições da nossa tarefa. Note que esse algoritmo foi descrito de maneira narrativa. Vamos, agora, interpretá-lo de forma gráfica, com a utilização do fluxograma. Figura 1 – Fluxograma Início Informar idade Idade é maior ou igual a 16 Fim Escreva “Essa pessoa não pode votar” Escreva “Essa pessoa pode votar” 40 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .Finalmente, vamos transcrever nosso fluxograma em instruções, fa- zendo uso de pseudocódigo: var Idade: inteiro Início Escreva: “Informe sua idade” Leia: idade Se a idade for maior ou igual a 16, então: Escreva: “Essa pessoa pode votar” Senão: Escreva: “Essa pessoa não pode votar” Fim Acabamos de escrever um algoritmo, em pseudocódigo, que funcio- na e produz um resultado. Esse algoritmo declara uma variável chama- da idade, que receberá um valor inteiro. Depois, o programa pede para alguém digitar uma idade (vamos chamar esse alguém de usuário). Nosso programa armazena o valor digitado na variável “idade” e, em seguida, compara esse valor com o número 16, verificando se ele é igual ou maior. Se essas duas condições forem consideradas verdadeiras, o programa escreve, na tela do usuário, que ele pode votar. Em qualquer outra hipótese, o programa escreve que a pessoa não pode votar. Essa é a lógica que utilizamos para “explicar” ao computador o que ele deve fazer. Se tudo estiver certo, nosso algoritmo terá cumprido seu objetivo: identificar se uma pessoa tem idade para votar ou não. Se não estiver certo, precisamos identificar o erro e corrigi-lo. 41Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Você já pode verificar o resultado desse algoritmo. Basta escrever es- sas instruções em algum ambiente que entende os pseudocódigos, por exemplo, o VisuAlg ou o Portugol Studio. Antes, porém, vamos conhecer alguns elementos que constituem a estrutura do nosso pseudocódigo: a. Declaração de variável: declarar uma variável é, simplesmente, reservar um espaço na memória do computador e dar um nome para esse espaço. Além disso, algumas linguagens são tipadas, ou seja, precisamos informar qual o tipo de dado que ela vai rece- ber. Em nosso caso, foi um dado inteiro (pois uma idade é infor- mada como inteiro). ◦ Exemplo: idade: inteiro nome: caracter b. Bloco de instrução: existe uma sequência na qual devemos in- formar as instruções, seja em pseudocódigo ou em uma lingua- gem de programação comercial, como o JavaScritp. Em nosso caso, a palavra “var” indica as declarações das nossas variáveis; o bloco demarcado com as palavras “Início” e “Fim” é a área des- tinada às escritas de nossas instruções (é onde toda a lógica de programação ocorre). ◦ Exemplo: var “declaração das variáveis” Início “primeira instrução” “segunda instrução” ........ “última instrução” Fim 42 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .c. Leia e escreva: essas são duas instruções de entrada (input) e saí- da (output) de dados. Sempre que quisermos sair com um dado do nosso programa para a tela do usuário, usamos a instrução “escreva”. Tudo o que estiver entre aspas (“texto”) será impresso), e para o que estiver sem aspas (uma variável), será impresso o valor dessa variável. Quando quisermos entrar com um dado do usuário para nosso programa, usamos a instrução “leia”. Essa ins- trução aguarda o usuário digitar o valor, via teclado, e armazena esse dado na variável declarada. ◦ Exemplo: Início escreva: (“Digite sua nota”) leia: (nota_aluno) escreva: (“A nota informada foi ”, nota_aluno ) Fim Note que, nesse algoritmo, pedimos um dado de entrada para o usuá rio (sua nota) e a armazenamos na variável chamada “nota_aluno”. Em seguida, o programa exibe, na tela do usuário, um dado de saída, parte em texto (o que está entre aspas), parte em valor armazenado pela variável (a nota digitada pelo usuário). 3 Declaração de variáveis e constantes A pergunta que deve ser respondida aqui é: para que serve uma variável? Vamos responder recorrendo a conceitos matemáticos básicos. 43Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Lembra-se do X na matemática? De exercícios que começavam com “Encontre o valor do X na seguinte função”? Então, esse X era uma in- cógnita que podia assumir determinados valores (no caso, números) e, quando encontrávamos seu valor, nossa equação podia ser resolvida. Esse X guarda um valor que nós precisamos para resolver um pro- blema, como na computação. Guardar um valor para ser usado para resolver uma tarefa é o papel de uma variável em nosso algoritmo. Mas como as variáveis armazenam valores? Essa pergunta é muito boa e precisamos de conceitos de arquitetura de hardware para entendê-la. Quando declaramos uma variável, por meio de uma instrução em linguagem de programação no nosso algoritmo, estamos, na verdade, ordenando, ao computador, a reserva de um espaço de memória. Algu- mas memórias de computadores são como discos, divididos por trilhas e setores, como os HDs (discos rígidos), por exemplo (figura 2). O que reservamos é um ou mais setores para armazenarmos nossos dados. Figura 2 – Discos de memórias (esquerda) e trilhas e setores destacados (direita) Trilha Setor Imagine esse disco de memória como um bairro. As trilhas são as ruas do bairro e os setores, as casas. Para eu saber onde você mora, pre- ciso do seu endereço, certo? O computador também precisa dessa infor- mação. Ele guarda o endereço do espaço de memória na qual ordenamos 44 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .na nossa instrução. Isso é declarar uma variável! Há algumas outras pe- quenas regras. Vamos a elas, então: I. Toda variável precisa de um nome. E esse nome deve seguir algu- mas características: a. Temos restriçãoao primeiro caractere do nome, ele deve ser sempre uma letra do alfabeto, não pode ser um número ou símbolos gráficos como cifrão, arroba, etc. O único caractere aceitável diferente de uma letra é o underline. Exemplo: _idade. b. Não pode haver espaço dentro do nome se for um nome com- posto, como “nota do aluno”. Para separar, devemos utilizar o underline ou juntar todas as palavras. Exemplo: nota_do_aluno ou notaDoAluno. c. Algumas linguagens de programação são case sensitive, ou seja, sensíveis a letras maiúsculas e minúsculas. Portanto, “notaDoAluno” é diferente de “notadoaluno”. d. Duas variáveis não podem ter o mesmo nome. Se isso aconte- cer, logo de início, o sistema acusará um erro, mas, mesmo se fosse possível começar, elas entrariam em conflito, sobrescre- vendo as informações. e. Existem algumas palavras reservadas da linguagem que também não podem ser utilizadas, como “escreva” e “leia”. Conheceremos mais algumas dessas palavras adiante. II. Na maioria das linguagens, as variáveis devem ser tipadas, ou seja, precisamos identificar o tipo de dado que vamos armazenar nessa variável. No exemplo de identificar a pessoa que era apta para votar, declaramos uma variável para armazenar a idade do usuário, lembra-se? E fizemos desta maneira: idade: inteiro. 45Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Em pseudocódigo, precisamos informar o tipo de dado que a va- riável “idade” vai armazenar. Nesse caso, um número inteiro. Mas existem outros tipos de dados que poderíamos armazenar em outras variáveis (os tipos descritos a seguir são tipos primitivos de dados, ou seja, de acordo com Melo e Silva [2010], são aqueles cujos valores são “atômicos” e não podem ser desmembrados em valores mais simples): a. Inteiro: toda e qualquer informação numérica que pertence ao conjunto de números inteiros relativos (negativo, nulo ou positivo). b. Real: também chamada de flutuante, toda e qualquer infor- mação numérica que pertence ao conjunto dos números reais (negativo, nulo ou positivo). c. Literais: também chamada de caractere, toda e qualquer in- formação composta de um conjunto de caracteres alfanumé- ricos (0 a 9), alfabéticos (A... Z, a... z) e especiais ( . , $ @ # ! ? ...). d. Lógico: também conhecido como booleano, toda e qualquer informação que pode assumir apenas duas situações (verda- deiro ou falso, sim ou não). IMPORTANTE Os números armazenados em variáveis de tipo literal não poderão ser utilizados para cálculos. Eles são considerados caracteres, e não nú- meros. O JavaScript é uma linguagem case sentitive e segue todas as regras citadas anteriormente, porém, é fracamente tipada, ou seja, não precisa- mos declarar o tipo de dado no qual vamos armazenar na nossa variá- vel. De acordo com Flanagan (2013), o JavaScript trabalha com os tipos 46 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo .primitivos de dados (apresentados anteriormente) e tipos compostos como objetos e funções. Abordaremos as funções, porém os objetos não fazem parte desta obra, são outro tipo de paradigma. PARA SABER MAIS Caso você queira saber mais sobre esse paradigma de programação e as linguagens que suportam os conceitos de orientação a objetos, sugerimos a leitura da obra Java: como programar, de Deitel e Deitel (2010), capítulo 2. Para declararmos uma variável em JavaScript, basta usarmos a pala- vra reservada “var” e seguir as regras de nome. A única coisa que muda, aqui, é o uso de “;” (ponto e vírgula) no final de cada instrução. Exemplo: var idade; var Nome_do_aluno; E, para atribuir um valor a essas variáveis, basta usar o símbolo de atribuição “=” (igual). Exemplo: Idade = 10; Nome_do_aluno = “Allen”; Lembre-se: o que é texto deve ser colocado entre aspas. Veremos todos os símbolos e as expressões no próximo item deste capítulo. Antes, precisamos falar das constantes. Utilizamos o conceito de constante quando não podemos alterar os valores contidos nelas. Por exemplo, o valor de pi (letra grega que representa o valor, aproximado, de 3,1415926). Esse valor é utilizado para realizar inúmeros cálculos trigono- métricos e algébricos e não pode ser modificado. Nesse caso, declaramos 47Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. uma constante com o uso da palavra reservada “const” e atribuímos a ela um valor fixo. O nome da constante segue as mesmas regras das variá- veis, que são declaradas, em JavaScript, da seguinte maneira: const Pi = 3.14159265 Observe que colocamos um ponto (.) para dividir as casas decimais do número. Isso ocorre por dois motivos: 1) Por ser o padrão america- no de se apresentar um número real (ou ponto flutuante); 2) Algumas linguagens de programação utilizam a vírgula para separar variáveis e textos, num comando de saída de dados, por exemplo. Portanto, sem- pre que for representar um número real, use o ponto. Quando uma constante é declarada, seu valor já deve ser atribuído. Se, ao longo do programa, tentarmos alterar seu valor, o sistema indica um erro. Se omitirmos a palavra “const”, o sistema entenderá que se trata de uma variável, podendo alterar seu valor. 4 Expressões aritméticas, literais, relacionais, de lógica booleana De acordo com Flanagan (2013), expressões são frases que o siste- ma pode avaliar para produzir um valor. Muitas expressões são repre- sentadas por símbolos e nos ajudam a realizar contas, atribuir valores às variáveis, obter o resultado de uma decisão, comparar valores, etc. Para cada uma dessas situações, temos um conjunto de expressões específico. 4.1 Expressões aritméticas Expressões aritméticas são aquelas realizadas com números, sejam eles inteiros ou reais. Muitas dessas expressões vêm da matemática. Os operadores que são permitidos nessas operações são: 48 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . OPERADOR SIGNIFICADO EXEMPLO + Adição 1 + 1 – Subtração 8 – 4 * Multiplicação 5 * 7 / Divisão 520 / 45 % Módulo (resto da divisão) 65 % 6 ** Exponenciação 5 → ** 2 4.2 4.2 Expressões literais Expressões literais são aquelas cujo resultado é do tipo literal e muda muito de uma linguagem para outra. O operador mais simples é aquele que faz a concatenação entre dois trechos de texto, que podemos cha- mar de string (corda, em português, se referindo a uma corda de caracte- res). O operador de concatenação no pseudocódigo é o sinal “+”: OPERADOR SIGNIFICADO EXEMPLO + Concatenação “Avenida” + “Paulista” 4.3 Expressões relacionais As expressões relacionais permitem que se realizem comparações entre duas variáveis. O resultado da comparação é sempre um valor lógico (booleano), ou seja, verdadeiro ou falso. Os operadores que podemos utilizar nessas expressões são: 49Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da RedeSenac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. OPERADOR SIGNIFICADO EXEMPLO > Maior a > 7 >= Maior ou igual b >= a < Menor c < 5 <= Menor ou igual c <= b == Igual a a == 9 != ou <> Diferente de b != 0 ou b <> 0 Em algumas linguagens, como em instruções SQL, por exemplo, o símbolo de “diferente” são os sinais de menor e maior juntos <>. Saber quando usar o != (não igual) ou <> é uma questão de sintaxe da lingua- gem na qual você estiver trabalhando. 4.4 Expressões de lógica booleana Utilizamos as expressões lógicas para analisar condições, criamos condições que nos retornam 1 ou 0 ou, então, verdadeiro ou falso. Os operadores utilizados para fazermos essa lógica são: OPERADOR SIGNIFICADO EXEMPLO && E lógico Conjunção (Nota >=7.0) && (freq. >= 75) Se a nota for igual ou maior que 7.0 e a frequência for maior ou igual a 75, retorna um valor VERDADEIRO (e podemos dizer que o aluno está APROVADO). Caso contrário, retorna um valor FALSO (e podemos afirmar que o aluno está REPROVADO). || OU lógico Disjunção (Nota < 0) || (Nota > 10) Se a nota for menor que zero ou se a nota for maior que 10, retorna um valor VERDADEIRO (e podemos dizer que a nota é inválida). Caso contrário, retorna um valor FALSO (e podemos dizer que a nota é válida, pois está num intervalo entre 0 e 10). (cont.) 50 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . OPERADOR SIGNIFICADO EXEMPLO ! Negação ! (a > 3) Se o valor de “a” for maior que 3, então retornará FALSO, caso contrário, retornará VERDADEIRO. O resultado de retorno é invertido. As expressões lógicas são compostas pelos operadores lógicos && (E) e || (OU). Para entendermos o tipo de retorno, nesses casos, precisa- mos verificar a chamada “tabela verdade”. Essa tabela verifica os valo- res de cada expressão e retorna um valor final de “falso” ou “verdadeiro”. Vejamos a tabela verdade do operador lógico E (&&): CONDIÇÃO 1 CONDIÇÃO 2 RESULTADO V V V V F F F V F F F F Para retornar o valor “verdadeiro”, todas as condições devem ser verdadeiras, no uso do operador lógico E. Veja nosso exemplo anterior: para afirmarmos que o aluno está aprovado, a nota dele deve ser maior ou igual a 7,0 (a condição 1 é verdadeira) e sua frequência deve ser maior ou igual a 75 (a condição 2 é verdadeira). Qualquer uma dessas condições sendo falsa, diremos que o aluno está reprovado. Agora, vejamos a tabela verdade do operador lógico OU (||): CONDIÇÃO 1 CONDIÇÃO 2 RESULTADO V V V V F V (cont.) 51Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. CONDIÇÃO 1 CONDIÇÃO 2 RESULTADO F V V F F F Para retornar “verdadeiro”, basta que apenas uma das condições seja verdadeira se estivermos usando o operador lógico OU. Novamente, analisando o exemplo anterior, podemos dizer que a nota é inválida (ou seja, não está num intervalo entre 0 e 10), caso a condição 1 ou a condi- ção 2 seja verdadeira, qualquer uma delas. Veja a condição 1: nota < 0 (nota é menor que zero). Se essa con- dição for verdadeira, já podemos afirmar que a nota está inválida, sem precisar verificar a condição 2. Já a negação é usada em casos em que queremos negar nossa verificação. Você deve estar se perguntando: para que faríamos isso? É mais uma questão probabilística. Por exemplo: imagine um jogo de dado (um dado comum, com 6 lados). Toda vez que saírem os números 1, 2, 3, 4 ou 5, o sistema acumulará nossos pontos e nos dirá para con- tinuar jogando. Mas, se sair o número 6, perdemos tudo e passamos a vez para o próximo jogador. Para esse problema, poderíamos usar a seguinte expressão: (dado == 1) || (dado == 2) || (dado == 3) || (dado == 4) || (dado == 5) Se qualquer uma dessas condições fosse verdadeira, nosso número acumularia e jogaríamos novamente. Porém, observe como essa ex- pressão ficou grande e difícil de ser testada (em casos mais complexos, poderia haver muito mais condições)! Como poderíamos deixar mais simples e eficiente nosso algoritmo? Basta compararmos aquilo que não queremos e inverter o resultado. Ficaria assim: 52 Algoritmos e programação I Ma te ria l p ar a us o ex cl us ivo d e al un o m at ric ul ad o em c ur so d e Ed uc aç ão a D is tâ nc ia d a Re de S en ac E AD , d a di sc ip lin a co rre sp on de nt e. P ro ib id a a re pr od uç ão e o c om pa rti lh am en to d ig ita l, s ob a s pe na s da L ei . © E di to ra S en ac S ão P au lo . ! (dado == 6) Nesse caso, se o dado for 6, o resultado seria verdadeiro, certo? Mas o algoritmo entende o verdadeiro como para acumular nosso número e continuar jogando. Entretanto, como invertemos nossa comparação (para facilitar nosso código), temos que inverter, também, nosso resul- tado (com o uso do símbolo de exclamação !). Assim, sempre que der o número 6, retornamos o valor falso, dizendo para o sistema não acumu- lar nosso número e não nos deixar jogar de novo. Treine todas as expressões vistas neste capítulo, principalmente as lógicas, e aprimore seu pensamento lógico. Isso vai ajudar muito a com- preender a programação e a resolver nosso projeto de software. Considerações finais Pseudocódigo é uma forma de instruirmos o computador a executar os comandos do nosso algoritmo a fim de concluirmos determinada tarefa. Entretanto, para que isso funcione, devemos seguir um padrão de programação e impor à máquina todas nossas intenções, que consti- tuem o passo a passo do algoritmo desejado. Parte dessas intenções é armazenar valores em variáveis com a finalidade de manipular dados e resolver problemas. Como vimos, as variáveis são espaços de memória aos quais o com- putador tem acesso por meio de seu endereço. Além disso, as variáveis têm nome e atribuição de valores. Por fim, vimos que as expressões são de extrema importância para tomarmos decisões em nosso algoritmo. Existem vários tipos delas, como as aritméticas, as literais, as relacionais e, principalmente, as 53Algoritmos – variáveis M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. lógicas, que são importantes para decisões de condições e refletem as regras do problema. Referências DEITEL, Paul J.; DEITEL, Harvey M. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010. FLANAGAN, David. JavaScript: o guia definitivo. 6. ed. Porto Alegre: Bookman, 2013. MARTINS, Paulo Roberto. Linguagens e técnicas de programação I: análise e desenvolvimento de sistemas. São Paulo: Pearson Education, 2009. MELO, Ana Cristina Vieira de; SILVA, Flávio Soares Corrêa. Princípios de lingua- gens de programação. São Paulo: Blucher, 2010. SEBESTA, Robert W. Conceitos de linguagens de programação. 5. ed. Porto Alegre: Bookman, 2003. 55 M aterial para uso exclusivo de aluno m atriculado em curso de Educação a Distância da Rede Senac EAD, da disciplina correspondente. Proibida a reprodução e o com partilham ento digital, sob as penas da Lei. © Editora Senac São Paulo. Capítulo 4 Algoritmos – condicionais Neste capítulo, vamos abordar a importância de tomarmos uma de cisão. A tomada de decisão não é um recurso computacional, apenas. Ela faz parte
Compartilhar