Baixe o app para aproveitar ainda mais
Prévia do material em texto
m i pan o ol cio o e ê É EE | a E l o 4 E ú R i E E FARSA ESe ARSnas E H i n a aESP cedo a e e ” - / 5 * P tá j 1Fe acio OLOHHDCOLCLOCELHOSODOSEBOLODOVDHOCOGAUCODCOGOSOOGOCUVOCSOVEACHODOLOHADOBOSGHAB 3 1 Conceitos Preliminares cessscsscsssesesesosessesscoscssssseccsossosÀ 1.1 Introdução...rrreereerereraceaaanereneeenarenaneeenerecanerends 15 1.2 Um Primeiro Exemplo .............eeeeeeeeeeeeerecerenererrenaneeas 16 1.3 Definição da Linguagem ..........ccisteseeeerereeerereeeneeaceneaeenoa 19 1.4 Conceito de Algoritmo ..........eeereeeereeeeerereenreeeeereneeraranenos 19 1.5 Exercícios Propostos ............cttieiteererereeneeeaeraneraneneenanens 21 2 AlgorritmOS....cceeeeereersereeeereereeerrerreeeneeceeersenserseerseros 23 2.1 Tipos deValores...23 2.2 Variáveis ....eescerreeeecenecrecareraenceaerenceeneeencornneraaceeenesanersanes DD 2.3 Expressões ........ceeeeeeeseenerecereeeerareneeneeaceneereeseeneraceneranarcereranaa 27 2.4 Compatibilidade de Tipos................issesererreerereos 31 2.5 Comandos de Entrada e Saída...see32 2.6 Constantes ..........cccccieeeercrereacereracareranerenanaraeaaereraeaanernaaco DA 2.7 Exercícios Resolvidos ...........iccieererereeaneranerenanerennoa 35 2.8 Exercícios Propostos ..........cese e eisreeseeeneenerneeaerecenacenerecenes 39 3 Estruturas de Seleção ....ccccccrcorsesececosososoesecososaoocasocos LO 3.1 Comando Se...aaaeaaerersrerereatrenanan ne cerarerenenaneass 45 3.2 Ninhos de Comandos Se .........reereeceereaneeranaceess 47 3.3 Comando Escolha ................titrereeetseerareaecenececneneeneneeneao 50 3.4 Exercícios Resolvidos een nana aeee rear cre cr aaa nana nana racer arena aan aa arerends 54 3.5 Exercícios Propostos erre nana renan aeee rrenan er entaa na oa er ana ne cnaa as srenansea 57 4 Estruturas de R 4.1 Introdução...iiitertasereersreeeeeererereaeeeneraceennererenaeneness 4.2 Comando Enquanto-Faça ..............c is reriereeneereneeneenereeneceeeas 62 4.3 Repetição Controlada pelo Usuário ...........mesmos 65 4.4 Comando Repita...esecerrerneeneeearaeneeceneeneacaceneaao 70 4.5 Comando Para-Faça ........icecereecereeeeeanarenencrenento 71 4.6 Exercícios Resolvidos .........eeerenemeseeeserenossarenenacecaceneneaa 73 2º» L 4.7 Exercícios Propostos ..........ceereseeneeneerececerecenceeeenenencernaa 80 5 Tipos Estruturados Homogêneos........ccccccecoceccoros DG 5.1 Introdução...reeeereeaeacenerraeraceranarencacanerearacaceaneaaao 93 2.2 Declaração Tipo ............siseeceneceneeenereceeacaseecareacerererreento 95 5.3 Utilização de Variáveis Indexadas ...........ittemneess 96 5.4 Variáveis Multidimensionais............eesrentes 105 5.5 Exercícios Resolvidos ..........eeeeeeseemeeneeeeeeencenenieass 110 2.6 Exercícios Propostos ............ccseeeeeteserreeeeeeeeceraeoneencennos 119 Subal Í 126 ti a goritmos DODHODOSDOSLCOLLHHOBEALDHSODOSGOHOLHAAHGDODOHCAOLONCCLGENHEHGHHHAOSHSB 5 6.1 Introdução .........eeerereenenacererenacrerenarerenencracenenereeaanto 125 6.2 Subalgoritmo Função...rererererareerans 125 6.3 Parâmetros e Argumentos...129 6.4 Localidade ............irrcerereeneerraceneenacaeraaateas 130 6.5 Passagem de Argumentos...............iiisreaeaas 130 6.6 Subalgoritmo Procedimento ................i 131 6.7 Exercício Resolvidos...134 6.8 Exercícios Propostos ...............iiiieeereereeraceecenos 151 Prefácio Imaginamos que muitos devem estar se perguntando: Por que um livro de algoritmos, numa época onde as ferramentas de programação visual estão por toda parte e, aparentemente, o programador pouco tem a fazer? Sem dúvida alguma, os benefícios das ferramentas visuais como Visual Basic, Delphi, etc. são infinitos comparados com a programação convencional. No entanto, em qualquer software que você use, com certeza, existe programação a qual as ferramentas visuais não podem gerar pois não advinhamo que se passa pela mente de um programador. E todo programa decente, tem que haver um valor agregado pelo programador. Ferramentas quefacilitam o desenvolvimento de aplicações com interface gráfica são uma realidade, e devem ser utilizadas, sem dúvida, pois elas permitem que o programadorse concentre nos aspectos relativos ao problemaa ser resolvido. É exatamente no desenvolvimento do lado “pensante” dos programas que este livro vem contribuir. Este livro tem por objetivo a apresentação dos conceitos fundamentais que devem ser levados em consideração quando da eleboração de um programa, sem apresentar nenhuma linguagem de programação. Assim, a representação destes conceitos é apresentada através de umalinguagem própria a qual denominamosde pseudocódigo. 1.1 Introdução O computador tornou-se uma poderosa ferramenta, presente nas mais variadas áreas da atividade humana, devido fundamentalmente ao fato de o mesmo ser uma máquina programável. Essa caracterís- tica faz dele uma máquina que pode ser usada na determinação da SOlução dos mais variados tipos de problemas. Basicamente, um computador consiste de uma máquina que executa ordens. Assim, para que ele apresente a solução de um pro- blema, é necessário que execute um programa, o qual fará com que se obtenha a solução. Como uma definição preliminar, pode-se dizer que programar um computador consiste na elaboração de uma se- quência de instruções, de forma que, ao serem executadas, o compu- tador obtenha a solução de um determinado problema. O nosso objetivo neste livro é apresentar as características e conceitos envolvidos na escrita de um programa de computador. Afinal, se um programa de computador consiste em uma segiiência de instruções, como são essas instruções? Que características apre- sentam? Que tipo de instrução um computador pode executar? Mais do que responder a essas perguntas, procuraremos, no decorrer desse livro, apresentar os conceitos envolvidos na modela- gem da resolução de um problema em computador. Essa modelagem pode ser feita a partir de vários paradigmas. Neste livro, abordaremos o paradigma Programação Estruturada. De acordo com esse paradigma, a escrita de um programa, para a resolução de um deter- minado problema, está baseada na divisão do problema maior em problemas menores. Para cada problema menor, identifica-se quais os dados que esse problema apresenta e a que resultados se quer chegar. Os dados que o problema apresenta são denominados Entradas e os resultados desejados são denominados Saídas. Definidas as entradas e saídas, deve-se determinar que tipo de processamento deve ser exe- cutado para que, a partir das entradas, obtenham-se as saídas. Inirodução à Programação - Algoritmos Assim, a escrita de um programa envolve todo um processo de análise do problema, onde a divisão de um problema maior em pro- blemas menores constitui-se em característica fundamental. Como inicialmente estaremos apresentando e discutindo problemas bas- tante simples, essa característica não será levada em consideração nos primeiros capítulos. 1.2 Um Primeiro Exemplo Para que se tenha uma visão mais clara do quesignifica programar um computador, vamos analisar um pequeno problema e escrever para este uma primeira versão de um programa. Obviamente que, por menor que seja o problema, aconstrução de um programa que resolva esse problema envolve um conjunto razoável de informa- ções. Por questões didáticas, neste primeiro exemplo, alguns concei- tos não serão discutidos. Suponha que o nosso problema seja escrever um programa que faça com que o computador resolva o seguinte problema: “Dadas a base e a altura de um triângulo, determinar a sua área”. Pelo enunciado do problema, podemos concluir que este apre- senta como dados (entradas) os valores da base e da altura, os quais são necessários para a resolução do problema. Também podemos concluir que a solução do problema consiste em se encontrar o valor da área do triângulo. Temos, então, como saída, o valor da área. Para que possamos escrever uma primeira versão de progra- ma para esse problema, é necessário que saibamos alguns conceitossobre como funciona um computador. Afinal, que tipo de instruções um computador pode éxecutar? Como são armazenados os valores que processa? Que conhecimentos tem o computador? Dados os objetivos deste livro, vamos visualizar um computa- dor como sendo uma máquina cega, que conhece um comunto limita- do de instruções e só as executa se solicitado. Vamos considerar, por enquanto, que um computador consiste em uma máquina que sabe: ” Ler; “ Escrever; “” Efetuar operações aritméticas básicas, tais como: adição, sub- tração, multiplicação e divisão. ConceitosPreliminares A maioria das instruções que o computador executa está, de alguma forma, associada ao processo de armazenamento de valores na sua memória ou ao processo de cópia de valores de sua memória. Assim, se quisermos que o computador saiba qual o valor da altura do triângulo, que, conforme vimos, é necessário para o cálculo da área, devemos instruí-lo de forma que leia um valor, a ser fornecido pelo usuário, e que esse valor seja armazenado em algum local de sua memória. O computador só sabe ou conhece aqueles valores que estão armazenados em sua memória. Fisicamente, a memória de um computador consiste em um conjunto de elementos denominados bytes, cujo estudo foge ao escopo deste livro. Entretanto, para efeito de construção de um pro- grama, podemos considerar a memória como sendo um conjunto de posições, conforme apresentado na Fig. 1.1, onde cada posição rece- be uma identificação (um nome) e armazena um determinado valor. Base Idade Xi Nota "80 Rs ces sa psi25|5[95 Aluno A12 Area Altura " Joao|XBtdhjfa|160|40| Fig. 1.1 - Representação da memória (exemplo). Cada posição de memória sempre armazena um valor. Se o computador executar uma instrução fazendo com que um novo va- lor seja armazenado em determinada posição, então o valor antigo será destruído. Devemos considerar que, em uma posição, sempre se tem algum valor armazenado, mesmo que nenhum valor tenha sido explicitamente lá colocado. Se nenhum valor foi explicitamente ar- mazenado em determinada posição, considera-se que esta possui um “lixo”. É fundamental que o leitor entenda o funcionamento da me- mória, pois a maioria das instruções que o computador executa tem por base a sua memória. Dadas essas considerações, podemos escrever o programa que faz com que o computador calcule a área de um triângulo, como segue: Inicio Leia Base Leia Altura Area < Base * Altura / 2 Escreva Area Fim 18 Introdução à Programação -Algoritmos Veja que nosso programa usou as posições de memória Base, Altura e Area. O nome de uma posição de memória é definido pelo programador. Por questão de legibilidade, é sempre recomendável que os nomes das posições de memória sejam significativos. O nome de uma posição de memória é significativo quando expressa de algu- ma forma qual o conteúdo da posição. Assim, por exemplo, se quisermos que o computador armazene o valor da idade de alguém, é conveniente que a posição que armazenará esse valor seja identificada por Idade. deja a instrução: Leia Base A execução dessa instrução faz com que o computador fique aguardando que o usuário digite umvalor . O valor digitado é então lido pelo computador e, conforme determina a instrução, é armaze- nado na posição de memória Base. Todo comando Leia deve especificar pelo menos uma posição de memória. O valor lido será armazenado na posição de memória especificada pelo comando Leia. Note que, antes da execução da instrução Leia Base, algum va- lor existia na posição de memória Base. Com a execução da instru- ção, O valor fornecido pelo usuário será armazenado na posição Base e o antigo valor lá existente será destruído. Lembre-se: mesmo que o programa não tenha mandado armazenar nenhum valor em uma posição, algum valor a posição conterá. Conforme já foi colocado, quando nenhuma instrução foi executada de forma a armazenar um valor em determinada posição, diz-se que a posição contém um “lixo”. Seja a instrução: Area <— Base * Altura / 2 A execução dessa instrução faz com que o computador copie os valores contidos nas posições de memória Base e Altura, multiplique um pelo outro e divida o resultado por 2. O resultado final obtido, conforme determina a instrução, deve ser armazenado na posição de memória Area. Veja que usamos os caracteres * e / para representar as operações de multiplicação e divisão, respectivamente. Já o símbolo <— é usado para indicar que o resultado da expressão à direita deve ser armazenado na posição de memória especificada à esquerda. Coma execução da instrução Escreva Area Conceitos Preliminares o valor que estiver armazenado na posição de memória Area será copiado e mostrado na tela. 1.3 Definição da Linguagem Conforme pode ser observado na seção anterior, para escrever nossa primeira versão de um programa, usamos uma determinada lingua- gem. Uma linguagem pode ser definida como um conjunto de sím- bolos e regras utilizados em um processo de comunicação. Em ter- mos de programação de computadores, várias são as linguagens dis- poníveis, cada qual com suas características. Nosso objetivo neste livro é apresentar ao leitor, os conceitos envolvidos na construção de um programa de computador, sem, contudo, entrar em aspectos relativos a uma determinada lingua-Sor WS UR Bo A Si NS O CD E Rà RA eds a dopoaIA TsERA WA Y VEIA RTA ah. us Ty Rus não À gem de programação. Assim, estaremos usando durante todo o livro uma linguagem a qual denominaremos de Pseudocódigo. Esse pseudocódigo, assim cha- mado por não ser uma linguagem de programação propriamente dita, tem por base o português e suas características básicas procuram seguir o especificado em linguagens de programação tradicionais. Mais espe- cificamente, esse pseudocódigo será apresentado de uma forma bastan- te similar à linguagem de programação Pascal. Considerando que o pseudocódigo não constitui-se em uma linguagem de programação dis- ponível em computador, o conjunto de instruções escrito em pseudocódigo será denominado de Algoritmo, em vez de Programa. Ao usarmos um pseudocódigo em vez de uma linguagem de programação, não necessitamos nos preocupar com detalhes especí- ficos da linguagêm. Isto possibilita que o projetista se concentre fun- damentalmente na montagem lógica da resolução do problema. 1.4 Conceito de Algoritmo Podemos definir algoritmo como sendo uma sequência finita e lógica de instruções executáveis, especificadas em uma determinada lin- guagem, que mostram como resolver determinado problema. Veja que essa definição não está presa à utilização ou não do computador. Qualquer sequência de instruções que mostra como 19 Introdução à Programação - Algoritmos resolver um problema constitui-se em um algoritmo. Uma receita de bolo é um bom exemplo de algoritmo. Uma receita de bolo constitui- se em uma sequência finita e lógica de instruções, as quais mostram o que uma cozinheira deve fazer, e em que ordem, para obter um bolo. Veja que a receita especifica todos os passos em uma sequência onde a ordem das instruções ou passos é fundamental. Um algoritmo deve especificar quais são as instruções que de- vem ser executadas e em que ordem. Se o problema for, por exem- plo, calcular a média aritmética de três valores, o seguinte algoritmo poderia ser usado por alguém que fosse resolver este problema: - Conhecer os três valores; - Determinar a soma dos três valores; - Dividir a soma por 3, encontrando a média; - Mostrar a média encontrada. Nosso objetivo neste livro é apresentar e discutir os conceitos relativos à construção de algoritmos para execução em computador. Conforme já colocamos anteriormente, estaremos utilizando um pseudocódigo, que tem por base palavras do português e sua estru- tura é bem similar à linguagem de programação Pascal. Assim, os algoritmos que estaremos discutindo terão todas as características de um programa, exceto a linguagem. Para o problema do cálculo da média dos três valores, pode-se escrever o seguinte algoritmo: Inicio LeiaValora ( Leia Valorb ( Leia Valorc ( Soma — Valora + Valorb + Valorc ( Media — Sonia / 3 ( Escreva Media ( Fim A execução das instruções (1), (2) e (3) faz com que o compu- tador leia os valores dos quais se deseja determinar a média. Veja que, de acordo com as instruções, o primeiro valor será lido e arma- zenado na posição de memória identificada com o nome Valora; o segundo valor será armazenado na posição Valorb; e o terceiro, na posição Valorc. À execução da instrução (4) faz com que sejam co- piados e somados os valores que estão armazenados nas posições Valora, Valorbe Valorc. O resultado obtido, de acordo com a ins- Conceitos Preliminares trução será armazenado na posição de memória Soma. A execução da instrução (5) faz com que o valor armazenado em Soma seja divi- dido por 3 e o resultado seja armazenado na posição Media. A instrução (6) faz com que seja mostrado o valor armazenado na po- sição Media. Todos esses tipos de instruções serão apresentados em maiores detalhes no próximo capítulo. Pelos exemplos apresentados, podemos concluir que a cons- trução de um algoritmo envolve todo um processo de análise do pro- blema, com o objetivo de abstrair-se uma solução. Nessa análise, deve- se identificar claramente quais os dados que são necessários para a resolução do problema. Esses dados são denominados entradas. Tam- bém deve ficar claro a que resultados se quer chegar, ou seja, em que consiste a solução do problema. Aos resultados a que se quer chegar, denominamos saídas. Voltamos a lembrar, entretanto, que o princí- pio fundamental da programação estruturada consiste em conside- rar o problema a ser solucionado como sendo composto por subproblemas. Dividindo-se o problema maior em subproblemas menores, estes serão mais facilmente resolvidos. Tais aspectos serão discutidos no Capítulo 6. 1.5 Exercícios Propostos 1. Explique o que significa programar um computador? 2. O que você entendeu por programação estruturada? 3. Defina Algoritmo. Dê exemplos. 4. Como pode ser visualizada a memória de um computador? 5. Escreva/jum algoritmo para calcular a área de um círculo. Área do círculo = 3,1415 * Raio? 6. Escreva um algoritmo que calcule o perímetro e a área de um quadrado. 21 2.1 Tipos de Valores Um algoritmo, que conformejá visto, constitui-se em uma sequência de instruções a serem executadas para a obtenção da solução de um determinado problema, pode manipular vários valores. Hisses valo- res podem ser os dados apresentados pelo problema, dados interme- diários gerados durante a execução do algoritmo ou mesmo OS Vaio» res que representam a solução do problema. Sejam, por exemplo, as informações relativas a um funcionário de uma empresa: Nome : José da Silva Idade 25 Sexo -M Salário : 1200.00 Veja que, nesse pequeno exemplo, vários valores foram utilizados. Note que José da Silva é um valor que representa o nome do funcionário, assim como 25 é um valor que representa a idade do funcionário. Com o valor 1200.00, que representa o salário do funcionário, poderíamos, por exemplo, efetuar uma multiplicação, se assim fosse necessário. Já com o valor José da Silva, essa operação não faria qualquer sentido. Assim, pódemos concluir que os valores manipulados dentro de um algoritmo podem ser classificados em vários tipos, cada tipo com suas próprias características e operações. Cada linguagem de programação tem sua própria classificação. Em nosso pseudocódigo, classificaremos os valores nos seguintes tipos básicos: “ Inteiro “ Real “ Caractere “ Literal “ Lógico 24 Introdução à Programação - Algoritmos Valores Tipo Inteiro São valores que representam quantidades numéricas inteiras, tais como a idade de uma pessoa, o número de funcionários de uma empresa, o número de páginas deste livro, etc. | Exemplos de valores do tipo inteiro: 17 -5 +90 O Valores Tipo Real São valores que representam quantidades reais, ou seja, valores que apresentam parte fracionária, tais como o salário de um funcioná- rio, a média de um grupo de valores, a altura de uma pessoa, etc. Vamos assumir que os valores reais serão sempre representados uti- lizando-se o ponto decimal. Exemplos de valores do tipo real: 4.5 1200.93 -0.00005 +15.0 0.0 Valores Tipo Caractere São valores utilizados para representar informações onde apenas um caractere é necessário, tais como o valor do sexo de uma pessoa (M ou F), uma letra do alfabeto, etc. Todo valor do tipo caractere apresenta apenas um caractere. Vamos assumir que valores do tipo caractere devem sempre ser especificados entre apóstrofos. Veja que qualquer caractere constitui-se em um valor do tipo caractere. Exemplos de valores do tipo caractere: 444 Y 42H i 5 “* (espaço) Algoritmos Valores Tipo Literal São utilizados na representação de informações onde se faz necessá- ria a utilização de zero ou mais caracteres, tais como o nome de uma pessoa, o nome de uma cidade, uma determinada frase, etc. Um valor do tipo literal constitui-se em uma sequência dezero ou mais caracteres especificados entre apóstrofos. Exemplos de valores do tipo literal: “Antonio da Silva” “Rua Felipe Schmidt” “Olho d”agua” 1234” “ (literal nulo) Valores Tipo Lógico São apenas dois valores: verdadeiro e falso. São utilizados na repre- sentação do valor de uma expressão lógica ou afirmações, tais como 6>4 (verdadeiro) ou “A terra gira em torno da lua” (falso). Veremos exemplos de utilização em capítulos futuros. 2.2 Variáveis Conforme apresentado no Capítulo 1, uma posição de memória sempre armazena um determinado valor. Se um outro valor for atribuído à posição, então o valor anterior será destruído. Assim, O conteúdo de uma posição de memória pode variar durante a execu- ção de um algoritmo. Dessa forma, passaremos a denominar uma posição de memória de Variável. Nome das Variáveis Cada linguagem de programação tem suas próprias regras para for- mação do nome de uma variável. Assumiremos para o nosso pseudocódigo a seguinte regra: O nome de uma variável pode ser composto por letras, dígitos e o caractere sublinhado (. ), sendo que o primeiro caractere deve ser uma letra. i a E m 26 Introdução à Programação -Algoritmos Assumiremos também que, para nomes de variáveis, o uso de letras maiúsculas ou minúsculas é indiferente. Assim, os nomesSalario e SALARIO identificam a mesma variável. Tipo das Variáveis Umavariável é uma posição de memória e, portanto, armazena sem- pre determinado valor. Cada variável utilizada em um algoritmo deverá ser declarada de um determinado tipo, de acordo com o tipo de valor que irá armazenar. Dessa forma, se uma variável for decla- rada como sendo do tipo Inteiro, então esta só poderá receber valores do tipo inteiro. Considerando essas novas informações, o nosso algoritmo visto no Capítulo 1, que calcula a média aritmética de três valores inteiros, fica conforme segue: Algoritmo MediaAritmetica VariávVELSfod a Valora, Valorb, Valorc, Soma : Inteiro Media : Real Inicio Leia Valora fo comando acima faz com que um valor seja lido e armazenado na variável identificada pelo nome Valoraf Leia ValorDb Leia Valorc Soma <— Valora + Valorb + Valorc (O comando acima calcula a soma dos três valores e o resultado é armazenado na variável Soma/ Media <— Soma / 3 (O comando acima faz com que o conteúdo da posição de memória Soma seja dividido por 3 e o resultado obtido seja armazenado na variável Media/ Escreva Media (Faz com que o conteúdo de Media seja mostrado ao usuário). Fim Algoritmo MediaAritmetica - Cálculo da média aritmética de três valores. Observe que demos um nome ao nosso algoritmo. Também colocamos comentários a respeito de algumas instruções, os quais foram especificados entre chaves. A colocação de comentários, tam- bém chamada de documentação, é importante para análise e manu- tenção futura, pois conferirá maior clareza ao algoritmo. Todo co- Algoritmos mentário será especificado entre chaves. Observe também que cada uma das variáveisutilizadas no algoritmo foi declarada como sendo de um tipo. Assim, a declaração Variáveis Valora, Valorb, Valorc, Soma: Inteiro Media : Real define que as variáveis Valora, Valorb, Valorc e Soma serão do tipo Inteiro e, portanto, somente valores inteiros poderão ser arma- zenados nelas. Já a variável Media foi declarada como tipo Real e, portanto, somente pode receber valor do tipo Real. Es 2.3 Expressões res, separados por caracteres especiais, que indicamas que devem ser executadas. Assim, a expressão Valora + Valorb + Valorc indica o cálculo da soma dos conteúdos das variáveis Valora, Valorb e Valorc. Já o comando Soma — Valora + Valorb + Valorc indica que o valor da expressão Valora + Valorb+ Valorc deve ser armazenado na variável Soma. Seja o comando: Resultado <— Valora «< 10 Nesse caso, Valora < 10 constitui-se em uma expressão cujo valor pode ser gerdadeiro ou falso, dependendo do valor armazenado na variável Valora. Assim, a expressão Valora < 10 apresenta como resultado um Valor do tipo Lógico. Na variável Resultado será armaze- nado o valor verdadeiro, se o conteúdo da variável Valora for menor que 10. Caso o conteúdo de Valora não seja menor que 10, então o valor da expressão Valora < 10 será falso e a variável Resultado, que deve ser declarada do tipo Lógico, receberá o valor falso. Os operadores básicos utilizados em uma expressão podem ser classificados em: Aritméticos, Relacionais e Lógicos. Os operadores aritméticos especificam operações aritméticas, tal como em Valor.a + Valorb. Os operadores relacionais especificam uma relação, tal 27 Introdução à Programação - Algoritmos como em Valora < 10. Os operadores lógicos especificam uma ope- ração lógica, como no comando Resultado <— (Valora > 10) E (Valora < 20) onde é utilizado o operador lógico E. Nesse exemplo, Resultado receberá o valor verdadeiro se o conteúdo da variável Valora for maior que 10 e menor que 20; caso contrário, Resultado receberá o valor faiso. Operadores Aritméticos Expressam operações aritméticas. Veja a Fig. 2.1: Operador Significado Exemplo |Tipo dos operandos + Adição a+b Reais e/ouinteiros - Subtração | a-b Reais e/ou inteiros Multiplicação a“*b Reais e/ou inteiros / Divisão real a/b Reais e/ou inteiros DIV Divisão inteira a DIV b Inteiros Bia, do “RESJO Resto da divisão inteira) a RESTO b Inteiros A - Exponenciação a“ b Reais e/ou inteiros Fig. 2.1 - Lista dos operadores aritméticos. Veja os exemplos de operações aritméticas no algoritmo a seguir. Algoritmo Exemplo Variáveis a, b, d, Sobra : Inteiro Cc, É : Real Inicio , a «e 22 fArmázena o valor 22 na variável a.) be 4 : (o comandoa seguir faz a divisão real do conteúdo da variável a pelo conteúdo de b. A variável c receberá o valor 5.51 ce a/b (O comando a seguir faz a divisão inteira do conteúdo de a pelo conteúdo de b. A variável d receberá o valor5/ de a Div b (No próximo comando é calculado o resto da divisão inteira do conteúdo da variável a pelo conteúdo da variável b. A variável Sobra receberá o valor 21 28 Algoritmos Sobra <— a Resto Db fe 2.0 **b fArmazenará na variável £f o valor 16.0) Fim Algoritmo Exemplo - Uso de operadores aritméticos. Hierarquia das Operações Aritméticas Dentro de uma expressão aritmética podem aparecer várias opera- ções. As operações aritméticas serão executadas de acordo com a seguinte ordem: 1º) O que estiver entre parênteses; 2º) Exponenciação; 3º) Multiplicação, divisão real, divisão inteira, ou resto da di- visão Inteira; 4º) Adição ou subtração. Quando aparecerem duas ou mais operações de mesma hie- rarquia, estas são executadas na ordem em que aparecem na ex- pressão, da esquerda para direita. Considere, por exemplo, a fór- mula a seguir: 2+a b-—3 O comando para calcular o valor de y, de acordo com a fórmu- la acima, pode ser colocado como: -Dx+x y ye(2+a)/(b-3)-2%x + x**3 De acordó com a hierarquia, no cálculo do valor da expressão, as operações serão executadas na seguinte ordem: 1º) (2ta) 2º) (b-3) 3º) x**3 4º) divisão do resultado de 1º) com resultado de 2º) 5º) 2x 6º) subtração do resultado de 4º) com resultado de 5º) 7) adição do resultado de 6º) com o resultado de 3º) Introdução à Programação - Algoritmos Operadores Relacionais Expressam operações de relação. São apresentados na Fig. 2.2. Operador Significado Exemplo > Maior que Idade > 18 >= Maior ou igual que NumDep >=2 < Menor que Nota < 6.0 <= Menor ou igual que x <=25 = Igual que Nome = 'Antonio <> Diferente de Sexo <>'f Fig. 2.2 - Operadores relacionais. Operadores Lógicos Expressam operações lógicas. As linguagens de programação, em geral, apresentam vários operadores lógicos. Aqui, em nosso pseudocódigo, consideraremos apenas os operadores lógicos E, Ou e Não. Veja a seguir alguns exemplos de comandos com expressões que usam operadores lógicos e relacionais. FoiAprovado < (Media >= 6.0) E ( Frequencia > 0.75) EContribuinte < (Salario > 1000.00) Ou ( Idade < 75) TemSol < Não EstaNublado Observe que os operadores lógicos Ou e E são aplicados sempre a dois operandos, enquanto que o operador Não é aplicado a um único operando. Esses operandos podem ser expressões, desde que tenham comoresultado um valor lógico (verdadeiro oufalso). A Fig. 2.3 apresen- ta o resultado de operagões envolvendo os operadores E e Ou. Operando 1 Operando 2 Resultado com E Resultado com OU verdadeiro verdadeiro verdadeiro verdadeiro verdadeiro falso falso verdadeiro falso verdadeiro falso verdadeiro falso falso falso falso Fig. 2.3 - Operaçõeslógicas E e Ou. Assim, a expressão (Media >= 6.0) E (Frequencia > 0.75) terá como resultado o valor verdadeiro somente se as duas condições fo- rem verdadeiras,isto é, se o conteúdo davariável Media for maior ou Algoritmos igual a 6.0 e, simultaneamente, se o conteúdo da variável Frequencia for maior que 0.75. Caso uma das condições seja falsa, ou mesmo se ambas forem falsas, então toda a expressão terá como resultado o valor falso. Já a expressão (Salario > 1000.00) Ou ( Idade < 75), terá como resultado o valor verdadeiro, se uma das condições for verda- deira ou se ambas forem verdadeiras. Assim, basta que o conteúdo da variável Salario seja maior que 1000.00 para que a expressão (Salario > 1000.00) Ou (Idade < 75) tenha o valor verdadeiro. O operador Não, que deve ser aplicado a um único operando lógico, faz com que o resultado da operação seja o inverso do valor do operando. Assim, com a execução do comando TemSol <- Não EstaNublado será armazenado o valor verdadeiro na variável TemSol se o conteú- do da variável EstaNublado for falso. Veja que, se EstaNublado tem o valor faiso, então a expressão Não EstaNublado tem o valor contrá- rio, isto é, verdadeiro. Quando uma expressão tem como resultado um valor lógico, então denominamos de expressão lógica. 2.4 Compatibilidade de Tipos O valor a ser armazenado em uma variável deve ser do mesmotipo da variável. Assim, se em um algoritmo tivermos o comandos: A <- 10.5 Resultado — 7/2 Aprovado <- (Media >= 6.0) E ( Frequencia > 0.75) então as variáveis A e Resultado deverão ser declaradas do tipo Real, pois 10.5 é umvalor real e 7/2 dá como resultado também um valor real. Já a variável Aprovado deve ser declarada como sendo do tipo Lógico, pois a expressão (Media >= 6.0) E ( Frequencia > 0.75) tem como resultado um valor do tipo lógico, ou seja, é uma expressão lógica. Veja o Algoritmo Exemplo?41. Algoritmo Exemplo241 Variáveis Nom : Literal Peso, NumCar, X : Real Num : Inteiro Introdução àProgramação -Algoritmos Inicio Num <- 5 Nom <— “Isto e um exemplo” Peso <- 100.1 NumCar — 20 X — 3 Nom <- “Trocaram meu conteúdo” Peso <- (Peso / X) * 0.0 NumCar <— Num * X Xx—- 10 - (X + 5) NumCar < NumCar / 38 Fim Algoritmo Exemplo?41 - Compatibilidade de tipos. Veja na Tabela 2.1 o acompanhamento dos valores que as va- riáveis assumiramdurante aexecução desse algoritmo. A execução manual de um algoritmo com a observação dos valores assumidos pelas diversas variáveis tem por objetivo verificar possíveis proble- mas no algoritmo. À execução manual de um algoritmo também denomina-se Teste de Mesa. Num Peso NumCar X Nom 5 100.4. 20.0 SA ictoe tm MVdelas! Dio 0.0 15.0 2.0 Trocaram meu conteúdo 5.0 Tabela 2.1 - Valores das variáveis do algoritmo Exemplo?41. O algoritmo Exemplo?41 mostra que, durante a sua execu- ção, o conteúdo de uma variável pode mudar. Entretanto, cada novo valor armazenado na variável deve ser do mesmo tipo da variável. Como exceção, consideraremos em nosso pseudocódigo que é per- mitido atribuir um valor do tipo Inteiro a uma variável declarada como sendo do tipo Real. 2.5 Comandos de Entrada e Saída Um comando de entrada (leitura) tem-por função transferir dados do meio externo para a memória de trabalho do computador. Vamos assu- mir em nosso pseudocódigo que os dados do meio externo entram no computador através de seu teclado. Assim, a execução do comando Leia NumeroDependentes c o a me ms o c o m a m p i e Po ce ni ha ço Algoritmos faz com que o computador fique aguardando que um valor seja digitado. O valor digitado será armazenado na variável Numero.Dependentes. Um comando de leitura pode especificar a lei- tura de um ou vários valores. Assim, a execução do comando Leia Nome, NumeroDependentes, Salario faz com que o computador aguarde que três valores sejam digitados. O primeiro valor será armazenado na variável Nome, o segundo na variável NumeroDependentes e o terceiro na variável Salario. Lem- bre-se que cada valor a ser digitado deve ser do mesmo tipo da vari- ável que o recebe. Ao contrário de um comando de entrada, um comando de sa- ída é utilizado quando necessitamos apresentar valores ao meio ex- terno. Assumiremos que esses valores serão apresentados ao meio externo através da tela de um monitor. Assim, se quisermos que o computador mostre o valor que está armazenado na variável Soma,Rà DA bel Rap o seguinte comando deve ser executado: Escreva Soma Um comando Escreva pode especificar a saída de vários valo- res. Assim, o comando Escreva Nome, “Media : '*, Media faz com que seja mostrado na tela o conteúdo da variável Nome, seguido do valor tipo literal 'Media :” e, após, o conteúdo da variá- vel Media. Assumiremos em nosso pseudocódigo que cada comando Escreva imprime uma linha na tela. Veja o algoritmo a seguir: Algoritmo Exemplo251 Variáveis NomedgAluno : Literal Idade : Inteiro Nota : Real Inicio Leia NomedoAluno Leia Idade Leia Nota Escreva “Nome do Aluno: * , NomedoAluno Escreva “Idade: *., Idade Escreva “Nota da Prova: *., Nota Fim Algoritmo Exemplo?51 - Uso dos comandos de Entrada e Saída. 34 Introdução à Programação - Algoritmos Considerando que, ao executar os comandos de leitura, o usu- ário digite Joao” para NomedoAluno, 25 para Idade e 9.5 para Nota, a tela teria a seguinte aparência após a execução das instruções des- se algoritmo: Joao 25 9.5 Nome do Aluno: Joao “Idade:25 Nota da Prova: 9.5 2.6 Constantes Em muitas situações, ao escrevermos um algoritmo, necessitamos trabalhar com valores que não se alterarão durante toda execução do algoritmo. A esses valores denominamos Constantes. Constante é uma quantidade fixa, invariável, cujo valor é definido no início do algoritmo, não podendo ser alterado durante a sua execução. Assim, se SalMinimo identifica uma constante, então não será permitido que alguma instrução do algoritmo modifique o seu valor. Como uma constante constitui-se em um valor, esta poderá ser de qualquer um dos tipos vistos na seção 2.1. Veja o algoritmo ExemplodeConstante. Algoritmo ExemplodeConstante Constantes SalMinimo 400.00 Mensagem = 'Resultados' Variáveis | Salario Í : Real Quantidade : Inteiro Inicio é (Não é permitido alterar os valores de SalMinimo e Mensagem] Leia Salario Quantidade <- Salario Div SalMinimo Escreva Mensagem Escreva 'O funcionário tém salário de: "., Salario Escreva 'O qual equivale a ", Quantidade, ' Salários” Escreva “Valor do salário mínimo: '", SalMinimo Fim Algoritmo ExemplodeConstante - LIso de constantes. Algoritmos No algoritmo ExemplodeConstante são declaradas duas cons- tantes, Mensagem e SalMinimo, que são utilizadas dentro do algoritmo e que, por definição, não poderão ser alteradas. A utilização de cons- tantes para valores que não mudam durante a execução do algoritmo tem como vantagem a facilidade de futura manutenção do algoritmo. Assim, se o valor do salário-mínimo for alterado pelo governo, basta alterar-se o valor da constante SalMinimo que, automaticamente, todas as instruções que utilizam essa constante ficam atualizadas. Veja que, se não tivéssemos utilizado a constante SalMinimo, o va- lor 400,00 deveria ser especificado em vários pontos dentro do algoritmo, o que poderia resultar em possível erro por esquecimento, caso fosse necessário a sua alteração. Resolvidos 2.7 Exercícios Exercício 1 Veja os valores armazenados em cada uma das variáveis após a exe- cução de cada comando do algoritmo a seguir. O caractere ? está sendo utilizado para denotar um valor não conhecido (um lixo). A B C X Algoritmo Exemplo - Variáveis Í ! ! Í ! A, B : Real ? ? - - C, X : Inteiro ? ? ? ? Inicio ? ? ? ? A << 6.0 6.0 ? ? ? B<- A/2 6.0 3.0? ? Ce 1 6.0 3.0 11 ? xe cpdiva 6.0 3.0 11 2 C «< CResto 2 6.0 3.0 1 2 B<- 5.4 6.0 5.4 1 2 Ce c+a 6.0 5.4 2 2 Ac B+2 7.4 5.4 2 2 Fim Exercício 2 Considere o problema de calcular as raízes de uma equação de segun- do grau. Uma equação de segundo grau tem a seguinte forma geral: Ax + Bx+C=0 35 Introdução à Programação - Algoritmos As raízes podem ser determinadas através da fórmula: -B+Bº —-4AC “o ZA Em nossa resolução, vamos assumir que as raízes de uma equa- ção de segundo grau sejam sempre reais. Fazendo uma análise desse problema com o objetivo de determinar quais dados são necessários para a sua resolução, conclui-se que é necessário o conhecimento dos valores dos coeficientes 4, Be C. Também pode-se concluir, pela defini- ção do problema, que o objetivo é determinaras raízes da equação. Assim, tem-se: Entradas: Os coeficientes da equação (A, B, €). Saídas: As raízes da equação (xl , x2). Estando claramente definido e analisado o problema, parte-se para a construção do algoritmo, o qual ficará como segue: Algoritmo SegundoGrau Variáveis A, B, CC, xl, x2 : Real Inicio (O comando a seguir faz com que sejam lidos três valores. Os valores serão armazenados nas variáveis A, Be C) Leia A, B, € (O comando a seguir calcula a primeira raiz e armazena em x1/ x1 — (-B+(B**2-4*A*C) **0.5) /(2*A) (O comando a seguircalcula a segunda raiz e armazena em x2 1 x2 € (-B-(B*+2-4*A*C)**0.5) /(2%A) (Os comandosa seguirprocedem a saída dos resultados| Escreva “Raízes da equação fornecida” Escreva 'Raiz 1: !, x1 Escreva 'Raiz 2 : !, x2 Fim Algoritmo Segundo.Grau - Cálculo das raízes de uma equação de segundo grau. Exercício 3 Considere a determinação do salário líquido de um funcionário, as- sumindo que sobre seu salário bruto incide um desconto de 8.5% Algoritmos para a previdência. Feito o desconto para a previdência, sobre o res- tante é aplicado um desconto de 26,6%, a título de imposto de ren- da. O algoritmo deve mostrar o nome do funcionário, o seu salário bruto e o seu salário líquido. Fazendo uma análise desse problema, pode-se concluir que, para que seja possível a sua resolução, devemos ter como dados o nome do funcionário e o valor de seu salário bruto. Assim, tem-se: Entradas: Nome do funcionário Salário Bruto Pelo enunciado do problema, também facilmente pode-se con- cluir que a sua solução consiste em mostrar os valores do nome, salário bruto e salário líquido do funcionário. Assim, tem-se: Saídas: Nome do Funcionário "Salário Bruto Salário Líquido Pela definição do problema, observa-se que o descontopara a previdência é calculado diretamente a partir do salário bruto. Já o desconto para o imposto de renda é calculado sobre o salário bruto menos o desconto da previdência. Por fim, o salário líquido será cal- culado a partir do salário bruto menos os descontos para a previdên- cia e imposto de renda. O algoritmo fica comosegue: Algoritmo Funcionario Variáveis Nome : Literal SalBruto, SalLiq, Inss, Irf : Real Inicio Entradajdos dados necessáriospara resolução doproblema Leia Nome Leia SalBruto Cálculo dos descontos e do salário líguido Inss - SalBruto *8.5 / 100 Irf — (SalBruto - Inss) * 26.6 / 100 SalLig <«- SalBruto - Inss - IrÊ Saída dos valores solicitados - relatório Introdução à Programação - Algoritmos Escreva “Funcionário : ', Nome Escreva 'Salario Bruto ; “*, SalBruto Escreva 'Salário Líquido : ", SalLig Fim Algoritmo Funcionario - Cálculo do pagamento de umfuncionário. Exercício 4 Dados os pontos 4, de coordenadas Af(x1,y1), e B, de coordena- das B(x2,y2), escreva um algoritmo que determine a distância en- tre os dois pontos. À distância entre dois pontos representados no sistema de coordenadas cartesianas é dada por: dist= (02 -x17 + (92 - 1) Pela definição do problema conclui-se que, para a sua resolu- ção, deve-se ter como entradas as coordenadas de cada um dos pon- tos. Como saída tem-se o valor da distância entre os pontos. Assim, tem-se: Entradas: Coordenadas do ponto 4, ou seja, x1 e y1 Coordenadas do ponto B, ou seja, x2 e y? Saída: Distância entre 4 e B Veja o algoritmo DistanciaPontos a seguir: Algoritmo DistanciaPontos Variáveis Dist, X1, Y1, X2, Y2 : Real Inicio Ê / 0000000> mena ucanmenn2unnncul uno. Entrada das coordenadas do primeiro ponto - A(x1,y1) eia, / == 0000 nnnnnDn Entrada das coordenadas do segundo ponto - B(x2,y2) dam, / == e umnnnnnnnnDnn Determinação da distância e saída do resultado ==amamnanaj Algoritmos Dist e ( (X2-X1)**2 + (V2-YI)**2) **0.5 Escreva 'Distância entre os pontos : “, Dist Fim Algoritmo DistanciaPontos - Cálculo da distância entre dois pontos. 2.8 Exercícios Propostos 1. Quais os valores das expressões a seguir: 2 +43 * 6 12 /3 * 2-5 31 / 4 31 Div 4 31 Resto 4 94x (1/2) 16*%%0.5 2. Considere o seguinte trecho de algoritmo: Algoritmo Exerl variáveis Pig, Vari, Total, A, 1 : Inteiro Valora , X : Real Inicio Vari e 2 Total <— 10 Valora — 7.0 A «e -4 1 <— 80 Xe 4.0 Diga quais os valores armazenados em cada uma das variá- veis após a execução de cada um dos comandosa seguir: X e fotal / Vari o Xe sXx+1 A-A+ Pig e 10 Ae I Div Pig A << A + IT Resto 6 Valora — Pig * Valora + X 3 Considerando o conteúdo das variáveis conforme a seguir, diga qual o valor de cada uma das expressões: for 'ana 10 FALS Nome | Apelido | Quer | Ax | Fesp K Karoi (o ) Introdução à Programação - Algoritmos a) Nome = Apelido b) (Nome = Oquer) E (Nome <> 'ANa”) Cc) Nome = "Nome! d) (K>=Karol+1) Ou (Qquer=' ana”) e) Não Resp f) Não Resp) E (K < Aux) e) (Aux <= Aux / K+kK) E ((Resp) Ou (Apelido=' flor')) h) K > Karol + (K - Karol) i) ((Não Resp E Resp) Ou (Não Resp)) E (Resp Ou (Não Resp) ) 4. Considerandoa, b, c, d como variáveis, escreva os comandos para calcular o valor de x das fórmulas a seguir. Use a divisão real. b +4a ac x=2T"["5"— d-2a 3+c “bb” -4ac+2a” X= Za (b+1) 5. Faça o teste de mesa, isto é, diga qual o valor armazenado em cada variável, após a execução de cada um dos coman- dos do algoritmo a seguir: Algoritmo Exercicios Variáveis O, W, R « Inteiro Ex j: Real Inicio OQ <— 10 OQ <— 10 + 30 W <— -1 We W+Q OQ <-— Q Resto W O <— W Div (0+40) Ex <— 2*0 / WU Re 0 Re R+ d Re R+ dl Fim 40 Algoritmos . Escreva um algoritmo que determine a área e o perímetro de “um retângulo. . Dados três números reais, faça um algoritmo que: a) Determine a soma dos três números; b) Determine a raiz quadrada do produto dos três números. . Escreva um algoritmo que forneça o valor em graus Fahrenheit de uma temperatura expressa em graus Celsius. f = 2c +32 5 . Faça um algoritmo para calcular o volume de uma esfera de raio r. V = 4mrº 3 10.Uma pessoa comprou quatro artigos em uma loja. Para 11. 12. 13. cada artigo, tem-se nome, preço e percentual de descon- to. Faça um algoritmo que imprima nome, preço e preço com desconto de cada artigo. Imprima também o total a pagar. Faça um algoritmo que leia os preços de três mercadorias em 01/04 e 01/05 e tendo como base a variação dos preços dessas mercadorias, calcule a taxa de inflação ocorrida no período. Suponha que você foi ao supermercado e comprou: N quilos de café, cujo custo unitário é Q; L litros de leite, cujo custo unitário é P; B quilos de banana, cujo custo unitário é T. Faça um algoritmo que imprima: nome do produto, total gasto com cada produto e o total gasto no mercado. Uma sorveteria vendetrês tipos de picolés. Sabendo-se que o picolé tipo 1 é vendido por R$1,50, 0 do tipo 2 por R$2,00 e o do tipo 3 por R$0,75, faça um algoritmo que, para cada tipo de picolé, mostre a quantidade vendida e o total arrecadado. 42 Introdução à Programação - Algoritmos 14, 15. 16. 17. 18. 19. 20. A revendedora de carros Pica-Pau Ltda paga a seus funcio- nários vendedores dois salários-mínimos fixos, mais uma comissão fixa de R$150,00 por carro vendido e mais 5% do valor das vendas. Faça um algoritmo que determine o salá- rio total de um vendedor. Uma empresa produz três tipos de peças mecânicas: para- fusos, porcas e arruelas. Tem-se os preços unitários de cada tipo de peça e sabe-se que sobre esses preços incidem des- contos de 10% para porcas, 20% para parafusos e 30% para arruelas. Escreva um algoritmo que calcule o valor total da compra de um cliente. Deve ser mostrado o nome do cliente, o número de cada tipo de peça que comprou, o total de des- conto e o total a pagar pela compra. Considerando que, para um consórcio, sabe-se o número ma La pagas eototal de prestações, a quantidade de prestações valor atual da prestação, escreva um algoritmo que determi- ne o total pago pelo consorciado e o saldo devedor. Dado que se tem o valor de um ângulo expresso em graus, minutos e segundos (exemplo: 35º47'59º), escreva um algoritmo que forneça o valor desse ângulo em radianos. Suponha que um caixa disponha apenas de notas de 1, 10 e 100 reais. Considerando que alguém está pagando uma com- pra, escreva um algoritmo que mostre o número mínimo de notas que o caixa deve fornecer como troco. Mostre também o valor da compra, o valor do troco e a quantidade de cada tipo de nota do troco. Suponha que o sistema monetário não utilize centavos. É Escreva um algoritmo que determine o número de dias que uma pessoa'já viveu. Considere que um mês tenha 30 dias. A Empresa Pica-Pau do Brasil produz camisinhas. Sua pro- dução semanal chega a atingir 10.000 unidades, que é ex- portada para todo o planeta. Essa produção só acontece quando não há queda de energia durante a semana. À cada queda de energia, a produção cai em 5%, pois necessita-se de um determinado tempo para que as máquinas voltem a funcionar. Faça um algoritmo para estimar a produção da empresa, caso falte energia duas vezes em um mês. Algoritmos 21. Considere que, para um automóvel que realizou determi- nado percurso, tenha-se: marca, quilometragem inicial, qui- lometragem final, litros consumidos e capacidade do tan- que de combustível. Faça um algoritmo que mostre um rela- tório contendo, além desses dados, qual o consumo do auto- móvel em km/litros e qual a sua autonomia. 22. O custo ao consumidor de um carro novo é a soma do custo de 23. fábrica com a percentagem de lucro do revendedor e com o custo dos impostos (aplicados ao custo de fábrica). Supondo que a percentagem do revendedor seja de 25% e que os impos- tos custam 45% do custo de fábrica, faça um algoritmo para determinar o preço final do automóvel (custo ao consumidor). Faça um algoritmo paracalcular a quantidade de barbante necessária para amarrar um pacote. O algoritmo terá como . 4 entradas a largura, altura e comprimento do pacote, emcentí- metros. Para que o pacote fique firme, são necessárias três amar- ras. Considere que uma amarra consuma 10 cm de barbante. 24. O sistema de avaliação de determinada disciplina é composto 29. 26. por três provas. A primeira prova tem peso 2, a segunda pro- va tem peso 4e a terceira prova tem peso 6. Faça um algoritmo para calcular a média final de um aluno dessadisciplina. Faça um algoritmo que calcule a quantidade de galões de tinta necessária, bem como o seu custo, para pintar um tan- que de combustível em formato cilíndrico. A área a ser pin- tada é calculada conforme a seguir: AREAC = 2*1*Rº + 2*1*R*H onde R é o raio da base do tanque e H, a altura. Sabe-se que o galão dé 3,6 litros de tinta custa R$60,00 e que cadalitro de tinta pinta três metros quadrados em média. Para que se obte- nha uma pintura de qualidade são necessárias duas demãos. Faça um algoritmo que, para quatro valores reais, a, b, ce d, determine: a) a média aritmética; b) a média harmônica (MH); c) a média geométrica (MG); d) a média quadrática (MO). E d o ás Introdução à Programação - Algoritmos á L 1 1 1 +++— a bed MG =abcd 2 2 2 2 no=(º +b o +d MEH = 27. Faça um algoritmo que leia um valor inteiro positivo e me- nor que 1000, armazene-o numa variável do tipo Inteiro e determine a soma dos dígitos que formam o valor. Exemplo: o valor 397 tem soma dos dígitos igual a 19. Estruturas de Seleção 3.1 Comando Se Frequentemente, na construção de algoritmos, vamos nos defrontar com problemas onde é necessário selecionar uma, entre duas ou mais situações possíveis. Suponha, por exemplo, um algoritmo em que se necessite mostrar o conteúdo de uma variável do tipo Inteiro, somen- te se seu conteúdo for maior que 10. Considerando uma variável de nome Nota, poderíamos escrever: Se Nota > 10 Então Escreva Nota Fim Se Consideramos que, quando for executado o comando Se, caso o conteúdo da variável Nota seja maior que dez, então será executa- do o comando Escreva Nota. Caso o conteúdo de Nota não seja maior que dez, então não será executado o comando Escreva Nota. Suponha outro algoritmo que mostre, para dois valores intei- ros, qual o maior deles (algoritmo Maximo1). Algoritmo Maximo1 Variáveis Valor'a, Valorb : Inteiro Inicio Leia Valora, Valorb Se Valora > Valorb Então Escreva 'Maior Valor: ', Valora (1) Senão Escreva 'Maior Valor: ', Valorb 2] Fim Se Fim Algoritmo Maximo1 - Maior de dois valores. 46 Introdução à Programação - Algoritmos O algoritmo Maximo1 solicita inicialmente a entrada de dois valores, os quais são armazenados nas variáveis Valora e Valorb. Ao ser executado o comando Se, é calculado o valor da expressão lógica Valora > Valorb. Se o conteúdo da variável Valora for maior que o conteúdo da variável Valorb, ou seja, se a expressão Valora > Valorb tiver o valor verdadeiro, então será executado o comando (1) e, após, o fluxo de execução do algoritmo passará para o primeiro comando após o Fim Se. Caso o conteúdo de Valora não seja maior que Valorb, isto é, caso o valor da expressão lógica Valora > Valorb seja falso, então será executado o comando (2/ e, após, o fluxo de execução pas- sará para o primeiro comando após o Fim Se. Veja que, caso os dois valores sejam iguais, então a expressão lógica tem o valor falso e será executado o comando (2), o qual informará o maior valor como sendo o conteúdo de Valorb. Isto não corresponde à realidade. Assim, esse algoritmo só funciona se os dois valores forem diferentes. Discutire- mos esse problema novamente mais adiante.AL RNA ud Pr+ ALCA A Y AARA ERES KARLA Pelos exemplos apresentados, concluímos que o comando Se tem por função fazer com que seja selecionada uma, entre duassitu- ações possíveis, e pode ser apresentado sob as seguintes formas: a) Comando Se sem a cláusula Senão: Se expressão lógica Então Comando 1 Comando 2 o a Comando N Fim Se Nessa forma de éomando Se, os comandos Comando 1, Comando 2, -.. , Comando N serão executados somente se a expressão lógica tiver O valor verdadeiro. Assim, quando o fluxo de execução chegar no comando Se, será calculado o valor de expressão lógica e caso valha verdadeiro serão executados os comandos Comando 1, Comando 2, Comando N. Após a execução desses comandos, o fluxo segue para a execução do primeiro comando após o Fim Se. Se a expressão lógica tiver o valor faiso, então o fluxo segue diretamente para o primeiro comando após o Fim Se sem executar nenhum dos comandos coloca- dos internamente ao Se. Veja que dentro de um comando Se pode- mos colocar qualquer comando, inclusive outro comando Se. Estruturas de Seleção b) Comando Se com a cláusula Senão: Se expressão lógica Então Comando 1 Comando 2 o e Senão Comando a Comando b o 2 Fim Se Em um comando Se com a cláusula Senão, quando o fluxo de execução chegar no Se, será avaliada a expressão lógica. Caso a ex- pressão lógica tenha o valor verdadeiro, então serão executados os comandos colocados entre o Se e a cláusula Senão (Comando 1, Co- mando 2, ...) e após o fluxo de execução segue para o primeiro co- mando após o Fim Se. Se, ao avaliar a expressão lógica, esta tiver o valor falso, então serão executados os comandos colocados entre a cláusula Senão e o Fim Se (Comando a, Comando b, ...) e após o fluxo de execução segue para o primeiro comando após o Fim Se. 3.2 Ninhos de Comandos Se Dentro de um comando de seleção (comando Se), podemos colocar qualquer tipo de comando. Assim, dentro de um Se, pode-se ter outros comandos de seleção. No algoritmo Maximo1, que determina o mai- or entre dois valores, vimos que, se os dois números são iguais, O algoritmo informará como resposta que Valorb é o maior valor, o que obviamente nãoé verdade. Assim, esse algoritmo não está correto. Note que, na determinação do maior valor entre dois valores, temos três situações possíveis: Valora maior que Valorb, Valora menor que Valorb e os dois valores iguais. Com um único Se conse- guimos avaliar apenas duas situações. Para levar em conta as três situações, um outro comando de seleção faz-se necessário. A solu- ção para esse problema é apresentada pelo algoritmo Maximo2. Algoritmo Maximo2 Variáveis Valora, Valorb : Inteiro 47 48 introdução à Programação - Algoritmos Inicio Leia Valora, Valorb Se Valora > Valorb Então Escreva 'Maior Valor: ", Valora Senão Se Valora < Valorb Então Escreva 'Maior Valor: *, Valorb. Senão Escreva '0Os dois valores são iguais” Fim Se Fim Se Fim Algoritmo Maximo2 - Maior entre dois valores. Note que, nessa nova versão, caso o valor da expressão Valora > Valorb sejafalso, ofluxo de execução irá executar O que estiver dentro do Senão ão piimeiro se. »reniro o Senão GO primeiro ve, um outro Se é executado, sendo então verificado se o conteúdo de Valora é menor que o conteúdo de Valorb. Caso Valora seja menor que Valorb, o algoritmo identificará Valorb como sendo o maior valor. Veja que o comando de seleção que está colocado dentro do Senão do primeiro Se só será executado se, ao executar o primeiro Se, a expres- são Valora > Valorb for falsa. Se Valora > Valorb tiver o valor falso, então conclui-se que Valora não é o maior valor. Logo, sea expressão Valora < Valorb também for falsa, então também Valorb não poderá ser o maior valor, o que permite concluir que os dois valores são iguais. Observe que os comandos colocados entre o Se e a cláusula Senão foram deslocados em relação à coluna (linha vertical) relativa ao Se. Também os comandos colocados entre a cláusula Senão e o Fim Se foram deslocados em relação ao Senão e Fim Se. Esse processo denomina-se Identação e tem por objetivo facilitar a visualização de que sequência de comandos será executado quando o comando Se for executado. Os exemplos a seguir mostram o teste de mesa para algoritmos que apresentam comandos de seleção aninhados. Exemplo1 Conteúdo das variáveis PAN S Algoritmo Exemplol - = Variáveis - - A, S : Inteiro ? ? Estruturas de Seleção Inicio A <- 6 Se A < 3 Então S <— 3*A Senão Se A < 5 Então Ss €<— 2 *% À Senão S << 0 Fim Se Fim Se Escreva “Valor de A: Escreva “Valor de &S: Fim Exemplo 2 Algoritmo Exemplo2 Variáveis A, B, Z : Inteiro x, H : Real Inicio A e 2 B+<-— 4 XxX e 5 Se A <> B Então 24 <— B Resto A B<— B Div A He X/ A Fim Se Se 2 >= B Então Escreva A, B, X, Z4, H Fim f f f / i D D D D D O D S M S A S D O N O D O O D a 2 A S To i I h o D S D O N O E R R D E S D 3 O N A A a N t i S O O O O I T ) 2 ? ? Õ Ó Ó Ó Ó X H 2 ? ? ? 2? 2 ? ? 5.0 ? 5.0. ? 5.0 2? 5.0 ? 5.0 2.5 5.0 2.5 5.0 2.5 5.0 0.0 5.0 0.0 Considere agora a construção de um algoritmo que, dada a idade de uma pessoa, informe se esta é criança, adolescente ou adul- to. Considerar as faixas etárias conforme a seguir. Idade até 12 anos Idade maior que 12 e menor que 18 anos Idade maior ou igual a 18 anos : Criança : Adolescente : Adulta 50 Introdução à Programação - Algoritmos Fazendo uma análise desse problema, podemos concluir que, para a sua resolução, deve-se conhecer a idade da pessoa, a qual se constitui em uma entrada do problema. A solução do problema consiste em mos- trar-se uma mensagem dizendo se a pessoa é criança, adolescente ou adulta. Essa mensagem constitui-se na saída do problema. O algoritmo deve então solicitar do usuário o valor da idade da pessoa e executar os testes necessários para identificar se é criança, adolescente ou adulta. A solução é apresentada pelo algoritmo FaixaEtaria. Algoritmo FaixaEtaria Variáveis Idade : Inteiro Inicio f£O comando a seguir solicita que o usuário digite a idade | Escreva 'Entre com valor da idade : f/O comando a seguir aguarda que o usuário digite um valor. O valor digitado será armazenado na variável Idade | Leia Idade Se Idade < = 12 Então (Executará o comando a seguircaso Idade seja <= 12) Escreva “Criança” Senão (Executará o comando Se a seguir somente se Idade <= 12 tiver o valor falso/ Se Idade < 18 Então Escreva 'Adolescente” Senão Escreva “Adulto! Fim Se Fim Se (Fim, do comando Se Idade <=12] Fim E Algoritmo FaixaEtaria - Uso do comando Se. 3.3 Comando Escolha Suponha que o conceito de um aluno seja determinado em fun- ção de sua nota. Suponha também que essa nota seja um valor inteiro na faixa de O a 100. O problema está em, dada a nota, determinar o respectivo conceito. Considere, ainda, os conceitos conforme a seguir: Estruturas de Seleção Nota Conceito O a 49 Insuficiente 50 a 64 Regular 65a 84 Bom 85 a 100 Ótimo O algoritmo Conceito1, através da utilização de comandos Se aninhados, apresenta a solução do problema. Algoritmo Conceito1 Variáveis Nota : Inteiro Conceito : Literal Inicio Leia Nota Se Nota <= 49 Então “Conceito <- '“Inguficiente' Senão Se Nota <= 64 Então Conceito <— “Regular! Senão Se Nota <= 84 Então Conceito <— *Bom' Senão Conceito — “Otimo! Fim Se Fim Se Fim Se Escreva 'Conceito do aluno: *, Conceito Fim Algoritmo Conceito1 - Determinação do conceito emfunção da nota. No algoritino Conceito1, vários testes são feitos sobre o con- teúdo davariável Nota. Em vez de escrevermosos vários testes utili- zando Se aninhados, e considerando que todos os testes são realiza- dos sobre uma mesma expressão, podemos utilizar um comando al- ternativo que tem essa função. O comando Escolha pode ser usado sempre que for necessária a realização de várias seleções, tendo-se por base a mesma expressão. Usando o comando Escolha, o proble- ma da determinação do conceito de um aluno pode ser resolvido conforme apresentado no algoritmo Conceito2. Observe que, enquan- to o comando Se permite a escolha de uma alternativa entre duas possíveis, o comando Escolha possibilita a escolha de uma alternati- va entre as várias possíveis. t m Introdução à Programação - Algoritmos Algoritmo Conceito2 Variáveis Nota : Inteiro Conceito : Literal Inicio Leia Nota Escolha Nota 0..49 : Conceito <— "“Inguficiente' 50..64 : Conceito <— “Regular! 65..84 : Conceito <— "Bom Senão Conceito <— “Otimo” Fim Escolha Fim Algoritmo Conceito2 - Uso do Escolha. Estamos assumindo que, ao executar o comando Escolha no algoritmo Conceito2, será avaliada cada uma das opções de valores para Nota. Veja que a opção 65..64, por exemplo, significa valores que vão desde 65 até 84. Assim, se o valor de Nota estiver nessa faixa, essa opção será satisfeita. As opções serão sempre avaliadas na ordem em que aparecem e serão executadas as instruções relati- vas à primeira opção que satisfazer o valor de Nota. Caso nenhuma das opções satisfaça o valor da expressão do Escolha, então serão executadas as instruções colocadas no Senão. A forma geral do Escolha pode ser colocada como: Escolha Expressão Op1 : Instruções relativas a Op1 Op2 : Instruções relativas a 0Op2 Opn : Instruções relativas a Opn Senão ; Instruções Fim Escolha Expressão consiste em uma expressão cujo valor será usado para definir quais instruções serão executadas. Veja que as opções de va- lores (Op1 a Opn ) serão avaliadas na ordem em que aparecem e que, caso nenhuma das opções satisfaça o valor de Expressão, então serão executadas as instruções colocadas no Senão. Vamos assumir tam- bém que as opções apresentadas no comando Escolha devem ser va- lores do mesmo tipo de Expressão. Cada opção pode ser expressa na to Estruturas de Seleção forma de faixa, conforme aparece no algoritmo Conceito2, na forma de uma lista de um ou mais valores separados por vírgula ou, ainda, numa combinação de ambas as formas. Outro exemplo de uso do comando Escolha aparece no algoritmo Operacoes, que toma como entrada qual a operação a ser feita, bem como os dois operandos e efetua a operação solicitada. Algoritmo Operacoes Variáveis Op1 , Op2, Resultado : Real Óperacao : Caractere Opvalida : Lógico Inicio Escreva 'Entre com o primeiro operando: Leia Opl Escreva 'Entre com o segundo operando: Leia 0Op2 Opvalida <- verdadeiro [Os comandos Escreva a seguir colocam na tela informações ao usuário/ Escreva 'Escolha uma das seguintes opções: Escreva '+ (para somar os dois operandos)” Escreva '- (para subtrair o segundo operando do primeiro)” Escreva '* (para multiplicar os dois operandos)! Escreva '/ (para dividir o primeiro operandopelo segundo) ' Leia Operacao Escolha Operacao 1 “+' : Resultado < Op1l + Op2. “-* : Resultado <- Op1l - 0Op2 **" : Resultado <- Op1l * Op2 '/' : Resultado <— Op1l / Op2 Senão / Escreva 'Operação inválida...! opvalida < falso Fim Escolha Se Opvalida Então Escreva 'O resultado da operaçãosolicitadafoi: *, Resultado Fim Se Fim Algoritmo Operacoes - Exemplo de uso do comando Escolha. A seguir é apresentado mais um exemplo de algoritmo onde aparece um comando Escolha. O algoritmo AnalisaCaractere analisa o caractere fornecido pelo usuário e informa qual o tipo desse caractere. u m Ca d Introdução à Programação- Algoritmos Algoritmo AnalisaCaractere Variáveis Car : Caractere Inicio Escreva 'Digite um caractere qualquer' Leia Car Escolha Car ALA! : Escreva "Você digitou uma letra maiúscula” 'al da! : Escreva 'Você digitou uma letra minúscula” “OM. Ng! : Escreva *Você digitou um dígito” pd, NR, 2 Escreva “Você digitou sinal de pontuação!/ f 2 f f Senão Escreva 'Caractere não classificado... Fim Escolha Fim Algoritmo AnalisaCaractere - Outro exemplo de uso do comando Escolha. Resolvidos 3.4 Exercícios Exercício 1 Considere que se queira escrever um algoritmo que, para um núme- ro inteiro positivo N, determine se esse número é par ou não. Um número inteiro positivo é par se o mesmo for divisível exatamente por 2. Assim, o problema pode ser resolvido tomando-se o resto da divisão inteira do número N por 2 e verificando se esse resto é Zero ou não. Veja o algoritmo Par a seguir: Algoritmo Par. Variáveis Í N : InteiroInicio É Leia N Se N Resto 2 = O Então Escreva JN, ' é um número par' Senão | Escreva N, ' não é um número par' Fim Se Fim Algorimo Par - Informa se um inteiro é par ou não. Estruturas de Seleção Exercício 2 Considere agora que se queira escrever um algoritmo quecalcule o valor do imposto de renda de um contribuinte. Considere que o va- lor do imposto é calculado de acordo com a tabela a seguir. Renda Anual Alíquota Dedução Até R$10000,00 0% - > R$10000 e <= R$25000 10% 1000 Acima de R$25000 25% 4750 De acordo com o problema, para que seja possível a sua resolu- ção, é necessário ter-se como entrada o valor da renda anual do con- tribuinte. Sobre o valor da renda anual, deve-se aplicar um processo de seleção de forma a determinar que alíquota deve ser aplicada. Com a determinação da alíquota (percentual), o valor do imposto deve ser calculado aplicando-se a alíquota à renda anual e subtraíndo-se o va- lor da dedução. Veja o algoritmo ImpostoRenda a seguir. Algoritmo ImpostoRenda Variáveis RendaAnual, Imposto : Real Inicio Leia RendaAnual (Determinação da alíquota e cálculo do imposto!) Se RendaAnual <= 10000.0 Então Imposto €-— 0.0 Senão (aqui a renda anual é > que 10000.0 e deve-se portânto aplicar outra seleção para determinar se deve-se aplicar 10% ou 25%; se RendaAnual <= 25000.0 Então imposto < RendaAnual * 0.1 - 1000.0 Senão Imposto <— RendaAnual * 0.25 - 4750.0 Fim Se Fim Se Escreva “Valor do imposto:”, Imposto Fim Algoritmo ImpostoRenda - Determina o imposto de renda de um contribuinte em função de sua renda anual, 55 56 Introdução à Programação - Algoritmos Exercício 3 sejam 4, B e C números inteiros, todos diferentes. Entre esses números se deseja determinar qual o maior valor. A resolução desse problema pode ser obtida aplicando-se o seguinte algoritmo: Se A for maior que B e também for maior que C, então 4 é o maior valor. Caso A não seja o maior valor, então o maior valor está entre Be C. Veja o algoritmo Maximo a seguir: Algoritmo Maximo Variáveis A, B, € : Inteiro Inicio Leia A, B, € Se (A > B) E (A > C) Então Escreva “Maior valor: “, A Senão Se B > C Então Escreva 'Maior valor: ", B Senão Escreva 'Maior valor: *, € Fim Se Fim Se Fim Algoritmo Maximo - Determina o maior valor entre três inteiros. Esse problema também pode ser resolvido usando-se uma va- riável para armazenar o maior valor (variável Max, por exemplo). Pode-se assumir, inicialmente, que À é o maior valor, ou seja, faz-se Max receber o valor de A. Após, compara-se Max com B. Caso B seja maior que Max, então Max deve receber o valor de B. O mesmo pro- cesso deve ser feito com C. Veja o algoritmo Maximo? a seguir: Algoritmo Maximo? Variáveis o A, B, C, Max Inteiro Inicio Leia A, B; C Max <— A [assume inicialmente que A é o maior) Se B > Max Então Max «— B Fim Se Se €C > Max Então Max €<— C Fim Se Escreva 'Maior valor : *, Max Fim Algoritmo Maximo2 - Determina o maior valor entre três inteiros. Estruturas de Seleção 3.5 Exercícios Propostos 1. Escreva o comando de seleção para cada uma das situações a seguir: a) Se X for maior que Y ou se Z for menor ou igual a 30, multiplique X por 2. Caso contrário, divida X por 2 e divida Z por 5; b) Se o desconto for menor que 25% e o preço do produ- to for maior que R$25000,00, então mostre o nome do produto. 2. Escreva um algoritmo que, para um determinado valor, in- formese este é positivo, negativo ou zero. 3. Uma empresa de vendas oferece para seus clientes um des- conto, que é função do valor da compra do cliente. Esse des- ; o conto é de 20% se o valor da compra for maior ou iguala R$ 5000,00 e 15% se for menor. Faça um algoritmo para impri- mir o valor da compra e o desconto obtido por um determi- nado cliente. 4. Um vendedor tem seu salário calculado em função do valor total de suas vendas. Esse cálculo é feito de acordo com o seguinte critério: se o valor total de suas vendas for maior que R$20000,00, o vendedor receberá como salário 10% do valor das vendas. Caso contrário, receberá apenas 7,5% do valor das vendas. Escrever um algoritmo que determine o valor ganho pelo vendedor. 5. Uma empresa de vendas tem três corretores. A empresa paga ao corretor uma comissão calculada de acordo como o valor de suas vendas. Se o valor total da venda de um corretor for maior que R$50000,00, a comissão será de 12% do valor ven- dido. Seo valor da venda do corretor estiver entre R$30000,00 e R$50000,00 (incluindo extremos), a comissão será de 9,5%. Em qualquer outro caso a comissão será de 7%. Escreva um algoritmo que gere um relatório contendo nome, valor da venda e comissão de cada um dos corretores. O relatório deve mostrar também o total de vendas da empresa. 6. Considere que o último concurso vestibular apresentou três provas: Português, Matemática e Conhecimentos Gerais. Considerando que para um candidato tem-se um registro contendo o seu nome e as notas obtidas em cada umadas provas, construir um algoritmo que forneça: 57 Introdução à Programação - Algoritmos a) O nome e as notas em cada prova do candidato; b) A média do candidato; c) Uma informação dizendo se o candidato foi aprovado ou não. Considere que o candidato é aprovado se sua média for maior que 5.0 e se não apresentou nenhuma nota abaixo de 4.0. 7. Construa um algoritmo que, para três valores reais, impri- ma o maior e o menor deles. 8. Construa um algoritmo que, considerando que se tenha o nome e a quantidade em estoque de quatro produtos, mostre quais produtos estão abaixo do estoque mínimo (30 unidades). 9. Considerando as faixas especificadas a seguir, escreva um algoritmo que, para um determinado valor inteiro, imprima qual a faixa que o mesmo pertence. Faixa 4 Valores abaixo de 100 Faixa B Valores de 100 a 150 (inclusive extremos) Faixa C Valores de 151 a 300 (inclusive extremos) Faixa X Quaisquer outros valores 10. Um hotel cobra R$80,00 a diária e mais uma taxa de servi- ços. À taxa de serviços é de: R$5,50 por diária, se o número de diárias for maior que 15; R$6,00 por diária, se o número de diárias for igual a 15; R$8,00 por diária, se o número de diárias for menor que 15. Construa um algoritmo que mostre o nome e a conta de um cliente. RE 11. Escreva um algoritmo que, para uma conta bancária, leia o e seu número,O saldo, o tipo de operação a ser realizada (de- Po pósito ou retirada) e o valor da operação. Após, determine e mostre o novo saldo. Se o novo saldo ficar negativo, deve ser mostrada também a mensagem Conta estourada. | 1 | 12. Faça um algoritmo queleia três valores e verifique se estes podem representar os lados de um triângulo. Em caso afir- mativo, especificar o tipo do triângulo. Para que os valores representem os lados de um triângulo, é necessário que qual- quer um dos lados seja menor que a soma dos outros dois lados. Um triângulo pode ser classificado como equilátero, isósceles ou escaleno. Estruturas de Seleção 13. Faça um algoritmo que, tendo como dados de entrada a al- tura (h) e o sexo de uma pessoa, calcule seu peso ideal utili- zando as seguintes fórmulas: Homens: Peso ideal =72.7*h-58 Mulheres: Peso ideal=62.1*h-44,7 14. Faça um algoritmo que, dada a idade de um nadador, clas- sifique-o em uma das seguintes categorias: Infantil A 5 - 7 anos; Infantil B 8 - 10 anos; Juvenil A 11 - 13 anos; Juvenil B 14 - 17 anos; Adulto 18 - 60 anos; Senior Acima de 60 anos. 15. Faça um algoritmo que tome como entrada dois valores in- teiros e mostre uma mensagem dizendo se esses números são ou não múltiplos um do outro. 16. Construir um algoritmo que tome como entrada três valores e os imprima em ordem crescente. 17. Faça um algoritmo que leia os três comprimentos de lados de um possível triângulo, q, be c, e os ordene em ordem de- crescente, de modo que a represente o maior dos lados. A seguir, determine e mostre o tipo de triângulo que esses três lados formam, com base nas seguintes definições: valores não formam triângulo algum;lSea > b+c Se a? = bc Se a? > b2+c? - valores formam um triângulo obtusângulo; valores formam um triângulo retângulo; Se a? gb?+c? - valores formam um triângulo acutângulo; Se a=b=c - valores formam um triângulo equilátero. Se o triângulo não for equilátero e apresentar dois lados iguais, então é isósceles. 59 R c e Estruturas de Repetição 4.1 Introdução Existem situações em que, para se obter a solução do problema, é necessário fazer com que um grupo de instruções seja executado várias vezes. Este capítulo tem por objetivo apresentar e discutir estruturas (comandos) que possibilitem a execução de uma sequên- cia de instruções várias vezes, com o programador escrevendo essacom prog or escrevendo sequência apenas uma vez. Suponha, por exemplo, que um determinado clube social te- nha registrado a quantidade de latas de cerveja vendidas no último carnaval. Considerando que cada lata foi vendida a R$2,00, deseja- se saber o total arrecadado no último carnaval com a venda das latas de cerveja. Obviamente que, para esse problema, tem-se como entrada a quantidade de latas vendidas e deseja-se saber, como so- lução do problema (saída), qual o total arrecadado. Veja, a seguir, o respectivo algoritmo (algoritmo ClubeSocial1). Algoritmo ClubeSocial1 Variáveis QtidadeVendida |: Inteiro ValorArrecadado : Real Inicio Leia QtidadeVendida ValorArrecadado < QtidadeVendida*2.0 Escreva ValorArrecadado Fim Algoritmo ClubeSocial1 - Calcula total arrecadado com venda de latas de cerveja. Veja que o problema apresentado, consiste em determinar-se o total arrecadado com a venda de latas de cerveja no último carna- val. Se desejarmos determinar o total arrecadado, em cada um dos últimos três carnavais, o algoritmo poderia ser escrito conforme a seguir (algoritmo ClubeSocial2): Introdução à Programação - Algoritmos Algoritmo ClubeSocial2 Variáveis QtidadeVendida |: Inteiro ValorArrecadado : Real Inicio Determinação do total arrecadado do último ano Leia QtidadeVendida ValorArrecadado <- Qtidade|Vendida*2. 0 Escreva ValorArrecadado Determinação do total arrecadado do penúltimo ano Leia QOtidadeVendida ValorArrecadado <- QOtidadeVendida*2.00 Escreva ValorArrecadado Determinação do total arrecadado do antepenúltimo ano DDD nnD0n00000 000000000 =0ncD20200000 000000000 00—1 Í Leia QtidadeVendida ValorArrecadado < OQtidadeVendida*2.00 Escreva ValorArrecadado Fim Algoritmo ClubeSocial2 - Venda dos três últimos anos. Observe no algoritmo ClubeSocial2 que a solução do proble- ma é a mesma para cada ano. Assim, as instruções para cada um dos anos podem ser as mesmas. Observe também que, se quisésse- mos determinar o total arrecadado em cada um dos últimos trinta anos, usando a mesma metodologia, teríamos que escrever trinta vezes o mesmo Srupo,de instruções, o que obviamente se tornaria impraticável. Considerando que, para cada um dos casos, as instruções a serem executadas são as mesmas, é muito mais adequado que se escreva o grupo de instruções apenas uma vez e que se instrua O computador para que repita a execução das instruções um determi- nado número de vezes. =) gre Uma das formas de fazermos com que um grupo de instruções seja executado várias vezes é utilizando o comando Enquanto-Faça. Para E E A EN TE R E E I N r t a a o pr t q u ee rt na pp ro s ga it a a q p r a s e r c m Estruturas de Repetição analisar sua forma e funcionamento, vamos considerar o seguinte problema: “Escrever um algoritmo que, a partir do saldo bancário da conta de um cliente, imprima a mensagem Conta Estourada se o saldo for negativo, e a mensagem Conta Normal, se o saldo não for negativo”. Pela definição do problema, podemos considerar que se tem como entradas o número da conta e o valor do saldo bancário do cliente e, como saída, uma mensagem dizendo se a conta tem ou não saldo negativo. O algoritmo para o problema pode ser escrito como segue (algoritmo Banco1): Algoritmo Banco1 Variáveis Saldo : Real Numeroconta : Inteiro Inicio Leia Numeroconta, Saldo Se Saldo < O Então Escreva Numeroconta, 'Conta Estourada” Senão Escreva Numeroconta, 'Conta Normal! Fim Se Fim Algoritmo Banco1 - Verificação do saldo de um cliente. Veja que o algoritmo Banco1 resolve o problema conside- rando a existência de uma única conta. Se quisermos considerar a existência de várias contas, o que é a situação mais comum, e para a qual faz muitoímais sentido a utilização de uma máquina para a sua resolução, teremos que fazer com que as instruções que resol- vem o problema para a conta de um cliente sejam repetidas várias vezes. Para isso, faz-se necessário um comando que, ao ser execu- tado faça que determinado grupo de instruções seja repetido vári- as vezes. Conforme já colocado, o comando Engquanto-Faça tem essa função e sua forma geral pode ser escrita como segue. Enquanto expressão lógica Faça Conjunto de instruções Fim Enquanto 63 Introdução àProgramação -Algoritmos Assimcomo a estrutura de seleção Se tem por base uma ex- pressão lógica, também a estrutura de repetição Enquanto-Faça apre- senta uma expressão lógica. O Enquanto-Faça faz com que o grupo de instruções colocado em seuinterior seja repetido enquanto o va- lor da expressão lógica for verdadeiro. Sempre que o fluxo de execu- ção chegar no Enquanto, será calculado o valor da expressão lógica. Se esta apresentar o valor verdadeiro, então o fluxo de execução pas- sará para a execução das instruções internas ao Enquanto, na ordem em que aparecem. Ao encontrar o Fim Enquanto, o fluxo de execu- ção retornará ao Enquanto e será novamente avaliada a expressão lógica. Se esta tiver o valor verdadeiro, as instruções internas ao En- quanto serão novamente executadas. Se, quando o fluxo de execu- ção chegar ao Enquanto, a expressão lógica apresentar o valor falso, então o fluxo será transferido para a execução da primeira instru- ção após o Fim Enquanto. Com isso, poodemos concluir que em algum momento do pro- cesso de repetição das instruções internas ao Enquanto será necessá- rio que a expressão lógica assuma o valor falso, pois, do contrário, o Fluxo |jamais sairá do Enquanto e o conjunto de instruções será repe- tido infinitas vezes. Voltando ao nosso problema de análise do saldo bancário, se quisermos um algoritmo que faça a análise para dez contas, podemos escrever a solução conforme a apresentada pelo algoritmo Banco2. Algoritmo Banco2 Variáveis Saldo : Real Numeroconta, Contador : Inteiro Inicio Contador — É Enquanto Contador < 10 Faça Contador< Contador + 1 Leia Numeroconta, saldo se Saldo < O Então Escreva Numeroconta, “Conta Estourada' Senão Escreva Numeroconta, “Conta Normal“ Fim Se Fim Enquanto Fim Aleoritmo Banco2 - Análise das contas de dez clientes. Estruturas deRepetição Observe que, no algoritmo Banco2, utilizamos a variável Con- tador, que inicialmente recebe o valor zero. Na primeira vez que O fluxo de execução chega ao Enquanto, a expressão lógica, Contador < 10 tem o valor verdadeiro. Assim, são executados todos os comandos internos ao Enquanto. Observe também que, no grupo de comandos internos ao Enquanto, colocamos o comando Contador <—- Contador + 1 o qual fará com que o conteúdo da variável Contador seja incrementado de uma unidade toda vez que for executado. Assim, a cada vez que for executado o grupo de instruções que estiver den- tro do Enquanto, Contador aumentará de uma unidade, até que che- gue ao valor 10, quando então, ao retornar ao início do Enquanto, será verificado que a expressão lógica vale falso. Conforme seu fun- cionamento, se o valor da expressão lógica for falso, o fluxo de exe- cução sairá automaticamente do Enquanto e passará para a execu- ção da próxima instrução após o Fim Enquanto. No algoritmo Banco2, todos os comandos colocados interna- mente ao comando Enquanto foram deslocados em relação a coluna do Enquanto - Fim Enquanto. Conforme já vimos, esse processo deno- mina-se identação e tem por objetivo facilitar
Compartilhar