Baixe o app para aproveitar ainda mais
Prévia do material em texto
Desenvolvimento de sistemas Allen Oberleitner Luís Carlos S. Silva 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 . Dados Internacionais de Catalogação na Publicação (CIP) (Jeane Passos de Souza – CRB 8a/6189) Oberleitner, Allen Desenvolvimento de sistemas / Allen Oberleitner, Luís Carlos S. Silva. – São Paulo: Editora Senac São Paulo, 2019. (Série Universitária) Bibliografia. e-ISBN 978-85-396-2809-4 (ePub/2019) e-ISBN 978-85-396-2810-0 (PDF/2019) 1. Desenvolvimento de sistemas 2. Linguagem de programação 3. Algoritmos – Conceitos 4. Programação orientada a objetos 5. Banco de dados (Ciência da computação) I. Silva, Luís Carlos S. II. Título. III. Série 19-950t CDD – 003 005.13 005.74 BISAC COM051000 COM051010 COM051300 COM051210 Índice para catálogo sistemático 1. Desenvolvimento de sistemas 003 2. Linguagem de programação 005.13 3. Banco de dados (Ciência da computação) 005.74 DESENVOLVIMENTO DE SISTEMAS Allen Oberleitner Luís Carlos S. Silva 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. 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) Designer Educacional Jussara Cristina Cubbo Revisão Técnica Lenilson Lemos Vila Boas Coordenação de Preparação e Revisão de Texto Luiza Elena Luchini Preparação de Texto Asa Comunicação e Design Revisão de Texto Asa Comunicação e Design Projeto Gráfico Alexandre Lemes da Silva Emília Corrêa Abreu Capa Antonio Carlos De Angelis Editoração Eletrônica Michel Iuiti Navarro Moreno Ilustrações Michel Iuiti Navarro Moreno Imagens iStock Photos E-pub Ricardo Diana 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 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.editorasenacsp.com.br © Editora Senac São Paulo, 2019 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 . Capítulo 1 Apresentação inicial sobre desenvolvimento de sistemas, 7 1 Evolução do desenvolvimento de sistemas, 8 2 Utilização dos conceitos na prática, 16 Considerações finais, 17 Referências, 18 Capítulo 2 Introdução a algoritmos, 21 1 Introdução a algoritmos, 22 2 Conceitos de algoritmos, 24 3 Descrição narrativa de um algoritmo, 27 4 Representação de algoritmos por fluxograma, 29 Considerações finais, 33 Referências, 33 Capítulo 3 Algoritmos variáveis, 35 1 Programação imperativa, 36 2 Utilização de pseudocódigo, 40 3 Declaração de variáveis e constantes, 44 4 Expressões aritméticas, literais, relacionais e de lógica booleana, 49 Considerações finais, 52 Referências, 52 Capítulo 4 Algoritmos: condicional, 53 1 A arte de tomar decisões, 54 2 Estrutura de controle condicional simples, 60 3 Estrutura de controle condicional composta, 62 Considerações finais, 66 Referências, 67 Capítulo 5 Algoritmos: repetição, 69 1 Repetir para aprender, 70 2 Enquanto-faça (while), 73 Considerações finais, 79 Referências, 80 Capítulo 6 Algoritmos: vetores, 81 1 Teoria dos conjuntos, 82 2 Conceito de vetores, 84 3 Manipulando vetores, 86 Considerações finais, 93 Referências, 94 Capítulo 7 Algoritmos: matrizes, 95 1 Matriz é tabela?, 96 2 Conceito de matriz, 98 3 Manipulando matriz, 99 Considerações finais, 105 Referências, 106 Capítulo 8 Programação estruturada, 107 1 Linguagem de programação, 108 2 Linearidade, 113 3 Programação estruturada, 114 Considerações finais, 117 Referências, 118 Capítulo 9 Programação: funções e procedimentos, 119 1 Conceitos de função, 120 2 Procedimento, 127 3 Aplicando funções, 129 Considerações finais, 133 Referências, 134 Sumário 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. 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 . Capítulo 10 Programação: arquivo, 135 1 Processo arquivado!, 136 2 Conceitos de arquivo, 138 3 Manipulando arquivo, 144 Considerações finais, 148 Referências, 149 Capítulo 11 Programação orientada a objetos, 151 1 Conceito de POO, 152 2 Classes e objetos, 155 3 Aplicação de POO, 159 Considerações finais, 163 Referências, 163 Capítulo 12 Programação orientada a objetos: classes, 165 1 Composição da classe, 166 2 Instâncias, 178 Considerações finais, 181 Referências, 181 Capítulo 13 Programação orientada a objetos: Python, 183 1 Linguagem orientada a objetos, 184 2 Conceitos de Python, 188 3 Aplicação de POO: Python, 193 Considerações finais, 196 Referências, 197 Capítulo 14 Banco de dados, 199 1 Armazenamento de dados, 200 2 Modelos de banco de dados, 204 3 Conceito de banco de dados, 206 4 Instâncias ou ocorrências de uma entidade, 210 Considerações finais, 211 Referências, 212 Capítulo 15 Linguagem SQL, 213 1 Utilização de SQL nas aplicações, 214 Considerações finais, 225 Referências, 226 Capítulo 16 Atualização de tabelas em aplicações, 227 1 Conceitos de CRUD (Create, Read, Update, Delete) para SQL, 228 Considerações finais, 238 Referências, 238 Sobre os autores, 241 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. Estamos na era dos nativos digitais, pessoas que já nasceram em um mundo automatizado, virtualizado e conectado à internet. Mas como essa tecnologia chegou ao que conhecemos hoje? Na segunda metade do século XX, após o fim da guerra mundial, os primeiros softwares começaram a surgir. Até aquela época, os compu- tadores eram programados por meio de chaves manuais e sua utiliza- ção era muito trabalhosa e restrita, se comparado aos dias atuais. Capítulo 1 Apresentação inicial sobre desenvolvimento de sistemas 8 Desenvolvimentode sistemas 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 . Essa primeira era de softwares foi marcada pelo uso básico, pois naquela época não havia muito interesse no desenvolvimento. Como os computadores eram muito limitados, era possível executar apenas um programa de cada vez. Com a visão de novas possibilidades e as necessidades do mercado, os computadores começaram a ficar maiores, deixaram de utilizar vál- vulas – que eram lentas e de alta manutenção, pois queimavam muito –, migrando para a utilização de componentes microeletrônicos, que, mesmo nas primeiras versões, já apresentavam um poder computacio- nal muito maior. Conforme as décadas foram passando, assim como a tecnologia dos computadores cresceu exponencialmente, os softwares buscaram acompanhar essa evolução, otimizando os recursos e trazendo novas funcionalidades para este poder computacional. 1 Evolução do desenvolvimento de sistemas No mundo digital em que vivemos, a utilização de programas e sis- temas está presente em praticamente tudo que nos cerca, mas para chegarmos onde estamos hoje a programação de softwares passou por um longo caminho. A evolução da programação está diretamente ligada à história dos computadores, e, para entendermos melhor esse conceito, falaremos um pouco sobre isso. “A necessidade de desenvolver ferramentas que facilitassem o uso e o manuseio de operações de cálculos fez com que o ser humano che- gasse ao estágio atual de desenvolvimento da área da computação” (MANZANO, 1996, p. 17). A palavra computador significa o que computa ou aquele que cal- cula. Na verdade, os computadores não só calculam, mas também 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. executam outras tarefas associadas, como receber, transmitir e arma- zenar dados. Todo o computador é composto essencialmente por duas partes, conforme a figura 1: Figura 1 – Hardware versus software HARDWARE – É a parte física do computador, ou seja, tudo aquilo que podemos tocar. O monitor, teclado, mouse, impressoras, assim como todas as placas, circuitos e discos que são guardados dentro do gabinete, são considerados hardwares. Seu funcionamento básico é receber informações, processá-las e depois devolvê-las como resultado. SOFTWARE – É a parte lógica do computador, são todas as instruções e comandos criados a partir de algoritmos que dizem o que ele deve fazer. Os programas são conjuntos destas instruções e comentos que, em conjunto, executam uma tarefa específica. Fonte: adaptado de Capron; Johnson (2004). 1.1 Como tudo começou O Eniac foi o primeiro computador digital de larga escala, construí- do para quebrar códigos de comunicação do exército inimigo e realizar vários tipos de cálculos, principalmente de artilharia, afim de ajudar as tropas aliadas durante a Segunda Guerra Mundial; contudo, foi mais uti- lizado nos últimos anos da Guerra Fria. Segundo Platzman (1979), ele foi construído na escola Moore por ordem do exército dos EUA. A equipe contava com o engenheiro-chefe J. Presper Eckert, atuando inicialmente nos conceitos básicos desen- volvidos por John W. Mauchly, que atuou como principal engenheiro 10 Desenvolvimento de sistemas 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 . construtor e como consultor do departamento da artilharia america- na Herman H. Goldstine. O matemático húngaro John Von Neumann também participou do projeto, desenvolvendo uma lógica de números pseudoaleatórios, que trouxe um grande ganho de desempenho. Este computador foi construído na década de 1940, sendo composto por quase 18 mil válvulas, utilização que marca a primeira geração de com- putadores e originava repetidos problemas de manutenção, pois estas queimavam com frequência. De acordo com Matsuura (2016), mulheres como Ada Lovelace e Grace Hopper foram fundamentais para o avanço dos softwares. As seis programadoras do projeto Eniac criaram o sistema do primeiro computador eletrônico digital, mas nenhuma recebeu o devido crédito. Embora o sistema operacional do Eniac fosse feito por cartões per- furados, a programação não era através de linguagem, e sim por chaves manuais. Larry Gonick (1983) explica que as válvulas, entre outras fun- ções, mostravam o resultado dos cálculos, da mesma maneira que hoje usamos os monitores. Mesmo que a sua arquitetura seja enorme, a quantidade de proces- samento não se comparava à dos computadores atuais. 1.2 O início de uma revolução No fim da Segunda Guerra Mundial, na década de 1940, a maioria das pesquisas em todo o mundo, principalmente nos EUA e na Inglaterra, sobre programas era financiada pelos governos e desenvolvida como projetos de ciência por universidades, e outras, mais específicas, pelo exército. Os computadores eram muito grandes e caros, por isso só eram usados por especialistas. Era um mundo ainda muito restrito, e as comunidades de especialistas trabalhavam juntas para chegar a progra- mas que fizessem os computadores executarem tarefas específicas. Nesta fase, não existiam grandes investimentos, pois ainda não interes- sava às empresas e ao público. 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. O sistema operacional utilizado era o Unix, desenvolvido pela AT&T nos laboratórios Bell, em 1969; já os hardwares não eram específicos, montados conforme a necessidade, utilizando uma mistura de compo- nentes definidos e configurados por eles. Esses computadores ficavam muito grandes e eram utilizados em salas bem espaçosas. Na metade do século XX, o mundo iniciou uma grande evolução da tecnologia, unindo os conhecimentos científicos e a produção industrial. As indústrias concentraram seus trabalhos na pesquisa e conhecimen- to, dando início à chamada 3a Revolução Industrial. Com o início do interesse das empresas pelos computadores, eles começaram a receber configurações padronizadas e uma considerável redução de tamanho. 1.3 O nascimento da Apple Pouco depois, em meados dos anos 1970, dois jovens muito talen- tosos decidiram criar algo para o público. Steve Wozniak – detentor de grandes conhecimentos em programação – e Steve Jobs – um gênio em vendas – uniram suas habilidades e criaram a primeira empresa a vender computadores de boa performance para usuários sem grande conhecimento. Assim nascia a Apple. A intenção era desenvolver um computador confiável, relativamente pequeno e que pudesse ser usado em qualquer residência; para isso, utilizaram o sistema Unix, o mesmo sistema empregado pelos especia- listas, mas com comandos mais simples e um ambiente mais amigável. Queriam que fosse tão popular quanto um eletrodoméstico. PARA SABER MAISAté hoje, o fator de maior sucesso da Apple é o cuidado com os clien- tes: mais potência nas configurações, utilizando os componentes mais 12 Desenvolvimento de sistemas 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 . seguros do mercado e menos botões por fora, ou seja, o mais simples e intuitivo possível para os usuários. Quinafelex (2014) destaca o lançamento do Apple I no Homebrew Computer Club – clube criado por entusiastas de tecnologia, que se reu- niam no Vale do Silício. Esse modelo era formado por um kit com placa principal, que poderia ser comprada em pequenas lojas. Esse kit tinha de se “adaptar”, pois não possuía seu próprio gabinete. O aparelho tinha um processador de 1 MHz e uma memória RAM de 8 KB. Inicialmente, o preço era por volta de US$ 667. 1.4 Microsoft, uma nova visão entra no mercado Segundo Bill Gates (1995), com o interesse do público crescendo pela aquisição de computadores pessoais, empresas como a IBM ti- nham o controle da produção de hardwares e decidiram fabricar seus próprios computadores. O grande problema era que a Apple não concordou em fornecer seu sistema operacional, uma vez que sua intenção também era vender um produto completo, com hardware e software juntos. Neste cenário, surgiram Bill Gates, Paul Allen e Steve Ballmer. Eles aceitaram o desafio de, em um curto espaço de tempo, fornecer um sistema operacional. Sabendo que tinham um grande desafio e pou- co tempo para entregar, em 1980 compraram o “QDOS” – um sistema operacional com várias falhas e bugs. Corrigindo os erros e realizando diversas melhorias, o transformaram no DOS – Sistema Operacional de Disco (da sigla em inglês, disk operating system). Assim, conseguiram cumprir o prazo e entregar o sistema para o grupo de empresas. 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. Figura 2 – Tela da DOS – sistema operacional da Microsoft Atelsek (1983) compara o sistema operacional do PC a uma caixa de ferramentas que temos em casa. Primeiro, colecionamos as mais básicas ou essenciais, que realizam as tarefas mais simples, como uma chave de fenda, um alicate, um martelo, etc. Conforme vão surgindo outras necessidades, vamos adquirindo ferramentas mais específicas, como furadeira, serra elétrica e outras. A Microsoft, diferente da Apple, utilizou a tática de fornecer o seu sistema para o máximo de fabricantes de hardware possível. Esta tá- tica acabou trazendo vários problemas, como incompatibilidade com o hardware de alguns fabricantes e até problemas de segurança com vírus. Tanenbaum (2009) diz que as primeiras versões do Windows apre- sentavam uma tela colorida com recursos gráficos, mas ainda utilizam muitos arquivos de configuração do DOS. 1.5 Uma grande mudança no mercado A possibilidade da utilização dos computadores nas casas e escri- tórios impulsionou grandes mudanças na economia e no mercado de trabalho. 14 Desenvolvimento de sistemas 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 Rifkin (2014), com a aplicação da tecnologia nas indústrias, inicialmente, os valores dos produtos não eram baixos, mesmo utilizan- do pouca matéria-prima, pois os gastos com estudos e pesquisas eram altos. Neste contexto, as atividades que mais se destacaram no mercado eram as vinculadas à produção de softwares, computadores e os circui- tos microeletrônicos. Estes produtos estavam em alta, pois eram neces- sários para a produção de equipamentos na área da robótica, telefonia, televisão e internet. Figura 3 – Linha de montagem da indústria automobilística utilizando robôs autômatos Fica claro um ciclo de dependência entre eles, sendo que a inovação de um item afeta diretamente a evolução dos demais. Na década de 1990, com o surgimento dos computadores com am- biente gráfico e a popularização da internet, as empresas começaram uma corrida para acompanhar esse crescimento. A rotina dos escritórios, naquela época, era muito diferente do que vivemos nos dias de hoje. Como os computadores ainda não eram utilizados para estas atividades, tudo era feito em folhas de papel e 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. armazenado em grandes fichários e arquivos. Como a internet ainda não era usada, todos os documentos eram enviados e recebidos por meio de cartas e malotes. Era necessário transformar todos aqueles documentos, fichas e plani- lhas em documentos digitais e registros organizados em banco de dados. No mercado de trabalho também tivemos grandes mudanças, como por exemplo uma corrida para formar e preparar os funcionários para essa nova tecnologia. Também cresceu muito o trabalho temporário, contratando digitadores para realizarem essa transação digital, uma vez que ainda não havia programas de digitalização confiáveis como temos nos dias de hoje. O mercado de softwares começou a criar programas para atender às empresas – eram programas que realizavam tarefas específicas, sem nenhuma integração. Era muito comum andarmos por uma loja de materiais de escritório e nos depararmos com prateleiras repletas de caixas parecidas com caixas de cereais, contendo os mais diversos títulos de aplicação, como por exemplo controle de estoque, cadastro de clientes, folha de pagamento, controle de vendas, etc. O grande problema desses programas era a falta de integração entre eles; por exemplo, como o programa de vendas não estava interligado com o controle de estoque, a atualização no estoque referente às vendas feitas no dia tinha de ser feita manualmente, no fim do expediente ou no início do dia seguinte. Outro aspecto negativo era o fato de nem sempre esses programas terem o formato necessário para aquele determinado serviço, uma vez que eram genéricos e produzidos em massa. Atualmente, os softwares são desenvolvidos exclusivamente, con- forme a necessidade de cada empresa. São sistemas integrados que não atendem a todas as áreas da empresa, automatizando todas as informações, mas também se conectam com as filiais, empresas par- ceiras e fornecedores. 16 Desenvolvimento de sistemas 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 Utilização dos conceitos na prática Nos dias atuais, temos vivenciado um crescimento exponencial da tecnologia – os sistemas desenvolvidos hoje executam atividades com- plexas, impensáveis há poucos anos. Acabamosnão percebendo, mas ela está a nossa volta, em todos os lugares – chamamos isso de computação ubíqua. Weiser (1999) firmou esse termo com a ideia que as tecnologias mais profundas são aquelas que desaparecem, referindo-se à conexão de dispositivos que nem se fazem notar, mas estão por toda a parte. Utensílios de uso diário, como smartphones, tablets, televisores, computadores de bordo de carros, eletrodomésticos, sistemas de segu- rança, etc., todos estão conectados à internet e incorporados a nossos hábitos, facilitando o nosso dia a dia. Essas são algumas das fontes do oceano de dados que é o Big Data – tecnologia que hoje traz avanços a todas as áreas, cruzando dados e formando soluções. Hoje, podemos ver na prática os grandes avanços e poderíamos citar centenas de inovações, mas vamos falar das mais impactantes. 2.1 A Internet das Coisas Segundo a SAP (2018), a Internet das Coisas é uma rede composta de objetos físicos, que podem ser veículos, máquinas, eletrodomésti- cos, etc. Esses objetos utilizam sensores e APIs para se conectar e tro- carem dados pela internet. Utilizando várias tecnologias, como aplicativos, dispositivos eletrôni- cos e internet, ela integra, monitora e realiza uma série de eventos. 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. Podemos encontrar essa tecnologia em diversas áreas de nossas vidas, no computador de bordo de um carro, em equipamentos de se- gurança em nossa residência, em eletrodomésticos, e muitos outros. 2.2 Inteligência artificial e cognitiva A inteligência artificial é a área da tecnologia que se propõe a elabo- rar sistemas baseados em algoritmos complexos, que simulem a capa- cidade humana de analisar e resolver os problemas e tomar decisões. Já a inteligência cognitiva, segundo D’Egmont (2016), difere da inteli- gência artificial, porque o sistema cognitivo é capaz de aprender. O exemplo mais famoso desse sistema é o Watson da IBM, uma pla- taforma de serviços cognitivos, ou seja, você pode ensiná-lo a resolver problemas. Hoje, ele é utilizado para as mais diversas aplicações, desde atendimentos telefônicos e chats, até auxílio na leitura de exames mé- dicos complexos. Além de aprender com as informações que recebe, ele também con- ta com uma aplicação que reconhece o que compõe a imagem. Esse recurso pode ser utilizado em diversas atividades, tendo um espaço es- pecial na segurança. Considerações finais O desenvolvimento de sistemas está em ciclo de evoluções contí- nuas. Em relação a outras ciências que os homens estudam, a tecnolo- gia é a que mais cresce e contribui para o progresso das demais. Ela é muito nova, tem décadas, mas já se tornou vital para todos. Os ciclos têm sido cada vez mais curtos, pois a disseminação de co- nhecimento é maior a cada dia e vemos profissionais do mundo inteiro trazendo mais e mais inovações. A necessidade de adaptação a este novo mundo é cada vez maior. 18 Desenvolvimento de sistemas 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 . Referências ATELSEK, Jean. Tudo sobre computadores. São Paulo: Editora Quark, 1983. CAPRON, H. L.; JOHNSON, J. A. Introdução à informática. 8. ed. São Paulo: Editora Pearson Prentice Hall, 2004. D’EGMONT, Tahiana. O que é Watson? Plataforma cognitiva? Inteligência ar- tificial? Um robô?, 16 dez. 2016. Disponível em: <https://www.ibm.com/blogs/ digital-transformation/br-pt/o-que-e-watson-plataforma-cognitiva-inteligencia- -artificial-robo/>. Acesso em: 27 ago. 2018. GATES, Bill. A estrada do futuro. São Paulo: Companhia das Letras, 1995. GONICK, Larry. Introdução ilustrada à computação. São Paulo: Harper & Row do Brasil, 1983. MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de programação. São Paulo: Editora Érica, 1996. MATSUURA, S. Hoje minoria da indústria de tecnologia, mulheres foram fun- damentais na gênese da computação, 14 fev. 2015. Disponível em: <https:// oglobo.globo.com/sociedade/historia/hoje-minoria-na-industria-de-tecnologia- -mulheres-foram-fundamentais-na-genese-da-computacao-15336779#ixzz5P- J1tCp6j>. Acesso em: 27 ago. 2018. PLATZMAN, G. W. The ENIAC computations of 1950 — gateway to numerical weather prediction. Bulletin of the American Meteorological Society, v. 60, n. 4, p. 302-312, 1979. QUINAFELEX, R. Confira a evolução dos computadores de mesa da Apple, desde a origem. 27 out. 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: 27 ago. 2018. RIFKIN, J. A Terceira Revolução Industrial. São Paulo: Bertrand Editora, 2014. SAP. O que é Internet das Coisas (IoT)? [s. d.]. Disponível em: <https://www. sap.com/brazil/trends/internet-of-things.html>. Acesso em: 27 ago. 2018. https://www.ibm.com/blogs/digital-transformation/br-pt/o-que-e-watson-plataforma-cognitiva-inteligencia-artificial-robo/ https://www.ibm.com/blogs/digital-transformation/br-pt/o-que-e-watson-plataforma-cognitiva-inteligencia-artificial-robo/ https://www.ibm.com/blogs/digital-transformation/br-pt/o-que-e-watson-plataforma-cognitiva-inteligencia-artificial-robo/ 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. TANENBAUM, A. S. Sistemas operacionais modernos. 3. ed. São Paulo: Editora Pearson Prentice Hall, 2009. WEISER, Mark. The computer for the 21st century. Mobile Computing and Communications Review, v. 3, n. 3, p. 3-11, 1999. 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 a algoritmos Quando perguntamos o que é algoritmos, muitas pessoas associa- riam a algo difícil ou os relaciona a conceitos complexos de cálculos ou algo assim. Mas será que a primeira impressão está correta? Algoritmos na verdade são conceitos simples que usamos em nosso dia-a-dia. Hoje em dia temos os algoritmos digitais em várias tarefas do nosso cotidiano. Quando você acessa um site, faz uma busca, lê os seus e-mails, se relaciona com seus amigos através de redes sociais e até mesmo faz aquelas compras on-line, isso tudo só é possível por causa dos algorit- mos. Mesmo quando estamos jogando um jogo, pode ser aquele jogui- nho mais simples que você tem no seu smartphone até aquele mais pesado que só funciona no seu console favorito, os algoritmos estão trabalhando para te dar diversão. Seria quase impossível imaginarmos a possibilidade de realizar tan- tas tarefas como as que hoje nos sãos impostas sem as facilidades proporcionadas pelos algoritmos digitais. Utilizamos algoritmos todo tempo, no computador de bordo dos carros, nos programas de celular, até mesmo em outros aparelhos mais simples como um micro-ondas ou um refrigerador, tudo isso é possível através dos algoritmos. 22 Desenvolvimento de sistemas 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 adi 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 . 1 Introdução a algoritmos Os algoritmos são tão antigos quanto a matemática, os especialis- tas divergem muito sobre a sua origem. Temos associado esta palavra à computação, mas este é um termo que pode ser usado para várias ciências, inclusive ela nem nasceu da computação. A teoria mais de- fendida sobre sua origem é a de que um grande matemático que viveu na Pérsia no século IX chamado Abu Abdullah Mohammad Ibn Musa Al-Khawarizmi, nascido em Khawarizm (Kheva), ao sul do mar Aral. Sua influência no crescimento de diversas áreas da ciência, parti- cularmente na matemática e outras como astronomia e geografia é bastante notória. Ele tinha dentre estas obras, a de nome Algorithmi de numero indorum (em indiano), que falava sobre algoritmos que traba- lhavam com o sistema de numeração decimal. Suas obras só foram descobertas e apresentadas ao ocidente no século XI. O nome foi sofrendo mudanças por causa da pronuncia de seu nome Al-Karismi, chegando ao falado hoje “algarismo” e deste mesmo radical o termo “algoritmo”, termo usado hoje na computação, mas também é muito utilizado em outras áreas como administração, enge- nharia, entre outras. Segundo Forbellone e Eberspacher (2005), a principal ideia associa- da a palavra algoritmos se refere a maneira sistemática de descrever um conjunto de regras formais para a obtenção de uma resposta da solução de um problema incluindo fórmulas de expressão aritmética. Xavier (2014) descreve que algoritmos, de uma maneira bem simples, é uma sequência de passos ou ações para atingir um objetivo. Sua associação à computação se deu a partir da metade do sé- culo passado, época da evolução dos computadores, pois é por meio deles que é possível criarmos as instruções contidas nas rotinas que eles trabalham. O crescimento da sua utilização hoje tem crescido 23Introdução a 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. exponencialmente, pois eles são a base do desenvolvimento dos pro- gramas, dos mais simples aos mais complexos. Com a ampliação do poder de processamento dos computares que possibilita a execução de tarefas muito mais complexas e as novas tec- nologias de armazenamento de informações, são os fatores que impul- sionaram este crescimento. O avanço da tecnologia dos hardwares (parte física ou componentes que formam os computadores), fez possível a utilização de lógicas cada vez mais complexas e elaboradas para a resolução dos problemas das mais diversas áreas. Um dos grandes exemplos que podemos citar é o Big Data. Ele é um conceito que descreve um grande volume de dados que é gerado a cada segundo. Figura 1 – O Big Data sendo usado para tomada de decisões Hoje as tecnologias que nos auxiliam em diversas atividades do nos- so cotidiano geram muitos dados, que antes eram dispensados, mas que hoje são armazenados, tratados e geram informações de grande 24 Desenvolvimento de sistemas 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 .valor, importantes para a descobertas sobre as inúmeras possibilidades de crescimento econômico e social. Estas informações, processadas pelos algoritmos que compõem os sistemas, conseguem dar respostas precisas que até pouco tempo atrás não seriam possíveis. Também não poderíamos deixar de falar sobre a utilização de algo- ritmos na construção da inteligência artificial, uma área da computação criada na década de 50 que desenvolve algoritmos capazes de simula- rem o raciocínio humano. Esta área cresceu tão rápido que, em 1997, o supercomputador Deep Blue, da IBM, venceu pela primeira vez o campeão mundial de xadrez da época, o russo Gary Kasparov. Segundo o especialista em Inteligência Artificial, M. Tim Jones, o programa do Deep Blue era feito por algoritmos que possibilitavam que ele imaginasse uma média de 200.000.000 de posições por segundo, por isso o atual campeão acabou perdendo a partida. (JONES, 2018). Ele ressalta a vitória do supercomputador Watson, também da IBM, que enfrentou dois dos jogadores humanos de maior sucesso de todos os tempos e os derrotou na frente de milhões de telespectadores em 2011. 2 Conceitos de algoritmos 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. Para conseguirmos inserir lógica em nossas atividades, precisamos aprender a pensar de forma estruturada, ou seja, desenvolver e aperfei- çoar a técnica de pensamento e seguir uma sequência de raciocínio que crie passos objetivos e seguros até a solução. 25Introdução a 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. IMPORTANTE Segundo Manzano e Oliveira (2012), para usar o raciocínio lógico, é ne- cessário ter domínio do pensar, bem como saber pensar, ou seja, pos- suir e usar a “arte de pensar”. Quando organizamos nossos pensamentos de forma lógica conse- guimos associar as informações e transformá-las em base para nossas soluções. Analise a lógica a seguir: Se: todo mamífero é um animal E: todos os gatos são mamíferos Logo: todos os gatos são animais! Ou Se: todos os veículos são transportes E: todas as motos são veículos Logo: todas as motos são transportes! No exemplo apresentado usamos a lógica para averiguar uma si- tuação e chegar a uma conclusão, fazendo associações entre eles. A primeira parte analisa que se todos os seres mamíferos são animais e que se todos os gatos são mamíferos, então os gatos também fazem partes do grupo de animais. A segunda faz uma análise parecida, que se todos os veículos são chamados de transportes e se todas as mo- tos são consideradas veículos, então as motos também fazem parte do grupo de transportes. 26 Desenvolvimento de sistemas 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 .Utilizamos a lógica a todo o momento em nossas vidas, quando pen- samos, falamos ou escrevemos, utilizamos a lógica para ordenar as pa- lavras e dar sentido ao que estamos fazendo. Ao longo do dia, usamos o nosso raciocínio lógico para resolvermos questões, das mais simples as mais complexas. A lógica nos ensina a corrigirmos nosso pensamento, nos ensinando a usá-lo corretamente. Usando o raciocínio de forma ordenada dividindo a ação em vários passos até a solução do problema. Analise a lógica a seguir: Se: A porta está fechada E: a mochila está dentro da casa Logo: Preciso primeiro abrir a porta, entrar em casa para depois pegar a mochila! Ou Se: Se Jussara é mais nova que José E: José é mais novo que Fábio Logo: Jussara é mais nova que Fábio! Resolver problemas utilizando o computador não é muito diferente do que falamos agora, devemos encontrar uma maneira de escrever o problema deforma que seguindo uma sequência de passos, atingimos a solução desejada. Isto é algoritmo! De acordo com Manzano e Oliveira (2012, p.27), “Algoritmos na Ciência da Computação (Informática), está associada a um conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema, ou de uma classe de problemas, em um número finito de passos. ” 27Introdução a 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. Para termos a necessidade de criar uma solução, precisamos antes ter um problema. A necessidade de enviar mensagens e documentos mais rápido fez com que criarem o e-mail, a necessidade de podermos nos relacionar virtualmente fez com que criassem o Facebook. 3 Descrição narrativa de um algoritmo Podemos utilizar diversas formas para escrever um algoritmo. Isso sempre vai depender muito da sua necessidade e de quem vai ler o que você produziu. Escrevemos um algoritmo utilizando a descrição narrativa quando queremos descrever um problema de forma que o receptor entenda do assunto mesmo não tendo conhecimento de algoritmos. O grande problema da forma narrada é que ela, por ser escrita em uma linguagem comum como o português por exemplo, acaba criando pontos de imprecisão, ou seja, de dupla interpretação. Isso faz com que a forma de narrativa traga uma falta de confiabilidade no entendimento do algoritmo. Outro ponto negativo é o fato dela gerar uma descrição muito grande para dizer poucas coisas, se comparando a outras formas. Quando escrevemos um algoritmo de forma narrativa, mesmo ele sendo um texto em linguagem simples, devemos escrevê-lo de forma ordena, lógica e em passos bem definidos. Se por exemplo, eu fosse passar instruções para uma criança com- prar pães em uma padaria desta forma: 1. Sair da padaria. 2. Pegar a comanda. 3. Pegar a fila do caixa. 28 Desenvolvimento de sistemas 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 . 4. Pedir 10 pãezinhos. 5. Entregar o dinheiro e a comanda. 6. Pegar a fila dos pães. 7. Conferir o troco. 8. Entrar na padaria. Tenho certeza que você percebeu que a criança ficaria totalmente perdida na padaria, pois nada daria certo. Para que uma criança que ain- da não conhece os procedimentos necessários para uma simples com- pra de pães ter êxito, precisamos ordenar os passos na ordem correta. Vamos ver agora como deveríamos escrever o bilhete para a criança: 1. Entrar na padaria. 2. Pegar a comanda. 3. Pegar a fila dos pães. 4. Pedir 10 pãezinhos. 5. Pegar a fila do caixa. 6. Entregar o dinheiro e a comanda. 7. Conferir o troco. 8. Sair da padaria. Para utilizarmos a lógica devemos definir o que deve ser feito para solucionar o problema e colocar na ordem correta para conseguir che- gar na solução. Vamos a outro exemplo bem conhecido nosso, que pou- cas pessoas pensariam que seria um algoritmo. Uma Receita de bolo! 29Introdução a 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. 1. Misture os ingredientes. 2. Unte a forma com manteiga. 3. Despeje a mistura na forma. 4. Se houver coco ralado despeje sobre a mistura. 5. Leve a forma ao forno. 6. Enquanto não dourar deixe a forma no forno. 7. Retire do forno. 8. Deixe esfriar. Repare que neste exemplo, mesmo ele estando na sequência cer- ta, alguns passos ficaram um pouco imprecisos, como enquanto não dourar, pois a pessoa que vai fazer o bolo pode não saber o ponto exato que a massa do bolo deve ficar. Por isso quando usarmos a linguagem narrativa devemos ter o nível de detalhes compatível com a precisão que o resultado deve ter, ou seja, o bolo não deve ficar queimado e nem com a massa crua. 4 Representação de algoritmos por fluxograma Podemos representar os algoritmos de forma gráfica, para isso utili- zamos os fluxogramas. Os fluxogramas são formados de caixas com formato variado que conectadas de forma ordenada e lógica informam as instruções a se- rem executadas. São muito populares por serem de fácil entendimento das ideias contidas no algoritmo. A representação do fluxograma é ótima para descrever algoritmos de pequeno e médio tamanho (XAVIER, 2014). 30 Desenvolvimento de sistemas 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 .Considerado um nível intermediário de descrição, o fluxograma fica entre a narrativa, que vimos a pouco, e a de pseudocódigo, que veremos um pouco mais a frente. Ele expressa melhor a parte física, ou seja, de detalhes como entrada e saída de informações, o fluxo das informações e até mesmo a forma de armazenamento. Seguindo os princípios de entrada, processamento e saída, ele é composto de um símbolo para iniciar, uma sequência de comandos e tomadas de decisão e finaliza, independentemente de quantas bifur- cações geradas por tomadas de decisão, aos símbolos finais, que são iguais ao início só que desta vem escrito fim. Figura 2 – Exemplo de um fluxograma, onde se verifica se a impressora está pronta para impressão Início Fim Abrir impressora Fazer a impressão Colocar papel Não Sim Tem papel? A seguir temos os símbolos mais utilizados nos fluxogramas: 31Introdução a 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. Figura 3 – Simbologia de fluxograma Terminal Símbolo utilizado no início e fim de um fluxograma. Também pode ser usado na definição de sub-rotinas. Entrada manual Simboliza a entrada manual de dados, geralmente feita através de teclado. Processamento Representa a execução de uma operação lógica ou matemática. Exibição Representa a saída visual de dados, geralmente através do monitor. Decisão Representa a execução de uma operação lógica ou matemática. Preparação Representa a modificação de uma instrução em relação à ação de sua atividade subsequente. Processo predefinido Definição de um grupo de operações estabelecidas como uma sub-rotina de processamento anexa ao diagrama. Documento Representa a saída no formato de um documento. Conector Representa a entrada ou saída em outra parte do fluxo. Pode ser usado para quebras de linhas e continuações em outras páginas. Linha Representa a conexão entre os outros elementos do diagrama de blocos. Quando possui a ponta de um seta significa que está mostrando a direção do fluxo. 32 Desenvolvimento de sistemas 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 .Vamos fazer agora a um exemplo prático, montando um fluxograma de uma funcionalidade do sistema de uma escola.Devemos criar um fluxograma simples, que calcule a média de duas notas de um aluno e logo após confirmando se ele está aprovando. Levando em conta que a nota de aprovação é 7. Figura 4 – Exercício proposto para calcular a média de um aluno e verificar a aprovação Início Fim Média <- (N1 + N2)/2 “Reprovado”“Aprovado” NãoSim N1, N2 Média <- (N1 + N2)/2 Podemos pode perceber que os fluxogramas ajudam a organizar nossos pensamentos e facilita para imaginarmos o código antes mes- mo de implementá-lo. Temos várias vantagens como ele, como: • Mostrar o código de forma organizada. • Simular a execução de um código dentro de um programa. 33Introdução a 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. • Mostrar a estrutura do programa em formato gráfico. • Usá-lo para mostrar a navegação de um programa ou site. Podemos encontrá-los com outros nomes como fluxogramas de processo, mapas de processos, fluxogramas funcionais, entre outros. Considerações finais Para escrevermos instruções para os computadores, precisamos utilizar a lógica de programação, que nada mais é que um conjunto de ações organizadas para resolver o problema proposto à aplicação. Chamamos estes conjuntos de passos de algoritmos e podemos en- contra-los em quase tudo que utilizamos para realizar nossas tarefas do dia-a-dia. Podemos escrever estes algoritmos de forma narrativa, que nada mais é que uma lista organizada de ações, que se seguidas de forma correta, leva a solução do problema. Também podemos representa-los de forma gráfica através de fluxogramas, um conjunto de símbolos co- nectados que mostram o fluxo de execução de um algoritmo. Referências FORBELLONE, André L. V.; EBERSPACHER, Henri F. Lógica de Programação: A Construção de algoritmos e estrutura de Dados. 3. ed. Editora Pearson Prentice Hall, Brasil, 2005. JONE, M. T. As linguagens da IA. 19 jan. 2018. Disponível em:< https://www. ibm.com/developerworks/br/library/cc-languages-artificial-intelligence/index. html>. Acesso: 9 ago.2018. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr F. Algoritmos: Lógica para Desenvolvimento de Programação. São Paulo: Editora Érica, 2012. XAVIER, Gley F. C. Lógica de Programação. São Paulo: Editora Senac São Paulo, 2014. 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 O computador é uma máquina capaz de realizar comandos e cálcu- los matemáticos, mas, diferente do que muitas pessoas pensam, ele precisa receber instruções para conseguir realizar todas essas tarefas. Para isso, criamos programas utilizando algoritmos para passar essas instruções a ele. Quando vamos criar um algoritmo, devemos utilizar uma linguagem que seja imperativa, impondo os passos que ele deverá executar, de for- ma que as instruções fiquem explícitas, diretas, sem deixar dúvidas. As formas de descrição que utilizamos até agora não são tão pre- cisas, elas podem deixar dúvidas na hora de um desenvolvedor imple- mentar a solução. 36 Desenvolvimento de sistemas 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 . Assim, como na vida real, se não passarmos todos os detalhes quan- do entregamos uma tarefa a alguém, temos uma grande possibilidade de não recebermos o resultado esperado. Só teremos a garantia de sucesso se escrevemos algoritmos, utilizan- do valores que precisamos para resolver esses problemas, manipulando- -os de forma organizada e com recursos que nos possibilitam utilizar a lógica computacional para gerar a solução para todos esses casos. 1 Programação imperativa Quando vamos criar um programa de computador, devemos analisar qual paradigma, ou seja, qual o conjunto de características que, juntas, definirão como ele deve operar para resolver o problema. A programação imperativa é baseada nos estados de valores que ele recebe – “variáveis” – e em instruções e comandos que dão a ideia de ordens, dizer exatamente o que deve ser feito. Por isso, ela é dinâmica, sendo constantemente mudada durante a sua execução. PARA SABER MAIS Imperativo na língua portuguesa significa que acentua o caráter de man- do, de autoridade, ou exprime uma ordem. O programador passa as instruções de como e o que o computador deve fazer quando ler o programa. A utilização de repetições, condi- ções e atribuição de valores que hoje são usados constantemente em todas as linguagens surgiram neste paradigma. Um programa criado em uma linguagem imperativa deixa de ser uma expressão, e passa a ser um comando. 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. Estas são algumas linguagens de programação que se baseiam no modelo imperativo: Basic; C; PHP; Java; Cobol; Pascal; Python e outros. Na figura 1, a seguir, temos o modelo computacional do paradigma imperativo. Figura 1 – Modelo computacional do paradigma imperativo Conjunto de saídas Conjunto de entradas Entradas que causam saídas errôneas Saídas errôneas Ie oe Programa Fonte: adaptado de Sommerville (2011, p. 208). Vamos apresentar como seria uma programação imperativa, aplica- da a uma tarefa do nosso cotidiano, como por exemplo fazer um bolo: Separar os ingredientes: leite, ovo, açúcar, margarina, farinha e fermento. Aqueça o forno a 180 graus. Bata as claras em neve e reserve. Misturar em uma vasilha grande o açúcar, a margarina e as gemas. Adicionar a farinha e o leite. Mexa até que esteja bem misturado. 38 Desenvolvimento de sistemas 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 . Juntar a clara em neve misturando vagarosamente. Colocar a mistura em uma forma untada. Coloque no forno aquecido por 40 minutos. Se colocar o garfo no bolo e ele sair limpo, desligue o forno, senão, o mante- nha por mais cinco minutos. Desligar o forno. Repare no exemplo anterior que seu funcionamento utilizou exata- mente os conceitos que falamos até agora. Veja: • Informamos valores, que são os ingredientes. • Damos comandos para o programa executar ações com estes valores, alterando assim o seu estado. • Recebemos a solução esperada do programa, um bolo preparado corretamente. Conforme falamos anteriormente, se analisarmos o algoritmo que criamos acima e imaginarmos um robô executando os passos, vamos perceber que devemos melhorar ainda mais este código, uma vez que o robô não teria conhecimentos de coisas que para nós são óbvias, como por exemplo: • Verificar se o gás estava aberto antes de ligar o forno. • Quebrar os ovos delicadamente e separar a clara da gema antes de fazer as claras em neve. • Para untar a forma, deveriam ser utilizadas margarina e farinha. Chamamos isso de refinamento de código, e devemos fazê-lo até que tenhamos certeza que nosso código está performático. 39Algoritmos variáveis M aterialpara 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. Um outro exemplo utilizado por Xavier (2014, p. 26) demonstra a ri- queza de detalhes de um código bem refinado. Nele, temos as instru- ções para começarmos a dirigir um carro: Abrir a porta. Sentar no banco. Fechar a porta. Ajustar o banco e os espelhos retrovisores. Colocar o cinto de segurança. Pisar na embreagem. Pegar o câmbio. Colocar o câmbio em ponto morto. Soltar a embreagem. Ligar o carro. Pisar na embreagem. Pegar o câmbio. Colocar o câmbio na primeira marcha. Acelerar o carro. Soltar o freio de mão. Soltar a embreagem devagar. Neste exemplo, temos passos precisos para executar a ação – repa- re que temos ações que servem de prevenção, preparação para que o próximo passo tenha sucesso, como garantir que o câmbio esteja em 40 Desenvolvimento de sistemas 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 . ponto morto, antes de ligar o carro; assim, mesmo que o carro já esti- vesse em ponto morto, garantimos o bom funcionamento da solução. 2 Utilização de pseudocódigo O pseudocódigo, que poderíamos traduzir ao pé da letra como “falso código”, é a linguagem que mais se assemelha às linguagens que usa- mos para desenvolver os programas nos computadores. Ela é a descri- ção de um algoritmo sem a necessidade de utilizar as particularidades de uma linguagem de programação. Segundo Medina e Fertig (2006), o pseudocódigo é uma linguagem intermediária entre a narrativa e as linguagens de programação de alto nível. IMPORTANTE Linguagem de programação de alto nível é aquela que se aproxima mais da linguagem humana e se distancia da linguagem de máquina. Ela não controla a parte física do computador, somente trata da camada de liga- ção com o usuário, como aplicativos, e não controla o hardware, como o processador, por exemplo. É comum vermos outros nomes sendo atribuídos ao pseudocódigo, como portugol ou português estruturado – geralmente, utilizados para enfatizar que o pseudocódigo está sendo escrito em português. Quando trabalhamos nossos algoritmos utilizando o pseudocódigo, buscamos ao máximo criar uma rigidez semântica e sintática para que o código seja lido e interpretado corretamente pela máquina. Vamos começar com um exemplo simples, sem todos os passos de criação de um pseudocódigo, mas importante para aprendermos a estrutura: 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. Início Escreva: “Qual a nota do aluno?” Leia: nota Se a nota for maior ou igual a 7, então: Escreva: “aluno aprovado” Senão: Escreva: “aluno reprovado” Fim Neste programa que acabamos de criar, ele envia uma pergunta na tela ao usuário, espera ele digitar, verifica e, se o aluno tirou uma nota igual ou maior que 7, ele responde “aluno aprovado”; senão, ou seja, se a nota for menor que 7, ele responderá “aluno reprovado”. Se estivéssemos escrevendo a mesma instrução de forma narrativa, não teríamos essa riqueza de detalhes em cada ação, que na hora da programação faria toda a diferença. IMPORTANTE “Ação: Fato que, a partir de um estado inicial, após um período de tempo finito, produz um estado final previsível e definido” (XAVIER, 2014, p. 32). Você percebeu que temos alguns detalhes que ainda não sabemos por que estão lá, como as aspas nas frases e termos mais curtos e ob- jetivos, como leia ou escreva? Falaremos mais no momento oportuno. 42 Desenvolvimento de sistemas 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 for construir um pseudocódigo, nunca comece a escrever desordenadamente o que você tem em mente, procure seguir estes passos: 1. “Compreensão e Estratégia” – Ao se deparar com um problema novo, faça o seguinte: a. Separe os dados e o que você precisa fazer com eles; b. Faça um rascunho para visualizar cada passo. 2. “Crie um plano para a solução” – Agora que tem as informações sobre o problema organizadas: a. Verifique se já resolveu um problema parecido; se sim, o que posso aproveitar neste; b. Se o problema for muito complexo, separe-o em partes, assim fica mais fácil resolver; c. Não se prenda a um só formato, se tiver difícil de prosseguir, busque alternativas para resolver o problema. 3. “Formalize a solução” – Hora de começar a montar o algoritmo: a. Use o pseudocódigo para montar a solução baseada no plano que você desenvolveu; b. Cuide para que cada passo seja escrito de forma correta, não tenha pressa de escrever; muitas vezes, um programa inteiro não funciona por um simples detalhe. 4. “Realize teste” – Agora com o algoritmo montado, vamos executá-lo: a. Ao testar, veja se não apresenta nenhuma falha no passo a passo; b. Verifique se ele solucionou o problema da forma esperada, utilize valores diferentes para comprovar que realmente está funcionando. 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. 5. “Refine o código” – Será que ele pode ser melhorado? a. Veja se não há nenhuma mudança que traga melhorias ao re- sultado do programa; b. Verifique se existe algum código redundante, ou seja, repetido ou que não seja necessário. Vamos conhecer agora algumas partes que compõem a estrutura do nosso pseudocódigo: • “Atribuição” – Quando o programa recebe informações, precisa- mos atribuí-las a um espaço reservado da memória chamado variável. Para indicar que o valor está sendo atribuído, usamos o símbolo . Exemplo: valor 35 ou nome “João”. • “Bloco de Instrução” – Assim, no pseudocódigo, como em outras linguagens de programação, as instruções são executadas na se- quência em que foram escritas. Por isso, usamos um bloco de instruções para indicar onde ele se inicia, se desenvolve e termi- na. Um bloco de instruções é delimitado pelas palavras “início” e “fim”. Exemplo: Início “primeira instrução” “segunda instrução” ........ “última instrução” Fim • “Leia” e “Escreva” – Estas duas instruções são utilizadas para a entrada e saída de informações para o usuário, são a interface 44 Desenvolvimento de sistemas 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 . entre a máquina e quem está utilizando o programa. Todas as vezes que quisermos mostrar uma mensagem ou resultado na tela do computador, utilizamos a palavra escreva, seguida do va- lor ou mensagem; e quando quisermos receber um valor digitado pelo usuário, utilizamos a palavra leia, seguida do endereçoonde armazenaremos esta informação. Exemplo: Início escreva: (“Qual o seu nome?”) leia: (nome_convidado) escreva: (“Seja bem-vindo ”,nome_convidado ) Fim Este código escreve na tela uma pergunta para o usuário, o seu nome recebe a resposta e armazena no espaço de memória “nome_convida- do” e depois escreve na tela uma mensagem de boas-vindas personali- zada com o nome que ele digitou. 3 Declaração de variáveis e constantes A maior funcionalidade de um computador é manipular informações. Para resolver um problema, ele precisa de dados para processá-los. É necessário que haja formas de se trabalhar com diferentes tipos de dados em um programa. Apesar de internamente um compu- tador manipular unicamente números, as linguagens de progra- mação permitem que utilizemos outros tipos de informações nos programas de forma transparente. (MEDINA; FERTIG, 2006, p. 24) 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. Antes de continuarmos, precisamos entender alguns conceitos: • “Dados” – Utilizados para se referir ao que realmente está arma- zenado, são dados isolados que não fazem sentidos sozinhos. Exemplo: Nome (primeiro nome e sobrenome), Endereço (logra- douro, número e complemento). • “Informações” – Utilizadas para se referir ao significado dos dados para um determinado usuário. No exemplo abaixo, sabe- mos agora que o endereço é referente àquela pessoa. Exemplo: Nome e Endereço. Observe que a função dos nossos programas, basicamente, será transformar informações iniciais, que usualmente chamamos de dados, em informações finais, as respostas que serão usadas por quem utiliza o programa. Temos dois tipos de Dados: • “Dados de Entrada” – Conjunto de informações que o programa precisa receber para iniciar o processo. • “Dados de Saída” – Conjunto de informações que o programa de- volve como resposta após o processamento. Agora, vamos fazer uma atividade para fixarmos esses conceitos. Para cada algoritmo abaixo, pense qual seriam os dados de entrada e saída: • Algoritmo para calcular a idade de uma pessoa. • Algoritmo para calcular o IMC (índice de massa corporal) de uma pessoa. • Valor pago referente à dívida de meses de aluguel atrasado. Para essas perguntas, as respostas seriam: • “Entrada”: data de nascimento e data atual. “Saída”: a idade naque- le instante. 46 Desenvolvimento de sistemas 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 . • “Entrada”: peso e altura da pessoa; “Saída”: a condição física da pessoa relativa ao peso. • “Entrada”: valor do aluguel, quantidade de meses, taxa de juros; “Saída”: valor a ser pago até aquela data. 3.1 Tipos de dados Os tipos de dados são formas de representar valores do nosso mun- do real computacionalmente. As linguagens de programação represen- tam e manipulam esses dados, que podem ser classificados como pri- mitivos e não primitivos. De acordo com Pinheiro (2012), um tipo de dado caracteriza um con- junto de valores, determinando a natureza, o tamanho, a representação e a faixa de representação. No momento, nosso enfoque será em sua natureza. 3.1.1 Tipos primitivos Os tipos de dados primitivos são tipos básicos de dados que com- põem um programa – eles representam números inteiros, frações, fra- ses, etc. No programa de computador, devemos dizer exatamente os tipos de dados que serão usados na entrada e saída das informações. Exemplo: A linguagem Java é uma linguagem fortemente tipada, ou seja, se você não utilizar o tipo correto, a operação é interrompida e uma mensagem de erro será apresentada. Os tipos de dados primitivos são: • “Inteiro” – toda e qualquer informação numérica que pertence ao conjunto de números inteiros relativos (negativo, nula ou positivo). 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. • “Real” – também chamada de flutuante, toda e qualquer informa- ção numérica que pertence ao conjunto dos números reais (nega- tivo, nula ou positivo). • “Literais” – também chamada de caractere, toda e qualquer infor- mação composta de um conjunto de caracteres alfanuméricos (0 a 9), alfabéticos (A...Z, a...z) e especiais ( . , $ @ # ! ? ...). • “Lógico” – também conhecido como booleano, toda e qualquer informação que pode assumir apenas duas situações (verdadeiro ou falso, sim ou não). IMPORTANTE Os números armazenados em variáveis, cujo tipo de dados é Literal, não poderão ser utilizados para cálculos. 3.2 Variáveis Variável é um tipo de dado armazenado no computador. Chamamos ele assim porque o seu valor contido pode variar diversas vezes ao lon- go do processamento. Ao declararmos uma variável, estamos na verda- de reservando um espaço na memória para aquela determinada infor- mação, enquanto ela é processada. Todo dado a ser armazenado na memória de um computador deve ser previamente identificado segundo o seu tipo; ou seja, primeira- mente, é necessário saber o tipo de dado, para depois fazer o seu armazenamento adequado. (MANZANO; OLIVEIRA, 1996 p. 43) 48 Desenvolvimento de sistemas 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 – Imagem de uma caixa de correios representando as locações de memória das variáveis Imagine as variáveis criadas como se fossem esta caixa de correio de um prédio – o carteiro só sabe onde deve colocar a correspondên- cia, porque todas estão com os números dos apartamentos a que são correspondentes. Para escrevermos corretamente o seu nome, devemos seguir algu- mas regras: • Temos restrição ao primeiro caractere do nome, ele deve ser sem- pre uma letra do alfabeto, não pode ser um número ou símbolos gráficos, como cifrão, tralha, etc. • Não pode haver espaço dentro do nome; se for um nome com- posto, como “pessoa jurídica”, devemos utilizar o underline para separação. Ex.: pessoa_juridica. • Duas variáveis não podem ter o mesmo nome, logo de início o sis- tema acusará um erro, mas, mesmo se fosse possível começar, elas entrariam em conflito, sobrescrevendo as informações. • Existem algumas palavras reservadas da linguagem que tam- bém não podem ser utilizadas. Conheceremos estas palavras mais adiante. 49Algoritmos 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. Devemos declará-las em nosso programa da seguinte forma: var idade: inteiro 3.3 Constantes Chamamos de constantes todos os valores que não devem ser mo- dificados durante o processamento. Usamos as constantes para valo- res que devem manter o seu valor independentemente dos processos que as utilizarem. Podemos usar como exemplo a letra grega “π” (PI), que precisa- mos utilizar para cálculos referentes a círculos. Apesar de qual cálcu- lo estejamos fazendo, o seu valor será sempre o mesmo: 3,14159265. Devemos declará-las emnosso programa da seguinte forma: const PI = 3.14159265 Também podemos chamá-las de variáveis somente de leitura. 4 Expressões aritméticas, literais, relacionais e de lógica booleana Agora que já conhecemos as formas de declararmos os valores para serem processados em nossos programas, precisamos aprender as ex- pressões para manipular estes valores. Para cada tipo de dado, temos expressões exclusivas: 4.1 Expressões aritméticas Expressões aritméticas são aquelas que o resultado é do tipo nu- mérico, podendo ser inteiro ou real. Os operadores que são permitidos nestas operações são: 50 Desenvolvimento de sistemas 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 .Tabela 1 – Símbolos de expressões aritméticas 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 Expressões literais Expressões literais são aquelas que o resultado é do tipo literal, e mu- dam muito de uma linguagem para outra. O operador mais simples é aquele que faz a concatenação entre dois trechos de texto, que podemos chamar de string (corda, em português, se referindo a uma corda de ca- racteres). O operador de concatenação no pseudocódigo é o sinal “+”: Tabela 2 – Símbolo de expressões literais OPERADOR SIGNIFICADO EXEMPLO + Concatenação “Avenida” + “Paulista” 4.3 Expressões relacionais Permitem efetuar 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 nestas expressões são: 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. Tabela 3 – Símbolos de expressões relacionais OPERADOR SIGNIFICADO EXEMPLO > Maior a > 7 >= Maior ou igual b >= a < Menor c < 5 <= Menor ou igual c <= b = Igual a a = 9 <> Diferente de b <> 0 4.4 Expressões de lógica booleana Utilizamos as expressões lógicas para analisar condições, e criamos condições que nos retornam 1 ou 0, ou então, verdadeiro ou falso. Os operadores utilizados para fazermos esta lógica são: Tabela 4 – Símbolos de lógica booleana OPERADOR SIGNIFICADO EXEMPLO e Conjunção a = 3 e b <> 9 Se o valor de “a” for igual a 3 e o valor de “b” for diferente de 9, então retornará verdadeiro; caso contrário, retornará falso. Ou Disjunção a = 3 ou b <> 9 Se o valor de “a” for igual a 3 ou o valor de “b” for diferente de 9, então retornará verdadeiro; caso contrário, retornará falso. não Negação não a > 3 Se o valor de “a” não for maior que 3, então retornará verdadeiro; caso contrário, retornará falso. 52 Desenvolvimento de sistemas 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 . Considerações finais Os algoritmos foram criados para implementarmos a lógica compu- tacional para a resolução de problemas reais. Para que o programa que desenvolvemos realmente solucione esses problemas, temos de ter sempre em mente que os comandos devem ser expressados de forma imperativa, deixando sempre bem claro o que deve ser executado; guar- dar os valores que fazem parte do problema a ser solucionado, para ser possível manipulá-los na aplicação; e, for fim, utilizar de forma correta os símbolos que não permitem trabalhar com esses valores de forma lógica e organizada. Estes não são apenas princípios iniciais, mas a base para uma boa programação, que você deverá levar consigo para ter sucesso em todas as aplicações que for desenvolver. Referências MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para desenvolvimento de programação. São Paulo: Editora Érica, 1996. MEDINA, M.; FERTIG, C. Algoritmos e programação: teoria e prática. São Paulo: Editora Novatec, 2005. PINHEIRO, F. A. C. Elementos de programação em C. Porto Alegre: Bookman, 2012. SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson Prentice Hall, 2011. XAVIER, G. F. C. Lógica de programação. São Paulo: Editora Senac São Paulo, 2014. 53 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: condicional Neste capítulo, abordaremos a arte da tomada de decisão. Digo que é uma arte, pelo fato de não ser nada fácil tomar decisões, apesar de ser essencial. Você, caro leitor, acabou de tomar uma decisão: ler esta obra! E a cada linha, a cada página, a cada capítulo, estamos decidindo o que fazer: se continuamos lendo, se mudamos de emprego, se começamos logo nosso projeto de Verão, se casamos ou compramos uma bicicleta. Por dia, tomamos dezenas e até centenas de decisões para atin girmos nossos objetivos (como acordar, ir trabalhar, ir à academia, ir à faculdade, etc.). Com o computador acontece a mesma coisa. Para que seu computador possa desempenhar uma tarefa, ou um algoritmo, 54 Desenvolvimento de sistemas 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 .como visto anteriormente, ele deve decidir como fazer, como desenvol ver os passos necessários. E adivinhe! Quem diz ao computador qual decisão ele deve tomar? Sim, você. E é exatamente isso que vamos abordar neste capítulo. Entender as condições e avisar ao nosso computador como tomar as decisões, de acordo com cada situação. 1 A arte de tomar decisões Há muito tempo, o Homem escreve e se preocupa com tomadas de decisões que norteiam nossas vidas. A obra A arte da guerra, de Sun Tzu, escrita em 476 a.C., é o exemplo clássico de obra sobre tomada de decisão como estratégia de liderança, negócios e competitividade. Em uma de suas célebres frases, Tzu diz que “devemos conhecer nossos inimigos e a nós mesmos”. Vamos partir desse princípio para conduzir nossas ações e tomar as decisões corretas no nosso sistema, para que execute as tarefas que satisfazem as necessidades dos usuários. Durante o desenvolvimento de um código, existem diversas situa ções em que a resolução vai depender de um valor, para que possa seguir um rumo e, consequentemente, que uma tomada de decisão também seja seguida. Isso ocorre muito em nosso dia a dia, quando planejamos uma tarefa, mas as “variáveis” do nosso cotidiano fazem com que tenhamos que optar por mudanças de planos. Um exemplo tí pico é quando estimamos um determinado tempo para chegarmos em um local e um simples pneu furado do seu veículo pode atrapalhar todo o planejamento do tempo outrora estimado. Vamos utilizar um exemplo de uma situação bastante comum no dia a dia, de um aluno que quer calcular sua média em uma determina da disciplina e, logo em seguida, vamos determinar se esse aluno está APROVADO ou REPROVADO nesta disciplina. 55Algoritmos: condicional M aterial
Compartilhar