Você está na página 1de 19

ALGORITMOS

PROF. LOURIVAL lourival@dimap.ufrn.br PRIMEIRA PARTE

CAPTULO 1: INTRODUO 1.1 Lgica e Algoritmo


A lgica a arte de bem pensar. a cincia das formas do pensamento. O raciocnio a forma mais complexa do pensamento e a lgica estuda a correo do raciocnio. Podemos ainda dizer que a lgica tem em vista a ordem da razo, por isso, ela estuda e ensina a colocar ordem no pensamento. O objetivo principal do estudo da lgica de programao a construo de algoritmos coerentes e vlidos. Um algoritmo pode ser definido como uma sequncia de passos que visam atingir um objetivo bem definido. Na medida em que precisamos especificar uma sequncia de passos, precisamos utilizar ordem, ou seja, pensar com ordem, portanto precisamos utilizar lgica. Algoritmos so comuns no nosso cotidiano, como, por exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios e uma sequncia de diversos passos que devem ser fielmente cumpridos para que se consiga fazer o alimento desejado, conforme se esperava antes do incio das atividades (objetivo bem definido). Quando elaboramos um algoritmo devemos especificar aes claras e precisas, que a partir de um estado inicial, aps um perodo de tempo finito, produzem um estado final previsvel e bem definido. Isto significa que o algoritmo fixa um padro de comportamento a ser seguido , uma norma de execuo a ser trilhada, com vistas a alcanar, como resultado final, a soluo de um problema, garantindo que sempre que executado, sob as mesmas condies, produza o mesmo resultado. Programar basicamente construir algoritmos. Um programa computacional consiste na traduo de um algoritmo em uma forma inteligvel para o computador. Algoritmo uma sequncia ordenada e finita de operaes bem definidas e eficazes que, quando executadas sobre dados convenientes, produz uma soluo ou a indicao de que a soluo no pde ser obtida.

1.2 Problema de lgica


Leia cuidadosamente este problema e preencha a tabela seguinte para mostrar a sua soluo. Para um lanche aps o cinema, cinco casais: os Castro, os Lima, os Morais, os Nunes e os Guerra, decidiram comer uma pizza na Cantina Italiana. Cada um dos casais pediu um tipo diferente de pizza (sem ordem especfica): de enchovas, de milho verde, de cogumelo, de cebola e de calabresa, e um tamanho diferente de pizza, que variou de 40, 35, 30, 25 e 20 centmetros de dimetro. Quando vieram as contas, cada casal devia uma quantia diferente de dinheiro por sua pizza, variando em 7,50; 7,00; 6,75; 6,25 e 6,00 reais. Pelas dicas abaixo, voc poder deduzir o tipo e o tamanho de pizza que cada um ordenou, e o preo pago. 1. 2. 3. 4. 5. 6. A pizza que os Morais pediram custou mais de R$6,00. A pizza de 30 cm de dimetro custou R$0,50 a menos do que a pizza de cogumelo, e a pizza de cogumelo custou menos do que a pizza de calabresa. A pizza dos Castro custou mais do que a pizza de 35 cm de dimetro. A dos Lima custou R$0,75 a mais do que a pizza de 25 cm de dimetro. A pizza de enchovas custou R$0.75 a mais do que a pizza de 20 cm de dimetro. A dos Guerra custou R$0,75 a mais do que a pizza de cebola, que no era a mais barata.

CASAL

TIPO

TAMANHO

PREO

1.3 Exemplo de um Algoritmo


Vamos utilizar a nossa linguagem corrente para descrever o comportamento na resoluo de uma determinada atividade, como, por exemplo, a troca de uma lmpada queimada.

Algoritmo
_ acionar o interruptor; _ se a lmpada no acender, ento _ pegar uma escada; _ posicionar a escada embaixo da lmpada; _ buscar uma lmpada nova; _ subir na escada; _ retirar a lmpada queimada; _ colocar a lmpada nova; _ acionar o interruptor; _ enquanto a lmpada no acender, faa _ retirar a lmpada queimada; _ colocar uma lmpada nova; _ acionar o interruptor;

1.4 Exerccios Propostos


1. Um homem precisa atravessar um rio com um barco que possui capacidade para carregar, apenas, ele mesmo, e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafas. Escreva um algoritmo, ou seja, indique todas as aes necessrias para que o homem consiga atravessar o rio sem perder suas cargas. Trs jesutas e trs canibais precisam atravessar um rio; para tal dispem de um barco com capacidade para duas pessoas. Por medidas de segurana, no se deve permitir que em alguma margem a quantidade de jesutas seja inferior de canibais. Elabore um algoritmo indicando as aes que concretizam a travessia com segurana. Elabore um algoritmo que mova trs discos de uma haste para outra, utilizando uma terceira como auxiliar. Os discos so de tamanhos diferentes e os menores so dispostos sobre os maiores (Torre de Hani). Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. Elabore um algoritmo para calcular a mdia parcial de um aluno de Algoritmo aps as trs primeiras avaliaes e dizer a sua situao: aprovado, reprovado ou prova final, e nesse ltimo caso quanto precisa para ser aprovado.

2.

3.

4.

1.5 Programao Estruturada


Programao estruturada a tcnica de construir e formular algoritmos de uma forma sistemtica. Consiste numa metodologia de projeto de programas visando facilitar a escrita, a leitura, a verificao apriori, a manuteno e a modificao de programas. Os algoritmos estruturados utilizam em sua sintaxe um nmero muito limitado de instrues e estruturas bsicas (sequncia, seleo e repetio), que correspondem a formas de raciocnio intuitivamente bvias.

1.6 Formas de representao de algoritmos 1.6.1 Descrio Narrativa


Uso da linguagem natural, como no nosso primeiro exemplo. Temos a inconvenincia da m interpretao, originando ambigidades e imprecises. Vejamos mais um exemplo: a troca de um pneu furado. Analisar as ambigidades e imprecises. Algoritmo - afrouxar ligeiramente as porcas; - suspender o carro; - retirar as porcas e o pneu; - colocar o pneu reserva e as porcas; - abaixar o carro; - dar o aperto final nas porcas.

1.6.2 Fluxograma
Uso de formas geomtricas distintas produzindo aes distintas. Principais figuras: Incio ou fim do fluxograma.

Entrada de dados. Clculo de expresses. Sada de resultados. Tomada de deciso Fluxo. Exemplo: Clculo de uma mdia aritmtica com um teste. Incio m1, m2 m (m1+m2)/2

m >=5 >=5

Aprovado

1.6.3
Uso de

Reprovado Fim 3

Pseudocdigo
linguagem prpria, aproximando-se mais das

linguagens de alto nvel, chamado, tambm de pseudolinguagem, portugus estruturado ou ainda portugol. Uma linguagem natural (portugus, ingls, espanhol, etc.) apresenta o inconveniente da ambigidade de alguns termos, apesar de muitos recursos de comunicao. Uma linguagem de programao apresenta os inconvenientes das poucas instrues existentes (poucos recursos de comunicao) apesar da grande preciso nos comandos. Forma geral: Algoritmo < nome_do_algoritmo > < declarao_de_variveis > Incio < Instrues > Fim Exemplo: Clculo da mdia do exemplo anterior. Algoritmo Mdia_do_aluno Real: m1,m2,media Incio Escreva(Digite as duas notas:) Leia(m1,m2) media (m1+m2)/2 Se (mdia >= 5) ento Escreva (APROVADO) Seno Escreva (REPROVADO) Fim_se Fim Posteriormente, veremos detalhadamente cada item desse algoritmo. A partir desse momento daremos toda ateno, somente, a este tipo de representao de algoritmo. O pseudocdigo no tem os inconvenientes da ambigidade de uma linguagem natural, nem os rigores de uma linguagem de programao de alto nvel. Este tipo de algoritmo um portugus estruturado em frases (comandos) correspondentes as estruturas bsicas de programao.

CAPTULO 2 :

TIPOS DE DADOS

Qualquer trabalho realizado por um computador baseado na manipulao das informaes contidas em sua memria. Estas informaes podem ser classificadas em dois tipos: - as instrues: leituras, atribuies, operaes, etc.; - os dados: valores a serem processados. A memria um conjunto de clulas identificadas univocamente por um nmero chamado endereo (nmero ou posio do byte na memria). 1 clula = 1 byte = 8 bits 1 bit possui 2 estados: 0 e 1 (dgitos binrios). 1 byte possui 28 = 256 estados possveis. Os dados podem ser numricos, literais e lgicos, chamados tipos bsicos. Os dados numricos dividem-se em nmeros inteiros e nmeros reais.

2.1 Dados Numricos


Os nmeros inteiros e os nmeros reais so armazenados de formas diferentes nos computadores. Nmeros inteiros: representados sem parte fracionria e sem ponto (chamado tambm de nmero de ponto fixo). Exemplo: 86 0 -19 23456

Nmeros reais: representados com parte fracionria e com ponto (chamado tambm de nmero de ponto flutuante). Exemplo: 85.3 -9.453 10.0 6. 0.00

2.2 Dados Literais


So sequncias de caracteres contendo letras, dgitos e/ou smbolos especiais. So chamados, tambm, alfanumricos, cadeia de caracteres ou strings. Sero representados nos algoritmos entre aspas. O comprimento de um dado literal a quantidade de caracteres que ele tem. Exemplo: UFRN comprimento 4 comprimento 1 comprimento 0 18/04/99 comprimento 8

2.3 Dados Lgicos


Usados para representar dois nicos valores lgicos possveis: verdadeiro e falso. Representados nos algoritmos na forma: .V. (verdadeiro) e .F. (falso).

2.4 Armazenamento de Dados na Memria 2.4.1 Dados do Tipo inteiro


Ocupa a memria com um nmero de bytes de acordo com a chamada palavra do computador. Num computador de 16 bits ele ocupa 2 bytes, e o inteiro longo ocupa 4 bytes. Nmero inteiro: 2 bytes (- 32768 , 32767 ) Inteiro longo: 4 bytes ( - 2147438648 , 2147438647 )

2.4.2 Dados do Tipo real


Ocupa a memria com o dobro de bytes ocupado pelo tipo inteiro, chamado preciso simples. A preciso dupla ocupa o dobro da preciso simples. Nmero real: 4 bytes ( 1.5E-45 , 3.4E+38 ) Preciso dupla: 8 bytes ( 5.0E-324 , 1.7E+308 )

2.4.3 Dados do Tipo Lgico


Ocupa 1 byte na memria ( .V. ou .F.)

2.4.4 Dados do tipo Literal


Associa a cada caractere um cdigo numrico variando de 0 a 255. Aloca espao contguo de memria igual ao comprimento do literal, destinando um byte para cada caractere da informao. Dentre as diversas tabelas propostas para a representao de caracteres, a de maior aceitao foi a Tabela ASCII ( American Standard Code for Information Interchange ), que corresponde a um conjunto de 256 caracteres numerados de 0 a 255. Exemplo: casa Endereo Informao 1000 c ( 99 ) 1001 a ( 97 ) 1002 s ( 115 ) 1003 a ( 97 )

CAPTULO 3 :

VARIVEIS E EXPRESSES

3.1 Variveis

Varivel uma entidade destinada a guardar dados. Ela possui trs atributos: nome, tipo e informao. O nome de uma varivel tem a funo de diferenci-la das demais. Adotaremos as seguintes regras para o nome: - deve necessariamente comear com uma letra; - no deve conter nenhum smbolo especial, exceto o caractere sublinha. Exemplos: A2 , max , hora_aula , LADO1 , nome_do_aluno O tipo de uma varivel o tipo de dado que ela pode armazenar, e a informao o valor que ela armazena naquele momento. Todas as variveis utilizadas em um algoritmo devem ser definidas (declaradas) antes de serem utilizadas. Uma declarao de variveis uma instruo para reservar uma quantidade de memria apropriada para armazenar o tipo especificado e indicar que o seu contedo ser refenciado pelo nome dado. Utilizaremos a seguinte sintaxe para declarao das variveis nos nossos algoritmos: <tipo> : <lista_de_variveis> Numa mesma linha podero ser definidas uma ou mais variveis do mesmo tipo. Deve-se separ-las por vrgulas. Variveis de tipos diferentes em linhas diferentes. Exemplo: Inteiro : ano , mes , idade Real : salario , troco Lgico : opo , flag Literal[30] : nome , profisso Nesta ltima declarao, o valor 30, entre colchetes, indica o nmero mximo de caracteres que cada varivel (nome ou profisso) pode armazenar.

3.2 Expresses
Expresso uma combinao de variveis, constantes e operadores que, uma vez avaliada, resulta num valor. Operadores so elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Os operadores se classificam quanto ao nmero de operandos em: - binrios ( dois operandos ); - unrios ( um operando ). E quanto ao tipo de dados dos operandos em: - aritmticos; - lgicos; - literais. Temos ainda os operadores relacionais, que um caso especial, pois permitem comparar pares de operandos de tipos de dados iguais (apenas numricos ou literais), resultando sempre um valor do tipo lgico.

3.2.1 Expresses Aritmticas


O resultado da avaliao do tipo numrico ( inteiro ou real ). Operadores aritmticos: Operador Tipo Operao Prioridade + binrio adio 4 subtrao 4 * multiplicao 3 / diviso 3 ** exponenciao 2 + unrio manuteno de sinal 1 inverso de sinal 1 Se todos os operandos da expresso so inteiros, o resultado inteiro. Se todos os operandos da expresso so reais, o resultado real. Se os operandos so mistos ( inteiros e reais ), o resultado da expresso real.

3.2.2 Expresses Lgicas


O resultado da avaliao do tipo lgico ( .V. ou .F. ). Operadores lgicos:

Operador .OU. .E. .NO. Opradores relacionais: Operador = <> < <= > >=

Tipo binrio binrio unrio

Operao disjuno conjuno negao

Prioridade 3 2 1

Comparao igual diferente menor menor ou igual maior maior ou igual

Os operadores relacionais so usados quando se deseja efetuar comparaes entre expresses de mesmo tipo (apenas expresses numricas ou literais, no expreses lgicas), e o resultado sempre um valor lgico.

3.2.3 Expresses Literais


No h padronizao para seus operadores. Vamos considerar apenas o operador de concatenao (+) . Exemplo: sonha + dor resulta sonhador

3.3 Avaliao de Expresses


Regras: a) Observar a prioridade dos operadores ( os de maior prioridade devem ser avaliados primeiros ) . Se houver empate, considera-se a expresso da esquerda para a direita. b) Os parnteses alteram a prioridade, forando a avaliao da subexpresso em seu interior. c) Entre os quatro grupos de operadores existentes a ordem de avaliao : 1) aritmticos 2) literais 3) relacionais 4) lgicos.

3.4 Exemplos
Escrever as expresses matemticas, utilizando os operadores aritmticos dados (como devem ser escritos nos algoritmos). 1) 5x3 + 7x2 3x 1 Resp.: 5.0*x**3 + 7.0*x**2 3.0*x 1.0 x0 + v0t 1 gt2 2 Resp.:

2)

xo + vo*t 0.5*g*t**2

3)

p(p a)(p b)(p c) Resp: (p*(p-a)*(p-b)*(p-c))**(1.0/2.0)


3

4)

( 5x2 + 4x3 )2 Resp.:

(5.0*x**2 + 4.0*x**3)**(2.0/3.0)

5)

( x2 x1 )2 + ( y2 y1 )2
Resp.: ((x2-x1)**2 + (y2-y1)**2)**0.5

6)

-b + b2 4ac 2a Resp: 4 r 3 3 Resp:

(- b + (b * b 4.* a * c)**0.5)/(2 * a)

7)

4.*pi*r**3/3.

8) x-

3a + 2b a - 1 1+ a+b 2x Resp: (3.*a + 2.*b)/(x (a 1.)/(1. + (a + b)/(2.*x)))

9)

(xx+2y + yy+2x )x+y Resp: (x**(x+2.*y)+y**(y+2.*x))**(x+y)

CAPTULO 4 : INSTRUES PRIMITIVAS


So os componentes bsicos que efetuam tarefas essenciais para a operao dos computadores, como entrada e sada de dados e a movimentao dos mesmos na memria.

4.1 Dispositivo de Entrada


o meio pelo qual as informaes so transferidas pelo usurio ou pelos nveis secundrios de memria ao computador. Exemplos: teclado, fitas, discos magnticos, mouse, scanner.

4.2 Dispositivo de Sada


o meio pelo qual as informaes (geralmente os resultados da execuo de um programa) so transferidas pelo computador ao usurio ou aos nveis secundrios de memria. Exemplos: vdeo, impressora, fitas, discos magnticos.

4.3 Sintaxe
a forma como os comandos devem ser escritos, a fim de que possam ser entendidos pelo tradutor de programas.

4.4 Semntica
o significado, ou seja, o conjunto de aes que sero exercidas pelo computador durante a execuo do referido comando.

4.5 Instruo de Atribuio


a principal maneira de se armazenar uma informao numa varivel. Sintaxe : Semntica : < nome_da_varivel > < expresso > 1) avaliao da expresso

2) armazenamento do valor resultante na posio de memria correspondente varivel que aparece esquerda do comando. Importante : Deve haver compatibilidade entre o tipo de dado resultante da avaliao da expresso e o tipo de dado da varivel ( a no ser, propositadamente, com tipos numricos). Exemplos: area base * altura delta b ** 2 - 4.0 * a * c contador contador + 1 nome Caetano Veloso music Dias de Luta + e Flores em Voc w .V. p x > y .E. y > z q (a > = 0 .E. a <= 10) .OU. (a >= 100 .E. a <= 1000)

4.6 Instruo de Entrada de Dados


Sintaxe : Leia ( < lista_de_variveis > ) Semntica : Os dados so fornecidos ao computador por meio de um dispositivo de entrada e armazenados nas posies de memria das variveis cujos nomes aparecem na lista. Exemplo: Leia ( x ) Leia ( a , b , c )

4.7 Instruo de Sada de Dados


Sintaxe : Escreva ( < lista_de_expresses > ) Semntica : Os argumentos so enviados para o dispositivo de sada. No caso de uma lista de variveis, o conjunto de cada uma delas pesquisado na posio de memria correspondente a varivel. No caso de argumento constante(nmero, literal ou lgico) este enviado diretamente ao referido dispositivo. E no caso de expresses, aps sua avaliao, segue como uma constante. Exemplos: Escreva (Programa elaborado pelo aluno Thiago.) Escreva (Digite um nmero inteiro positivo:) Escreva (Lados do tringulo: , L1 , L2 , L3 ) Escreva (Area do circulo = , pi*r**2) Escreva (Area = , x*y, Perimetro = , 2*(x + y))

4.8 Regras Bsicas (Interface com o Usurio: fase de execuo)


1) Toda vez que um programa estiver esperando que o usurio fornea a ele um determinado dado (operao de leitura), ele deve antes enviar uma mensagem dizendo o que o usurio deve digitar, por meio de um instruo de sada. 2) Antes de enviar qualquer resultado ao usurio, um programa deve escrever uma mensagem explicando o significado do mesmo.

4.9 Exemplos de algoritmos


1) Dado o preo unitrio e a quantidade de um produto, imprimir o valor total da compra. Algoritmo Total Real: preco_unit , preco_total Inteiro: quantid Incio Escreva( Programa que calcula o preco de uma certa quantidade de um produto. )

Esvreva( Digite o preco unitrio e a quantidade: ) Leia( preco_unit , quantid ) preco_total preco_unit * quantid Escreva( Preco total = , preco_total ) Fim

2) Calcular a rea e o permetro de um retngulo, sendo dados as medidas dos lados.


Algoritmo Retngulo Real: L1 , L2 , area , perimetro Incio Escreva( Digite as medidas dos lados do retangulo: ) Leia( L1 , L2 ) area L1 * L2 perimetro 2 * (L1 + L2) Escreva( O valor da area : , area ) Escreva( O valor do perimetro : , perimetro ) Fim

3) Calcular o valor da funo f(x) = ( 3x - 1 ) / 5 nos extremos do intervalo [a , b] (dados os valores de a e b),
e em mais dois valores do seu interior, de modo que os quatros valores do intervalo estejam igualmente espaados. Algoritmo Valor_de_uma_funo Real: a , b, h , y1 , y2 , y3 , y4 Incio Escreva( Entre com dois nmeros distintos na ordem crescente: ) Leia( a , b ) h ( b - a ) / 3. y1 ( 3. * a - 1. ) / 5. y2 ( 3. * ( a + h ) - 1. ) / 5. y3 ( 3. * ( b - h ) - 1. ) / 5. y4 ( 3. * b - 1. ) / 5. Escreva( x = , a, y = , y1) Escreva( x = , a + h, y = , y2) Escreva( x = , b - h, y = , y3) Escreva( x = , b, y = , y4) Fim 4) Algoritmo para dizer a soma de cinco nmeros com , no mximo, 4 dgitos, antes mesmo das cinco parcelas serem digitadas. Algoritmo Advinha Inteiro: x Incio Escreva ( Digite um nmero com 4 algarismos: ) Leia ( x ) Escreva ( O resultado da nossa conta ser: , 19998+x ) Escreva ( Digite o segundo nmero com 4 dgitos: ) Leia ( x ) Escreva ( O meu nmero <terceiro> : , 9999 - x ) Escreva ( Digite o quarto nmero com 4 dgitos: ) Leia ( x ) Escreva ( Finalmente o quinto nmero : , 9999 - x ) Fim

4.10 Rastreamento de um algoritmo


10

O rastreamento de um algoritmo consiste na execuo manual, com dados representativos para registrar os valores tomados pelas variveis em cada passo do algoritmo. Para facilitar o acompanhamento, colocamos todos os dados numa tabela de variveis, mostrando o processamento e tambm a sada do algoritmo. Devemos fazer tantos testes quantos forem necessrios para nos convencermos de que o algoritmo est perfeito.

Exemplo de um rastreamento do algoritmo do exemplo 4) acima:


x 3452 1538 5172 Sada Digite um nmero com 4 algarismos: 3452 O resultado da nossa conta ser: 23450 Digite o segundo nmero com 4 dgitos: 1538 O meu nmero <terceiro> : 8461 Digite o quarto nmero com 4 dgitos: 5172 Finalmente o quinto nmero : 4827

Exemplo de um rastreamento do algoritmo do exemplo 3) acima:


a 4.0 Sada: Entre com dois nmeros distintos na ordem crescente: 4.0 8.5 x = 4.0 y = 2.2 x = 5.5 y = 3.1 x = 7.0 y = 4.0 x = 8.5 y = 4.9 b 8.5 h 1.5 y1 2.2 y2 3.1 y3 4.0 y4 4.9

4.11 Exerccios propostos


1. Encontrar o consumo mdio de um veculo, conhecidos a distncia total e o volume de combustvel
consumido para percorrer tal distncia.

2. Calcular a mdia parcial de um aluno da UFRN, dadas as suas trs primeiras


notas.

3. Calcular o valor da funo f(x,y) = 3x2 + 2y2 - xy em um ponto qualquer do plano cartesiano. 4. Leia uma temperatura em graus centgrados e imprima a equivalente em graus farheneit ( F = 9C/5 + 32). 5. Leia uma quantidade de chuva dada em polegadas e imprima a equivalente em milmetros ( 1 polegada = 25,4
milmetros ).

CAPTULO 5 :

CONTROLE DE FLUXO DE EXECUO

Controle de fluxo de execuo a sequncia em que as instrues so executadas num algoritmo.

5.1 Comando Composto


um conjunto de comandos simples como atribuio, entrada, sada ou algumas construes (estruturas) apresentadas a seguir.

5.2 Estrutura Sequencial


11

Cada comando executado somente aps o trmino do comando anterior.

5.3 Estrutura de Deciso


O fluxo de instruo a ser seguido escolhido em funo do resultado da avaliao de uma ou mais condies. Classificao quanto ao nmero de condies: - uma condio ( deciso simples ) : estrutura do SE - vrias condies ( deciso mltipla ) : estrutura do ESCOLHA

5.3.1 Estrutura de Deciso do Tipo SE.


Sintaxe: Se ( < condio > ) ento < comando1 > seno < comando2 > Fim_se Semntica: A condio avaliada. Se o resultado for verdadeiro ento comando1 executado e o fluxo do algoritmo prossegue com o primeiro comando aps o Fim_se. Se o resultado for falso, ento comando2 executado e, ao trmino do mesmo, o fluxo de execuo prossegue com o primeiro comando aps Fim_se. H casos em que seno comando2 omitido. Dessa forma, quando a condio falsa, o fluxo de execuo prossegue normalmente para a primeira instruo aps o Fim_se, como se o comando Se no existisse. ou Se ( < condio > ) ento < comando1 > Fim_se

5.3.1.1 Exemplos
1) Determinar se uma pessoa maior ou menor de idade. Algoritmo Maioridade Inteiro: idade Incio Escreva( Digite a idade (maior do que zero): ) Leia( idade ) Se (idade > 0) ento Se ( idade >= 18 ) ento Escreva ( Maior de idade. ) seno Escreva( Menor de idade. ) Fim_se Seno Escreva ( Idade incorreta. ) Fim_se Fim Rastreamento: idade 35 Vamos testar o algoritmo para idade igual a 35. sada: Digite a idade: 35 Maior de idade.

2) Calcular o quociente e o resto de uma diviso inteira.

12

Algoritmo Diviso Inteiro: x,y,quo,res Incio Escreva ( Digite dois nmeros inteiros:) Leia (x,y) Se (y <> 0) ento quo x / y res x quo * y Escreva (Quociente = , quo, Resto = , res ) seno Escreva (No existe diviso por zero.) Fim_se Fim

5.3.1.2 SEs Aninhados ou Encaixados


Uma alternativa pode envolver outras decises. Exemplo: Dados trs nmeros, determinar o maior e o menor entre eles. Algoritmo Max_min Real: a, b, c, max, min Incio Escreva (Digite tres numeros: ) Leia (a, b, c) Se ( a < b ) ento Se ( b < c ) ento min a max c seno max b Se ( a < c ) ento min a seno min c Fim_se Fim_se seno Se ( b > c ) ento min c max a seno min b Se ( a > c ) ento max a seno max c Fim_se Fim_se Fim_se Escreva (Maior numero = , max) Escreva (Menor numero = , min) Fim

5.3.2 Estrutura de Deciso do Tipo ESCOLHA


Sintaxe: Escolha(<expresso>) Caso(<condio1>)faa

13

<comando1> Caso(<condio2>)faa <comando2> . . . Caso(<condiot>)faa <comandot> seno <comandok> Fim_escolha A expresso deve assumir um valor e cada uma das condies deve ser com respeito a expresso. Aps a execuo de qualquer dos comandos, o fluxo de execuo passa para o primeiro comando aps Fim_escolha.

5.3.2.1 Exemplo
1) Programa que simula uma calculadora com as quatro operaes aritmticas. Algoritmo Calculadora Real: num1,num2 Literal[2]: op Inicio Escreva(Digite um numero, o operador e outro numero: ) Leia(num1,op,num2) Escolha(op) Caso(op=+)faa Escreva(num1,op,num2, =, num1+num2) Caso(op= )faa Escreva(num1,op,num2, =, num1 num2) Caso(op=* )faa Escreva(num1,op,num2, =,num1* num2) Caso(op= / )faa Se(num2<>0)ento Escreva(num1,op,num2, =,num1/ num2) Seno Escreva(No existe diviso por zero.) Fim_se Seno Escreva(Operador desconhecido.) Fim_escolha Fim

5.4 Estrutura de Repetio


Uma estrutura de repetio tem por objetivo repetir um trecho de programa um certo nmero de vezes. tambm chamada de lao. Os laos podem ser contados ou condicionais. Os laos contados possuem um nmero de repeties conhecido. a estrutura de repetio do tipo PARA FAA. Os laos condicionais possuem um nmero indeterminado de repeties, dependendo de uma condio. Com a condio no incio do trecho, temos a estrutura de repetio do tipo ENQUANTO FAA. Com a condio no final do trecho, temos a estrutura de repetio do tipo REPITA AT.

5.4.1 Estrutura de Repetio do Tipo PARA FAA


Sintaxe: Para <var> de <ini> at <fim> passo <inc> faa <comando>

14

Fim_para var necessariamente uma varivel inteira (varivel de controle do lao). ini, fim e inc, so expresses inteiras (constantes, variveis ou expresses). Costumamos omitir passo <inc> quando inc 1. var assume inicialmente o valor de ini e testa se no ultrapassou o valor de fim. Caso afirmativo o trecho a ser repetido (comando) executado e var incrementado do valor inc, e novamente feito o teste. Caso o teste seja negativo (em algum momento ser) a repetio chega ao seu final e a sequncia de execuo prossegue.

5.4.1.1 Exemplo
1) Clculo do fatorial de um nmero inteiro no-negativo. Algoritmo Fatorial Inteiro: num,k,fat Incio Escreva(Digite um nmero:) Leia(num) Se(num >= 0)ento fat 1 Para k de 2 at num faa fat fat*k Fim_para Escreva(Fatorial de, num, igual a ,fat) Seno Escreva(No existe fatorial de nmero negativo.) Fim_se Fim

5.4.2 Estrutura de Repetio do Tipo ENQUANTO FAA


Sintaxe: Enquanto (<expresso lgica>)faa <comando> Fim_enquanto Se o valor lgico de expresso lgica verdadeiro, ento o trecho (comando) ser executado, e novamente expresso lgica avaliada, e assim por diante. Quando o valor de expresso lgica falso, a execuo segue para a instruo aps Fim_enquanto. No trecho a ser repetido, a expresso lgica deve ser alterada para que no tenhamos um lao infinito.

5.4.2.1 Exemplo
1) Clculo do mdc entre dois nmeros inteiros positivos. Algoritmo MDC Inteiro: a, b Incio Escreva (Digite dois numeros inteiro positivos: ) Leia (a,b) Se ( a>0 .e. b>0 ) ento Enquanto ( a< > b ) faa Se ( a > b ) ento a ab seno b ba Fim_se Fim_enquanto

15

Escreva ( mdc = , a) Seno Escreva (Dados incorretos.) Fim_se Fim

5.4.3 Estrutura de Repetio do Tipo REPITA AT


Sintaxe: Repita <comando> At (<expresso lgica>) Como o critrio de parada fica no final da estrutura, o trecho a ser repetido executado, sempre, pelo menos, uma vez. O lao chega ao seu final, quando o valor de expresso lgica verdadeiro, o contrrio do comando Enquanto-faa.

5.4.3.1 Exemplo
1) Imprimir os divisores de um nmero inteiro positivo dado. Algoritmo Divisores Inteiro: num, div Incio Repita Escreva (Digite um numero inteiro positivo: ) Leia (num) At (num > 0) Escreva (Divisores do nmero , num) div 1 Repita Se ( num / div * div = num) ento Escreva (div) Fim_se div div + 1 At (div > num) Fim

5.5 Exerccios Propostos


Faa algoritmos para resolver os problemas abaixo. 1. 2. Calcular a soma dos nmeros pares entre 15 e 55. Calcular a soma dos nmeros mpares compreendidos entre dois outros nmeros inteiros dados (no inclulos na soma). Dado um nmero inteiro positivo maior que 1, dizer se ele primo ou no. Imprimir o maior, o menor e a mdia aritmtica de n nmeros quaisquer dados. Imprimir os n primeiros nmeros da Sequncia de Fibonacci ( 1 1 2 3 5 8 13 21 ). Calcular a soma de todos os mltiplos de um certo nmero inteiro dado compreendido entre dois outros nmeros inteiros tambm dados (no inclu-los na soma).

3. 4. 5. 6.

16

CAPTULO 6 :

EXEMPLOS DE ALGORITMOS

1. A multa por excesso de velocidade baseada em quanto voc se excedeu alm do limite mximo permitido. Supe-se que a multa seja computada da seguinte forma: velocidade acima do limite(km/h) ............................ multa 1 a 10 ............................. R$ 10,00 11 a 20 ............................. R$ 20,00 21 a 30 ............................ R$ 30,00 31 a 40 ............................ R$ 40,00 41 ou mais ........................... R$ 50,00 Dados o limite de velocidade e a velocidade com que voc vinha, qual o valor de sua multa? Algoritmo Velocidade Inteiro: lim_vel, vel_mot, dif_vel, aux Real: multa Inicio Escreva ( Digite o limite mximo permitido: ) Leia ( lim_vel ) Escreva ( Digite a velocidade com que vinha o motorista: ) Leia ( vel_mot ) Se ( vel_mot > lim_vel ) ento dif_vel vel_mot - lim_vel aux ( dif_vel - 1 ) / 10 Escolha ( aux ) Caso ( aux = 0 ) faa multa 10.00 Caso ( aux = 1) faa multa 20.00 Caso ( aux = 2 ) faa multa 30.00 Caso ( aux = 3 ) faa multa 40.00 Seno multa 50.00 Fim_escolha Escreva (Valor da multa = , multa ) Seno Escreva (No existe multa.) Fim_se Fim

2. Clculo do mximo divisor comum entre dois nmeros dados. Algoritmo MDC Inteiro: a,b,r Incio Escreva (Digite dois nmeros inteiros: ) Leia ( a, b ) Se ( a < 0 ) ento a-a Fim_se Se ( b < 0 ) ento b-b

17

Fim_se Enquanto ( b <> 0 ) faa r a - a/b*b ab br Fim_enquanto Escreva ( MDC = , a ) Fim

3. Imprime os divisores de um nmero inteiro dado. Algoritmo Divisores Inteiro: num,div Incio Repita Escreva (Digite um nmero inteiro positivo) Leia ( num ) At ( num > 0 ) Escreva ( Divisores do nmero , num ) Para div de 1 at num faa Se ( num/div*div = num ) ento Escreva ( div ) Fim_se Fim_para Fim

4. Imprime o maior, o menor e a mdia aritmtica de n nmeros dados. Algoritmo Maior_menor Real: x, maior, menor, mdia Inteiro : n , i Incio Escreva (Digite a quantidade de nmeros ) Leia ( n ) Escreva ( Digite o primeiro nmero : ) Leia ( x ) menor x maior x media x Para i de 2 at n faa Escreva ( Digite mais um nmero ) Leia ( x ) Se ( x > maior ) ento maior x Seno Se ( x < menor ) ento menor x Fim_se Fim_se media media + x Fim_para media media / n Escreva ( Maior nmero = , maior ) Escreva ( Menor nmero = , menor ) Escreva ( Media aritmetica = , media ) Fim

18

5.Clculo do fatorial de um nmero inteiro no-negativo. Algoritmo Fatorial Inteiro: numero, fatorial, aux Incio Escreva ( Digite um nmero inteiro no-negativo ) Leia ( numero ) Se ( numero >= 0 ) ento fatorial 1 aux 2 Enquanto ( aux <= numero) faa fatorial fatorial * aux aux aux + 1 Fim_enquanto Escreva ( Fatorial de , numero, = , fatorial ) Seno Escreva ( No existe fatorial de nmero negativo) Fim_se Fim

*********** Fim da matria para a primeira avaliao****************

19

Interesses relacionados