Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ariel da Silva Dias Algoritmos e programação I: introdução à programação com C# Dados Internacionais de Catalogação na Publicação (CIP) (Simone M. P. Vieira – CRB 8a/4771) Dias, Ariel da Silva Algoritmos e programação I : introdução à programação com C# / Ariel da Silva Dias. – São Paulo : Editora Senac São Paulo, 2022. (Série Universitária) Bibliografia. e-ISBN 978-85-396-3471-2 (ePub/2022) e-ISBN 978-85-396-3472-9 (PDF/2022) 1. Desenvolvimento de sistemas 2. Linguagem de programação 3. Algoritmos – Conceitos 4. Pensamento computacional 5. Programação estruturada I. Título. II. Série 22-1583t CDD – 005.13 003 BISAC COM051300 COM051230 Índice para catálogo sistemático: 1. Linguagem de programação : Algoritmos 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 . Ariel da Silva Dias ALGORITMOS E PROGRAMAÇÃO I: INTRODUÇÃO À PROGRAMAÇÃO COM C# 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 Luís Américo Tousi Botelho Gerente/Publisher Luís Américo Tousi Botelho Coordenação Editorial/Prospecção Dolores Crisci Manzano Ricardo Diana Administrativo grupoedsadministrativo@sp.senac.br Comercial comercial@editorasenacsp.com.br Acompanhamento Pedagógico Mônica Rodrigues dos Santos Designer Educacional Estenio Azevedo Revisão Técnica Celso Vital Crivelaro Preparação e Revisão de Texto Karen Daikuzono Projeto Gráfico Alexandre Lemes da Silva Emília Corrêa Abreu Capa Antonio Carlos De Angelis Editoração Eletrônica Marcella Rigazzo Maiolino Ilustrações Marcella Rigazzo Maiolino Imagens Adobe Stock Photos E-book Rodolfo Santana 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, 2022 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 Introdução ao pensamento computacional, 7 1 Habilidades, contribuições e pilares do pensamento computacional, 9 2 Resolução de um problema usando pensamento computacional, 13 Considerações finais, 16 Referências, 16 Capítulo 2 Introdução aos algoritmos e programação por blocos, 17 1 Introdução e conceitos de algoritmos, 18 2 Descrição narrativa de um algoritmo e implementação por blocos, 23 Considerações finais, 29 Referências, 30 Capítulo 3 Variáveis e programação por blocos, 31 1 Programação por blocos: variáveis e entrada de dados, 32 2 Programação por blocos: operações aritméticas com as variáveis, 42 Considerações finais, 44 Referências, 45 Capítulo 4 Tomando decisões e repetindo instruções, 47 1 Expressões lógicas e fluxo de controle, 48 2 Programação por blocos: se (if) e se/senão (if/else), 52 3 Programação por blocos: repetição, 55 Considerações finais, 57 Referências, 57 Capítulo 5 Linguagem de programação imperativa, 59 1 Programação imperativa, 61 2 Variáveis e constantes, 64 3 Entrada e saída de dados, 67 Considerações finais, 71 Referências, 71 Capítulo 6 Estruturas condicionais, 73 1 Programação imperativa: estrutura de controle linear e condicional, 75 2 Expressões relacionais e lógicas, 78 3 Condicional simples (if) e composta (if/else), 81 Considerações finais, 88 Referências, 89 Capítulo 7 Estruturas de repetição, 91 1 Programação imperativa: estrutura de repetição (while e do/while), 92 2 Programação imperativa: estrutura de repetição (for), 97 3 Exemplo de um caso com laço de repetição, 99 Considerações finais, 104 Referências, 104 Capítulo 8 Programação estruturada, 105 1 Conceito de programação estruturada (funções), 106 2 Exemplos e aplicações da utilização de funções, 113 Considerações finais, 121 Referências, 122 Sobre o autor, 125 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 . 7 Antes de iniciarmos a nossa ação de programar, a primeira etapa a ser considerada é ter o pensamento computacional. Trata-se de um processo responsável por decompor um determinado problema em eta- pas simples o suficiente para que até um computador possa entender (lembre-se que um computador só entende zeros e uns, ou seja, quanto mais simples para ele, melhor). Os computadores, como deve ser de seu conhecimento, seguem lite- ralmente as instruções que damos e, às vezes, os resultados são inespe- rados. Afinal, se não fornecermos aos computadores instruções precisas Capítulo 1 Introdução ao pensamento computacional 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. 8 Algoritmos e programação I: introdução à programação com C# 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 .e detalhadas, seu algoritmo pode não ter o mesmo comportamento e as ações vitais que a maioria das pessoas considera natural. Vejamos um exemplo de uma atividade rotineira como escovar os dentes. Observe que, a princípio, parece uma tarefa um tanto quanto simples, mas que, na verdade, engloba muitas etapas. Primeiro, precisa- mos de uma escova e creme dental, além de uma pia com água corren- te. O próximo passo é colocar o creme dental na escova. É importante não nos esquecermos de abrir a água e passar a escova com o creme dental por baixo. E assim prosseguimos até a finalização do processo, que já é de conhecimento geral. Enfim, como pode-se observar, uma atividade simples envolve muitas etapas, se perdermos uma etapa ou colocarmos uma fora de ordem, poderá acabar em confusão. Assim, o computador (não limitando apenasa ele, mas também aos dispositivos móveis como smartphones e tablets) é fortemente apli- cado na resolução de problemas em diversas áreas: educação, saúde, transporte, financeiro, entre outras. Por exemplo, as planilhas eletrôni- cas, os aplicativos de pedir refeição ou de solicitar um transporte, todos eles possuem uma lógica que, por trás, nos ajudam a resolver proble- mas. No entanto, antes que um problema possa ser resolvido, o próprio problema e as maneiras pelas quais ele pode ser resolvido precisam ser compreendidos. O pensamento computacional ajuda as pessoas a desenvolverem habilidades que sejam atraentes para futuras oportunidades de empre- go (mesmo se você não almejar ser um programador ou programado- ra). Afinal, embora as habilidades de tecnologia sejam muito importan- tes, são as habilidades mais suaves de raciocínio (como organização de itens em uma lista de compras ou planejar o melhor caminho para se deslocar de casa para o trabalho) e a solução de problemas (como montar um checklist de tópicos para uma reunião) que os empregado- res realmente consideram atraentes. Desse modo, ter habilidade para resolver problemas é o princípio essencial para compreender o pensa- mento computacional. 9Introdução ao pensamento computacional 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 Habilidades, contribuições e pilares do pensamento computacional O pensamento computacional pode ser dividido em quatro habilidades essenciais: decomposição, reconhecimento de padrões, abstração de padrão e projeto de algoritmos (FORBELLONE; EBERSPACHER, 2005). A seguir, veremos cada uma dessas habilidades, que são pilares funda- mentais do pensamento computacional. 1.1 Decomposição O primeiro pilar é a decomposição. A decomposição é a habilidade de dividir problemas complexos em pedaços menores e que possam ser mais bem gerenciados. Qualquer atividade, das mais simples, como escovar os dentes, pre- parar o café da manhã ou ler um livro, até as mais complexas, como o processo de logística de entrega de produtos por uma empresa, fun- cionará. Precisamos apenas dividir a tarefa em pequenos passos sim- ples. Quanto mais pudermos decompor um problema, mais fácil será resolvê-lo. Essa habilidade permite compreender como é importante dar instruções que sejam exatas. Um ótimo exercício de decomposição é decompor os componentes de uma bicicleta. Se tentarmos, observaremos que, em um primeiro mo- mento, podemos decompor uma bicicleta em quadro, rodas, guidom e engrenagens. Mas é só isso? Não! Podemos ainda quebrar cada com- ponente um pouco mais, por exemplo, uma roda é composta por raios, aro, pneu e válvula. Logo, podemos quebrar a roda nestes componen- tes. Podemos fazer o mesmo com o quadro, guidom e engrenagens. Esse estágio também permite desenvolver uma melhor compreensão do problema que você enfrenta, identificando todos os componentes em detalhes. 10 Algoritmos e programação I: introdução à programação com C# 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 .Importante salientar que a decomposição nos permite avaliar um problema e descobrir todas as etapas necessárias para que a tarefa aconteça. Então, a decomposição é uma habilidade importante para a vida no futuro, quando precisarmos assumir tarefas maiores, sejam elas de programação ou de qualquer outra área em que estejamos atuan do. Com isso, seremos capazes de delegar melhor tarefas para uma equipe ou grupo de trabalho, bem como saber gerenciar melhor o nosso tempo. NA PRÁTICA Quando vamos a um restaurante, o problema principal a ser resolvido é a fome. Logo, para que a fome seja aliviada, colocamos no prato peque- nas porções das opções do buffet, como arroz, feijão e uma proteína. Observe que o problema foi decomposto, afinal, cada um desses ele- mentos, quando forem digeridos, serão responsáveis por saciar a fome. 1.2 Reconhecimento de padrões O segundo pilar é o reconhecimento de padrões, semelhanças e ten- dências dentro de um determinado problema. Essa habilidade é essen- cial, pois, se alguns problemas são de natureza semelhante (tanto no problema atual que está sendo enfrentado quanto nos problemas ante- riores), há uma boa chance de que eles possam ser resolvidos usando técnicas semelhantes ou repetidas. Certamente, você já viajou para algum lugar que nunca tinha ido an- teriormente. Já percebeu como, em sua primeira ida, o caminho pare- ceu mais longo que nas idas posteriores? Isso ocorre porque você não reconhecia padrões na primeira viagem. No entanto, após já conhecer o caminho, identificou padrões em suas viagens seguintes. Podemos notar essa habilidade nos atletas. Quando eles se prepa- ram para uma corrida de 50 km, por exemplo, a primeira tentativa nunca é muito bem-sucedida: ou começou muito rápido e no meio do caminho 11Introdução ao pensamento computacional 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. já estava cansado, ou começou muito devagar e acabou não conseguin- do completar o trajeto em um bom tempo. Em uma próxima tentativa, nos recordamos da experiência anterior e certamente isso nos ajuda a ter um desempenho diferente da primeira vez. Essa, então, é a habilidade essencial para criar soluções eficientes e economizar tempo no longo prazo. Durante a corrida, o atleta pode ajustar seus passos mediante a memória da primeira tentativa. Também é possível notar essa habilidade no dia a dia. Para quem anda de bicicleta, por exemplo, mesmo depois de ficar longo tempo sem praticar, quando retoma a atividade, lembra-se de como fazer. Observe que a pessoa não regride ao estado inicial de quando ainda estava aprendendo a andar. O reconhecimento de padrões é uma habilidade-chave quando se trata de criar soluções eficientes e eficazes para determinados proble- mas. Essencialmente, é dar uma resposta para a seguinte pergunta: o que aprendemos no passado que pode nos ajudar a resolver esse problema? NA PRÁTICA Já observou a agilidade das crianças em interagir com um smartphone? Elas rapidamente acessam os aplicativos e interagem com eles. O mais interessante é que muitas delas não sabem ler (em razão da pouca ida- de), mas conseguem acessar plataformas de vídeo, como o YouTube ou YouTube Kids e os seus jogos favoritos. Isso ocorre pelo reconhecimen- to de padrões. Elas sabem que, toda vez que clicarem em um ícone ver- melho em formato de seta, será aberto um local cheio de vídeos. Assim, rapidamente encontram os seus personagens favoritos para assisti-los. 12 Algoritmos e programação I: introdução à programação com C# 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 . 1.3 Abstração Qual a função de um arquiteto? Colocar no papel uma casa ou um edifício. Observe que não podemos morar em um papel ou explorar cada canto daquele desenho, caminhando internamente por aquela constru- ção (no papel). Essa é a terceira habilidade do pensamentocomputacio- nal que diz que, em vez de olhar para detalhes específicos, devemos ter a capacidade de filtrar os elementos desnecessários de um problema para que você se concentre apenas nos elementos importantes. Em ou- tras palavras, esqueça o fato de ser apenas um desenho, abstraia o fato de estar apenas em um papel. Qual a vantagem da abstração? Bem, nesse exemplo do arquiteto, a planta desenhada por ele incluirá todos os principais elementos de design que serão incluídos na construção final. Quaisquer ajustes ou acréscimos podem ser discutidos com os clientes nessa fase, antes do início do trabalho de construção. Com isso, economiza-se dinheiro e tempo de obra. Voltando ao exemplo anterior, um corredor quando treina abstrai al- guns elementos como temperatura, clima (chuva ou sol), vento, se exis- te algum atleta mais veloz que ele, entre outros. Todo o foco dele está na corrida, ou seja, em desempenhar o seu papel de corredor, ignorando assim qualquer outro elemento. De modo semelhante, no exemplo da bicicleta, se uma pessoa apren- deu a andar em uma bicicleta pequena, não terá dificuldade de andar em uma bicicleta de tamanho maior. Também abstrai outros fatores como espessura dos pneus, se a bicicleta possui ou não marcha, entre outros. Identificar as informações cruciais em um problema e desconsiderar as informações irrelevantes é uma das partes mais difíceis do pensa- mento computacional. 13Introdução ao pensamento computacional 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. NA PRÁTICA Montar um projeto utilizando peças Lego é uma ótima maneira de re- solver problemas. As lojas vendem kits com algumas dezenas ou até mesmo com milhares de peças. No entanto, se seu objetivo é construir um carro com Lego, você certamente não utilizará todas as mil peças de um kit. Existem muitas peças que você poderá ignorar, ou seja, poderá abstrair aquelas menos importantes e que não contribuem com a solu- ção do seu problema. 1.4 Algoritmos O pensamento computacional envolve o desenvolvimento de solu- ções para um problema e, entre essas soluções, temos os algoritmos. Especificamente, o pensamento algorítmico cria regras sequenciais a serem seguidas para resolver um problema. Um bom algoritmo é aquele que pode ser passado para outra pessoa seguir sem a necessidade de nenhuma explicação extra (FORBELLONE; EBERSPACHER, 2005). O mundo está cheio de algoritmos: receitas culi- nárias, montagem de móveis, trocar o pneu de um carro, escovar os dentes, comprar um produto em um mercado, entre outros. Quanto mais pensamos sobre algoritmos, mais começamos a per- ceber que seguimos muitos conjuntos de instruções todos os dias. Os exemplos apresentados são claramente sinalizados, enquanto outros são mais inatos, como manter o limite de velocidade ao dirigir um carro, subir ou descer uma escada ou seguir um código de conduta em uma empresa. 2 Resolução de um problema usando pensamento computacional Anteriormente, foi possível compreender que o pensamento com- putacional é dividido em quatro habilidades essenciais: decomposição, 14 Algoritmos e programação I: introdução à programação com C# 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 .reconhecimento de padrões, abstração de padrão e projeto de algorit- mos. Agora, vamos pegar um exemplo do cotidiano, trocar o pneu de um carro, e, de posse dessas quatro habilidades, resolvê-lo usando o pensamento computacional. 2.1 Exemplo: troca de pneu de um carro Em uma viagem, o pneu do carro furou e, estando em um local to- talmente deserto, sem borracharia, será necessário realizar a sua troca. Observe que temos um problema: trocar o pneu furado. Primeiramente, vamos decompor esse problema em: abrir o porta- -malas, retirar o estepe, colocar o macaco embaixo do carro, levantar o carro, remover os parafusos, retirar o pneu furado, colocar o estepe, abaixar o carro e guardar o macaco. Observe que, nessa decomposição, muita coisa ficou faltando. Primeiramente, precisamos verificar se o estepe está vazio ou cheio. Afinal, se estiver vazio, a melhor saída é contactar a seguradora para fazer o reboque (o que pode levar horas). No entanto, se estiver cheio, podemos começar a trocar. Um passo importante é levantar o carro, porém, do lado onde está o pneu furado. Parece óbvio, mas lembre-se que o problema deve ser de- composto em instruções simples para que o computador possa enten- der (ou, neste caso, que um amador possa entender a troca de pneu). Outro passo importante é a remoção dos parafusos. Precisamos desaparafusar as rodas, porém, os veículos em sua maioria possuem quatro ou cinco parafusos na roda. Logo, precisamos colocar a chave no primeiro parafuso, rotacionar a chave e desaparafusar. Em seguida, precisamos colocar a chave no segundo parafuso, rotacionar a chave e desaparafusar. Observe que serão quatro (ou cinco) instruções iguais, as quais seguem um padrão que é colocar a chave no parafuso, rotacio- nar a chave e desaparafusar. 15Introdução ao pensamento computacional 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. Além disso, abstraia o fato de um parafuso demorar mais tempo do que o outro para ser removido, isso não afetará a resolução do proble- ma. Acrescenta-se ainda que, mesmo existindo diferentes tipos de car- ros, o processo de troca de pneu é o mesmo, ou seja, segue a mesma sequência lógica de instruções. Após remover todos os parafusos, chega a hora de remover a roda que possui o pneu furado. Remova e coloque-a de lado. Em seguida, vamos colocar o estepe. Observe que agora colocaremos os parafusos. Apesar de ser uma instrução diferente (afinal, antes nós removemos os parafusos), a ação é semelhante, pois precisamos colocar a chave e parafusar quatro ou cinco vezes. Novamente nos deparamos com ins- truções-padrão que devem ser executadas. Agora que o estepe está no lugar do pneu furado, podemos remover o macaco, para isso, é necessário primeiramente abaixar o carro e, so- mente depois, podemos retirar o equipamento. Por fim, será possível guardar as ferramentas e seguir na estrada, afi- nal, como temos as habilidades do pensamento computacional e como seguimos os quatro pilares fundamentais, a troca do pneu foi realizada com sucesso. IMPORTANTE Todo algoritmo é uma sequência finita de instruções. Observe que, na troca de pneu, tivemos um início, que foi verificar se o estepe estava cheio ou não, e o fim, que foi sair com o carro. Se estivesse cheio, o fim do algoritmo seria sair com o carro, e, se estivesse vazio, teríamos o mesmo fim (sair com o carro), porém levado pelo guincho. 16 Algoritmos e programação I: introdução à programação com C# 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 Neste capítulo, pudemos compreender o conceito de pensamento computacional. Inicialmente, observamos que pensar computacional- mente não significa pensar igual a umcomputador (rápido e com pre- cisão), mas, sim, dividir um problema em partes menores e, a partir de cada uma dessas partes menores, resolvê-lo. Em seguida, conhecemos os quatro pilares do pensamento computa- cional e quais habilidades estão inerentes a esses pilares. Por exemplo, vimos que, ao decompor um problema, podemos resolvê-lo de modo mais rápido e direto. Aprendemos que o reconhecimento de padrões auxilia na tomada de decisão com base em um conhecimento prévio, e abstrair padrões nos permite focar no problema, eliminando distrações. Além disso, vimos que um algoritmo é uma sequência de instruções que, quando bem escrita, permite levar à solução de um dado problema. Por fim, estudamos um caso prático, a troca de pneu, e pudemos co- locar em prática cada uma das habilidades intrínsecas do pensamento computacional. Referências FEIJÓ, Bruno; CLUA, Esteban; SILVA, Flávio S. C. da. Introdução à ciência da computação com jogos: aprendendo a programar com entretenimento. Rio de Janeiro: Campus, 2009. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Pearson, 2005. 17 Durante todo o dia, nos deparamos com algoritmos, desde quando acordamos até quando estamos dormindo. Afinal, um algoritmo é uma sequência finita de ações que tem como objetivo produzir solução para um dado problema. Por exemplo, se lhe perguntar como você faz para escovar seus dentes, você me dará uma lista com um passo a passo que vai desde pegar o tubo do creme dental até enxaguar a boca, fe- chando a torneira e guardando todos os itens no final do processo. Capítulo 2 Introdução aos algoritmos e programação por blocos 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. 18 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 . Algoritmos e programação I: introdução à programação com C# Vamos pensar agora em como fazer um bolo: primeiramente, sepa- ramos os ingredientes. Em seguida, quebramos os ovos e separamos as claras e das gemas. Depois, batemos a clara em neve. Misturamos os demais ingredientes. Untamos a forma e despejamos a massa. Assamos em forno preaquecido a 180 °C. Por fim, retiramos a forma com o bolo do forno. Eis uma sequência de instruções. Ela iniciou (se- pare os ingredientes) e teve um fim (retire o bolo do forno). A partir desses exemplos, é possível observar que, quando aborda- mos o conceito de algoritmos, não estamos falando apenas sobre a programação de computadores, mas, sim, sobre uma técnica de pen- samento computacional que pode ser utilizada na programação de computadores. 1 Introdução e conceitos de algoritmos Os algoritmos estão presentes na base de muitas ações que são de- sempenhadas no dia a dia. Por exemplo, uma pessoa chamada Ana, que mora na cidade de São Paulo, convida seu amigo Betto, que mora na cidade de Campinas, para visitá-la pela primeira vez. Como Betto não sabe como chegar até a residência de Ana, ela necessita desenvolver uma sequência finita de instruções para que ambos se encontrem. A figura 1 a seguir apresenta uma possível rota de Campinas até a casa de Ana em São Paulo. 19Introdução aos algoritmos e programação por blocos 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 1 – Mapa de Campinas até a cidade de São Paulo Fonte: adaptado de OpenStreetMap ([s. d.]). Observe na figura 1 que, no lado esquerdo, temos o algoritmo com o passo a passo da rota que Betto deve seguir para chegar até a casa de Ana. Ainda na figura 1, temos no lado direito um algoritmo também, porém, este é gráfico e mostra o mapa com todo o trajeto a ser percorri- do. Note, então, que se trata de uma sequência finita de ações que visa produzir um resultado (ou seja, evitar que seu amigo fique perdido e que chegue até a cidade sem erros). Esse é o conceito de algoritmos, uma sequência finita de instruções que visa resolver algum tipo de problema (FORBELLONE; EBERSPACHER, 2005). 1.1 Lógica computacional Para entender corretamente como construir um algoritmo, primeira- mente é necessário compreender a lógica de programação. 20 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 . Algoritmos e programação I: introdução à programação com C# A lógica é uma parte da filosofia que tem como objetivo estudar e aplicar as leis do raciocínio humano. Com o estudo da lógica, torna-se possível afirmar que o trajeto (algoritmo) proposto na figura 1 é uma ótima opção, afinal, é um traçado direto que liga duas cidades. Agora, considere o algoritmo apresentado na figura 2 a seguir. Figura 2 – Mapa com outra possível rota de Campinas até a cidade de São Paulo Fonte: adaptado de OpenStreetMap ([s. d.]). 21Introdução aos algoritmos e programação por blocos 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. Na figura 2, é possível observar que temos uma nova rota, agora des- tacada em amarelo. Essa segunda rota não é o melhor caminho possí- vel, afinal, é muito pior que o trajeto (algoritmo) apresentado na figura 1. Assim, conclui-se que a lógica utilizada para desenvolver o primeiro algoritmo (figura 1) foi melhor que a lógica utilizada para desenvolver o segundo (figura 2). Ainda sobre as rotas, Betto logicamente escolherá o primeiro algorit- mo, afinal, o tempo que levará para chegar até o destino (bem como a distância a percorrer) é muito menor. Em outras palavras, os algoritmos são conjuntos de instruções lógicas que visam resolver um determina- do problema. Agora, vamos considerar um segundo exemplo, em que é dada a se- quência numérica: 1 1 2 3 5 8 13 ? Como definir qual será o próximo número da sequência? Nesse caso, o próximo valor é o 21. Isso pode ser afirmado em razão do valor atual ser sempre a soma dos dois números anteriores: • 1 + 1 = 2 • 1 + 2 = 3 • 2 + 3 = 5 • 3 + 5 = 8 • 5 + 8 = 13 • 8 + 13 = 21 Para encontrar o valor da sequência, foi necessário encontrar um padrão lógico e, em seguida, criar uma sequência fixa e finita de ins- truções. Assim, é possível concluir que um algoritmo deve possuir as seguintes características (FORBELLONE; EBERSPACHER, 2005; FEIJÓ; CLUA; SILVA, 2009): 22 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 . Algoritmos e programação I: introdução à programação com C# • Cada passo do algoritmo deve ser uma instrução possível de ser realizada: considere o exemplo da viagem de Campinas até São Paulo. Existeuma sequência lógica de instruções e todas elas precisam ser executadas, se uma dessas instruções não ocorrer, o algoritmo não será executado corretamente. • A ordem de cada uma das instruções deve ser respeitada: con- sidere o segundo exemplo. Nele, o valor de um número X é obti- do somando os dois valores anteriores a ele em uma sequência numérica. Se essa instrução não for obedecida (ou seja, se não somarmos os dois últimos valores para obter o próximo da se- quência), o resultado não será conforme o esperado. • O algoritmo deve ser finito: considere ainda o segundo exemplo. O algoritmo pode ser descrito como “para obter um valor X, de- vemos somar os dois valores imediatamente anteriores”. Então, apesar de ser possível obter uma sequência infinita de valores, o algoritmo é finito em suas instruções. Outro exemplo que sintetiza essas três características de um algo- ritmo é o processo de troca de pneu de um carro (considerando que o estepe está presente e em bom estado): 1. Levantar o carro do lado do pneu que está furado. 2. Desaparafusar cada um dos parafusos da roda. 3. Remover a roda. 4. Deixar a roda no chão. 5. Colocar o estepe no eixo que está sem a roda. 6. Parafusar cada um dos parafusos da roda. 7. Abaixar o carro. Observe que alguns passos podem parecer óbvios para nós, como no caso das instruções 3 e 4. Para os seres humanos, é natural que a 23Introdução aos algoritmos e programação por blocos 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. roda do carro deve ser retirada e colocada no chão para que seja possí- vel colocar o estepe. Isso ocorre porque pessoas possuem inteligência natural e habilidade racional, algo que o computador não é capaz de obter. Logo, é necessário que sejam escritas instruções explícitas (por mais óbvias que pareçam). NA PRÁTICA Considere que você é um confeiteiro e está prestes a fazer um bolo. Você pega a receita e observa que a sequência de instrução do modo de preparo é: 1. Leve ao forno por 30 minutos. 2. Separe os ingredientes. 3. Realize o preparo. Bem, não é a melhor instrução, afinal, como posso levar ao forno algo que não preparei ainda? Logo, podemos concluir que essa instrução é ilógica. Torna-se, então, essencial compreender que a ordem das instru- ções pode afetar o resultado final do seu algoritmo. 2 Descrição narrativa de um algoritmo e implementação por blocos Até aqui pudemos compreender o que é um algoritmo, suas caracte- rísticas e a necessidade de lógica para elaborá-lo. No exemplo de algorit- mo para troca do pneu de um carro, foram descritas as principais instru- ções, porém, seria possível detalhar ainda mais, indicando, por exemplo, quantos e qual a ordem dos parafusos a serem desaparafusados. No entanto, como descrever um algoritmo? Existem pelo menos três formas principais para representação de um algoritmo: descrição narra- tiva, fluxograma e pseudocódigo. 24 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 . Algoritmos e programação I: introdução à programação com C# 2.1 Descrição narrativa Um algoritmo pode ser representado em linguagem natural, ou seja, como as pessoas em geral falam (FEIJÓ; CLUA; SILVA, 2009). Por exem- plo, a receita de bolo a seguir: • Bata a clara de dois ovos em neve. Em seguida, coloque as ge- mas e bata por 1 minuto em velocidade baixa. Adicione os demais ingredientes e bata em velocidade alta por 5 minutos. Enquanto bate, unte uma forma com manteiga e espalhe duas colheres de farinha de trigo. Despeje todo o conteúdo da batedeira na forma e, em seguida, leve ao forno por 30 minutos, o qual deve estar preaquecido a 180 °C. Neste outro exemplo, trata-se de um algoritmo para troca de lâmpada: • Primeiramente, localize a lâmpada a ser substituída. Posicione uma escada logo embaixo da lâmpada a ser trocada. Suba os degraus da escada até alcançar a lâmpada. Gire-a no sentido anti-horário até que seja possível retirá-la do soquete. Desça da escada e coloque a lâmpada queimada em um local seguro, como uma mesa. Agora, de posse da lâmpada nova, suba a escada até que consiga alcançar o local de instalação. Posicione a lâmpada nova no soquete e gire no sentido horário até sentir que ela está bem firme. Desça da escada. Esse tipo de algoritmo é pouco usado na prática, afinal, pode gerar múltiplos sentidos de interpretação. No primeiro exemplo, está escrito que devemos “colocar” as gemas, porém, não é dito onde. Poderíamos dizer: “coloque na batedeira”, porém, ainda estaria errado, pois a batedei- ra é um aparelho formado por um motor, uma tigela e um suporte. O ovo deve ser colocado e batido na tigela da batedeira. 25Introdução aos algoritmos e programação por blocos 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. Como dito anteriormente, as instruções devem ser colocadas de modo explícito, sem dar abertura para mais de um sentido de interpre- tação. Podemos resolver esse tipo de questão utilizando fluxogramas. Já no exemplo da troca de lâmpada, é dito para posicionar a escada “logo embaixo da lâmpada a ser trocada”, entretanto, não é dito para apoiar ou para abrir a escada. Logo, dependendo de quem ouvir essa instrução, pode acarretar algum mal-entendido. 2.2 Fluxograma O fluxograma é um conjunto de estados que é utilizado para represen- tar graficamente um algoritmo (FORBELLONE; EBERSPACHER, 2005). Cada um desses estados (instruções e comandos) é representado por uma forma geométrica específica, conforme ilustrado na figura 3. Figura 3 – Formas geométricas utilizadas em um fluxograma Início/fim de um fluxograma Operador de entrada de dados Operador de saída de dados Operador de atribuição Condicional/decisão 26 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 . Algoritmos e programação I: introdução à programação com C# Na figura 3, é possível observar que os principais elementos que compõem um fluxograma apresentam formas geométricas diferentes. Isso auxilia a interpretar suas diferentes ações em um algoritmo. Para poder desenhar um fluxograma, é possível utilizar ferramen- tas digitais, como Microsoft PowerPoint, Google Presentation ou qual- quer outro editor de slides, que, em sua grande maioria, possuem um conjunto de formas específicas para isso. Além disso, é possível rea- lizar o desenho manual ou, então, utilizar ferramentas digitais como o Flowgorithm, draw.io ou Diagrams, que são sistemas gratuitos para ela- boração de fluxogramas. Para obter o Flowgorithm, basta pesquisar pelo seu nome em qual- quer site de busca e, em seguida, escolher o site do proprietário. O proces- so de download e instalação é detalhado diretamente na página. Por outro lado, há também a possibilidade de utilizar ferramentas on-lines gratuitas. Uma das principais e mais simples para se trabalhar é o draw.io. Para acessá-la, digite em qualquer site de busca o nome da ferramenta (draw.io) e, em seguida, acesse o site. O modo de operação para criar o seu primeiro fluxoé apresentado na tela do próprio desen- volvedor da ferramenta. Uma das propriedades ou características de um algoritmo é sua finitu- de, ou seja, todo algoritmo é finito. Na figura 4 a seguir, é possível obser- var que, quando criamos um fluxograma no Flowgorithm, ele já nos traz um nó inicial (principal) e um nó final (fim). Então, torna-se possível adi- cionar elementos entre esses dois nós de modo a desenhar o algoritmo. NA PRÁTICA Ao utilizar o Flowgorithm, é possível observar que o programa já nos traz, de modo fixo, os dois nós de início e fim do algoritmo. Para adicio- nar um novo nó, basta clicar sobre a linha que separa as duas formas geométricas e escolher a operação desejada. 27Introdução aos algoritmos e programação por blocos 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.2.1 Algoritmo em uma representação por blocos (fluxograma) Para que seja possível compreender a ideia das formas geomé- tricas ou nós apresentados na figura 3, desenvolvemos no software Flowgorithm um fluxograma (ou representação por blocos) do algoritmo de troca de pneus, representado graficamente na figura 4 a seguir. Figura 4 – Fluxograma de um algoritmo para troca de pneus de um carro Início Fim Levantar o carro do lado do pneu que está furado Desaparafuse cada um dos parafusos da roda Remova a roda Deixe a roda no chão Coloque o estepe no eixo que está sem a roda Parafuse cada um dos parafusos da roda Abaixe o carro 28 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 . Algoritmos e programação I: introdução à programação com C# Na figura 4, é descrito o algoritmo para o processo de troca de pneu que considera o fato de o estepe estar cheio (se o estepe estiver cheio, execute toda essa sequência do algoritmo). Observe que a sequência lógica está mantida, porém, agora não no formato descritivo, mas, sim, utilizando um fluxograma. 2.3 Pseudocódigo Observe que, até o momento, o conceito de algoritmo não foi relacio- nado à programação, mas, sim, a um procedimento para resolver pro- blemas utilizando uma sequência lógica de instruções. Além da representação narrativa ou textual de um algoritmo, uma outra maneira de representá-lo é em pseudocódigo, o que não vem a ser um código de programação (ainda), porém, contém instruções inte- ligíveis por humanos e que se assemelha a códigos para computadores. Trata-se, portanto, de uma linguagem intermediária entre a lingua- gem de máquina e a linguagem de computador. O pseudocódigo a se- guir ilustra o algoritmo para troca de pneu do fluxograma da figura 4. Quadro 1 – Pseudocódigo do algoritmo para troca de pneu início se estepe == "cheio" escreva("levantar o carro do lado que está furado") escreva("desaparafuse cada um dos parafusos") escreva("remova a roda") escreva("coloque o estepe no eixo que está sem a roda") escreva("parafuse cada um dos parafusos da roda") escreva("abaixe o carro") (cont.) 29Introdução aos algoritmos e programação por blocos 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. senão escreva("levar o carro ao borracheiro") fim-se fim Observe que o pseudocódigo apresenta uma sequência de instru- ções estruturadas de como o algoritmo deve se comportar. Um pseudo- código é muito útil em uma fase intermediária de aprendizado, principal- mente para traduzir um algoritmo em uma linguagem de programação específica. Também é muito prático para quando tivermos uma ideia do que deve ser feito em um programa, porém, ainda não conhecemos os comandos de uma determinada linguagem. NA PRÁTICA Quando desenvolvemos um pseudocódigo, não precisamos nos preo- cupar com a sintaxe, ou seja, com a forma de escrita das palavras. Ob- serve no exemplo que foram utilizadas algumas palavras como “início”, “se”, “escreva”, “senão”, “fim-se” e “fim”. Estas palavras são encontradas na maioria das linguagens de programação. Logo, compreender o uso delas facilitará no processo de desenvolver códigos de computadores. Considerações finais Neste capítulo, compreendemos que os algoritmos são uma se- quência lógica e finita de instruções, com início e fim bem definidos, e que esses algoritmos podem ser representados de três modos diferen- tes: declaração narrativa, fluxograma ou pseudocódigo. Compreendemos também que, em uma declaração narrativa, o algo- ritmo é descrito textualmente, como uma receita de bolo ou como um guia explicativo de como montar um móvel. Além disso, vimos que os 30 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 . Algoritmos e programação I: introdução à programação com C# fluxogramas são representações gráficas de um algoritmo, que pode ser descrito com o uso de nós ou formas geométricas, as quais cada uma possui uma determinada característica ou aplicação. Em seguida, tivemos contato com um pseudocódigo, uma declara- ção em tópicos de um algoritmo, ou seja, uma representação interme- diária entre uma descrição narrativa e uma linguagem de programação. Por fim, estudamos um caso prático, que é o algoritmo para a troca de pneu, e desenvolvemos um fluxograma representando esse algoritmo. Referências FEIJÓ, Bruno; CLUA, Esteban; SILVA, Flávio S. C. da. Introdução à ciência da computação com jogos: aprendendo a programar com entretenimento. Rio de Janeiro: Campus, 2009. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Pearson, 2005. OPENSTREETMAP. Home. OpenStreetMap, [s. d.]. Disponível em: https://www. openstreetmap.org/#map=4/-15.13/-53.19. Acesso em: 8 nov. 2021. 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 Variáveis e programação por blocos Antes de iniciarmos o estudo sobre alguns conceitos relacionados às linguagens de programação, cabe aqui uma pergunta: qual a lingua- gem do computador? Para respondê-la, precisamos mergulhar nos con- ceitos fundamentais da computação: os bits. A arquitetura do computador é composta de circuitos eletrônicos. Esses circuitos operam com sinais binários (0 e 1). A principal razão para essa arquitetura ser binária, e não decimal, deve-se ao fato de ser mais simples e por possuir baixo custo de implementação. 31 32 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 acS ão P au lo . Algoritmos e programação I: introdução à programação com C# Nos projetos de circuitos computacionais, são usados chips, os quais são compostos de um material semicondutor denominado tran- sistores. Os transistores possuem a propriedade de conduzir energia elétrica apenas quando uma tensão conveniente é empregada em seus terminais. Os transistores são utilizados em um chaveamento como “liga-desliga”, assim, quando está ligado, é representado por 1, e quando está desligado, é representado por 0. O agrupamento de transistores permite outras funções lógicas. Como não é o objetivo deste livro se aprofundar nessas funções, basta sabermos que tudo o que é armazenado e processado no computador se trata de um conjunto finito de zeros e uns, e isso nos leva ao conceito de bits. Para que seja possível compreender a linguagem do computador, o primeiro passo é entender as técnicas de desenvolvimento de algo- ritmos. Desse modo, este capítulo se destina a elucidar os principais conceitos da programação: entrada e saída de dados, variáveis e opera- dores aritméticos para a manipulação desses dados e variáveis. 1 Programação por blocos: variáveis e entrada de dados Antes dos anos 1940, os computadores não eram programados, mas, sim, projetados para desempenhar uma única (e específica) fun- ção. Por exemplo, poderíamos projetar um computador para realizar o cálculo de distância entre uma cidade A e uma cidade B. No entanto, se desejássemos mudar a função do computador, adicionando uma tercei- ra cidade para cálculo de distância, era necessário desligá-lo, adicionar algum componente novo ou alterar a máquina fisicamente. Ou seja, era algo ineficaz e pouco produtivo. Analisando todo esse cenário, o cientista da computação John von Neumann criou a arqui- tetura que consiste principalmente em chips de memória capazes de 33 Variáveis e programação por blocos 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. armazenar e processar dados (OLIVEIRA, 2019). Cada chip tem a ca- pacidade de realizar diferentes tarefas, dependendo de como é afetado pela operação executada antes dele. Nessa arquitetura, cada computa- dor teria memória, mecanismos de entrada e saída, um controle central, um local para aritmética central e armazenamento externo. Os computadores com arquitetura von Neumann (figura 1) são co- nhecidos como programas armazenados. Isso significa que o compu- tador não precisa de interruptores externos ou outras influências para funcionar. Todas as instruções e os dados são armazenados na memó- ria de acesso aleatório (RAM). Figura 1 – Arquitetura de von Neumann Memória Unidade de controle Unidade lógica e aritmética Entrada Saída Na figura 1, é possível observar a memória (RAM, cache, registrado- res, disco), local onde ficam armazenados os dados; a CPU ou unidade central de processamento (aqui representados pela unidade de controle e unidade lógica e aritmética), responsável por processar as entradas do usuário ou o conteúdo em memória; e por fim, o canal de entrada (mouse, teclado, câmera, microfone) e de saída (monitor, impressora, caixa de som). Para ler um documento, é necessário que o programa de leitura pro- cesse a requisição (entrada, solicitando que se abra o documento), que o programa procure na memória (disco rígido) o arquivo solicitado, e 34 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 . Algoritmos e programação I: introdução à programação com C# por fim, que apresente o arquivo na tela (saída). Assim, sempre teremos: entrada, processamento e saída. Apesar de ter sido criada em 1940, a arquitetura de von Neumann, em razão de sua simplicidade e funcionalidade, é empregada até hoje por ser um formato mais acessível, principalmente para programadores iniciantes. Trabalharemos, aqui, a programação por blocos, sempre respeitan- do o conceito por trás da arquitetura de von Neumann. Será utilizado a plataforma Scratch, um ambiente de desenvolvimento em blocos criada pelo Massachusetts Institute of Technology (MIT), por ser um dos mais práticos e intuitivos ambientes para desenvolvimento de programas uti- lizando a linguagem de blocos. 1.1 Hello World A figura 2, a seguir, apresenta a interface inicial do Scratch. Essencialmente, ele possui oito categorias de blocos: • movimento (motion) – blocos responsáveis por movimentar ou deslocar o personagem pelo cenário; • aparência (looks) – blocos de saída, que modificam a aparência do personagem ou da cena, ou apresentam a mensagem na tela; • som (sound) – blocos que manipulam sons do projeto; • eventos (events) – blocos que definem as instruções de entrada do projeto; • controle (control) – blocos que realizam o controle de fluxo; • sensores (sensing) – blocos com sensores para capturar a entrada de clique de mouse, teclado, entre outros; 35 Variáveis e programação por blocos 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. • operadores (operators) – blocos com operadores aritméticos, ló- gicos e de comparação; e • variáveis (variables) – blocos para criar variáveis. Figura 2 – Interface com as ferramentas do Scratch 36 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 . Algoritmos e programação I: introdução à programação com C# O primeiro passo para entender o funcionamento da programação com blocos é mostrar uma mensagem na tela. Aqui, utilizaremos a mensagem Hello World, ou “Olá, mundo”. Para isso, utilizaremos um blo- co da categoria evento e um da categoria aparência, a figura 3 mostra como fica essa montagem. Figura 3 – Primeiro código No lado esquerdo da figura 3, temos a organização dos blocos. Note que encaixamos um bloco no outro como se encaixam peças de quebra-cabeça. O comando de eventos escolhido é o Quando alguém clicar em bandeira verde. Ou seja, quando há o clique, o personagem à direita apresenta a mensagem. Desse modo, temos uma entrada (clicar na bandeira), um processamento (recebendo a requisição) e uma saída (a mensagem apresentada). 1.2 Movimentando o personagem Podemos melhorar nosso código. Faremos que, ao pressionar a te- cla a, o personagem se desloca para a esquerda e, ao pressionar a tecla d, o personagem se desloca para a direita. A figura 4 apresenta como ficam os blocos. É possível observar que foram utilizados os blocos das categorias evento e movimento. 37 Variáveis e programação por blocos 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 4 – Segundo código Na figura 4, temos 3 comandos diferentes. O primeiro já foi visto na figura 3, os outros comandos são dados quando se pressiona a tecla a ou a tecla d. Observe que foi adicionado o bloco anda da categoria movimento. Ocenário onde fica o personagem é formado por dois eixos, o x (na horizontal) e o y (na vertical). Para o personagem se deslocar para a direita, é necessário adicionar passos, ou seja, caminhar sobre o eixo x em direção a um valor positivo. Por outro lado, para ele se deslocar para trás (ou para esquerda), é necessário ir em direção ao valor negativo do eixo x. Por esse motivo, temos –10 e 10 nos valores de movimento. Ao testar, será possível observar que o personagem se desloca de acordo com a entrada ao pressionar as teclas a ou d. 38 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 . Algoritmos e programação I: introdução à programação com C# 1.3 Entrada: blocos de sensor e variáveis Em um processo de desenvolvimento, é possível solicitar dados do usuário. No exemplo a seguir, o personagem perguntará ao usuário qual o seu nome e, após receber essa informação, ele realizará uma sauda- ção. O exemplo de como ficou o código está na figura 5. Figura 5 – Terceiro código É possível observar na figura que o primeiro bloco é o de evento, logo, quando clicar na bandeira verde, o programa entra em execução. Em se- guida, temos um bloco pergunta (bloco azul), que será o bloco utilizado quando desejarmos alguma entrada de texto por parte do usuário. O terceiro bloco já é conhecido, ele faz parte da categoria aparência e é responsável por mostrar uma saída do tipo texto na tela. No entanto, agora, em vez de digitarmos um texto, nós estamos aproveitando um tipo especial de bloco que é chamado de resposta. Esse bloco armaze- na o valor digitado pelo usuário. Observe que esse bloco resposta, no conjunto de blocos à esquerda, está logo abaixo do bloco pergunta. Aqui temos um pequeno problema. Vamos supor que o personagem realize duas perguntas ao usuário: qual o seu nome e qual a sua idade, conforme a figura 6 a seguir. 39 Variáveis e programação por blocos 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 6 – Quarto código Ao desenvolver o programa da figura 6, o personagem perguntará o nome e apresentará o valor do bloco resposta (com o valor do nome digitado), em seguida, perguntará a idade e apresentará o valor do bloco resposta. No entanto, como podemos mostrar na tela o nome da pes- soa após ela digitar a idade? Uma vez que digitamos a idade, o bloco resposta teve seu valor substituído, ou seja, reescrito. Existe uma ma- neira de guardarmos ou armazenarmos tanto o nome quanto a idade, de modo que possamos reaproveitar esse valor posteriormente? Sim, e esse é o conceito de variável. Considere a memória do computador como uma rua. Essa rua é mui- to longa e possui diversas casas, desde a casa 0 até a casa n, em que n é a capacidade máxima da memória RAM do computador. Agora, considere que cada casa comporta apenas uma única pessoa morando nela por vez. Então, podemos dizer que na casa número 6.552 mora uma pessoa chamada José, na casa 4.251 mora a Ana. Pode ser que, em algum momento, outra pessoa entre na casa 6.552, logo, José precisa sair para que essa pessoa possa entrar. O mesmo pode acon- tecer na casa 4.251: Paula pode entrar na casa e, de modo automático, Ana precisará sair. 40 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 . Algoritmos e programação I: introdução à programação com C# Se em algum dia quisermos saber quem mora na casa 6.552, basta irmos até essa casa e perguntar quem está lá. Além disso, enquanto não desocuparmos a casa, os moradores continuarão morando lá, por tempo indeterminado. Na memória do computador é da mesma maneira: temos casas onde armazenamos valores. Podemos armazenar valores por tempo indeter- minado, até que o computador ou o programa seja encerrado. Quando isso ocorrer, aquela casa (espaço em memória) será desalocada. Observe que o morador da casa não é um elemento fixo, ou seja, ele varia de tempo em tempo. Então, podemos dizer que essa casa é uma variável. Em uma variável, podemos colocar diversos tipos de valores, sejam eles textos (sequência de letras), sejam eles números. Outra característica de uma variável é que nós podemos dar um nome a ela e invocá-la por esse nome (FORBELLONE; EBERSPACHER, 2005). Em uma analogia com a rua, suponha que alguém lhe dê a seguinte atri- buição: vá até a avenida Paulista, número 1.578, em São Paulo. De certo modo, você conseguirá se deslocar até esse endereço sem muita dificul- dade, porém, olhando os números de todos os prédios dessa avenida. Ao chegar, se deparará com o prédio do Museu de Arte de São Paulo (Masp). Por outro lado, considere que a orientação fosse: vá até o prédio do Masp na avenida Paulista. Talvez seja mais fácil localizar o prédio pelo nome a ele atribuído do que pelo endereço e número, afinal, na própria fachada do prédio, existe uma grande placa com o nome do museu, porém, o número está escrito em letras bem menores. Voltando ao mundo computacional, Masp é o nome daquele edifício. Computacionalmente, Masp seria o nome da variável, afinal, para um programador, é mais fácil usar um nome para referenciar uma região da memória do que usar o endereço (numérico) da região de memória. 41 Variáveis e programação por blocos 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.3.1 Usando variáveis Após compreender o conceito de variável, utilizaremos a programa- ção em blocos para exemplificar seu uso e manipulação. Para criar uma variável, vá até a categoria variáveis e, em seguida, clique no botão Criar uma variável. Com isso, será apresentada uma tela para você informar o nome da variável. Esse nome deve começar obrigatoriamente com letras (maiúsculas ou minúsculas) ou com underscore (traço como este: _) e pode ser seguido por uma ou mais letras e números, sem es- paço (FORBELLONE; EBERSPACHER, 2005; FEIJÓ; CLUA; SILVA, 2009). Coloque o nome da variável como nome_pessoa. Crie uma outra variá- vel chamada idade_pessoa. A figura 7 ilustra todo esse código. Figura 7 – Quinto código Conforme apresenta a figura 7, não estamos mais mostrando o valor do bloco resposta. Agora, chamamos o bloco altera (responsável por alterar o valor de uma variável), selecionamos o nome da variável e atri- buímos a ela o valor do bloco resposta. Esse processo foi feito tanto para o nome quanto para a idade. 42 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 . Algoritmos e programação I: introdução à programação com C# Mas, o que mudou? A partir de agora, os valores do nome e da idade da pessoa ficarão armazenados na memória do computador e, assim, será possível invocar essas variáveis aqualquer tempo para manipulá-las. NA PRÁTICA Considere criar um programa que seja responsável por receber o nome dos cinco melhores filmes ou séries que você já assistiu. Observe que, para cada filme, você necessitará de uma variável diferente para arma- zenar os valores na memória do computador. Após digitar o nome dos filmes ou séries, experimente mostrá-los na tela. Importante: somente com a prática você obterá a proficiência em programação. 2 Programação por blocos: operações aritméticas com as variáveis No princípio, os computadores foram desenvolvidos para realizarem cálculos. Essencialmente, eram gigantescas calculadoras que auxilia- vam o serviço de tributação governamental, bem como cientistas que buscavam realizar cálculos matemáticos complexos. Desse modo, é possível utilizar os operadores aritméticos tradicionais da matemática: a soma (+), a subtração (–), a divisão (/) e a multiplicação (*). Esses operadores na programação têm a mesma saída das operações mate- máticas tradicionais (FEIJÓ; CLUA; SILVA, 2009). Na programação com o Scratch, os operadores aritméticos estão localizados na categoria operadores. Inicialmente, será criada uma va- riável chamada total que, como o nome indica, receberá o resultado de uma das operações. Também serão criadas duas variáveis chamadas operandoA e operandoB, ambas receberão do usuário um valor. 43 Variáveis e programação por blocos 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 código a seguir representa um programa que solicita dois valores para o usuário e realiza os cálculos utilizando os operadores aritméticos. Figura 8 – Sexto código O código da figura 8 é o mais complexo apresentado até o momento, por isso requer um pouco mais de detalhamento, observe, então, que fo- ram colocados cinco números no código para que seja possível acom- panhar o que está ocorrendo, conforme se segue: 1. O número digitado pelo usuário é armazenado na variável ope- randoA para que este seja aproveitado na soma posteriormente. 2. O segundo número informado pelo usuário é armazenado na variável operandoB para ser utilizado na soma a seguir. 3. Observe que os operadores aritméticos têm o formato oval e se encaixam em blocos de saídas de texto e também no bloco altera 44 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 . Algoritmos e programação I: introdução à programação com C# (responsável por alterar o valor da variável). Logo, este bloco verde de soma foi adicionado ao bloco altera. Observe que o operador aritmético de soma possui dois espaços ovais. Um à esquerda do operador de soma e outro à direita, assim como é feito na mate- mática. Note que nesses espaços foram colocados os operandos, ou seja, as variáveis com os números digitados pelo usuário. 4. Observe que, neste momento, o resultado da soma (passo ante- rior) será atribuído para a variável total. 5. Por fim, na etapa 5, será apresentado na tela o valor da variável total. Observe, então, que estamos utilizando três variáveis e as manipu- lando. O mesmo processo feito para realizar a soma também pode ser feito para realizar as outras operações aritméticas. NA PRÁTICA Considere que você deseja saber a soma de todas as suas despesas mensais: aluguel, combustível, faturas de água, luz, telefone, entre ou- tras. Cada uma dessas despesas pode ser declarada como uma variá- vel, afinal, o valor delas não é fixo (na maior parte do tempo). Desse modo, para a prática constante da programação, experimente criar um programa que, dada essas entradas das suas despesas, ele calcule o valor total de gastos em um mês. Lembre-se: somente com a prática você obterá a proficiência em programação. Considerações finais Neste capítulo, pudemos conhecer o Scratch, um ambiente de desenvolvimento em blocos muito prático e intuitivo, o qual permite desenvolver programas e compreender os conceitos fundamentais da programação. 45 Variáveis e programação por blocos 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. Compreendemos que o computador segue a arquitetura de von Neumann, recebendo uma entrada, processando essa entrada e geran- do uma saída. Em seguida, conhecemos o conceito de variável que, em uma comparação prática, é como uma casa em uma rua, sendo res- ponsável por armazenar temporariamente um valor. Compreendemos também que uma variável possui um único valor, logo, se tentarmos atribuir outro valor a ela, o antigo será sobrescrito. Além disso, aprendemos que, em programação, podemos utilizar os operadores aritméticos para realizar as operações básicas da matemá- tica como adição, subtração, multiplicação e divisão. Por fim, cabe destacar que é fortemente recomendável que se de- senvolva os códigos aqui apresentados, testando inclusive outros valo- res de entrada. Apenas com a prática constante será possível alcançar a proficiência em uma linguagem de programação. Referências FEIJÓ, Bruno; CLUA, Esteban; SILVA, Flávio S. C. da. Introdução à ciência da computação com jogos: aprendendo a programar com entretenimento. Rio de Janeiro: Campus, 2009. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estruturas de dados. São Paulo: Pearson, 2005. OLIVEIRA, Márcio Lucas R. A arquitetura de von Neumann. Medium, 18 jul. 2019. Disponível em: https://medium.com/trainingcenter/a-arquitetura-de-von- neumann-121489873fd4. Acesso em: 25 out. 2021. SCRATCH. Acerca do Scratch. Scratch, [s. d.]. Disponível em: https://scratch. mit.edu/about. Acesso em: 25 out. 2021. https://mit.edu/about https://scratch https://medium.com/trainingcenter/a-arquitetura-de-von 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 Tomando decisões e repetindo instruções Algoritmo é definido como uma sequência de instruções que possui um início e fim bem delimitados. Até esse ponto, é possível compre- ender bem. Mas vamos analisar a palavra “sequência”. Os algoritmos mais simples, como aqueles para realizar uma operação aritmética so- bre dois números, por exemplo, possuem a entrada (os números que vamos realizar a operação), um processamento (que é a soma) e uma saída (que é o resultado). Analisando de perto, temos uma sequência encadeada de instru- ções. No entanto, e se o usuário não informar um número ou, então, em vez de informar um número ele informar uma letra? E se o valor informado for negativo? São muitos “ses” que podemos considerar, ou seja, muitas condições que podem ser impostas em um único código. 47 48 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 . Algoritmos e programação I: introdução à programação com C# Ainda é possível ir mais além. Considere um algoritmoque deva apresentar na tela uma sequência com os 5 primeiros números ímpares positivos. Trata-se de algo simples, basta colocar na tela 5 instruções para apresentar os valores 1, 3, 5, 7 e 9, respectivamente. No entanto, considere que agora esse mesmo algoritmo deva apresentar na tela os mil primeiros números ímpares positivos. Observe que, nesse caso, não seria prático e nem elegante inserir mil instruções em um algoritmo para mostrar valor por valor. Imagine como seria um código com mil linhas, em que cada uma teria a ação apenas de apresentar um número! Talvez fosse melhor criar um código que, automaticamente, gerasse esses números e os apresentasse na tela. Note que foram apresentados dois problemas, porém, ambos pos- suem a mesma característica: eles estão modificando a sequência de execução do código. O primeiro tem o objetivo de validar a entrada do usuário mediante as condições (se for um número, execute uma instru- ção x, se for uma letra, execute uma instrução y). O segundo problema visa apresentar um conjunto de valores na tela, no caso, os mil primei- ros números ímpares. Neste capítulo, conheceremos as ferramentas necessárias para re- solver esses tipos de problemas. Começaremos a estudar o conceito de fluxo de código e a entender que esse fluxo pode ser quebrado em diversos outros fluxos, formando algumas ramificações. Além disso, ve- remos que é possível iterar um trecho (ou todo o código) várias vezes. 1 Expressões lógicas e fluxo de controle Antes de apresentar o conceito de estrutura de decisão e também sobre estrutura de repetição, vamos entender um pouco mais sobre o fluxo de um algoritmo. Considere o algoritmo da figura 1 a seguir. 49 Tomando decisões e repetindo instruções 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 1 – Algoritmo sequencial Principal Real nota1 Real nota2 Real nota3 nota1 = 4.5 nota2 = 5.7 nota3 = 5.5 Real media media = (nota1 + nota2 + nota3) / 3 Fim Escrever media Na figura 1, o algoritmo é responsável por declarar e receber três notas de um aluno, em seguida, é realizado o cálculo para obter a média final. Por fim, a média é apresentada na tela para o usuário. Trata-se de uma sequência linear de instruções, a qual chamamos de fluxo. 50 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 . Algoritmos e programação I: introdução à programação com C# No entanto, qual a razão de se calcular uma média se não for para dizer se o aluno está com desempenho satisfatório ou insatisfatório? Em outras palavras, se a média foi calculada, logo é desejável saber se o aluno está aprovado ou reprovado. Aqui, será utilizado um conceito de controle de fluxo, em que ele será alterado de acordo com a média do aluno. Por exemplo, se a nota for maior ou igual a 6, significa que ele está aprovado, caso contrário, ele estará reprovado. Dito isso, considere que esse é o algoritmo de um programa que ge- rencia as notas dos mais de 2 mil alunos de uma escola. As pessoas que lançam as notas as devem lançar uma a uma. No entanto, como deve ser esse código? Pelo que tudo indica, o fluxo apresentado na figu- ra 1 deve ser executado para cada um dos 2 mil alunos, ou seja, assim que a média é apresentada, o fluxo do algoritmo volta para o início de onde declaramos a variável nota1. Neste pouco texto, já tratamos do principal conceito em programa- ção: o controle de fluxo de um algoritmo. Note que é possível (e, em alguns casos, necessário) alterar o fluxo de execução de um algo- ritmo ou, então, fazer com que um fluxo seja repetido diversas vezes (FORBELLONE; EBERSPACHER, 2005). NA PRÁTICA Observe que utilizamos neste capítulo o ambiente de programação em blocos Scratch, uma ferramenta desenvolvida pelo MIT que torna mais didático e visual o processo de aprendizagem de criação de algoritmos. 1.1 Operadores de comparação e operadores lógicos Os operadores de comparação, como o nome indica, compara um valor/expressão do lado esquerdo com um valor/expressão do lado direito. O resultado de qualquer operação de comparação será true 51 Tomando decisões e repetindo instruções 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. (verdadeiro) ou false (falso) (FEIJÓ; CLUA; SILVA, 2009). São exemplos de operadores de comparação: • > (maior); • < (menor); • >= (maior ou igual); • <= (menor ou igual); • == (igual); • != (diferente, que, em algumas linguagens, é representado por <>). Os operadores lógicos realizam uma conexão entre duas expres- sões, é o que se denomina expressões lógicas ou expressões booleanas (FORBELLONE; EBERSPACHER, 2005; OLIVEIRA, 2019). O quadro 1 re- presenta a tabela verdade das operações lógicas com os dois principais operadores, que são os operadores e e ou. Quadro 1 – Tabela lógica E XPRESSÃO 1 E XPRESSÃO 2 O P. E OP. OU true true true true true false false true false true false true false false false false Observe que o operador e, para que tenha uma saída verdadeira (true), precisa que todas as expressões ligadas por esse operador também se- jam verdadeiras (true), caso contrário teremos a saída falsa (false). Por outro lado, ao utilizar um operador ou, para que a saída seja verdadeira (true), basta que qualquer expressão tenha o valor verdadeiro (true). 52 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 . Algoritmos e programação I: introdução à programação com C# 2 Programação por blocos: se (if) e se/senão (if/else) A estrutura condicional se tem o objetivo de dividir o fluxo do có- digo, conforme pode ser observado na figura 2, a qual representa um programa desenvolvido no Scratch. Trata-se de um jogo de adivinhação em que o usuário é chamado para adivinhar um número sorteado. Se o usuário acertar, ele receberá uma mensagem de parabéns. Figura 2 – Utilizando o bloco se O código da figura 2 apresenta o primeiro contato com uma es- trutura condicional. Inicialmente, foi criada uma variável chamada numeroSorteado. A esta variável foi atribuída o valor 21. Em seguida, observe que temos um bloco azul que é responsável por solicitar ao usuário que digite um número. Observe também que há um bloco laran- ja escrito se. Dentro dele, temos um bloco verde, o qual recebe dois valo- res, um à esquerda e outro à direita do sinal de igualdade. Desse modo, estamos comparando o valor do conteúdo da variável numeroSorteado 53 Tomando decisões e repetindo instruções 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. com o número digitado pelo usuário. Lê-se: “se o valor da variável numeroSorteado for igual ao número digitado pelo usuário, então faça”. Dentro do bloco laranja,
Compartilhar