Académique Documents
Professionnel Documents
Culture Documents
PRIMEIRA PARTE
CAPTULO 1 :
INTRODUO
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
2.
3.
4.
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.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.
m >=5
Aprovado
Reprovado Fim
1.6.3 Pseudocdigo
Uso de linguagem prpria, aproximando-se mais das linguagens de alto nvel, chamado, tambm de pseudolinguagem 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 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.
5
O pseudocdigo no tem os inconvenientes da ambigidade de uma linguagem natural, nem os rigores de uma linguagem de programao de alto nvel. 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. A grosso modo, estas informaes podem ser classificadas em dois tipos: - as instrues: leituras, atribuies, operaes, etc.; - os dados propriamente dito: valores a serem processados. A memria um conjunto de clulas identificadas univocamente por um nmero chamado endereo. 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
18/04/99
Exemplo:
casa
Informao c ( 99 ) a ( 97 ) s ( 115 ) 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.
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.
> >=
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.: xo + vo*t 0.5*g*t**2
2)
3)
10
Resp:
3
(p*(p-a)*(p-b)*(p-c))**(1.0/2.0)
4)
( 5x2 + 4x3 )2
Resp.: (5.0*x**2 + 4.0*x**3)**(2.0/3.0)
5)
( x2 x1 )2 + ( y2 y1 )2 ((x2-x1)**2 + (y2-y1)**2)**0.5
Resp.: 6)
7)
4 r3 3 Resp: 4.*pi*r**3/3.
8)
9)
11
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.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.
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 )
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))
13
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
14
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
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 y4 4.0
4.9
15
CAPTULO 5 :
16
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. Fim_se ou Se ( < condio > ) ento < comando1 >
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: Vamos testar o algoritmo para idade igual a 35. idade sada: 35 Digite a idade: 35 Maior de idade.
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
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
18
max a seno max c Fim_se Fim_se Fim_se Escreva (Maior numero = , max) Escreva (Menor numero = , min) Fim
Sintaxe: Escolha(<expresso>) Caso(<condio1>)faa <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)
19
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.1.1 Exemplo
1) Clculo do fatorial de um nmero inteiro no-negativo.
20
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 Escreva ( mdc = , a) Seno
21
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)
22
Fim
1. Calcular a soma dos nmeros pares entre 15 e 55. 2. Calcular a soma dos nmeros mpares compreendidos entre dois outros nmeros inteiros dados (no inclu-los na soma). 3. Dado um nmero inteiro positivo maior que 1, dizer se ele primo ou no. 4. Imprimir o maior, o menor e a mdia aritmtica de n nmeros quaisquer dados. 5. Imprimir os n primeiros nmeros da Sequncia de Fibonacci ( 1 1 2 3 5 8 13 21 ). 6. 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).
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
23
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
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 Fim_se Enquanto ( b <> 0 ) faa r a - a/b*b ab br Fim_enquanto Escreva ( MDC = , a ) Fim
24
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
25
media media + x Fim_para media media / n Escreva ( Maior nmero = , maior ) Escreva ( Menor nmero = , menor ) Escreva ( Media aritmetica = , media ) Fim
26