Escolar Documentos
Profissional Documentos
Cultura Documentos
CASAL
TIPO
TAMANHO
PREO
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;
2.
3.
4.
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.
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
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.
Operador .OU. .E. .NO. Opradores relacionais: Operador = <> < <= > >=
Prioridade 3 2 1
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.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)
4)
(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 + (b * b 4.* a * c)**0.5)/(2 * a)
7)
4.*pi*r**3/3.
8) x-
9)
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.
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)
Esvreva( Digite o preco unitrio e a quantidade: ) Leia( preco_unit , quantid ) preco_total preco_unit * quantid Escreva( Preco total = , preco_total ) 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
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.
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 :
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.
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
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
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.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
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
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
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
19