Buscar

Diretrizes para construção de algoritmos

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Clique para editar o estilo do título mestre
Clique para editar o estilo do subtítulo mestre
*
*
*
Lógica de Programação
Profª Soraia Rocha
*
*
*
Diretrizes para construção de algoritmos
Identificação do problema;
Identificação das “entradas de dados”;
Identificação das “saídas de dados”;
Identificação de regras do problema;
Determinar o que fazer para transformar as “entradas” em “saídas” - Processamento;
Obedecer regras e limitações;
Determinar ações possíveis de serem realizadas.
Construção do algoritmo;
Teste de solução.
*
*
*
O Primeiro Programa
Problema
Efigênia e Cristóvão querem calcular a média de dois números inteiros por meio de um computador
Eles sabem como calcular média à mão, mas não sabem usar computador
Para tanto, pediram ajuda da Turma INF 1304
*
*
*
O Primeiro Programa
Solução
A média é uma estatística muito utilizada na prática, quando se quer representar por apenas um valor um conjunto de valores numéricos
Uma forma fácil de estimar a média de um conjunto de dados numéricos é somar todos os dados e, depois, dividir essa soma pelo número de dados do conjunto
No nosso caso, temos apenas dois dados o que torna a solução mais fácil ainda 
*
*
*
Algoritmo da Solução
Entre com os dois números no computador
Calcule a soma dos dois números
Calcule a média dos números
Imprima a média
*
*
*
O Alfabeto do Pascal
Palavras-chaves
Elas são:
div, mod, nil, in, or, and, not, if, then, else, case, of, repeat, until, while, do, for, to, downto, begin, end, with, goto, const, var, type, array, record, set, file, function, procedure, label, packed, program
As palavras-chaves da linguagem Pascal são reservadas
A linguagem Pascal não distingue letras maiúsculas de minúsculas
*
*
*
Números
Os números podem ser representados em Pascal em duas formas:
inteiros
reais
Um número inteiro pode ser positivo, negativo ou zero
Um número inteiro é escrito como uma seqüência de dígitos que pode ser precedida por um sinal, + ou -
*
*
*
Identificadores
Exemplos de identificadores válidos
I
ovni
PC49
umnomelongodefato
Exemplos de identificadores inválidos
1abc
erva-doce
$100
*
*
*
Identificadores Padrões
Existem alguns identificadores que são pré-declarados em qualquer implementação do Pascal padrão
Eles são:
*
*
*
Cadeias de Caracteres
Uma seqüência de caracteres entre apóstrofes - ASPAS SIMPLES, PLICS ou PLICAS - forma uma cadeia de caracteres
Pode ser chamada também pelo nome em inglês: string
Exemplos de cadeias
'Isto é um exemplo de cadeia'
'?'
'Seu nome é Joana D''Arc'
*
*
*
Comentários
São frases colocadas por todo um programa com o objetivo de explicar ou clarear partes do código-fonte
Eles vêm entre chaves { e }, ou, às vezes, (* e *)
Não devem ser sucedidos de “;”
Comentários são completamente ignorados pelos compiladores
Sua função é apenas aumentar a clareza e documentar um programa
*
*
*
Estrutura Básica de um Programa em Pascal
program identificador;
 parte_das_declarações
begin
 parte_dos_comandos
end.
	
O <bloco> é formado por:
declarações
begin
	sequência de comandos
end
*
*
*
Tipos de Dados - Primitivos
Os tipos primitivos da linguagem Pascal são:
Inteiro, denotado pelo identificador padrão integer
Real, denotado pelo identificador padrão real
Caracter, denotado por char
Lógico, denotado por boolean
*
*
*
Declaração de Variáveis
Sintaxe
var lista_de_variáveis : tipo;
 lista_de_variáveis : tipo;
 ...
 lista_de_variáveis : tipo;
Semântica
As variáveis da lista de variáveis são criadas com o respectivo tipo e associadas (amarradas) aos respectivos nomes
*
*
*
Declaração de Variável
Exemplos
var x : integer;
 a, b : char;
 area, perimetro : real;
 temTelefone : boolean;
*
*
*
O Primeiro Programa
Problema
Efigênia e Cristóvão querem calcular a média de dois números inteiros por meio de um computador
Eles sabem como calcular média à mão, mas não sabem usar computador
Para tanto, pediram ajuda da Turma INF 1304
*
*
*
Programa da Solução
program Media;
{ Calcula a média de dois números inteiros. }
 var x, y : integer;
 m : real;
begin
 { Lê dois números inteiros. }
 { Calcula a média dos números. }
 { Imprime a média. }
end.
*
*
*
Criação de Variáveis
A partir do momento em que uma variável é criada, ela já possui um valor
Em Pascal, o valor inicial de qualquer variável é indefinido, mas ele existe
Na prática, chamamos este valor inicial arbitrário de lixo
Logo toda variável deve ser inicializada depois com algum valor desejado e conhecido
Este valor inicial conhecido pode ser modificado durante a execução do programa
*
*
*
Destruição de Variáveis
Uma variável deixa de existir quando o bloco de programa ou de subprograma em que ela foi criada termina de ser executado
No nosso caso, por enquanto, o único bloco que conhecemos é o do programa
Ao ser executado o último comando de um programa, toda a memória que foi alocada para o nosso programa é liberada para o sistema operacional e assim as variáveis do programa são destruídas
*
*
*
Comandos
Os comandos têm a função essencial de manipular e alterar o estado armazenado nas variáveis
Existem vários comandos em Pascal, porém o mais fundamental de todos é o comando de atribuição
O comando de atribuição modifica explicitamente o valor que uma variável armazena
*
*
*
Comando de Atribuição
Sintaxe
variável := expressão
Semântica
A expressão que aparece do lado direito do operador de atribuição,:=, é avaliada. O valor resultante da avaliação é então atribuído à variável que aparece do lado esquerdo
Isto é, o valor atual da variável é reposto pelo novo valor resultante da avaliação da expressão
*
*
*
Comando de Atribuição
O comando de atribuição destrói o valor corrente armazenado na variável —obviamente, ele não destrói a variável
O valor da expressão passa a ser o novo valor armazenado na variável
Exemplos
a := 3.52
a := b*b*b
j := j + 1;
p := (j > 0) or (c <> ' ')
c := '.'
*
*
*
Exercício
Suponha que as variáveis x, y e w abaixo sejam do tipo inteiro. Determine o valor final de cada uma delas, após a execução da seguinte seqüência de comandos de atribuição:
x := 27;
y := 343;
w := x + y - 300;
x := w div 10 + 23;
y := (x + w) div 10 * 10;
x := x + 70 + y mod 10;
w := w + x - 70
*
*
*
Entrada e Saída Simples de Dados
Dentre os comandos simples da linguagem, podemos considerar os de entrada e saída de dados
Na realidade, em Pascal, a entrada e a saída são realizadas por meio de chamadas de procedimentos padrões
Por detrás, esses procedimentos de entrada/saída utilizam estruturas de arquivo para realizar as operações
*
*
*
Saída de Dados
Qualquer informação produzida por um computador fica conhecida por nós somente se for realizada alguma operação de saída
Em Pascal, podemos realizar uma saída de dados por meio dos procedimentos padrões:
write
writeln
*
*
*
Procedimento write
O procedimento write pode ser usado na forma mais simples assim:
Sintaxe
write( lista_de_saída )
Semântica
A lista de saída será impressa ou exibida na ordem dada. A lista de saída pode conter variáveis, constantes ou, genericamente, qualquer expressão do tipo inteiro, real, booleano, caracter ou cadeia
*
*
*
Procedimento write
Exemplos
write( a, b, c + 1 )
write( 2*x + 7 )
write(a, b, c + 1 )
write(2*x + 7 )
write( 'a = ', x*x - 2*x - 5 )
*
*
*
Procedimento writeln
O procedimento writeln é semelhante ao write, exceto que, ao ser exibido ou impresso o último elemento da lista de saída, um fim-de-linha será acrescentado ao arquivo de saída
O procedimento writeln aceita a seguinte forma em que não aparece a lista de saída
Sintaxe
writeln
*
*
*
Exercício
O que vai ser exibido ao ser executada a seguinte seqüência de
comandos?
writeln( 'A', 'B' );
write( 'C' );
writeln( 'D' );
writeln;
writeln( 'E' )
*
*
*
Saída Formatada
A linguagem Pascal permite uma capacidade limitada de formatação do texto de saída por meio dos procedimentos write ou writeln
A cada valor de saída podemos acrescentar até dois sufixos separados pelo símbolo especial dois-pontos
Sintaxe
valor_de_saída : largura_do_campo : comprimento_da_fração
*
*
*
Saída Formatada
Exemplo
Suponha que a variável a seja do tipo real e contenha o valor -0.357000000E+02
*
*
*
O Primeiro Programa
Problema
Efigênia e Cristóvão querem calcular a média de dois números inteiros por meio de um computador
Eles sabem como calcular média à mão, mas não sabem usar computador
Para tanto, pediram ajuda da Turma
*
*
*
Programa da Solução
program Media;
{ Calcula a média de dois números inteiros. }
 var x, y : integer;
 m : real;
begin
 { Lê dois números inteiros. }
 writeln( 'Digite dois números inteiros:' );
 { Calcula a média dos números. }
 { Imprime a média. }
 writeln( 'A média deles é ', m );
end.
*
*
*
Entrada de Dados
Toda informação que quisermos passar para o computador é realizada por meio dos procedimentos:
read
readln
A entrada padrão de dados é mediada pelo arquivo padrão input
O arquivo padrão input assume que a entrada é realizada por meio de texto digitado a priori, ou digitado interativamente durante a execução do programa
*
*
*
Procedimento read
O procedimento read pode ser usado na sua forma mais simples assim:
Sintaxe
read( lista_de_variáveis )
Semântica
O computador vai obter da entrada padrão a quantidade requerida de dados e atribuir a cada variável da lista, na ordem dada, o valor respectivo obtido
*
*
*
Procedimento read
Exemplos
read( a )
read( alfa, beta, gama )
read( input, a )
read( input, alfa, beta, gama )
A chamada
read( v1, v2, v3, ..., vn )
é equivalente a
read( v1 ); read( v2 ); read( v3 ); ...;
read( vn )
*
*
*
O Primeiro Programa
Problema
Efigênia e Cristóvão querem calcular a média de dois números inteiros por meio de um computador
Eles sabem como calcular média à mão, mas não sabem usar computador
Para tanto, pediram ajuda da Turma INF 1304
*
*
*
Programa da Solução
program Media;
{ Calcula a média de dois números inteiros. }
 var x, y : integer;
 m : real;
begin
 { Lê dois números inteiros. }
 writeln( 'Digite dois números inteiros:' );
 readln( x, y );
 { Calcula a média dos números. }
 m := (x + y)/2;
 { Imprime a média. }
 writeln( 'A média deles é ', m );
end.
*
*
*
Projeto de Programação
Problema
Queremos calcular a área e o perímetro de um círculo dado seu raio
Análise do problema
O cálculo da área e do perímetro de um círculo já foi bem estudado pela geometria, desde a época dos gregos antigos
Descobriu-se que estes cálculos envolviam o número irracional 
*
*
*
Projeto de Programação
Análise (cont.)
Dado o comprimento do raio r de um círculo, temos que sua área A e seu perímetro P são dados pelas fórmulas:
*
*
*
Projeto de Programação
Algoritmo
Dados
raio do tipo real
área do tipo real
perímetro do tipo real
Leia o raio do círculo
Calcule a área
Calcule o perímetro
Imprima a área e o perímetro
*
*
*
Implementação
*
*
*
Testes
____________________________________________
Entre com o raio do círculo:
2
A área do círculo é: 1.256637061435917E+001
O perímetro é: 1.256637061435917E+001
____________________________________________
Entre com o raio do círculo:
3
A área do círculo é: 2.827433388230814E+001
O perímetro é: 1.884955592153876E+001
*
*
*
Exercícios 
Escrever um algoritmo para ler o salário mensal e um valor de reajuste (ambos em R$). Calcular e escrever o valor do novo salário.
Escrever um algoritmo para ler o salário mensal (R$) e o percentual de reajuste (%). Calcular e escrever o valor do novo salário.
Faça um programa que leia três valores em variáveis distintas e armazene a soma em outra variável. Escreva o valor da soma.
*
*
*
Um motorista de taxi deseja calcular o rendimento de seu carro na praça. Sabendo-se que o preço do combustível é de R$0,90, escreva um algoritmo para ler a marcação do odômetro no início do dia, a marcação no final do dia, o número de litros de combustível gasto e o valor total (R$) recebido dos passageiros. Calcular e escrever a média do consumo em Km/l e o lucro líquido do dia.
*
*
*
Solução – Calcular Reajuste Salário R$
program reajusteemperc;
var 
sl_mensal, reajuste, nv_salario : real;
Begin
 writeln (‘Informe o salário mensal: ‘);
 read(sl_mensal);
 writeln (‘Informe o valor do reajuste em R$: ‘);
 read(reajuste);
 nv_salario := sl_mensal + reajuste;
 writeln(‘O novo salário ‚: ‘,nv_salario);
End.
*
*
*
Solução Calcular Reajuste Salário - %
program reajusteemperc;
var 
sl_mensal, reajuste, nv_salario : real;
Begin
 writeln (‘Informe o salário mensal: ‘);
 read(sl_mensal);
 writeln(‘Informe o valor do reajuste em % ‘);
 read(reajuste);
 nv_salario := ((sl_mensal * reajuste) / 100) + sl_mensal;
 writeln(‘O novo salário ‚: ‘,nv_salario);
End
*
*
*
Solução - Média
Program media;
var
a, b, c, soma : real;
Begin
 writeln('Informe o valor de A: ');
 read(a);
 writeln('Informe o valor de B: ');
 read(b);
 writeln('Informe o valor de C: ');
 read(c);
 soma := a+b+c ;
 writeln('A soma dos valores ‚: ',soma);
 End.
*
*
*
Solução
program voudetaxi;
var kminicial, kmfinal : integer;
 litros, vl_recebido, media, lucro : real;
begin
 writeln('Informe a kilometragem inicial: ');
 read(kminicial);
 writeln('Informe a kilometragem final: ');
 read(kmfinal);
 writeln('Informe quantidade de combustível gasto: ');
 read(litros);
 writeln('Informe o valor total recebido: ');
 read(vl_recebido);
 media := (kmfinal - kminicial)/litros;
 lucro := vl_recebido - (litros * 0.90);
 writeln('A média do carro ‚: ',media);
 writeln('O lucro l¡quido ‚: ',lucro);
end.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais