36
Algoritmos e Programação Prof. Marcos Saúde [email protected]

Algop - aula 04 pascal 1

Embed Size (px)

DESCRIPTION

Material de apoio para Algoritmos e Programação da Faculdade Pitágoras em Linhares – 2010

Citation preview

Page 1: Algop - aula 04 pascal 1

Algoritmos e Programação

Prof. Marcos Saú[email protected]

Page 2: Algop - aula 04 pascal 1

Linguagem Algorítmica A seguir, respostas dos exercícios

propostos na AULA 03 (aula anterior – Estruturas de Decisão – comando de seleção se ... então ... senão), na linguagem Pascal:

Page 3: Algop - aula 04 pascal 1

Exercício 01Algoritmo Maior;

inteiro num1, num2;Inicio

Escrever("Digite um número inteiro:");Ler(num1);

Escrever("Digite outro número inteiro:");Ler(num2);

Se (num1 > num2) EntãoEscrever(num1," é o maior.");

senãoEscrever(num2," é o maior.");

fimSe;fim.

Page 4: Algop - aula 04 pascal 1

Exercício 02

Algoritmo Maior_Menor;inteiro A, B, C; // pode ser A,B,C:inteiro; tanto

fazinicio

Escrever("Digite o número A:");Ler(A);

Escrever("Digite o número B:");Ler(B);

Escrever("Digite o número C:");Ler(C);

Page 5: Algop - aula 04 pascal 1

Exercício 02-ContinuaçãoSe (A > B) então

Se (B > C) então// neste caso A > B > C Escrever("A é o maior e C é o menor número.")Senão // neste caso C > B

Se (A > C) então // se for verdadeiro, A > C > B Escrever("A é o maior e B é o menor

número."); Senão // C > A > B Escrever("C é o maior e B é o menor

número."); FimSe;

FimSe;

Senão // continua no próximo slide

Page 6: Algop - aula 04 pascal 1

Exercício 02-ContinuaçãoSenão // neste caso B > A

Se (A > C) então // neste caso B > A > C

Escrever("B é o maior e C é o menor número."); Senão // neste caso C > A

Se (B > C) // se for verdadeiro, B > C > A Escrever("B é o maior e A é o menor número."); Senão // C > B > A Escrever("C é o maior e A é o menor número."); FimSe;

FimSe;

FimSe;Fim. // fim do programa Maior_Menor

Page 7: Algop - aula 04 pascal 1

Exercício 03 e 04

Algoritmo Triangulo;real S1, S2, S3, A, B, C;

inicioEscrever("Digite o lado S1:");Ler(S1);

Escrever("Digite o lado S2:");Ler(S2);

Escrever("Digite o lado S3:");Ler(S3);

Page 8: Algop - aula 04 pascal 1

Exercício 03 e 04 - Continuação

// descobrir o maior dos lados e guardar na variável A (as variáveis B e C guardam os outros lados)Se ((S1 > S2) E (S1 > S3)) Então // se S1 for o maiorinicio A = S1; B = S2; C = S3;fimsenãoinicio Se ((S2 > S1) E (S2 > S3)) Então // se S2 for o maior inicio A = S2; B = S1; C = S3; fim senão // S3 é o maior inicio A = S3; B = S1; C = S2; FimSe; FimSe;

Page 9: Algop - aula 04 pascal 1

Exercício 03 e 04 - Continuação

// Constatar o tipo do triângulo e exibir mensagem Se (A >= (B + C)) Então Escrever("Nenhum triângulo é formado") Senão

Se (A^2 == (B^2 + C^2)) Então Escrever("Triângulo retângulo") Senão

Se (A^2 > (B^2 + C^2)) Então Escrever("Triângulo obtusângulo") Senão Escrever("Triângulo acutângulo"); FimSe;

FimSe;

FimSe;Fim.

Page 10: Algop - aula 04 pascal 1

Exercício 05Algoritmo Indice_Poluicao;

real indice;inicio

Escrever("Digite o índice de poluição:"); Ler(indice);

Se (indice < 0.30) Então Escrever("Indice aceitável.") Senão Se (indice > 0.50) Então Escrever("As indústrias A, B e C devem ser notificadas.") Senão

Se (indice > 0.40) Então Escrever("As indústrias A e B devem ser notificadas.") Senão Escrever("A indústria A deve ser notificada."); FimSe;

FimSe;

FimSe;Fim.

Page 11: Algop - aula 04 pascal 1

Exercício 06Algoritmo Soma_Ou_Multiplica;

A, B, C :inteiro; // declaração de variáveis no padrão Pascalinicio

Escrever("Digite um número inteiro:");Ler(A);

Escrever("Digite outro número inteiro:");Ler(B);

Se (A = B) Então C := A + B // atribuição pode ser := (padrão Pascal) Senão C := A * B;

FimSe;

Escrever("O resultado é “, C);Fim.

Page 12: Algop - aula 04 pascal 1

Exercício 07

Algoritmo Dobro_Ou_Triplo;numero:inteiro;

InicioEscrever("Digite um número inteiro:");Ler(numero);

Se (numero > 0) Então // caso seja positivoEscrever("O dobro é “, numero * 2);

Senão // caso seja negativoEscrever("O triplo é “, numero * 3);

FimSe;Fim.

Page 13: Algop - aula 04 pascal 1

Exercício 08Algoritmo Peso_Ideal;

altura, peso:real;sexo:caracteres;

Inicio Escrever("Digite a altura:"); Ler(altura);

Escrever("Digite o sexo (F ou M):"); Ler(sexo);

Se (sexo == "F") Então peso = (72.7 * altura) - 58 Senão peso = (62.1 * altura) - 44.7; FimSe;

Escrever("O peso ideal é “, peso);Fim.

Page 14: Algop - aula 04 pascal 1

Exercício 09Algoritmo IMC;

altura, peso, IMC:real;Inicio

Escrever("Digite a altura:"); Ler(altura);

Escrever("Digite o peso:"); Ler(peso);

IMC = peso / (altura*altura);

Se (IMC < 18.5) Então Escrever("Abaixo do peso.") Senão Se ((IMC >= 18.5) && (IMC < 25)) Então Console.WriteLine("Peso normal;“) Senão Se ((IMC >= 25) && (IMC < 30)) Então Escrever("Acima do peso.") Senão Escrever("Obeso."); FimSe;

FimSe; FimSe;

Fim.

Page 15: Algop - aula 04 pascal 1

Exercício 10Algoritmo Situacao_Aluno;

identificacao:caracteres;nota1, nota2, nota3, ME, Media_Aproveitamento:real;

inicio Escrever("Digite o número de identificação do aluno:"); Ler(identificacao);

Escrever("Digite a primeira nota:"); Ler(nota1);

Escrever("Digite a segunda nota:"); Ler(nota2);

Escrever("Digite a terceira nota:"); Ler(nota3);

Escrever("Digite a Média dos Exercícios:"); Ler(ME);

Media_Aproveitamento := (nota1 + nota2 * 2 + nota3 * 3 + ME) / 7; Escrever("Número do Aluno: " + identificacao); Escrever("Nota01: " + nota1);

Escrever("Nota02: " + nota2); Escrever("Nota03: " + nota3); Escrever("Médias dos exercícios: " + ME); Escrever("Média de Aproveitamento: " + Media_Aproveitamento);

Page 16: Algop - aula 04 pascal 1

Exercício 10 - Continuação Se (Media_Aproveitamento >= 90) Então Escrever("Conceito A - Aprovado") Senão

Se ((Media_Aproveitamento >= 75) && (Media_Aproveitamento < 90)) Então Escrever("Conceito B - Aprovado") Senão

Se ((Media_Aproveitamento >= 60) && (Media_Aproveitamento < 75)) Então Escrever("Conceito C - Aprovado") Senão

Se ((Media_Aproveitamento >= 40) && (Media_Aproveitamento < 60)) Então Escrever("Conceito D - Reprovado") Senão Escrever("Conceito E - Reprovado"); FimSe;

FimSe;

FimSe;Fim.

Page 17: Algop - aula 04 pascal 1

Sintaxe de um Programa

Todo programa em PASCAL deve ter a seguinte forma:program <nome>;<bloco>.

Onde:<nome> - nome do programa<bloco> - corpo do programa

Page 18: Algop - aula 04 pascal 1

Bloco do programa O <bloco> é formado por:

declaraçõesbegin

seqüência de comandosend

E as declarações de variáveis:

var lista-de-variáveis: tipo;

onde tipo=integer, real, boolean, string, char.

Page 19: Algop - aula 04 pascal 1

Comentários Usado apenas para aumentar a clareza do

programa, não é analisado pelo computador:

{ comentário } ou (* comentário *)

var matr: string; { nr. de matricula } nota: real; { nota de prova

} cod: integer; (*código do curso*)

Page 20: Algop - aula 04 pascal 1

Expressões

Aritméticas Lógicas Literais

Page 21: Algop - aula 04 pascal 1

Expressões Aritméticas Ordem de prioridade:

1a: *, /, div, mod 2a: +, -

div - quociente da divisão inteira mod - resto inteiro da divisão inteira

exemplo1: x = 11 div 4 = 2, y = 11 mod 4 = 3exemplo2: u = sqrt(p*(p-a)*(p-b)*(p-c))

exemplo3: v = exp(b*ln(a)) = eb*ln a

Page 22: Algop - aula 04 pascal 1

Expressões Lógicas Relações

A<>B, nome=´João´, a<0, x>1 Operadores lógicos

p and q, p or q, not p Ex: (idade>25) and (nome =´Maria´) Prioridade dos operadores lógicos e aritméticos

1a: not 2a: *, /, div, mod, and 3a: +, -, or 4a: =, <>, <, <=, >=, >

Page 23: Algop - aula 04 pascal 1

Comando de Atribuição Identificador := expressão

var A, B, X, Y: integer;K, Media: real;teste: boolean;cor: string;

K:=1;A:=K;Media := A+B/2;teste := (X=0) and (Y<>2);cor := ‘verde’;

Page 24: Algop - aula 04 pascal 1

Entrada e Saída (E/S) As ações que executam estas tarefas são:

Obter dados: leia(dado1, …, dadon);

Apresentar dados: escreva(dado1, …, dadon);

Exemplos: leia(NOME, IDADE); leia(PRODUTO, QUANTIDADE, VALOR); escreva(SOMA, MÉDIA); escreva(“Nome: ”, NOME, “Idade: ”, IDADE);

Page 25: Algop - aula 04 pascal 1

E/S

leia(A, B, C)

leiaA, B, C

escreva(A, B, C)

escrevaA, B, C

Pseudocódigo

Fluxograma

Pascalwrite(A, B, C)

ouwriteln(A, B, C)

read(A, B, C)ou

readln(A, B, C)

Page 26: Algop - aula 04 pascal 1

Comandos de Entrada e Saída Escrita

var n, p: string; x, a: integer;

beginx := 0;read (n,a);x := x + a; p := n;write (p,x);a := x + a;writeln (a);x := x + a;write (n, x, a);

end.

Entrada:Joao 25

Saída ?

Page 27: Algop - aula 04 pascal 1

Comandos de Entrada e Saída

Formatação na escrita

program formata;var a,b: real;begin

a:=3.2; b:=5.81; write (a:4:2, ‘+’, b:5:2, ‘=‘ , a+b:7:3);

end.

Saída=3.20+5.81=9.010

Page 28: Algop - aula 04 pascal 1

Exemplo do programa para calcular a área do triângulo retângulo:

Mapeando Programas para Pascal

Linguagem AlgorítmicaAlgoritmo Area_Triangulo; base, altura, área: real;Inicio escrever(“Digite a altura do triângulo:”); ler (altura); escrever(“Digite a base do triângulo:”); ler(base); área (altura*base)/2; escreva (área);fim

PascalProgram Area_Triangulo; var area, altura, base: real;begin write (‘Digite a altura do triangulo: ‘); Readln(altura); write (‘Digite a base do triangulo: ‘); Readln(base); area := altura*base/2; write (‘A área do triângulo é igual a: ‘,area);End.

Observe que as instruções read e write servem para ler dados fornecidos pelo usuário e para escrever informações na tela, respectivamente. Estas duas instruções podem ser seguidas por ln e, neste caso uma linha será pulada na tela após a execução da instrução.

Page 29: Algop - aula 04 pascal 1

Tipos de variáveis Integer (Inteiro):

de -32768 a 32767. Real (Real):

positivos de 3.4x10-38 a 3.4x1038. Suportam notação científica:

452.13 = 4.5213e2 char (caractere):

usam ‘’ para serem designados: 'a' 'B' '+' valores entre 0 e 255

é diferente de um número inteiro boolean (lógico):

podem ser TRUE ou FALSE

Page 30: Algop - aula 04 pascal 1

Importante: Identação! Qual dos códigos abaixo é mais legível?

program visual; var alpha,beta:real; begin alpha := a + b; beta:= b / a end.

program visual; var alpha, beta : real;begin alpha := a + b; beta := b / aend.

(1)

(2)

Page 31: Algop - aula 04 pascal 1

Tabela verdade de operadores booleanos

Operadores:not: negação and: conjunção or : disjunção

Page 32: Algop - aula 04 pascal 1

Condição - Linguagem Pascal

program condicao;var A, B, C, menor: real;begin readln(A,B,C);

if (A<B) and (A<C) then menor:=A

else if B<C then

menor:=Belse

menor:=C;write (menor);

end.

simples

if condicao thenbloco;

composta

if condicao thenbloco1

elsebloco2;

sem ‘;’

Page 33: Algop - aula 04 pascal 1

Exemplos Algoritmo que lê dois números e escreve a soma dos mesmos:

Algoritmo Soma;num1,num2,soma:inteiro;

InicioEscrever(“Digite um número:”);Ler(num1);

Escrever(“Digite outro número:”);Ler(num2);

soma := num1 + num2;

Escrever(“A soma é “, soma);Fim.

(como fica no Pascal? – próximo slide)

Page 34: Algop - aula 04 pascal 1

Exemplos Algoritmo que lê dois números e escreve a soma dos mesmos em

Pascal:

program soma; uses crt; {usado para ampliar as funcionalidades do programa} var num1, num2,soma:integer;begin write('Digite um número:'); readln(num1);

write('Digite outro número:'); readln(num2);

soma := num1 + num2;

writeln('A soma é ',num1 + num2); readkey; {Congela tela aguardando o usuário pressionar uma tecla}end.

Page 35: Algop - aula 04 pascal 1

Exercício 07 da Aula 03 Algoritmo que lê um número e informa o dobro se o número

for positivo, e o triplo se o número for negativo:

program Dobro_Ou_Triplo; uses crt; var numero:integer;begin

write('Digite um número:'); readln(numero);

if (numero > 0) then writeln('O dobro é ',numero*2) else writeln('O triplo é ',numero*3); readkey;

end.

Page 36: Algop - aula 04 pascal 1

Atividade

Estudar as resoluções dos exercícios propostos na AULA 03 em Linguagem Algorítmica (expostos no início desta aula) e transcrevê-los em Pascal (sugestão de ferramenta para desenvolver em Pascal – FreePascal, é gratuito, sendo possível baixá-lo na Internet);