apostila de algoritmos professor andrÉ luiz … · para a construção de algoritmos todas as...

25
APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES FIRB/FAAO 2007 Página 1/25 ALGORITMO Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema. Definimos Algoritmo como a seqüência de passos que visam atingir um objetivo bem definido. Os algoritmos são utilizados no dia-a-dia para a solução dos mais diversos problemas. Alguns exemplos genéricos de algoritmos usados no nosso cotidiano são: uma coreografia, um manual de instruções, uma receita de bolo, a solução de uma equação do 2º grau, uma pesquisa na lista telefônica, etc. O que todas essas coisas tem em comum? Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que, quando realizadas, atingem um objetivo previamente definido. Assim, outra definição para algoritmos poderia ser: Algoritmo é a descrição de um conjunto de ações que, obedecidas, resultam numa sucessão finita de passos, atingindo um objetivo esperado. Dessa forma, vemos que, o que importa no algoritmo é o efeito das ações para a obtenção do resultado esperado. São propriedades de algoritmos: • ações simples e bem definidas (não ambíguas); • seqüência ordenada de ações; • seqüência finita de passos. ALGORITMO NÃO COMPUTACIONAL Um algoritmo não computacional pode ser visto como uma seqüência de passos, como uma receita, para se resolver problemas cotidianos. Abaixo é apresentado um Algoritmo não computacional cujo objetivo é usar um telefone público.

Upload: doandiep

Post on 10-Nov-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 1/25

ALGORITMO Um Algoritmo é uma seqüência de instruções ordenadas de

forma lógica para a resolução de uma determinada tarefa ou problema.

Definimos Algoritmo como a seqüência de passos que visam atingir um objetivo bem definido.

Os algoritmos são utilizados no dia-a-dia para a solução dos mais diversos problemas.

Alguns exemplos genéricos de algoritmos usados no nosso cotidiano são: uma coreografia, um manual de instruções, uma receita de bolo, a solução de uma equação do 2º grau, uma pesquisa na lista telefônica, etc.

O que todas essas coisas tem em comum?

Elas podem ser vistas como uma serie finita e bem definida de passos ou regras que, quando realizadas, atingem um objetivo previamente definido.

Assim, outra definição para algoritmos poderia ser:

Algoritmo é a descrição de um conjunto de ações que, obedecidas, resultam numa sucessão finita de passos, atingindo um objetivo esperado.

Dessa forma, vemos que, o que importa no algoritmo é o efeito das ações para a obtenção do resultado esperado.

São propriedades de algoritmos:

• ações simples e bem definidas (não ambíguas);

• seqüência ordenada de ações;

• seqüência finita de passos.

ALGORITMO NÃO COMPUTACIONAL Um algoritmo não computacional pode ser visto como uma

seqüência de passos, como uma receita, para se resolver problemas cotidianos. Abaixo é apresentado um Algoritmo não computacional cujo objetivo é usar um telefone público.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 2/25

PROGRAMA Um programa é um Algoritmo escrito em uma linguagem

computacional, ou seja, um algoritmo computacional.

LINGUAGENS DE PROGRAMAÇÃO

São Softwares que permitem o desenvolvimento de programas. Possuem um poder de criação ilimitado, desde jogos, editores de texto, sistemas empresariais até sistemas operacionais.

Existem várias linguagens de programação, cada uma com suas características próprias.

Exemplos:

• Pascal;

• Clipper;

• C;

• Visual Basic;

• Delphi e etc;

TÉCNICAS ATUAIS DE PROGRAMAÇÃO

• Programação Estruturada;

• Programação Orientada a Eventos e Objetos;

ALGORITMOS EM “PORTUGOL”

Durante nosso curso iremos aprender a desenvolver nossos Algoritmos em uma pseudo-linguagem conhecida como “Portugol” ou Português Estruturado.

“Portugol” é derivado da aglutinação de Português + Algol. Algol é o nome de uma linguagem de programação estruturada usada no final da década de 50, e posteriormente se transforma em Pascal(Object Pascal usado pelo DELPHI).

OPERADORES ARITMÉTICOS

+ Adição

- Subtração

* Multiplicação

/ Divisão

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 3/25

OPERADORES RELACIONAIS

> Maior que

< Menor que

>= Maior ou Igual

<= Menor ou Igual

= Igual

<> Diferente

LINEARIZAÇÃO DE EXPRESSÕES Para a construção de Algoritmos todas as expressões

aritméticas devem ser linearizadas, ou seja, colocadas em linhas.

É importante também ressalvar o uso dos operadores correspondentes da aritmética tradicional para a computacional.

Exemplo:

MODULARIZAÇÃO DE EXPRESSÕES

A modularização é a divisão da expressão em partes, proporcionando maior compreensão e definindo prioridades para resolução da mesma.

Como pode ser observado no exemplo anterior, em expressões computacionais usamos somente parênteses “( )” para modularização.

Na informática podemos ter parênteses dentro de parênteses.

Exemplos de prioridades:

(2+2)/2=2

2+2/2=3

( ) =+⎥⎦⎤

⎢⎣⎡ −+ 13532

(2/3+(5-3))+1=

Tradicional Computacional

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 4/25

OPERADORES ESPECIAIS (MOD e DIV)

MOD Retorna o resto da divisão entre 2 números inteiros.

DIV Retorna o valor inteiro que resulta da divisão entre 2 números inteiros.

Exemplo:

FUNÇÕES

Uma função é um instrumento (Sub–algoritmo) que tem como objetivo retornar um valor ou uma informação.

A chamada de uma função é feita através da citação do seu nome seguido opcionalmente de seu argumento inicial entre parênteses.

As funções podem ser predefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse.

Exemplos:

BIBLIOTECAS DE FUNÇÕES

13 2

6 1

MOD DIV

13 DIV 2 = 6

13 MOD 2 = 1

Valor Final Y

Valor Inicial X

Processamento

X=9

Y=3

x

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 5/25

Armazenam um conjunto de funções que podem ser usadas pelos programas.

FUNÇÕES PRÉ-DEFINIDAS ABS( ) VALOR ABSOLUTO

SQRT( ) RAIZ QUADRADA

SQR( ) ELEVA AO QUADRADO

TRUNC( ) VALOR TRUNCADO

ROUND( ) VALOR ARREDONDADO

LOG( ) LOGARITMO

SIN( ) SENO

COS( ) COSENO

TAN( ) TANGENTE

As funções acima são as mais comuns e importantes para nosso desenvolvimento lógico, entretanto, cada linguagem possui suas funções própias. As funções podem ser aritméticas, temporais, de texto e etc.

OPERADORES LÓGICOS

Atuam sobre expressões retornando sempre valores lógicos como Falso ou Verdadeiro.

E RETORNA VERDADEIRO SE AMBAS AS PARTES FOREM

VERDADEIRAS.

OU BASTA QUE UMA PARTE SEJA VERDADEIRA PARA RETORNAR

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 6/25

VERDADEIRO.

NÃO INVERTE O ESTADO, DE VERDADEIRO PASSA PARA FALSO E

VICE-VERSA.

TABELA VERDADE

A B A E B A OU B NÃO (A)

V V V V F

V F F V F

F V F V V

F F F F V

EXPRESSÕES LÓGICAS

As expressões compostas de relações sempre retornam um

valor lógico.

Exemplos:

2+5>4 Verdadeiro 3<>3 Falso

De acordo com a necessidade, as expressões podem ser unidas pelos operadores lógicos.

Exemplos:

2+5>4 E 3<>3 Falso

V F

F

E

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 7/25

2+5>4 OU 3<>3 Verdadeiro

NÃO(3<>3) Verdadeiro

VARIÁVEIS

Variáveis são endereços de memória destinados a armazenar informações temporariamente.

* Todo Algoritmo ou programa deve possuir variável!

VARIÁVEIS DE ENTRADA E SAÍDA

Variáveis de Entrada armazenam informações fornecidas por um meio externo, normalmente usuários ou discos.

Variáveis de Saída armazenam dados processados como resultados.

Exemplo:

De acordo com a figura acima A e B são Variáveis de Entrada e C é uma Variável de Saída.

CONSTANTES

V F

V

OU

F

V

NÃO

A B C=A+B

752

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 8/25

Constantes são endereços de memória destinados a armazenar informações fixas, inalteráveis durante a execução do programa.

Exemplo:

PI = 3.1416

IDENTIFICADORES

São os nomes dados a variáveis, constantes e programas.

Regras Para construção de Identificadores:

• Não podem ter nomes de palavras reservadas (comandos da linguagem);

• Devem possuir como 1º caractere uma letra ou Underscore ( _ );

• Ter como demais caracteres letras, números ou Underscore;

• Ter no máximo 127 caracteres;

• Não possuir espaços em branco;

• A escolha de letras maiúsculas ou minúsculas é indiferente.

Exemplos:

NOME TELEFONE IDADE_FILHO

NOTA1 SALARIO PI

UMNOMEMUITOCOMPRIDOEDIFICILDELER

UM_NOME_MUITO_COMPRIDO_E_FACIL_DE_LER

TIPOS DE DADOS

Todas as Variáveis devem assumir um determinado tipo de informação.

O tipo de dado pode ser:

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 9/25

• Primitivo Pré-definido pela linguagem;

• Sub-Faixa É uma parte de um tipo já existente;

• Escalar Definidos pelo programador.

Exemplos:

A : INTEIRO

TIPO NOTA=[1..10] DE INTEIRO

TIPO SEMANA = (Segunda-feira, Terça-feira, Quarta-feira,

Quinta-feira, Sexta-feira, Sábado, Domingo)

TIPOS PRIMITIVOS DE DADOS

INTEIRO ADMITE SOMENTE NÚMEROS INTEIROS. GERALMENTE É

UTILIZADO PARA REPRESENTAR UMA CONTAGEM

(QUANTIDADE).

REAL ADMITE NÚMEROS REAIS (COM OU SEM CASAS DECIMAIS).

GERALMENTE É UTILIZADO PARA REPRESENTAR UMA MEDIÇÃO.

CARACTERE ADMITE CARACTERES ALFANUMÉRICOS. OS NÚMEROS QUANDO

DECLARADOS COMO CARACTERES TORNAM SE REPRESENTATIVOS

E PERDEM A ATRIBUIÇÃO DE VALOR.

LÓGICO ADMITE SOMENTE VALORES LÓGICOS(VERDADEIRO/FALSO).

COMANDOS DE I/O (INPUT/OUTPUT)

LEIA Comando de entrada que permite a leitura de Variáveis de Entrada.

PRIMITIVO

SUB - FAIXA

ESCALAR

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 10/25

ESCREVA Comando de saída que exibe uma informação na tela do monitor.

IMPRIMA Comando de saída que envia uma informação para a impressora.

SINAL DE ATRIBUIÇÃO

Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser alterado a qualquer momento. Portanto para atribuir valores a variáveis devemos usar o sinal de “:=”.

Exemplos:

A := 2;

B := 3;

C := A + B;

SINAL DE IGUALDADE

As constantes são eternamente iguais a determinados valores, portanto usamos o sinal de “=”.

Exemplos:

PI = 3.1416;

Empresa = ‘Colégio de Informática L.T.D.A.’

V = Verdadeiro

CORPO GERAL DE UM PROGRAMA

PROGRAMA <<identificador>>;

CONST

<<identificador>> = <<dado>>

VAR

<<identificador>> : <<tipo>>;

ÍNICIO

{

COMANDOS DE ENTRADA,PROCESSAMENTO E SAÍDA

<<comando1>>;

<<comandoN>>

}

FIM.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 11/25

ESTRUTURAS SEQÜÊNCIAIS

Como pode ser analisado no tópico anterior, todo programa possui uma estrutura seqüencial determinada por um ÍNICIO e FIM.

; PONTO E VÍRGULA ;

O sinal de ponto e vírgula “;” indica a existência de um próximo comando (passa para o próximo).

Na estrutura ÍNICIO e no comando que antecede um comando SENAO(visto mais a frente) não se usa “;”.

PRIMEIRO ALGORITMO

Segue um Algoritmo que lê o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a média obtida.

PROGRAMA MEDIA_FINAL;

VAR

NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: INTEIRO;

NOME : CARACTERE [35]

INICIO

LEIA(NOME);

LEIA(NOTA1, NOTA2, NOTA3, NOTA4);

MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;

ESCREVA (NOME, MEDIA);

FIM.

SEGUNDO ALGORITMO

Segue um Algoritmo que lê o raio de uma circunferência e calcula sua área.

PROGRAMA AREA_CIRCUNFERENCIA;

CONST PI = 3.1416;

VAR RAIO, AREA : REAL;

INICIO

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 12/25

LEIA (RAIO); {PROCESSAMENTO}

AREA := PI * SQR(RAIO); {ENTRADA}

ESCREVA (‘AREA =’, AREA); {SAÍDA}

FIM.

{LINHAS DE COMENTÁRIO}

Podemos inserir em um Algoritmo comentários para aumentar a compreensão do mesmo, para isso basta que o texto fique entre Chaves “{}”.

Exemplo:

LEIA(RAIO); {ENTRADA}

‘ASPAS SIMPLES’

Quando queremos exibir uma mensagem para a tela ou impressora ela deve estar contida entre aspas simples, caso contrário, o computador irá identificar a mensagem como Variável Indefinida.

Exemplo:

ESCREVA (‘AREA OBTIDA =’, AREA) {COMANDO DE SAÍDA}

AREA OBTIDA = X.XX {RESULTADO GERADO NA TELA}

ESTRUTURAS DE DECISÃO

Executa uma seqüência de comandos de acordo com o resultado de um teste.

A estrutura de decisão pode ser Simples ou Composta, baseada em um resultado lógico.

Simples:

SE <<CONDIÇÃO>>

ENTÃO <<COMANDO1>>

Composta 1:

SE <<CONDIÇÃO>>

ENTÃO <<COMANDO1>>

SENÃO <<COMANDO1>>

Composta 2:

SE <<CONDIÇÃO>> ENTÃO

INICIO

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 13/25

<<COMANDO1>>;

<<COMANDON>>;

FIM

SENÃO

INICIO

<<COMANDO1>>;

<<COMANDON>>;

FIM;

Obs.: Note que o comando “FIM” que antecede o senão, não deve usar “;”, mesmo que seja um “SE” de uma única linha.

ALGORITMO TRÊS

Segue um Algoritmo que lê 2 números e escreve o maior.

PROGRAMA ACHA_MAIOR;

VAR A, B : INTEIRO;

INICIO

ESCREVA(‘INFORME O PRIMEIRO NÚMERO:’);

LEIA (A);

ESCREVA(‘INFORME O SEGUNDO NÚMERO:’);

LEIA (B);

SE A>B ENTÃO

ESCREVA (‘O MAIOR NÚMERO É:’,A)

SENÃO

ESCREVA (‘O MAIOR NÚMERO É:’,A);

FIM.

ALGORITMO QUATRO

Segue um Algoritmo que lê o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a média obtida pelo aluno escrevendo também se o aluno foi aprovado ou reprovado.

Média para aprovação = 6

PROGRAMA notas_alunos;

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 14/25

VAR

n1, n2, n3, n4, media : REAL;

nome_aluno : CARACTERE[40];

INICIO

ESCREVA('Informe o nome do aluno:');

LEIA(nome_aluno);

ESCREVA('Informe a 1NPC:');

LEIA(n1);

ESCREVA('Informe a 2NPC:');

LEIA(n2);

ESCREVA('Informe a 3NPC:');

LEIA(n3);

ESCREVA('Informe a 4NPC:');

LEIA(n4);

media := (n1+n2+n3+n4)/4;

SE (media >=6) ENTÃO

ESCREVA('O aluno foi aprovado!')

SENÃO

ESCREVA('O aluno foi reprovado!);

FIM.

NINHOS DE SE

Usados para tomadas de decisões para mais de 2 opções.

Forma Geral:

SE <<CONDIÇÃO>> ENTÃO

<<COMANDO1>>

SENÃO SE <<CONDIÇÃO>> ENTÃO

<<COMANDO1>>

SENÃO

<<COMANDO1>>;

ALGORITMO CINCO

Segue um Algoritmo que lê 3 números e escreve o maior.

PROGRAMA ACHA_MAIOR;

VAR A, B, C: INTEIRO;

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 15/25

INICIO

ESCREVA(‘INFORME O PRIMEIRO NÚMERO:’);

LEIA (A);

ESCREVA(‘INFORME O SEGUNDO NÚMERO:’);

LEIA (B);

ESCREVA(‘INFORME O TERCEIRO NÚMERO:’);

LEIA (C);

SE ((A>B) E (A>C)) ENTÃO

ESCREVA (‘O MAIOR NÚMERO É’, A)

SENÃO SE ((B>A) E (B>C)) ENTÃO

ESCREVA (‘O MAIOR NÚMERO É’, B)

SENÃO

ESCREVA (‘O MAIOR NÚMERO É’, C);

FIM.

ESTRUTURAS DE CONDIÇÃO

A estrutura de condição eqüivale a um ninho de SE’S.

Forma Geral:

FACA CASO

CASO <<CONDIÇÃO1>>

<<COMANDO1>>;

CASO <<CONDIÇÃON>>

<<COMANDO1>>;

OUTROS CASOS

<<COMANDO1>>;

FIM DE CASO

ALGORITMO SEIS

Segue um Algoritmo que lê 3 números e escreve o maior.

PROGRAMA ACHA_MAIOR;

VAR A, B, C : INTEIRO;

INICIO

LEIA (A, B, C);

FACA CASO

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 16/25

CASO (A>B) E (A>C)

ESCREVA (‘O MAIOR NÚMERO É’, A);

CASO (B>A) E (B>C)

ESCREVA (‘O MAIOR NÚMERO É’, B);

OUTROS CASOS

ESCREVA (‘O MAIOR NÚMERO É’, C);

FIM DE CASO;

FIM.

ESTRUTURA DE REPETIÇÃO DETERMINADA

Quando uma seqüência de comandos deve ser executada repetidas vezes, tem-se uma estrutura de repetição.

A estrutura de repetição, assim como a de decisão, envolve sempre a avaliação de uma condição.

Na repetição determinada o algoritmo apresenta previamente a quantidade de repetições.

Forma Geral 1:

PARA <<VARIAVEL DE TIPO INTEIRO>>:=<<VALOR INICIAL>> ATE <<VALOR FINAL>> FAÇA

<<COMANDO1>>;

Forma Geral 2:

PARA <<VARIAVEL DE TIPO INTEIRO>>:=<<VALOR INICIAL>> ATE <<VALOR FINAL>> FAÇA

ÍNICIO

<<COMANDO1>>;

<<COMANDON>>

FIM;

A repetição por padrão determina o passo do valor inicial até o valor final como sendo 1. Determinadas linguagens possuem passo –1 ou permitem que o programador defina o passo.

ALGORITMO SETE Segue um algoritmo que escreve 10 vezes a frase “VASCO

DA GAMA”

PROGRAMA REPETICAO;

VAR I:INTEIRO

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 17/25

INICIO

PARA I :=1 ATE 10 FACA

ESCREVA (‘VASCO DA GAMA 2007’)

FIM.

ALGORITMO OITO

Segue um algoritmo que escreve os 100 primeiros números pares.

PROGRAMA PARES;

VAR I,PAR: INTEGER;

INICIO

PAR:=0;

PARA I:=1 ATE 100 FACA

INICIO

ESCREVA (PAR);

PAR := PAR+2;

FIM;

FIM.

ESTRUTURA DE REPETIÇÃO INDETERMINADA COM VALIDAÇÃO INICIAL

É usada para repetir N vezes uma ou mais instruções. Tendo como vantagem o fato de não ser necessário o conhecimento prévio do número de repetições.

Forma Geral 1:

ENQUANTO <<CONDIÇÃO>> FACA

<<COMANDO1>>;

Forma Geral 2:

ENQUANTO <<CONDIÇÃO>> FACA

ÍNICIO

<<COMANDO1>>;

<<COMANDON>>

FIM;

ALGORITMO NOVE

VALIDAÇÃO INICIAL

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 18/25

Segue um algoritmo que calcule a soma dos salários dos funcionários de uma empresa. O programa termina quando o usuário digitar um salário menor que 0.

PROGRAMA SOMA_SALARIOS;

VAR SOMA, SALARIO : REAL;

INICIO

SOMA:=O;

SALARIO:=1;

ENQUANTO SALARIO>=0

INICIO

ESCREVA(‘INFORME O SALARIO:’);

LEIA (SALARIO);

SOMA:=SOMA+SALARIO

FIM;

ESCREVA (‘A SOMA TOTAL É:’,SOMA);

FIM.

ESTRUTURA DE REPETIÇÃO INDETERMINADA COM VALIDAÇÃO FINAL

Assim como a estrutura ENQUANTO É usada para repetir N vezes uma ou mais instruções.

Sua validação é final fazendo com que a repetição seja executada pelo menos uma vez.

Forma Geral;

REPITA

<<COMANDO1>>;

<<COMANDON>>

ATE <<CONDIÇÃO>>

ALGORITMO DEZ

TODAS AS VARIÁVEIS QUE ACUMULAM VALORES DEVEM RECEBER UM VALOR INICIAL.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 19/25

Segue um algoritmo que calcule a soma dos salários dos funcionários de uma empresa. O programa termina quando o usuário digitar um salário menor que 0.

PROGRAMA SOMA_SALARIOS;

VAR

SOMA, SALARIO : REAL;

INICIO

SOMA:=O;

REPITA

ESCREVA(‘INFORME O SALARIO:’);

LER (SALARIO);

SOMA:=SOMA+SALARIO;

ATE SALARIO<0;

ESCREVA (‘A SOMA TOTAL É:’,SOMA);

FIM.

ALGORITMO ONZE

Segue um algoritmo que escreve os 100 primeiros números pares.

PROGRAMA PARES_2;

VAR I, PAR, CONTADOR : INTEIRO;

INICIO

CONTADOR := 0;

PAR := 0;

REPITA

ESCREVA (PAR);

PAR := PAR+2;

CONTADOR := CONTADOR+1;

ATE CONTADOR=100;

FIM.

Programas Equivalentes

O algoritmo onze poderia ter sido criado com qualquer estrutura de repetição. Portanto podemos ter algoritmos que

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 20/25

são escritos de maneiras diferentes, mas, funcionam realizando o mesmo objetivo.

Linguagem PASCAL

linguagem de programação estruturada que recebeu este

nome em homenagem ao matemático Blaise Pascal. Foi criada em 1970 pelo suíço Niklaus Wirth, como uma linguagem voltada especificamente para estudantes, tendo em mente encoraja-los à programar utilizando código estruturado.

A criação de Pascal reflete a opinião pessoal de Niklaus Wirth após seu envolvimento com a especificação de ALGOL 68, e sua sugestão para essa especificação, o ALGOL W.

A linguagem é extremamente bem estruturada e muito adequada para ensino de linguagens de programação. É provavelmente uma das linguagens mais bem resolvidas entre as linguagens estruturadas, e certamente um dos exemplos de como uma linguagem especificada por uma pessoa pode ser bem melhor do que uma linguagem especificada por um comitê.

Pascal originou uma enorme gama de dialetos, podendo também ser considerada uma família de linguagens de programação. Grande parte de seu sucesso se deve a criação, na década de 80, da linguagem Turbo Pascal, inicialmente disponível para computadores baseados na na arquitetura 8086 (com versões para 8080 no seu início).

Pascal é normalmente uma das linguagens de escolha para ensinar programação, junto com Scheme, C e Fortran. Comercialmente, a linguagem foi sucedida pela criação da linguagem Object Pascal, atualmente utilizada nas IDEs Borland Delphi, Kylix e Lazarus. Academicamente, seus sucessores são as linguagens subsequentes de Niklaus Wirth: Modula-2 e Oberon

A partir da versão 2005, o Delphi passou a se referir a sua linguagem de programação como Delphi Language. PASCALZIM

O compilador PASCAL ZIM!, desenvolvido no Departamento de Ciências da Computação da Universidade de Brasília, é fruto de muitos anos de pesquisa e trabalho na área de tradutores e linguagens de programação. Adotado como ferramenta de apoio ao ensino e aprendizagem da linguagem Pascal pelos alunos matriculados no curso de Introdução à Ciência da Computação nesta instituição, o compilador começou a ser utilizado no primeiro semestre do ano 2000.

No segundo semestre de 2001 a ferramenta passou a ser utilizada pelos alunos do Instituto de Ensino Superior de Brasília - IESB para o aprendizado da disciplina Algoritmos e Programação Estruturada.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 21/25

A ferramenta foi exaustivamente testada em laboratório,

mas ainda assim não se encontra livre de erros de implementação. A correção destes será efetuada tão breve quanto sua descoberta, levando à disponibilidade de versões mais atualizadas do compilador.

O compilador implementa um subconjunto da linguagem Pascal e contém as estruturas de dados, funções e comandos mais utilizados por iniciantes no estudo dessa linguagem. O arquivo de ajuda que acompanha o produto especifica as instruções suportadas.

O PASCAL ZIM! foi concebido com finalidade meramente educacional e sua distribuição é livre. Principais Comandos em PASCAL: Algoritmo Pascal Programa Program Var Var Const Const Inteiro Integer Real Real Caractere String, Char Lógico Boolean Se If Inicio Begin Fim End Escreva Write, Writeln Leia Read, Readln Caso Case Enquanto While Senão Èlse Para For Então Then Exemplo de Algoritmo: Programa Dólar_para_Real; Var Valor_Dolar, Qtd_Dolar, Total_Real : Real; Inicio Escrever(‘Informe o Valor do Dólar:’); Ler(Valor_Dolar); Escrever(‘Informe a Quantidade de Dólares’);

Ler(Qtd_Dolar); Total_Real := Qtd_Dolar * Valor_Dolar; Escrever(Qtd_Dolar, ‘ Em Reais são ‘, Total_Real);

Fim.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 22/25

O mesmo Programa em PASCAL: Program Dolar_para_Real; Var Valor_Dolar, Qtd_Dolar, Total_Real : Real; Begin Write(‘Informe o Valor do Dólar:’); Read(Valor_Dolar); Write(‘Informe a Quantidade de Dólares’);

Read(Qtd_Dolar); Total_Real := Qtd_Dolar * Valor_Dolar; Write(Qtd_Dolar, ‘ Em Reais são ‘, Total_Real);

End. Outro exemplo de programa pascal: program name; var

n1,n2,q1,q2:string; begin clrscr; write('primeiro nome:'); readln(n1); write('segundo nome:'); readln(n2); write('primeira qualidade:'); readln(q1); write('segunda qualidade:'); readln(q2); writeln(n1,' ',q1); write(n2,' ',q2); end. EXECÍCIOS 1)O QUE É UM ALGORITMO? E QUAIS OS TIPOS DE ALGORIMOS? 2)RESPONDA:

a) QUE É UM PROGRAMA. b) QUAIS AS PROPRIEDADES DE UM ALGORITMO. c) QUAIS SÃO AS TÉCNICAS DE PROGRAMAÇÃO. d) O QUE É VARIAVEL E CONSTANTE? e) O QUE SÃO FUNÇÕES.

3)CRIE UM ALGORITMO NÃO COMPUTACIONAL, QUE TROQUE UM PNEU DE CARRO.

4)O QUE É UMA LINGUAGEM DE PROGRAMAÇÃO?

5)LINEARIZE AS EXPRESSÕES ABAIXO:

=−+ )58(*785

)]47(3*25[ −+

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 23/25

6)Complete a tabela abaixo (A e B são variáveis lógicas; V= verdadeiro e F= falso)

A B A ou B A e B não A V V V F F V F F

7) Resolva as seguintes expressões lógicas:

a) (7 mod 3 = 1) ou (4 + 5 =8) b) NÃO(sqrt(144) = 13) e (8 div 2 = 5) c) (2 mod 2 =0 e NÃO(trunc(1/3 = 0,34))) ou NÃO(3+3=6)

8) Analise os códigos abaixo e explique suas saídas(finalidades): a) Programa xxxx; VAR X,I : INTEIRO; INICIO

X := 3; PARA I := 1 ATE 10 FAÇA INICIO

X := X * I; ESCREVA(X);

FIM; FIM. b) PROGRAMA XXXX; VAR X,Y : INTEIRO; INICIO ESCREVA(‘INFORME UM NUMERO:’); LEIA(X); Y := X+10; ESCREVA(Y); FIM; 8) CRIE ALGORITMOS PARA OS SEGUINTES PROBLEMAS: a) Faça um programa que receba dois números inteiros, calcule e imprima a soma desses números.

b) Faça um programa que receba dois números reais, calcule e imprima a subtraçãodo primeiro número pelo segundo.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 24/25

c) Faça um programa que receba dois números inteiros, calcule e imprima a divisão do primeiro pelo segundo.

d) Faça um programa que receba dois números inteiros, calcule e imprima:

i) soma dos dois números; ii) subtração do primeiro pelo segundo; iii) subtração do segundo pelo primeiro; iv) multiplicação dos dois números; v) divisão do primeiro pelo segundo; vi) divisão do segundo pelo primeiro;

e) Faça um programa que receba 4 notas de um aluno, calcule e imprima a média aritmética entre essas notas.

f) Faça um programa que receba duas notas de um aluno e seus respectivos pesos, calcule e imprima a média ponderada dessas notas.

g) Faça um programa que receba um número inteiro, calcule e imprima a tabuada desse número.

h) Escreva um programa que receba o valor de um depósito e o valor da taxa de juros. Calcule e imprima o valor do rendimento e o valor total depois do rendimento. (Total = valor *taxa de juros + valor, onde rendimento = valor*taxa de juros)

i) Escreva um programa que receba o valor do salário de um funcionário e o valor do salário mínimo. Calcule e imprima quantos salários mínimos ganha esse funcionário.

j) Faça um programa que receba o salário de um funcionário, calcule e imprima o valor do imposto de renda a ser pago, sabendo que o imposto equivale a 5% do salário.

l) Faça um programa que receba o salário de um funcionário, calcule e imprima o novo salário sabendo-se que este sofreu um aumento de 22%.

m) Sabe-se que o quilowatt de energia custa um quinto do salário mínimo. Faça um programa que receba o valor do salário mínimo e a quantidade de quilowatts gasta por uma residência. Calcule e imprima:

i) o valor, em reais, de cada quilowatt; ii) o valor, em reais, a ser pago por essa residência; iii) o novo valor a ser pago por essa residência, a

partir de um desconto de 15%.

APOSTILA DE ALGORITMOS PROFESSOR ANDRÉ LUIZ NASSERALA PIRES

FIRB/FAAO 2007 Página 25/25

n) Faça um programa que receba o peso de uma pessoa, um valor inteiro, calcule e imprima:

i) o peso dessa pessoa em gramas; ii) se essa pessoa engordar 5%, qual será seu novo peso

em gramas.

o) Faça um programa que leia três valores inteiros, determine e imprima o menor deles.

p) Faça um programa que, dado um número inteiro, verifique se este número é par.

q) Dados 3 números (x,y,z), faça um programa em Pascal que imprima-os em ordem decrescente.

r) Tendo como dados de entrada a altura, o peso e o sexo de uma pessoa, faça um programa que verifique se a pessoa está acima, abaixo ou no seu peso ideal.

Utilize as fórmulas abaixo para o cálculo do peso ideal: para homens: 72.7 * h - 58 para mulheres: 62.1 * h - 44.7

s) Elabore um programa que, dada a idade de um nadador, classifique-o em uma das seguintes categorias:

. infantil A: 5 - 7 anos;

. infantil B: 8 - 10 anos;

. juvenil A: 11 - 13 anos;

. juvenil B: 14 - 17 anos;

. sênior: maiores de 18 anos.

t) Dados três valores X, Y, Z, verifiquem se eles podem ser os comprimentos dos lados de um triângulo e se forem escrever uma mensagem informando se é se é um triângulo equilátero, isósceles ou escaleno.

Observações: O comprimento de um lado do triângulo é

sempre menor do que a soma dos outros dois. Eqüilátero Todos lados iguais Isósceles Dois lados iguais Escaleno Todos os lados diferentes

9 – Responda as seguintes questões de lógica na Internet: a) http://www.plastelina.net/games/game1.html b) http://www.plastelina.net/games/game2.html