You are on page 1of 27

Introduo a Algoritmos

INTRODUO A ALGORITMOS

CAPTULO 1 CONCEITO DE ALGORITMO

Um algoritmo pode ser denido como uma sequncia ordenada de passos (instrues) para resolver um determinado problema. Sempre que desenvolvemos um algoritmo estamos estabelecendo um padro de comportamento que dever ser seguido (uma norma de execuo de aes) para alcanar o resultado de um problema. Os algoritmos so capazes de realizar tarefas como: 1. Ler e escrever dados; 2. Avaliar expresses algbricas, relacionais e lgicas; 3. Tomar decises com base nos resultados das expresses avaliadas; 4. Repetir um conjunto de aes de acordo com uma condio; Para o desenvolvimento de um algoritmo eciente necessrio obedecermos algumas premissas bsicas no momento de sua construo: Denir aes simples e sem ambiguidade; Organizar as aes de forma ordenada Estabelecer as aes dentro de uma sequncia nita de passos. O algoritmo 1.1 um exemplo simples de algoritmo (sem condies ou repeties) para troca de um pneu. Algoritmo 1.1: Troca de pneu do carro. 1: desligar o carro 2: pegar as ferramentas (chave e macaco) 3: pegar o estepe 4: suspender o carro com o macaco 5: desenroscar os 4 parafusos do pneu furado 6: colocar o estepe
Bruno B. Nasser

Introduo a Algoritmos

7: enroscar os 4 parafusos 8: baixar o carro com o macaco 9: guardar as ferramentas

O computador uma mquina que processa as informaes da maneira que as fornecemos. Isso significa que devemos indicar para ele o que fazer de maneira correta e completa, pois qualquer informao a mais ou a menos ir fazer com que o algoritmo no funcione adequadamente. No exemplo anterior, podemos perceber que houve uma falta de informao na montagem do algoritmo. Entre os comandos descritos pelas linhas 5 e 6 faltou o comando de retirar o pneu furado do carro, pois necessrio antes de que o novo pneu seja posto. Se no corrigirmos esse procedimento o computador ir colocar o novo pneu em cima do pneu furado. Assim podemos reescrever o algoritmo da seguinte forma: Algoritmo 1.2: Troca de pneu do carro. 1: desligar o carro 2: pegar as ferramentas (chave e macaco) 3: pegar o estepe 4: suspender o carro com o macaco 5: desenroscar os 4 parafusos do pneu furado 6: retirar o pneu furado 7: colocar o estepe 8: enroscar os 4 parafusos 9: baixar o carro com o macaco 10: guardar as ferramentas

Lembre-se de que o computador apenas uma mquina que obedece aos comandos do usurio e que (pelos menos na atualidade) no tem inteligncia prpria. Desta forma, importante fornecermos todas as informaes que o computador necessita para executar uma ao, seno o algoritmo no ser executado de forma correta.
Bruno B. Nasser

Introduo a Algoritmos

CAPTULO 2 PARTES DE UM ALGORITMO Um algoritmo quando programado num computador constitudo pelo menos por 3 partes, sendo elas: 1. Entrada de dados; 2. Processamento de dados; 3. Sada de dados; Na parte de entrada, so fornecidas as informaes necessrias para que o algoritmo possa ser executado. Estas informaes podem ser fornecidas no momento em que o programa est sendo executado ou podem estar embutidas dentro do mesmo.

Figura 2.1: Estrutura de um algoritmo

Na parte do processamento so avaliadas todas as expresses algbricas, relacionais e lgicas, assim como todas as estruturas de controle existentes no algoritmo (condio e/ou repetio). Na parte de sada, todos os resultados do processamento (ou parte deles) so enviados para um ou mais dispositivos de sada, como: monitor, impressora, ou at mesmo a prpria memria do computador. Por exemplo, considere o algoritmo 2.1 que tem como objetivo calcular a rea de uma circunferncia dada por A = R2. Para calcular a rea necessrio saber os valores do raio R e do . Considerando que o valor de constante o mesmo poder ser gravado (denido) dentro do prprio algoritmo, e a entrada para o processamento desse algoritmo consistir nesse valor juntamente com o valor do raio R (que deve ser informado pelo usurio pelo teclado, por exemplo). O processamento do algoritmo ser a realizao do clculo R2 e a atribuio do resultado dessa expresso para a varivel A. A parte da sada consistir na escrita do valor de A no monitor.

Bruno B. Nasser

Introduo a Algoritmos

Algoritmo 2.1: Calculo da rea de uma circunferncia 1: 3,14 {entrada para o processamento} 2: leia R {entrada para o processamento} 3: A R2 {processamento} 4: escreva A {sada}

Repare que no algoritmo acima foram usadas algumas palavras chaves como leia e escreva. Na programao o computador entender o que fazer por meio de palavras chaves. No faz sentido para a mquina, por exemplo, a escrita computador, por favor, utilize o valor digitado para ser o raio R. Neste caso, basta simplesmente escrever leia R para que a mquina armazene o valor digitado como sendo o valor do raio e em seguida (por meio de outros comandos) seja calculada a rea. As palavras chaves e como elas devem ser organizadas vo depender da linguagem de programao utilizada, nas aulas mais adiante iremos aprender melhor sobre essas palavras chaves e mais adiante no curso sobre as palavras chaves na linguagem visual basic.

CAPTULO 3 DECLARAO DE VARIVEIS E CONSTANTES

3.1 DECLARAO DE VARIVEIS Um algoritmo pode trabalhar com dados que podem ter seus valores alterados durante a execuo ou que vo depender dos valores digitados por um usurio a esses dados chamamos de varivel. Como exemplo, podemos tomar um algoritmo que faa a mdia aritmtica entre duas notas de provas dos alunos, P1 e P2. A formula para a mdia ser M=(x+y)/2, onde x a nota da P1, y a nota da P2 e M a mdia dessas notas. Neste caso x, y e M so variveis do algoritmo, pois vo depender dos valores digitados pelo professor. Antes de um algoritmo operar com as variveis devemos, primeiramente, indicar para o computador qual o tipo de cada varivel que iremos trabalhar, isso serve para que o computador reserve um espao da memria para cada varivel, a esta funo chamamos de declarao de variveis.
Bruno B. Nasser

Introduo a Algoritmos

A representao correta e adequada de uma varivel permite otimizar os recursos computacionais disponveis, alm de acelerar o processamento. A seguir so denidos alguns tipos de variveis mais comuns encontrados na maioria das linguagens de programao. Inteiro: So os nmeros pertencentes ao conjunto dos Inteiros, isto , que no possuem parte fracionria. Podem ser positivos, nulos ou negativos. Exemplos: 2 laranjas,calado tamanho 42, 65535 gros, 0 pessoas na la, multa de -2 pontos no campeonato. Real: So os nmeros pertencentes ao conjunto dos Reais, isto , que podem possuir parte fracionria. Tambm so chamados de ponto utuante devido maneira como o computador os armazena. Exemplos: 2.12 litros de combustvel, 3.5C, = 3.141592654 Caractere: utilizado quando a varivel for um texto. Esse texto pode conter tanto caracteres numricos (0...9) como alfabticos (a...z,A...Z) e especiais (! @ # $ % & *). Esse conjunto tambm conhecido como conjunto de caracteres alfanumricos. Exemplos de informaes do tipo caractere: Joo Francisco, Rua Ismael Soares, Hotel Feliz, ?". Nestes exemplos, as aspas duplas (") so usadas para indicar o incio e o m das cadeias de caracteres, porm no fazem parte da informao contida nas mesmas. importante ressaltar que o espao em branco entre as palavras tambm um caractere. Lgico: O tipo lgico utilizado para representar informaes que s podem assumir dois valores, o valor verdadeiro (V) ou o valor falso (F). Estes valores tambm podem ser entendidos como: ligado/desligado, 1/0, alto/baixo, fechado/aberto, etc. Exemplos de informaes que podem ser representadas utilizando o tipo lgico so: O fogo est apagado, a televiso est ligada, o porto est aberto, o produto foi encontrado.

Bruno B. Nasser

Introduo a Algoritmos

A declarao de uma varivel em um algoritmo feita da seguinte forma: Var varivel1, varivel2, . . . , <tipo> Veja os exemplos abaixo: Var marca, modelo: caractere; ano: inteiro; preco: real; vendido: lgico;

3.2 CONSTANTES Constantes tambm so posies de memria que tm as mesmas caractersticas das variveis e podem ser dos mesmos tipos, mas, como o prprio nome indica, no podem ter seu valor alterado durante a execuo do programa. So teis para guardar parmetros e valores que sero usados em vrios procedimentos do sistema. Para se declarar uma constante devemos escrever: Constante constante1 =<valor> Por exemplo, no algoritmo 2.1 para o clculo da rea de uma circunferncia (A = R2), o valor de constante, pois sempre igual a 3.1416..., e o raio r varivel, pois pode assumir diferentes valores a cada clculo da rea. Seguindo a mesma lgica, a rea A calculada para diferentes R tambm uma varivel. Assim declarando as variveis e constante este algoritmo ficar Algoritmo 3.2: Calculo da rea da circunferncia Var R, A : real Constante = 3,14 leia R {entrada para o processamento} A = R2 {processamento} escreva A {sada}

Bruno B. Nasser

Introduo a Algoritmos

CAPTULO 4 ENTRADA E SADA DE DADOS Para imprimirmos algum tipo de informao na tela do computador utilizamos o comando escreva seguido da informao que ser escrita. Dessa forma, se quisermos imprimir uma mensagem como, por exemplo, Ola mundo!, isto seria feito com a instruo: escreva Ol Mundo As aspas servem para delimitar uma sequncia de caracteres, uma constante, mas no fazem parte do contedo a ser impresso. Para imprimir o valor de uma varivel, basta colocar o seu identicador diretamente sem as aspas. Por exemplo, considere a varivel: x = 123 se digitarmos o comando escreva ttt o programa ir mostrar o valor 123 na sada. Como a sequncia x no tem aspas, durante a execuo o algoritmo considera x como sendo o identicador de uma varivel e o substitui pelo seu contedo, neste caso 123. Se por outro lado, colocssemos x = 123 e digitssemos o comando escreva x seria impresso o caractere x na sada. x essencialmente diferente de x. O primeiro indica o identicador de uma varivel. O segundo, com aspas, simplesmente uma sequncia de letras. Em resumo, as aspas previnem que o algoritmo interprete o contedo da cadeia de caracteres. Opcionalmente, pode-se colocar parnteses para indicar o argumento da funo escreva. possvel escrever valores de qualquer tipo existente, como valores reais, valores lgicos, valores inteiros, do tipo sequncia de caracteres, resultados de

Bruno B. Nasser

Introduo a Algoritmos

expresses aritmticas, resultados de expresses lgicas, resultados de expresses relacionais. Da mesma maneira que necessitamos enviar informaes de dentro do algoritmo para a sada padro (em geral a tela), tambm necessitamos receber informaes de fora do algoritmo, a partir da entrada padro (em geral o teclado). Considere por exemplo um sistema de locadora. Sempre que alugamos um lme, o sistema ir necessitar de algumas informaes como, por exemplo: o nosso cdigo de cliente (ou o nome) e o nome da ta que estamos locando. Essas informaes so fornecidas pelo sistema a partir de comandos de entrada de dados. Para realizarmos a entrada de dados utilizaremos o comando leia. Ao utilizar o comando leia o programador deve saber de antemo qual a varivel que ir armazenar o valor que ser fornecido pelo usurio. No caso do exemplo anterior, os valores que seriam fornecidos pelo usurio so referentes ao cdigo do cliente e ao nome da ta que o mesmo est locando. Sendo assim, necessrio declarar variveis que possam armazenar valores que sejam compatveis com as informaes solicitadas ao usurio. Por exemplo, a informao do cdigo do cliente pode ser um valor do tipo inteiro, ento necessrio que declaremos no algoritmo uma varivel desse tipo, seguindo esse mesmo raciocnio, a informao do nome da ta pode ser uma informao do tipo caractere, sendo tambm necessrio que declaremos no algoritmo uma outra varivel para receber essa informao. Aps declaradas as variveis que recebero os valores fornecidos pelo usurio podemos utilizar o comando leia para receber esses valores. Para isso devemos escrever leia seguido da varivel que receber os valores entre parnteses. Observe o exemplo abaixo: Algoritmo 4.1 Locadora: exemplo de entrada de dados. 1: var codigo_cliente: inteiro 2: nome_fita: caractere 3: leia(codigo_cliente) 4: leia(nome_fita)

Quando o algoritmo passa pela linha 3, o usurio do algoritmo (ou do sistema) dever digitar um valor do tipo inteiro, e ao teclar <ENTER> esse valor ser armazenado na varivel codigo_cliente. Logo em seguida, na linha 4, o usurio dever
Bruno B. Nasser

Introduo a Algoritmos

digitar um valor do tipo caractere, e ao teclar <ENTER> esse valor ser armazenado na varivel nome_fita. possvel avisarmos o usurio sobre qual tipo de informao o algoritmo est precisando, para isso, utilizamos o comando de sada de dados escreva imediatamente antes do leia que informa ao usurio o que deve entrar. Por exemplo, o algoritmo 7 informaria ao usurio o que digitar antes de executar o comando leia e esperar pela entrada do usurio. Algoritmo 4.2 Locadora 2: exemplo de aviso para entrada de dados. 1: var codigo_cliente: inteiro 2: nome_ta: caractere 3: escreva(digite cdigo do cliente e tecle <ENTER>) 4: leia(codigo_cliente) 5: escreva(digite o nome da ta e tecle <ENTER>) 6: leia(nome_ta)

Exerccio 1: Dado o algoritmo que atribui um valor inteiro a uma varivel A, por exemplo, o valor 5, e imprime essa varivel, complet-lo com os devidos comentrios Resp. Algoritmo Operao Atribuio var A: inteiro incio A5 escreva (o valor que est armazenado na varivel a :, A) fim

Bruno B. Nasser

Introduo a Algoritmos

CAPTULO 5 OPERAES ARITMTICAS As expresses aritmticas so aquelas em que os operadores so aritmticos e os operandos so valores do tipo numrico (inteiro ou real). Esses valores numricos podem ser acessados por meio de identicadores constantes ou por meio de variveis. As operaes aritmticas fundamentais so: adio, subtrao, multiplicao, diviso, potenciao, diviso inteira e o resto (mdulo). A Tabela 5.1 apresenta os operadores para cada uma dessas operaes aritmticas. A tabela abaixo apresenta os operadores para uma dessas operaes aritmticas.

Tabela 5.1: operadores e suas operaes aritmticas

5.1 ESCRITA DE OPERAES ARITMTICAS Cada operao aritmtica em um algoritmo deve ser escrita em apenas uma nica linha. Sendo assim, quando uma expresso matemtica usual escrita precisamos utilizar parnteses para garantir que todas as operaes sejam executadas na ordem adequada. Por exemplo, considere a expresso:

Nesta equao primeiramente deve ser realizada a operao (3-1) antes da diviso de 1 por esse termo. Assim a equao deve ser escrita: 1/(3-1)

Bruno B. Nasser

Introduo a Algoritmos

Isso far com que a resoluo dos termos ocorra na seguinte ordem: 1/(3-1) 1/2 0.5 Exemplo 2: Calculo da mdia aritmtica entre trs notas de provas:

A escrita no algoritmo fica: (P1+P2+P3)/3

5.2 ORDEM DE PRIORIDADE DOS OPERADORES ARITMTICOS Quando uma expresso aritmtica precisa ser avaliada num algoritmo, o analisador processa a expresso dando prioridade para certos operadores. As sub expresses que contm estes operadores sero avaliadas primeiro e seu valor substitudo pela sub-expresso inteira. A seguir a prxima sub-expresso na ordem avaliada e assim por diante at que toda a expresso corresponda a um s valor. A Tabela abaixo mostra a ordem de prioridade na avaliao dos operadores numa expresso aritmtica, chamada de precedncia de operadores.

Tabela 5.2: ordem de prioridade dos operadores

Bruno B. Nasser

Introduo a Algoritmos

Conforme a tabela, as primeiras sub-expresses a serem resolvidas sero os parnteses mais internos, depois as potncias, depois as multiplicaes e divises, e assim por diante. A maneira de alterar a ordem de execuo das operaes numa expresso aritmtica atravs de parnteses, sendo que eles so executados antes de tudo, a partir dos mais internos para os mais externos. Por exemplo, considere a seguinte expresso aritmtica: (5+3)**2 * (5-2) + 8 A ordem em que as operaes sero realizadas so (5+3)**2 * (5-2) + 8 8**2 * 3 + 8 64 * 3 + 8 192 + 8 200 A mesma avaliada pelo computador da seguinte maneira: primeiro os parnteses mais internos so avaliados, depois a potenciao1, depois a multiplicao e depois a soma. Se ignorssemos a precedncia dos operadores (ou dos parnteses) teramos um resultado completamente diferente e consequentemente errado. Vejamos agora um exemplo de uma expresso que contm apenas variveis (cujos valores ainda no foram informados): (x + y)/((2 y + (z w)). A expresso ser executada na seguinte ordem: 1. (x + y); 2. (z w) 3. 2 y 4. adio do resultado de 2 com o resultado de 3. 5. diviso do resultado de 1 com o resultado de 4.
Bruno B. Nasser

Introduo a Algoritmos

Exemplo: A expresso:

Cujo valor 6 deve ser escrita pelo usurio da seguinte forma: 2+(14+2)**(1/2) Que nos fornece 2+16**(0.5) 2+4 6

Exerccios: 1)Reescreva as seguintes expresses algbricas para o formato de algoritmo:

a)

b)

c)

2) Faa um algoritmo que calcule a mdia de trs notas de provas, P1, P2, P3 fornecidas pelo usurio e que fornea a resposta na tela.

Bruno B. Nasser

Introduo a Algoritmos

CAPTULO 6: EXPRESSES LGICAS

As expresses lgicas so aquelas cujo valor s pode ser verdadeiro ou falso. So compostas por operadores relacionais, operadores lgicos, e por identicadores variveis ou constantes do tipo lgico.As expresses lgicas tambm podem ser compostas por resultados de expresses aritmticas.

6.1 OPERADORES RELACIONAIS Os operadores relacionais so aqueles que comparam dois valores do mesmo tipo. O retorno da expresso relacional indica se o resultado da comparao foi verdadeiro ou falso. Por exemplo, a expresso 2 < 3 uma expresso lgica vlida cujo valor verdadeiro. Em contrapartida, a expresso 2 = 8 uma expresso lgica tambm vlida, mas cujo valor falso. A tabela abaixo indica alguns operadores relacionais:

Tabela 6.1: operadores relacionais

Exemplos: a <> b nome = Maria x*y+5*b>0 x = 10

Bruno B. Nasser

Introduo a Algoritmos

6.2 OPERADORES LGICOS Os operadores lgicos so usados para representar situaes lgicas que no podem ser representadas por operadores aritmticos (adio, subtrao e etc.). Tambm so chamados conectivos lgicos por unirem duas expresses simples numa composta. Podem ser operadores binrios, que operam em duas sentenas ou expresses, ou unrio que opera numa sentena s.
Operador and or not Funo conjuno disjuno Negao

O primeiro deles o operador binrio de conjuno ou e lgico, representado por ou and. Quando duas expresses so unidas por este operador, a expresso resultante s verdadeira se ambas expresses constituintes tambm so. Por exemplo chove e venta s verdadeiro se as duas coisas forem verdadeiras, chove e tambm venta. Se uma das sentenas no ocorrer, a sentena como um todo falsa. O segundo operador o operador binrio de disjuno ou ou lgico, representado por ou or. Neste caso, se qualquer uma das expresses constituintes for verdadeira, a expresso completa tambm ser. Por exemplo, vou praia ou vou ao campo um sentena verdadeira caso qualquer uma das duas aes acontecer, ou ambas. verdadeira, se eu for a praia e no ao campo, se eu for ao campo e no a praia e se eu for a ambos. O ltimo dos operadores o operador unrio no lgico, representado por not. Sua funo simplesmente inverter valor lgico da expresso a qual se aplica. Exemplos: (a + b = 0) and (c <> d)

Bruno B. Nasser

Introduo a Algoritmos

sim or (a * b > c) not verdade and cor = verde

CAPTULO 7 ESTRUTURAS DE CONDIO

Num processo geral de execuo de um algoritmo implementado em uma linguagem de programao, a execuo comea na primeira linha e vai avanando sequencialmente executando o cdigo linha aps linha at chegar no nal. Entretanto, frequntemente surge a necessidade de colocar instrues dentro de um programa que s sero executadas caso alguma condio especca acontea. Para esta nalidade a maioria das linguagens possui estruturas de condio para realizar esta tarefa. Neste captulo examinaremos o seu funcionamento e suas peculiaridades. Nos captulos anteriores foram apresentados alguns conceitos bsicos sobre as estruturas e comandos que so utilizados para construir um algoritmo simples. Como visto, podemos solicitar valores de entrada aos usurios do sistema utilizando o comando leia(), e podemos ainda enviar valores de sada do sistema por meio do comando escreva(). Entretanto, as possibilidades de construo de algoritmos que temos at o presente momento so bastante limitadas, pois ainda no estamos aptos a tomar decises durante o tempo de execuo do algoritmo, ou at mesmo de classicar determinados valores de variveis. Por exemplo, considere que precisamos desenvolver um algoritmo que classique uma determinada pessoa entre maior de idade ou menor de idade. Para esse problema sabemos que precisamos avaliar a idade da pessoa, e que se essa idade for maior (ou igual) que 18 anos a pessoa considerada maior de idade. Neste caso, para um intervalo de valores da idade o algoritmos executa um conjunto de aes e para outro intervalo executa um outro conjunto de aes. Neste tipo de situao, onde um determinado valor avaliado para partir do resultado dessa avaliao executar alguma ao, utilizamos as estruturas de condio.

Bruno B. Nasser

Introduo a Algoritmos

7.1 ESTRUTURA DE CONDIO SIMPLES: SE-ENTO A estrutura de condio mais simples a se-entao, utilizada da seguinte forma: se <expresso-lgica> ento: <bloco de comandos> fim-se A <expresso-lgica> uma expresso que dever retornar um valor de verdadeiro (V) ou de falso (F), e caso o resultado dessa expresso for verdadeiro, ser executado o bloco de comandos que est dentro da estrutura. Caso seja falso, a execuo do programa ignora o bloco de comando e continua na linha seguinte estrutura de condio. Alguns exemplos de expresses lgicas j foram vistos anteriormente, a seguir temos mais alguns exemplos: 18 > 20, cujo resultado ser falso. 45 = 45, cujo resultado ser verdadeiro. mdia > 7 , cujo resultado depender do valor da varivel mdia.

Por exemplo, se mdia vale 5 o bloco no executado; se mdia for 15, o bloco ser executado. O<bloco de comandos> uma sequncia de cdigo que ser executado somente quando o resultado da expresso lgica for verdadeiro. Por m, a instruo fim-se indica que a estrutra se-entao chegou ao nal, servido para delimitar o bloco de instrues. Voltando ao nosso problema de classicar uma pessoa como maior de idade ou menor de idade, podemos utilizar a estrutura de condio se-ento da seguinte maneira: Solicitamos ao usurio que digite a sua idade, e utilizamos o

comando leia ( ) para armazenar o valor digitado na varivel idade. Depois de termos o valor da idade, avaliamos se esse valor

maior ou igual a 18. Se o resultado dessa avaliao for verdadeiro escreveremos na tela a frase voc maior de idade, como mostra o algoritmo abaixo.
Bruno B. Nasser

Introduo a Algoritmos

Algoritmo 7.1 Condio: maior ou menor de idade. 1: var idade: inteiro 2: escreva digite a sua idade 3: leia(idade) 4: se idade >= 18 ento 5: escreva voc maior de idade 6: fim-se

7.2 ESTRUTURA DE CONDIO COMPOSTA: SE-ENTO-SENO O algoritmo acima resolve o nosso problema quando a pessoa maior de idade, porm no nos d nenhum retorno para quando a mesma for menor de idade. Para contornar esse tipo de situao, a estrutura de condio se-ento, oferece a possibilidade de executarmos uma determinada ao ou comando se o resultado da expresso lgica for verdadeiro e de executarmos uma ao diferente se o resultado da expresso lgica for falso. Para essas situaes utilizado o comando seno, como mostrado abaixo. se <expresso-lgica> ento: <bloco de comandos verdade> seno: <bloco de comandos falsidade> fim-se

Figura 7.2: Estrutura de um comando se-ento-seno.


Bruno B. Nasser

Introduo a Algoritmos

Na estrutura se-ento-seno, o bloco verdade executado se a expresso lgica verdadeira e o bloco falsidade, que vem aps seno, executado se a expresso lgica falsa. A Figura 7.2 mostra esquematicamente como funciona uma estrutura de condio se-ento-seno, de modo geral. Quando o processamento do algoritmo chega numa estrutura se-ento a expresso lgica nela contida avaliada; se o seu valor verdadeiro (V) ento o bloco de comandos seguinte ao se, chamado bloco-verdade, executado. Caso o resultado da expresso lgica seja o bloco de comandos posterior ao comando seno, chamado de bloco-falso, executado. Se a estrutura de condio no possui uma clusula seno, ento no caso da expresso lgica ser falsa, a execuo do algoritmo continua na linha subsequente ao bloco se-ento. O algoritmo 7.2.1 mostra como escrever que a pessoa maior de idade quando tem 18 anos ou mais, ou que a pessoa menor de idade quando essa condio no atendida. Algoritmo 7.2.1 Condio: maior ou menor de idade com se-ento-seno. 1: var idade: inteiro 2: escreva digite a sua idade 3: leia(idade) 4: se idade >= 18 ento 5: escreva voc maior de idade 6: seno 7: escreva voc menor de idade 8: fim-se 9: escreva Boa Sorte

Neste caso, a expresso lgica (idade>=18). Se for verdadeira ento o bloco verdade (linha 5) ser executado; isto depende da varivel idade lida na linha 3. Caso contrrio, o bloco-falso (linha 7) seria executado. A seguir, o processamento segue na linha seguinte estrutura de condio, neste caso a linha 9 seria executada independente do valor da varivel idade. Expresses lgicas compostas em Estruturas de Condio Como vimos anteriormente, possvel compor expresses lgicas utilizando operadores relacionais

Bruno B. Nasser

Introduo a Algoritmos

<,>,<>,=,<=,>=, mas tambm possvel compor expresses lgicas utilizando os operadores lgicos and (conjuno), or (disjuno) e not (negao). Nesse sentido, a expresso lgica que ser avaliada na estrutura de condio se-entao tambm pode ser formada por uma expresso lgica composta. Por exemplo, considere a situao de um determinado aluno em uma disciplina. Sabe-se que para ser aprovado, necessrio que nota >= 7.0 e que frequencia > 75, ao mesmo tempo, isto , uma conjuno lgica representada pelo operador lgico and. O fragmento do algoritmo que avalia a situao est mostrado no algoritmo 7.2.2. Neste caso, para que a expresso lgica como um todo seja verdadeira, necessrio que as duas expresses lgicas que a compem tambm o sejam. Algoritmo 7.2.2 Expresso lgica composta. 1: se (nota >= 7 and frequencia > 0.75) ento 2: escreva O aluno est aprovado 3: seno 4: escreva O aluno est reprovado 5: fim-se

7.3 ESTRUTURAS DE CONDIO ENCADEADAS Dentro de uma estrutura se-ento-seno perfeitamente possvel utilizarmos mais de uma linha de comando, ou at mesmo outras estruturas se-ento-seno. Existem situaes em que os caminhos para a tomada de uma deciso acabam formando uma espcie de rvore com diversas ramicaes, onde cada caminho um conjunto de aes. Nesses casos podemos recorrer utilizao de vrias estruturas se-ento-seno embutidas umas dentro das outras, comumente chamadas de ninhos. Nas estruturas de deciso encadeadas, uma estrutura de condio aninhada dentro de outra, como bloco verdade ou falsidade. Neste caso, para que a estrutura de condio mais interna seja avaliada, necessrio que uma determinada condio seja satisfeita na estrutura de condio mais externa. Por exemplo, vamos supor um algoritmo que leia dois valores x e y e indique qual o maior.

Bruno B. Nasser

Introduo a Algoritmos

Algoritmo 7.3.1: Indica qual das variveis maior 1: var x, y: real 2: escreva digite o valor de x e y 3: leia x, y 4 se x > y ento 5: escreva x maior 6: seno 7: se x < y ento 8: escreva y maior 9: seno 10: escreva x e y so iguais 11: fim se 12: fim se

Podemos perceber que dentro da condio seno na linha 7 foi introduzido um segundo comando de condio que ir indicar um novo caminho de aes a serem seguidas. Vamos para um segundo exemplo. Suponha que desejemos renar um pouco mais o problema referente s mdias dos alunos de uma dada disciplina. Sabemos que um aluno aprovado caso apresente mdia maior ou igual a 7.0 e frequncia maior ou igual a 75%. Na verdade, em uma situao real, se o aluno obtiver a frequncia mnima exigida e uma mdia entre 3 e 7, ainda teria direito a uma ltima avaliao de recuperao. Como faramos para resolver o problema em questo utilizando apenas estruturas de condio se-ento-seno? Poderamos comear avaliando a frequncia do aluno, e se a mesma for menor que 75% o aluno j estaria reprovado, porm caso a frequncia respeite o mnimo exigido, comearamos a avaliar a mdia para saber se est aprovado, em recuperao ou reprovado. No momento em que vericado que a frequncia menor que 0.75 (75%) o aluno j est imediatamente reprovado, mas caso a frequncia seja maior ou igual a esse valor, devemos continuar com o algoritmo para avaliar em que situao que o aluno se encontra. Em m, agora necessrio avaliar a mdia do mesmo, vericando se est acima de 7.0 (aprovado), entre 3 e 7.0 (recuperao), ou abaixo de 3.0 (reprovado). Estes condicionais esto mostrados no algoritmo abaixo.

Bruno B. Nasser

Introduo a Algoritmos

Algoritmo 7.3.2 Verica aprovao de alunos. 1: var frequencia, media: real 2: escreva digite a media e a freqncia 3: leia(media, frequencia) 4: se (frequencia >= 0.75) ento 5: 6: 7: 8: 9: 10: 11: 12: 13: se (media >= 7) ento escreva voce esta APROVADO seno se (media >= 3) ento escreva voce esta em RECUPERACAO seno escreva voce esta REPROVADO POR MEDIA fim-se fim-se

14: seno 15: escreva voce esta reprovado por FALTAS 16: fim-se

7.4 COMANDO CASO Uma outra alternativa para trabalhar com comandos condicionados a um determinado valor a estrutura caso. Nessa estrutura o valor de uma determinada varivel avaliado e caso esse valor coincida com determinado valor pr-estabelecido um determinado comando executado. A estrutura de condio caso utilizada da forma mostrada no algoritmo abaixo.

Bruno B. Nasser

Introduo a Algoritmos

Algoritmo 7.4.1: Estrutura caso. caso varivel seja: valor1: bloco de comandos 1 valor2: bloco de comandos 2 . . valorN: bloco de comandos N padro: bloco de comandos padro

Da mesma maneira que a estrutura de condio se-ento possibilita que executemos algum comando quando a expresso avaliada no verdadeira, a estrutura de condio caso tambm nos oferece essa opo, chamada opo padro. O bloco de comandos dentro da opo padro ser executado caso nenhuma dos casos fornecidos seja contemplado. A sintaxe para utilizarmos essa opo mostrada no exemplo do algoritmo 7.4.2: a varivel n do tipo inteiro testada, e caso tenha valor 1 escrito na tela um, caso tenha valor 2 escrito na tela dois e caso no tenha nenhum desses valores ser escrito na tela outro valor.

Bruno B. Nasser

Introduo a Algoritmos

Algoritmo 7.4.2 Exemplo de caso: mostra o numero. 1:var n: inteiro 2: escreva digite n 3: leia(n) 4: caso n seja: 1: 5: escreva voc escolheu 1

2: 6: escreva voc escolheu 2 7: padro: 8: escreva outro valor

CAPTULO 8: ESTRUTURAS DE REPETIO

Uma das principais caractersticas que consolidaram o sucesso na utilizao dos computadores para a resoluo de problemas foi a sua capacidade de repetir o processamento de um conjunto de operaes para grandes quantidades de dados. Exemplos de conjuntos de tarefas que repetimos diversas vezes dentro de uma situao especca podem ser observados largamente no nosso dia a dia. As estruturas de repetio nos fornecem uma maneira de repetir um conjunto de procedimentos at que determinado objetivo seja atingido, quando a repetio se encerra. Todas as estruturas de repetio tm em comum o fato de haver uma condio de controle, expressa atravs de uma expresso lgica, que testada em cada ciclo para determinar se a repetio prossegue ou no. Por exemplo, consideremos que uma determinada loja de calados efetue uma venda no credirio para um cliente que ainda no est registrado em seu sistema. Para realizar essa venda, necessrio cadastrar o cliente, solicitando informaes bsicas como: nome, endereo, CPF, RG, etc. Essas etapas para realizar o cadastro seguiro sempre a mesma ordem para cada novo cliente que aparecer na loja. Caso precisssemos desenvolver um sistema para efetuar os
Bruno B. Nasser

Introduo a Algoritmos

cadastros de clientes de uma loja, no haveria lgica que programssemos novamente essas etapas para cada cliente novo, bastaria que desenvolvssemos uma nica vez a sequncia de etapas e que a cada novo cliente usssemos a sequncia previamente denida. As estruturas de repetio so basicamente trs: enquanto-faa, faa-enquanto e para faa. A diferena bsica que enquanto-faa primeiro testa a condio para depois realizar o bloco de comando, ao contrrio de faa-enquanto que primeiro executa o bloco para depois realizar o teste. A estrutura para-faa tem embutida um mecanismo de controle para determinar quando o lao dever ser terminado.

8.1 TESTE NO INCIO: ENQUANTO-FAA No algoritmo abaixo est mostrada o formato bsico da estrutura de repetio enquanto-faa. Algoritmo 8.1 Estrutura de repetio enquanto-faa. enquanto <expresso lgica> faa <bloco de comandos> fim-enquanto

Antes de entrar na estrutura de repetio, a expresso lgica avaliada, caso o resultado da mesma seja verdadeiro os comandos que esto dentro da estrutura sero executados e ao nal volta-se a avaliar a expresso lgica novamente. Caso o resultado da expresso lgica seja falso, o algoritmo sai da estrutura de repetio e segue na prxima linha. Na estrutura enquanto-faa no est pr-determinado quantas vezes o bloco de comandos ser executado, sendo determinado durante a execuo do algoritmo. De maneira geral, o mecanismo que altere o valor da expresso lgica que controla o lao deve estar embutido dentro do bloco de comandos ou depender de alguma varivel externa, caso contrrio o lao car executando indenidamente. A estrutura enquanto-faa usada principalmente quando no se sabe de antemo quantas repeties sero realizadas. Por exemplo, vamos analisar de maneira mais clara uma situao onde no conseguimos determinar a quantidade de vezes que
Bruno B. Nasser

Introduo a Algoritmos

executaremos um conjunto de comandos. Por exemplo, suponha que estamos oferecendo ao usurio 3 opes de menu sendo que uma dessas 3 opes seria a opo de sair do programa. Caso desejemos que o usurio possa executar vrias vezes as opes dispostas no menu, no temos como adivinhar quando o usurio ir optar por sair do algoritmo, sendo assim, no podemos limitar a repetio a determinado nmero de vezes. Considere um problema mais especco onde necessitamos fazer a leitura de vrios nomes de pessoas e a cada nome que lido devemos escrever na tela a frase "O nome digitado foi nome", onde nome a varivel. A princpio isso deve ser feito inmeras vezes e quando o usurio digitar um nome igual a m o algoritmo deve parar. Da mesma maneira que no exemplo anterior no podemos denir quando o usurio ir digitar m, e no temos como precisar a quantidade de vezes que o algoritmo dever repetir esse conjunto de aes. Nessas situaes, a repetio de um conjunto de comandos determinada pela avaliao de uma expresso lgica, ou seja, se a expresso lgica verdadeira o conjunto de comandos continua a ser executado, caso seja falsa a estrutura de repetio abortada.

8.2 TESTE NO FIM: FAA-ENQUANTO A estrutura faa-enquanto difere de enquanto-faa somente por executar o bloco de comando antes de testar se a condio verdadeira. Assim, utilizando o faaenquanto o bloco de comandos ser executado pelo menos uma vez, mesmo que a expresso de controle seja falsa. Seu formato mostrado no algoritmo 8.2. Algoritmo 8.2: Estrutura de repetio faa-enquanto. faa <bloco de comandos> enquanto <expresso lgica>

Bruno B. Nasser

Introduo a Algoritmos

8.3 REPETIO COM CONTROLE: FAA-PARA A estrutura para-faa composta de um mecanismo de controle que estabelece de antemo quantas vezes o lao ser executado. A estrutura mostrada no algoritmo X. Algoritmo 8.3.1 Estrutura de repetio para-faa. para varivel = <sequncia> faa <bloco de comandos> fim-para

A <sequncia> uma lista de valores que a varivel assumir ao longo da execuo, em geral no formato incio,fim, incremento. Por exemplo, a expresso x=0, 10, 2 signica que x assumir os valores 0,2,4,6,8,10. Logo, o lao seria executado 5 vezes. Algoritmo 8.3.2 Exemplo de estrutura de repetio. var j: inteiro para j = 1,100,1 faa escreva no vou mais fazer baguna fim-para

Bruno B. Nasser

You might also like