Você está na página 1de 30

APOSTILA DE LTP Conceitos Iniciais de Lgica e Tcnicas de Programao - PORTUGOL Prof. Marcelo Cunha de Oliveira Aluno: N.

Data: 01/02/2012 Turmas: 1AI/ 1AM

1. Introduo Com a finalidade de reduzir a interveno humana na utilizao do computador, aumenta-se cada vez mais o ritmo de automao das suas operaes. Porm, para que o computador possa ajudar a resolver nossos problemas de uma forma eficiente, devemos aprender a program-lo. O objetivo principal da Lgica de Programao demonstrar tcnicas para resoluo de problemas e consequentemente automatizao de tarefas. O aprendizado da Lgica essencial para formao de um bom programador, servindo como base para o aprendizado de todas as linguagens de programao, estruturadas ou no. De um modo geral esses conhecimentos sero de supra importncia, pois ajudaro no cotidiano, desenvolvendo um raciocnio lgico rpido e eficiente. 1.1 Abordagem contextual Lgica a forma de ordenar o pensamento. Isto faz com que insistamos em questionar vrias formas de pensar. A partir desse princpio podemos montar etapas que sero executadas para solucionar problemas. Os computadores utilizam um mtodo especfico para comunicao, segundo este mtodo, no h meio termo, existe apenas o verdadeiro e o falso. Como esta forma de comunicao to precisa e lgica, o ser humano tem necessidade de aprender a organizar seu pensamento de forma que o computador possa "compreend-lo". O meio encontrado para possibilitar essa comunicao foi o Algoritmo. Usar a lgica um fator a ser considerado por todos, principalmente pelos profissionais da rea de tecnologia de informao (programadores, analista de sistemas e de suporte), pois seu dia-a-dia dentro das organizaes solucionar problemas e atingir objetivos apresentados por seus usurios com eficincia e eficcia, utilizando recursos computacionais. Para concluir todas estas definies, podemos dizer que lgica a cincia que estuda as leis e critrios de validade que regem o pensamento e a demonstrao, ou seja, cincia dos princpios formais do raciocnio. 2. Definio de Algoritmo A palavra algoritmo, primeira vista, parece-nos estranha. Embora possua designao desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho por exemplo um algoritmo. Outros algoritmos freqentemente encontrados so: Instrues para se utilizar um aparelho eletrodomstico; Uma receita para preparo de algum prato; Instrues para instalao de um vdeo game; 1

A regra para determinao de mximos e mnimos de funes por derivadas sucessivas; A maneira como as contas de gua, luz e telefone so calculadas mensalmente, etc;

So vrios os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui: Um conjunto finito de regras que prov uma seqncia de operaes para resolver um tipo de problema especfico [KNUTH] Seqncia ordenada, e no ambgua, de passos que levam soluo de um dado problema [TREMBLAY] Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, as regras formais para a obteno do resultado ou da soluo do problema [AURLIO] a descrio, de forma lgica, dos passos a serem executados no cumprimento de determinada tarefa a forma pela qual descrevemos solues de problemas do nosso mundo, a fim de serem implementadas utilizando os recursos do mundo computacional. Como este possu severas limitaes em relao ao nosso mundo, exige que sejam impostas algumas regras bsicas na forma de solucionar os problemas para que possamos utilizar os recursos de hardware e software disponveis Seqncia de procedimentos que so executados seqencialmente com o objetivo de resolver um problema especificado (conhecido). 2.1 Formas de Representao Algoritmos podem ser representados, dentre outras maneiras, por: 2.1.1. Descrio Narrativa Faz-se uso do portugus para descrever algoritmos. EXEMPLO: Receita de Bolo: Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Despeje a mistura na frma de bolo Leve a frma ao forno Espere 20 minutos Retire a frma do forno Deixe esfriar Prove

VANTAGENS: O portugus bastante conhecido por ns. DESVANTAGENS: Impreciso; Pouca confiabilidade (a impreciso acarreta a desconfiana); Extenso (normalmente, escreve-se muito para dizer pouca coisa). 2.1.2. Fluxograma Utilizao de smbolos grficos para representar algoritmos. No fluxograma existem smbolos padronizados para incio, entrada de dados, clculos, sada de dados, fim, etc.

VANTAGENS: Uma das ferramentas mais conhecidas; Figuras dizem muito mais que palavras; Padro mundial. DESVANTAGENS: Faz com que a soluo do problema j esteja amarrada a dispositivos fsicos; Pouca ateno aos dados, no oferecendo recursos para descrev-los ou representlos; Complica-se medida que o algoritmo cresce. 2.1.3. Linguagem Algortmica Consiste na definio de uma pseudolinguagem de programao, cujos comandos so em portugus, para representar algoritmos. EXEMPLO: Algoritmo calculaDobro Algoritmo calculaDobro Inicio Leia(num); Dobro 2 * num Escreva(dobro) Fim VANTAGENS: Independncia fsica da soluo (soluo lgica apenas); Usa o portugus como base; Podem-se definir quais e como os dados vo estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de programao qualquer. DESVANTAGENS: Exige a definio de uma linguagem no real para trabalho; No padronizado. Exerccios Propostos 1. H trs suspeitos de um crime: o cozinheiro, a governanta e o mordomo. Sabe-se que o crime foi efetivamente cometido por um ou por mais de um deles, j que podem ter agido individualmente ou no. Sabe-se, ainda que: A) se o cozinheiro inocente, ento a governanta culpada; B) ou o mordomo culpado ou a governanta culpada, mas no os dois; C) o mordomo no inocente. Logo: (a) a governanta e o mordomo so os culpados (b) o cozinheiro e o mordomo so os culpados (c) somente a governanta culpada (d) somente o cozinheiro inocente (e) somente o mordomo culpado. 4

2. Qual o nmero que completa a seqncia: 1, 1, 2, 3, 5, .. (a) 5 (b) 6 (c) 7 (d) 8 (e) 9 Use a descrio abaixo para resolver os exerccios 3 e 4. Chapeuzinho Vermelho ao entrar na floresta, perdeu a noo dos dias da semana. A Raposa e o Lobo Mau eram duas estranhas criaturas que freqentavam a floresta. A Raposa mentia s segundas, teras e quartas-feiras, e falava a verdade nos outros dias da semana. O Lobo Mau mentia s quintas, sextas e sbados, mas falava a verdade nos outros dias da semana.

3. Um dia Chapeuzinho Vermelho encontrou a Raposa e o Lobo Mau descansando sombra de uma rvore. Eles disseram: Raposa: Ontem foi um dos meus dias de mentir Lobo Mau: Ontem foi um dos meus dias de mentir A partir dessas afirmaes, Chapeuzinho Vermelho descobriu qual era o dia da semana. Qual era? 4. Em qual dia da semana possvel a Raposa fazer as seguintes afirmaes? Eu menti ontem. Eu mentirei amanh. 5. Faa um algoritmo para Ir de casa para o escola de nibus. 6. Faa um algoritmo para somar dois nmeros e multiplicar o resultado pelo primeiro nmero. 7. Descreva com detalhes a seqncia lgica para preparar um macarro instantneo

2.2 Um Ambiente para Escrever Algoritmos Descreveremos uma mquina hipottica para a qual escreveremos nossos algoritmos. O nosso computador hipottico apresentar a seguinte organizao:

Cada uma das partes constituintes da figura acima tem os seguintes significados: 1 - Dispositivo de entrada (o teclado): o meio pelo qual os dados que sero trabalhados pelo algoritmo vo ser introduzidos em nosso computador hipottico; 2 - Unidade Lgica e Aritmtica (ULA): Parte responsvel pelas operaes matemticas e avaliaes lgicas; 3 - Unidade de Controle: Exerce controle sobre as demais partes do nosso computador. uma verdadeira gerente que distribui tarefas s outras unidades; 4 - Memria: Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operaes ficam guardados na memria; 5 - Dispositivo de Sada (vdeo e impressora): o meio que se dispe para apresentao dos resultados obtidos.

2.2.1. Funcionamento do Nosso Computador Todos os computadores, independentemente dos seus tamanhos, so conceitualmente semelhantes ao esquema da figura anterior (h algumas diferenas, mas no trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operaes bsicas que qualquer computador pode executar: a) operaes de entrada e sada: ler dados do teclado e escrever dados na tela so exemplos destas operaes. Elas servem para introduzir dados na memria do nosso computador e exibir dados que j estejam l armazenados; b) operaes aritmticas: so utilizadas na realizao de operaes matemticas (adio, subtrao, multiplicao e diviso); c) operaes lgicas e relacionais: tm aplicabilidade em comparaes, testes de condies lgicas (2 > 6 ? X = Y ?); d) movimentao de dados entre os vrios componentes: as operaes aritmticas so executadas na Unidade Lgica e Aritmtica, necessitando da transferncia dos dados para essa unidade e da volta do resultado final para ser guardado na memria. Exemplo de algoritmo: "Como fazer um bolo" Pegar Farinha 1 xcara Pegar Ovos dzia Pegar Leite 100 ml ENTRADA Pegar Manteiga 100 g Pegar Fermento 1 colher pequena Pegar Forma de Bolo Pegar Batedeira _______________________________________________________________________ Misturar a farinha ao leite Bater os ovos na batedeira at ficar em neve Misturar os demais ingredientes PROCESSAMENTO Colocar manteiga na forma Colocar a massa do bolo na forma Pr-aquecer o formo a 180 por 15 min Colocar no forno durante 20 minutos _______________________________________________________________________ Guardar todo o material Retirar o bolo do forno Esfriar e comer

SADA

2.3 Algoritmo x Programa Um algoritmo uma seqncia lgica de aes a serem executadas para se executar uma determinada tarefa. Um programa a formalizao de um algoritmo em uma determinada linguagem de programao, segundo suas regras de sintaxe e semntica, de forma a permitir que o computador possa entender a seqncia de aes. 2.4 Pseudocdigo Os algoritmos so descritos em uma linguagem chamada pseudocdigo. O pseudocdigo uma notao algortmica muito prxima da linguagem natural. Este nome uma aluso posterior implementao em uma linguagem de programao. Por isso os algoritmos so independentes das linguagens de programao. O algoritmo deve ser fcil de interpretar e fcil de codificar. Ou seja, ele deve ser o intermedirio entre a linguagem falada e a linguagem de programao. Diante disso, podemos pensar em usar diariamente o portugus para expressar nossos algoritmos. No entanto, esta uma compreenso incompleta do problema. O uso de uma tcnica formal para notao de algoritmos proporciona diversas vantagens como: A facilidade na argumentao de uma maneira razovel e concisa para a transmisso de nossas idias; A impossibilidade da existncia de ambigidade na avaliao de nossos algoritmos. O Portugol uma pseudolinguagem de programao. A idia permitir que com um conjunto bsico de aes seja possvel pensarmos no problema a ser resolvido e no na mquina que ir resolv-lo, por outro lado, o mesmo no deve ficar muito distante desta mquina, ou seja, uma soluo facilmente implementada no computador. 2.5 Fases de um Algoritmo Quando temos um problema e vamos utilizar um computador para resolv-lo inevitavelmente temos que passar pelas seguintes etapas: Definir o problema; Realizar um estudo da situao atual e verificar quais a(s) forma(s) de resolver o problema; Terminada a fase de estudo, utilizar uma linguagem de programao para escrever o programa que dever a princpio, resolver o problema; Analisar junto aos usurios se o problema foi resolvido. Se a soluo no foi encontrada, dever ser retornado para a fase de estudo para descobrir onde est a falha. Estas so de forma bem geral, as etapas que um analista passa, desde a apresentao do problema at a sua efetiva soluo.

3. Tipos de dados Na implementao de algoritmos, necessrio que no momento em que formos trabalhar com variveis, indiquemos o tipo de informao que uma varivel pode conter. Esses tipos so: inteiro, real, caracter, literal e lgico. 3.1 Inteiro As variveis do tipo inteiro so para armazenamento de nmeros inteiros positivos ou negativos. Serve tanto para variveis como para constantes. 3.2 Real As variveis do tipo reais so para o armazenamento de nmeros que possuam casas decimais. Serve tanto para variveis como para constantes. 3.3 Caracter Especficas para armazenamento de apenas um caracter. Ex: sexo, caso seja M ou F. 3.4 Literal Especficas para dados que contenham letras e/ou nmeros. Pode em determinados momentos conter somente dados numricos ou somente literais. 3.5 Lgico Este tipo de estrutura de dados permite representar dois (e s dois) estados: verdadeiro ou falso. Este tipo pode ser representado atravs dos dois estados existentes na codificao binrio: 1 verdadeiro; 0 falso. Este tipo de dados usualmente aplicado em situaes reais que unicamente denotam dois estados possveis. 4. Variveis e Constantes Variveis e constantes so os elementos bsicos que um algoritmo manipula. Variveis devem receber nomes para poderem ser referenciadas e modificadas quando necessrio. Um algoritmo deve conter declaraes que especificam de que tipo so as variveis que ele utilizar e s vezes um valor inicial. Tipos podem ser, por exemplo, inteiros, reais, caracteres, etc. As expresses combinam variveis e constantes para calcular novos valores. 4.1 Identificadores Representam os nomes escolhidos para rotular as variveis, procedimentos e funes, normalmente, obedecem as seguintes regras: Iniciar sempre por uma letra (a - z, A - Z) ou um underscore ( _ ); O restante do identificador deve conter apenas letras, underscores ou dgitos (0 - 9). No pode conter outros caracteres; Pode ter qualquer tamanho; Cada identificador deve ter um nome nico (no permitido o caractere espao no nome da varivel); Os nomes escolhidos devem explicitar seu contedo; Um identificador no pode ter o nome igual a uma palavra reservada.

Exemplos de identificadores vlidos: PAGAMENTO Soma_Total MaiorValor Media1 _Media Exemplos de identificadores invlidos: %Quantidade - O smbolo % no permitido 4Vendedor - No pode comear com um nmero Soma Total - No pode ter espaos entre as letras 4.2 Constante Uma constante como seu prprio nome diz, mantm sempre o mesmo valor, no podendo ser alterado, diferente da varivel que pode receber outros valores. Ou seja, so valores que indiscutivelmente podem ser alterados no decorrer do programa. O maior benefcio na utilizao de constantes o aumento da legibilidade do cdigo. Ex.: pi, estaes do ano constantes numricas; Domingo constante literal; 2 + 2 = 4 constante lgica verdadeiro. 4.2.1 Declaraes Constante nome_da_constante valor atribuda a constante Ex.: Constante Idade 65 Quando uma constante declarada, no necessrio definir o tipo da constante, pois o que define o tipo da constante a sua atribuio. Se for atribudo a uma constante o valor 'teste' o tipo da constante ser literal e assim sucessivamente. 4.3 Varivel Como o prprio nome sugere, as variveis so representaes de valores que podem variar, ou seja, so estruturas lgicas que armazenam valores que podem ser modificados a qualquer momento pelo algoritmo. So responsveis por armazenar valores que ajudam na resoluo do problema. Para cada tipo de dado, h um tipo de varivel que possa armazen-lo. Pode-se imaginar as variveis como um local onde so guardadas informaes. Similar a um armrio de uma academia onde cada atleta possui um local especfico para guardar seus volumes, da mesma maneira uma varivel, como um armrio, um local especfico para armazenamento de dados. Cada tipo de varivel guarda suas informaes e quando faz-se necessrio as informaes, pode-se solicit-las. Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante. Ex.: Idade varivel inteira; Nome varivel literal; Estado_civil varivel lgica. 10

4.3.1 Declaraes Antes de se utilizar uma varivel em algum cdigo temos que declar-la, ou seja, dizer ao programa reservar um espao em memria para aquela informao, este processo de declarao e feito em um trecho bem definido do cdigo. Sintaxe: Declare nome_da_varialvel tipo_da_variavel Ex.: Declare idade, contador inteiro sexo caracter nome, endereco literal As variveis s podem armazenar valores de um mesmo tipo. 5. Operadores e Expresses 5.1 Operadores So meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Eles esto divididos em alguns grupos bsicos: Operadores Aritmticos; Operadores Lgicos; Operadores Relacionais; Operador de Atribuio.

5.1.1 Operadores Aritmticos Denominamos expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico (inteiro ou real), ou seja, so operadores utilizados para efetuar operaes matemticas entre dois valores que tm como resultado final um valor do tipo numrico, em outras palavras so smbolos que executam operaes matemticas. Alm da adio, subtrao, multiplicao e diviso, podem utilizar tambm o operador para exponenciao. Os smbolos para os operadores aritmticos so:

5.1.1.1 Prioridades das Operaes Aritmticas 1 ( ) Parnteses 2 Exponenciao Ex.: 3 Multiplicao, diviso (o que aparecer primeiro) 4 + ou (o que aparecer primeiro)

1 + 7 * 2 ** 2 1 = 28 ou ento 3 * (1 2) + 4 * 2 = 5 11

5.1.2 Operadores Relacionais Os operadores relacionais so utilizados para comparar valores literais, caracteres e nmeros. Os valores a serem comparados podem ser caracteres ou variveis. Estes operadores sempre retornam valores lgicos (verdadeiro ou falso). Para estabelecer prioridades no que diz respeito a qual operao executar primeiro, utilize os parnteses. Os operadores relacionais so: Descrio Smbolo Igual a = Diferente de <> Maior que > Menor que < Maior igual a >= Menor igual a <= Ex.: Tendo duas variveis A = 5 e B = 3, os resultados das expresses seriam: Descrio A=B A <> B A>B A<B A >= B A <= B 5.1.3 Operadores Lgicos Os operadores lgicos servem para combinar resultados de expresses, retornando se o resultado final verdadeiro ou falso. Os operadores lgicos so: Smbolo FALSO VERDADEIRO VERDADEIRO FALSO VERDADEIRO FALSO

5.1.3.1 Operador Lgico E Operador lgico de adio, somente considerado verdadeira a condio se todas as sentenas que utilizam o operador e so verdadeiras. Veja abaixo a tabela verdade do operador lgico e: P VERDADEIRO VERDADEIRO FALSO FALSO Q P E Q VERDADEIRO VERDADEIRO FALSO FALSO VERDADEIRO FALSO FALSO FALSO 12

5.1.3.2 Operador Lgico OU considerado verdadeiro se pelo menos umas das sentenas que utilizam o operador ou for verdadeira. Veja abaixo a tabela verdade do operador lgico ou: P VERDADEIRO VERDADEIRO FALSO FALSO 5.1.3.3 Operador Lgico no Operador lgico que inverte o resultado da operao. Veja abaixo a tabela verdade do operador lgico no: P VERDADEIRO FALSO NO(P) FALSO VERDADEIRO Q P OU Q VERDADEIRO VERDADEIRO FALSO VERDADEIRO VERDADEIRO VERDADEIRO FALSO FALSO

Ex.: Suponha que temos trs variveis A = 5, B = 8 e C =1. Os resultados das expresses seriam: EXPRESSO A=B E (A + B) >= B + C OU B <> C E B <= A + C OU C=2*B+A NAO 5.1.3.4 Prioridades das Operaes Lgicas 1: no 2: e 3: ou RESULTADO FALSO VERDADEIRO FALSO FALSO VERDADEIRO

C<B B=C A <> B + C A=C

5.1.4 Operador de Atribuio A operao de atribuio utilizada para armazenar um dado valor numa determinada varivel. Em algoritmo representa-se por uma seta () que colocado direita da varivel que recebe o valor da atribuio. Ter ateno diferena entre o sinal de atribuio e o smbolo = que utilizado como operador relacional. Numa instruo de atribuio podem constar variveis, constantes, operadores e outras funes matemticas como indica o exemplo. Ex.: x 23 xy x x+1 a varivel x vai ficar com 23 a varivel x vai ficar com o contedo de y a varivel x incrementada de uma unidade

13

5.2 Expresses Na lgica de programao uma expresso tem o mesmo objetivo/conceito do termo expresso da matemtica comum, ou seja, um conjunto de variveis e constantes que se relaciona por meio de operadores aritmticos. Este conjunto de expresso e operadores aritmticos, formam uma frmula que, aps solucionada fornecem um resultado em especfico. 5.3 Funes predefinidas

6. Comandos 6.1 Instrues Na linguagem comum, entende-se por instrues um conjunto de regras ou normas definidas para a realizao ou emprego de algo. Em informtica, porm, instruo a informao que indica a um computador uma ao elementar a executar. Convm ressaltar que uma ordem isolada no permite realizar o processo completo, para isso necessrio um conjunto de instrues colocadas em ordem seqencial lgica. Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prtica uma srie de instrues: descascar as batatas, bater os ovos, fritar as batatas, etc. evidente que essas instrues tm que ser executadas em uma ordem adequada no se podem descascar as batatas depois de frit-las. Dessa maneira, uma instruo tomada em separado no tem muito sentido; para obtermos o resultado, precisamos colocar em prtica o conjunto de todas as instrues, na ordem correta. 6.2 Comandos de Entrada e Sada Perante a notao algortmica possvel obter (ou ler) valores de variveis, assim como escrever (ou imprimir) os valores dessas variveis atravs de instrues de leitura (entrada de dados) e instrues de escrita (sada de dados). 6.2.1 Comando leia O comando leia utilizado para obter valores do usurio, ou seja, caso o algoritmo deseje que o usurio entre com algum valor e esse valor seja armazenado em uma varivel. Sintaxe: leia nome da varivel a ser lida 14

6.2.1 Comando escreva Comando de sada que exibe uma informao contida numa varivel. Sintaxe: escreva nome da varivel a ser escrita Para que seja exibido um valor qualquer que no seja uma varivel, faz-se necessrio colocar o valor entre aspas ( ), exemplo: escreva ( Bom Dia! Que dia lindo!) 7. Estrutura de Algoritmos Antes de utilizarmos uma linguagem de computador, necessrio organizar as aes a serem tomadas pela mquina de forma organizada e lgica, sem nos atermos as regras rgidas da Sintaxe de uma linguagem. Para isto utilizaremos uma forma de escrever tais aes, conhecida como algoritmo, ou pseudocdigo. Os algoritmos tero a seguinte estrutura:

7.1 Primeiro exemplo de um algoritmo Um aluno de matemtica precisa saber qual a rea de um retngulo, sendo que a base e a altura sero fornecidas pelo professor. Fazer um algoritmo para ler a base e a altura, calcular a sua rea e mostr-la.

15

8. Estruturas de Controle de Fluxo Para representar a soluo de um problema devemos escrever o conjunto de passos a serem seguidos, sendo que, a maioria dos problemas exige uma dinmica na sua soluo, impondo assim que os algoritmos executem conjunto de instrues de acordo com as possveis situaes encontradas no problema original. E de acordo com a Programao Estruturada os mecanismos utilizados para esse controle so: Estruturas Seqenciais, Estruturas Condicionais e Estruturas de Repetio. 8.1 Estruturas Seqenciais Usada para executar comandos passo a passo, sabendo que todos eles sero executados na ordem de escrita, sem nenhum desvio. Uma seqncia pode possuir um ou vrios comandos.

Exerccios: 1. Escreva um algoritmo que leia um nmero inteiro qualquer, calcule e exiba o dobro do nmero lido. 2. Desenvolver um algoritmo que leia um nmero inteiro qualquer e imprima seu sucessor e seu antecessor. 3. Desenvolva um algoritmo que leia quatro notas quaisquer, calcule e imprima a respectiva mdia aritmtica dessas notas. 4. Elabore um algoritmo que leia dois nmeros inteiros e imprima na sada s seguintes informaes: dividendo, divisor, quociente e resto. 5. Faa um algoritmo para ler uma temperatura em C e converta em F. imprima as duas temperaturas na sada. Formula: F= 9 * C 160 5 6. Escreva um programa que permute o contedo de duas variveis sem utilizar uma varivel auxiliar.

16

7. Uma loja vende seus produtos no sistema entrada mais duas prestaes, sendo a entrada maior do que ou igual as duas prestaes; estas devem ser iguais, inteiras e as maiores possveis. Por exemplo, se o valor da mercadoria for R$ 270,00, a entrada e as duas prestaes so iguais a R$ 90,00; se o valor da mercadoria for R$ 302,75, a entrada e de R$ 102,75 e as duas prestaes so iguais a R$ 100,00. Escreva um programa que receba o valor da mercadoria e fornea o valor da entrada e das duas prestaes, de acordo com as regras acima. Observe que uma justificativa para a adoo desta regra e que ela facilita a confeco e o consequente pagamento dos boletos das duas prestaes. 8. Crie um algoritmo que leia os valores da base e da altura de um retngulo, em seguida calcule e imprima sua rea e seu permetro. 9. Criar um algoritmo que leia o peso de uma pessoa, s a parte inteira, calcular e imprimir: a. O peso da pessoa em gramas. b. O novo peso, em gramas, considerando que a pessoa engordou 12%. 10. Desenvolva um algoritmo que, ao receber do usurio o valor do salrio mnimo e a quantidade de quilowatts consumidos por uma residncia, informe: o valor unitrio do quilowatt. O valor total do consumo, o valor a ser pago, sendo que so oferecidos 10% de desconto. Para a resoluo, informado que 100 quilowatts de energia custam um dcimo do salrio mnimo. 8.2 Estruturas Condicionais Com o conhecimento adquirido, poderemos transformar problemas em algoritmo, no entanto, os recursos estudados at aqui so limitados, pois haver um momento em que um determinado valor dentro de um algoritmo necessitar ser tratado, diferentemente, de acordo com uma condio. Imagine a seguinte situao: Um algoritmo que define o caminho de uma pessoa ir ao banheiro. A trajetria da pessoa estar diretamente relacionada com o sexo da mesma, pois, ela seguir para o banheiro masculino caso o seu sexo seja masculino ou seguir para o banheiro feminino caso o seu sexo seja feminino. As estruturas que nos auxiliam nestas condies podem ser chamadas por Estruturas de Condio, Controle ou Deciso. Na pratica estas estruturas limitam-se ao Se e o Escolha. 8.2.1 Se Usada para tomar decises, ou seja, desviar a execuo do algoritmo de acordo com uma condio A instruo SE clasifica-se de acordo com a sua utilizao em: 8.2.1.1 Desvio Condicional Simples O desvio condicional simples normalmente vem acompanhada de um comando, ou seja, se determinada condio for satisfeita pelo desvio ento execute determinado comando.

17

Ex.: Em determinada parte de um algoritmo de mdia precisa-se realizar uma diviso entre dois nmeros, e conhecendo a regras matemticas sabemos que no existem divises por zero. Logo teremos de preparar nosso algoritmo para esta situao. divisao

8.2.1.2 Desvio Condicional Composto Quando tivermos uma situao em que dois grupos de aes dependem de uma mesma condio, pois sempre um comando ser executado independente da condio, ou seja, caso a condio seja verdadeira o comando da condio ser executado, caso contrrio o comando da condio falsa ser executado.

Ex.: Em uma escola deseja-se saber o nmero de alunos do sexo masculino e feminino. Para isso, precisa ser especificado o sexo de cada aluno. nesse exato momento que uma estrutura de condio se encaixa, por qu? Como as estruturas trabalham com verdadeiro ou falso, se o sexo do aluno for masculino soma-se mais uma pessoa para o masculino, seno se sexo for feminino, soma-se mais uma pessoa para o sexo feminino. No exemplo abaixo utilizada a estrutura Se para definir se o usurio do sexo masculino ou feminino: descobre_sexo

18

Agora ser visto o mesmo exemplo, utilizando operadores lgicos. descobre_sexo2

8.2.2 Escolha Quando o valor discreto, que ser avaliado como condio, assumir uma grande quantidade de valores e associado a estes valores existirem aes diferentes que tero de ser tomadas, estaremos diante de uma Seleo de Mltipla Escolha. O escolha no nada mais que uma aplicao especial da estrutura anteriormente estudada o Se, por isso temos que ter em mente que qualquer utilizao do escolha pode, tecnicamente falando, ser substitudo pelo Se. Sintaxe: Escolha ( Variavel ) caso Valor1 : Ao1 caso Valor2 : Ao2 ... caso ValorN: AoN [senao] : AoSenao Fim Escolha No exemplo abaixo, utilizada a estrutura Escolha para definir se o sinal est verde, amarelo ou vermelho. identifica_operacao

19

Mas mesmo com esta vantagem sobre a estrutura Se a estrutura Escolha possui algumas deficincias: uma delas est no fato dela apenas trabalhar com a comparao de igual, ou seja, a varivel dever ser igual a uma das hipteses ou diferente de todas. Um outro fator importante que podemos comparar o valor de uma varivel com o valor de n outras, utilizando este bloco, desde que eles sejam do mesmo tipo. Exerccios Propostos: 1. Escreva um programa que realize arredondamentos de nmeros utilizando a regra usual da matemtica: se a parte fracionaria for maior do que ou igual a 0,5, o numero e arredondado para o inteiro imediatamente superior, caso contrario, e arredondado para o inteiro imediatamente inferior. 2. Escreva um programa para verificar se um inteiro dado e um quadrado perfeito, exibindo, nos casos afirmativos, sua raiz quadrada. 3. Escreva um programa para determinar o maior de trs nmeros dados. 4. Escreva um programa para verificar se um tringulo de lados de comprimentos dados e retngulo, exibindo, nos casos afirmativos, sua hipotenusa e seus catetos. 5. Fazer um algoritmo que leia o percurso em quilmetros, o tipo do carro e informe o consumo estimado de combustvel, sabendo-se que um carro tipo C faz 12 km com um litro de gasolina, um tipo B faz 9 km e o tipo A, 8 km por litro. 6. Desenvolver um algoritmo que dados trs valores X, Y e Z, verificar se eles podem ser os comprimentos dos lados de um tringulo e se, forem verificar se um tringulo eqiltero, isscele ou escaleno. Se eles no formarem um tringulo imprimir uma mensagem indicativa. Propriedade o comprimento de cada lado do triangulo menor do que a soma dos comprimentos dos outros dois lados. 7. Elabore um algoritmo que leia a idade de uma pessoa e imprima na sada uma das seguintes opes: maior de idade, menor de idade e maior de 65. 8. Desenvolva um algoritmo que leia a sigla do estado de uma pessoa e imprima na sada uma das seguintes mensagens: amazonense, capixaba, potiguar, gacho, outros. 9. Escreva um algoritmo que leia dois nmeros quaisquer e exiba na sada o maior deles. 10. Um endocrinologista deseja controlar a sade de seus pacientes e, para isso, utiliza o ndice de Massa Corporal (IMC). Sabendo-se que o IMC calculado atravs da seguinte formula: IMC = Altura Onde: - peso dado em kg; - altura dada em metros. Criar um algoritmo que mostre o nome do paciente e sua faixa de risco, baseando-se na seguinte tabela: IMC Abaixo de 20 A partir de 20 at 25 Acima de 25 at 30 Acima de 30 at 35 Acima de 35 Faixa de risco Abaixo do peso Normal Excesso de peso Obesidade Obesidade mrbida
peso altura 2

20

8.3 Estruturas de Repetio Existem situaes em que necessrio efetuar a repetio de um trecho de algoritmo um determinado nmero de vezes. Neste caso, poder ser criado um looping que efetue o processamento de um determinado trecho, tantas vezes quantos forem necessrias. Os loopings, tambm, so chamados de laos de repetio, como o prprio nome sugere, so utilizadas quando uma determinada seqncia de passos precisa ser repetida vrias vezes. Diferente das estruturas de condio que tem como objetivo restringir, ou dividir, as estruturas de repetio tm como finalidade nica repetir qualquer seqncia de passos. Todas as estruturas diferenciam-se, contudo ser mostrada a diferena bsica entre elas. Em linguagem de programao, as estruturas de repetio so conhecidas como laos (loops). Existem basicamente dois tipos de estruturas de repetio: Loops contados: Quando se tem, de forma prvia, o nmero de vezes que uma determinada seqncia de comandos ser executada; Loops condicionais: Aqueles que no possuem um nmero pr-determinado de vezes que a estrutura de comandos ser executada, porm este nmero estar vinculado a uma determinada condio. 8.3.1 Estrutura PARA A estrutura Para considerada a mais automtica das estruturas de repetio, pois a atribuio feita varivel transparente para o programador, somente preciso informar para a estrutura quando comear e quando parar.

Sintaxe 2:

21

Neste primeiro exemplo, o algoritmo imprime nmeros de 1 a 100:

100

Neste algoritmo, observe que a varivel i iniciada em 1 (i 1), seu limite definido em 100 (at 100) e sua varincia definida para 1. Essas informaes so de vital importncia nesta estrutura de repetio, para seu funcionamento, pois se alguma dessas informaes fossem alteradas a estrutura no executaria a funo desejada. A estrutura para assim como as demais estruturas de repetio, tem por funo repetir tudo o que est dentro da estrutura, ento para que seja compreendido de uma maneira melhor, como se todas aquelas linhas de comando que foram escritas dentro estrutura fossem repetidas 100 vezes. A primeira vez que se entra no para feito a seguinte pergunta: A varivel i menor igual a 100? Se for entra no para sem que a varivel i seja aumentada em 1, caso contrario, no entra. Entrando no para, ele executado uma primeira vez, onde automaticamente a varivel i toda vez que retornasse para o incio do para, seria feito uma pergunta: "A varivel i igual a 100? Se for continua executando, seno terminar" E automaticamente a varivel i que inicialmente valia 1, recebe agora o valor 2 e assim sucessivamente at seu limite especificado, quando a varivel i recebesse o valor 100, a estrutura para executaria pela ltima vez as linhas de comando e depois passaria para a prxima linha, aps o fim do para. Neste segundo exemplo, o algoritmo imprime apenas os nmeros mpares em um intervalo de 1 a 100:

100

Neste terceiro exemplo, os dirigentes de uma escola desejam saber o sexo dos alunos, sendo somente uma mensagem dizendo quem do sexo masculino ou do sexo feminino. O nmero de alunos foi definido em 100:

22

100

faca

8.3.2 Estrutura ENQUANTO A estrutura enquanto, diferente da estrutura para, no possui um nmero previamente definido de repeties, contudo h necessidade de uma condio para que a estrutura enquanto seja executada.

Observe que, diferente do para, necessrio inicializar a varivel de controle i antes que a estrutura inicie, e, alm disso, preciso atribuir a varivel dentro da estrutura enquanto para que ela possa variar. Neste algoritmo, observe que a varivel i iniciada em 1 antes da estrutura se iniciar, pois como foi comentado antes, a estrutura enquanto no inicia a varivel. Alm disso, a condio colocada na estrutura enquanto (i < 100) no depende de um incremento automtico, o que dificulta o seu manuseio, contudo d mais opes ao programador de trabalhar e criar suas prprias maneiras de abortar a estrutura de repetio. Antes de terminar a estrutura enquanto, observe que h uma atribuio (i i + 1), essa a forma usada para variar a varivel i. A estrutura enquanto, por exemplo, pode variar de 1000 em 1000 se necessrio ( i i + 1000 ), ou seja, totalmente controlada pelo programador. Neste segundo exemplo, o algoritmo imprime apenas os nmeros mpares em um intervalo de 1 a 100:

23

Neste terceiro exemplo, os dirigentes de uma escola desejam saber o sexo dos alunos, sendo somente uma mensagem dizendo quem do sexo masculino ou do sexo feminino. O nmero de alunos foi definido em 500:

8.3.3 Estrutura REPITA A estrutura repita, bem semelhante estrutura enquanto, contudo a condio para sua execuo pode ser definida em qualquer lugar da estrutura, dessa forma a repetio pode ou no ocorre pelo menos uma vez, estabelecendo assim a principal diferena em relao a estrutura enquanto.

24

Neste algoritmo, observe que a varivel i iniciada em 1 antes da estrutura se iniciar, pois como foi comentado antes, a estrutura repita assim como a estrutura enquanto, no inicia a varivel. Alm disso, a condio colocada na estrutura repita (Se i > 100 ento interrompa) no depende de um incremento automtico, o que dificulta o seu manuseio, contudo d mais opes ao programador de trabalhar e criar suas prprias maneiras de abortar a estrutura de repetio. Antes de terminar a estrutura repita assim como a estrutura enquanto, observe que h uma atribuio ( i i + 1 ), essa a forma usada para variar a varivel i. A estrutura repita, por exemplo, pode variar de 1000 em 1000 se necessrio (i i + 1000), ou seja, totalmente controlada pelo programador. Neste segundo exemplo, o algoritmo imprime apenas os nmeros mpares em um intervalo de 1 a 100:

25

Neste terceiro exemplo, os dirigentes de uma escola desejam saber o sexo dos alunos, sendo somente uma mensagem dizendo quem do sexo masculino ou do sexo feminino. O nmero de alunos definido em 500:

8.3.3.1 Estrutura INTERROMPA O comando Interrompa, que obriga a estrutura a encerrar a operao quando a condio verdadeira, pode tambm interromper uma estrutura de repetio, seja ela para, enquanto ou repita, sem que a condio de parada tenha sido satisfeita. No exemplo abaixo, o comando Interrompa utilizado para encerrar a repetio quando o sexo no for masculino nem feminino.

26

Exerccios Propostos 1. Mostre a configurao da tela apos execuo do programa Algoritmo Exe01 inicio declare i, a, q, termo inteiro Para i 5 at 0 faca a = i; q = 3; termo = a; Enquanto (termo <= 9 * a) Escreva (termo) termo termo * q Fim Enquanto Fim Para Fim Algoritmo 2. Escreva um programa que determine a soma dos quadrados dos n primeiros numeros naturais, n dado. 3. Elabore um algoritmo que leia e imprima os nmeros inteiros no intervalo entre 10 e 100 de modo que estes no terminem em 0(zero). 4. Criar um algoritmo que leia um nmero e imprima todos os nmeros de 1 at o nmero lido e o resultado do produto da seqncia de nmeros. Ex: 3 Sada: 1x2x3 = 6 5. Implementar um algoritmo que imprima na sada todos os mltiplos de 5, no intervalo de 1 at 100. 6. Um numero inteiro e dito perfeito se o dobro dele e igual a soma de todos os seus divisores. Por exemplo, como os divisores de 6 so 1, 2, 3 e 6 e 1 + 2 + 3 + 6 = 12, 6 e perfeito. A matemtica ainda no sabe se a quantidade de nmeros perfeitos e ou no finita. Escreva um programa que liste todos os nmeros perfeitos menores que um inteiro n dado. 7. O numero 3.025 possui a seguinte caracterstica: 30 + 25 = 552 e 552 = 3 025. Escreva um programa que escreva todos os nmeros com quatro algarismos que possuem a citada caracterstica. 8. Um nmero triangular quando resultado do produto de trs nmeros consecutivos. Exemplo 24 = 2x3x4. Elabore um algoritmo que dado um nmero verifica se ele ou no um nmero triangular. Utilize mensagens como sadas. 9. Desenvolva um algoritmo leia um nmero indeterminado de linhas contendo cada uma idade de um indivduo. A ltima linha que no entrar nos clculos, contm o valor da idade igual a zero; Calcule e escreva a idade mdia deste grupo de indivduos. 10. Deseja-se fazer uma pesquisa a respeito do consumo mensal de energia eltrica em uma determinada cidade. Para isso, so fornecidos os seguintes dados: Preo do kWh consumido; Nmero do consumidor; Quantidade de kWh consumidos durante o ms; Cdigo do tipo de consumidor (residencial, comercial, industrial). O nmero do consumidor igual zero deve ser usado como flag. Fazer um algoritmo que: Leia os dados descritos acima; 27

Calcule: a) Para cada consumidor, o total a pagar; b) O maior consume verificado; c) O menor consume verificado; d) O total do consume para cada um dos trs tipos de consumidores; e) A mdia geral de consumo. Escreva: a) Para cada consumidor o seu nmero e o total a pagar; b) O que foi calculado nos itens b, c, d, e acima especificados.

11. Fazer um algoritmo que calcule e escreva o valor de S: S = 1 + 3 + 5 + 7 + + 99 1 2 3 4 50 12. Fazer um algoritmo que calcule e escreva a soma dos 30 primeiros termos da srie: 480 - 475 + 470 - 465 + 10 11 12 13 9. Rastreando Algoritmos O rastreamento uma tcnica utilizada para verificao da conformidade ou no de um algoritmo. Somente rastreando um algoritmo, possvel garantir que o mesmo est certo ou errado. Para rastrear, basta ler linha a linha, executando exatamente o que est descrito. Abaixo, explicado o exemplo para o clculo do fatorial. Primeiramente, mostrado o algoritmo como um todo e depois executado passo a passo.

Para que possa ser feito o rastreamento, temos que criar uma tabela com todas as variveis criadas no algoritmo. Nesse exemplo, h 3 varveis: num, aux e fat. Crie a seguinte tabela:

Quando a linha: Leia num 28

For executada, pedido um nmero do usurio, supondo que este nmero seja 4, coloque na coluna num o nmero 4.

29

30