Você está na página 1de 65

Universidade Federal do Rio Grande do Norte Departamento de Informtica e Matemtica Aplicada

ALGORITMO E PROGRAMAO DE COMPUTADORES


Prof.: Dario Jos Aloise

Natal / 2007.1

Algoritmos e Tcnicas de Programao

1 Aula Plano da Disciplina


Apresentao da disciplina, Programa, Cronograma, Bibliografia, Avaliao e Justificativa da necessidade de se estudar algoritmos.

Algoritmos e Tcnicas de Programao

2 Aula
Conceitos de algoritmo, Formas de Representao de Algoritmo (Descrio Narrativa, Fluxograma e Pseudocdigo)

Algoritmo
uma seqncia lgica de etapas para se realizar determinada atividade Ou Descrio passo a passo de um processo completo a ser utilizado na soluo de um problema

Exemplo: Processo: Troca de uma lmpada queimada


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; _ descer da escada; _ acionar o interruptor; _ enquanto a lmpada no acender, faa: _ subir na escada; _ retirar a lmpada queimada; _ colocar uma lmpada nova; _ descer da escada; _ acionar o interruptor; Fim.

Algoritmo

Exemplo: Processo: rotina de domingo Algoritmo do domingo. Acordar. Tomar o caf. Se estiver sol vou praia seno leio o jornal. Almoar. Ir ao cinema. Fazer uma refeio. Ir dormir. Fim do domingo.

Algoritmo

Algoritmo
Exemplo: Processo: salada do alface Receita do alface com molho branco. preparo do molho branco Coloque numa panela a manteiga, a farinha e o leite e misture bem. Em fogo mdio, cozinhe at engrossar. Adicione o sal, a pimenta e o queijo. Continue com a panela no fogo, cozinhando at que o queijo derreta, mexendo constantemente. preparo da alface Derreta a manteiga. Junte a alface cortada. Salpique o sal e deixe cozinhar por uns 5 a 10 minutos ou at a alface ficar tenra, ou o lquido da panela secar. juntando os dois Junte ao molho branco e ao suco de limo. Coloque numa travessa e enfeite em volta com po torrado cortado em tringulos. Fim da receita do alface com molho branco

Exerccio:

Algoritmo

Um homem precisa atravessar um rio com um barco que possui capacidade para carregar, apenas, ele mesmo, e mais uma de suas 3 (trs) cargas, que so: um lobo, um bode e um mao de alfafa. Escreva um algoritmo, ou seja, indique todas as aes necessrias para que o homem consiga atravessar o rio sem perder suas cargas.

informaes: um barco um homem um lobo um bode um mao de alfafa ao: atravessar o rio sem perder as cargas resultado: todas as as cargas na outra margem do rio.

Algoritmo: incio atravessar homem e bode voltar homem atravessar homem e lobo voltar homem e bode atravessar homem e alfafa voltar homem atravessar homem e bode fim

Representaes de Algoritmos
Descrio Narrativa
Uso da linguagem natural, como nos nossos exemplos. Existe a inconvenincia da m interpretao, originando ambigidades e imprecises. Algoritmo afrouxar ligeiramente as porcas; suspender o carro; retirar as porcas e o pneu; colocar o pneu reserva e as porcas; abaixar o carro; dar o aperto final nas porcas. Fim

Representaes de Algoritmos
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.

Representaes de Algoritmos
Clculo de uma mdia aritmtica com um teste
Incio

m1, m2

(m1+m2)/2

m >=5

Aprovado

Reprovado Fim

Representaes de Algoritmos
Pseudocdigo
Uso de linguagem prpria, aproximando-se mais das linguagens de alto nvel, chamado, tambm de pseudolinguagem ou ainda portugol. Forma Geral: Algoritmo <nome do algoritmo> < declarao_de_variveis > Incio instrues Fim

Representaes de Algoritmos
Algoritmo Media Real: n1, n2, media Incio Escreva(Digite as duas notas:) Leia(n1, n2) media (n1+n2)/2 Se (media >= 5) ento Escreva (APROVADO) Seno Escreva (REPROVADO) Fim_se Fim

Algoritmos e Tcnicas de Programao

3 Aula
Programao Estruturada: Seqencial, Condicional e Repetitiva (Enquanto e Repita).

Programao Estruturada
Programao estruturada a tcnica de construir e formular algoritmos de uma forma sistemtica.

Utilizado para apresentar as etapas do processo de uma forma padronizada

Programao Estruturada
Estrutura Sequencial: Forma Geral
Comando 1 Comando 2 . . . Comando n

Programao Estruturada
Estrutura Condicional: Forma Geral
Se <condio > ento bloco de Comandos (1) Seno bloco de Comandos (2) Fim se

Programao Estruturada
Estrutura Repetitiva:
Forma Geral de repetio com teste no incio Enquanto <condio > bloco de Comandos Fim enquanto Forma Geral de repetio com teste no fim Repita bloco de Comandos At < condio >

Programao Estruturada
Exerccio:
Ler um nmero real e escrever se negativo, nulo ou positivo.

Programao Estruturada
Resposta:
Algoritmo numero num: Real Incio Leia(num) Se (num > 0) ento Escreva (POSITIVO) Seno Se (num = 0) ento Escreva (NULO) Seno Escreva (NEGATIVO) Fim_se Fim_se Fim

Algoritmos e Tcnicas de Programao

3 Aula
Tipos de Dados: Numricos, Literais. Lgicos; Constantes e Variveis;

Tipos de Dados
Uma das principais funcionalidades de computador a manipulao de informaes um

Por isso, necessrio que haja formas de se trabalhar com diferentes tipos de dados em um programa.

Tipos de Dados
Podemos definir um tipo de dados como um conjunto de objetos que tem em comum o mesmo comportamento diante de um conjunto definido de operaes Ex.: Seres humanos: comem, dormem, andam, etc avies: voar, decolar, pousar, etc.

Tipos de Dados
Infelizmente as linguagens de programao so limitadas e no podem manipular todos os tipos de dados existentes no mundo real. Por isso, a construo de algoritmos para computador deve lidar exclusivamente com os tipos definidos nas linguagens de programao

Tipos de Dados
Os dados so classificados em: 1 -Numricos: 1500; -230; 23.4; etc. O qual divide-se em: Inteiros ou nmero de ponto fixo ( 1500; -230) Real ou nmero de ponto flutuante (23.4; -32.6; 10.0)

Tipos de Dados

2 - Literais: chamados, tambm, alfanumricos, cadeia de caracteres ou strings. So sempre representados, nos algoritmos, entre aspas. Ex.: UFRN 21/03/2006

Tipos de Dados

3 - Lgicos: chamados, tambm, booleanos So oriundos da lgica matemtica ou lgica de Boole (Matemtico considerado um dos formuladores da lgica matemtica). Representado por apenas dois valores com significados opostos como 1 e 0 ou Verdadeiro (V) e Falso (F).

Constantes e Variveis
Vimos que, tipos so conjuntos que contm elementos com um comportamento comum. Entretanto, na maioria das vezes, precisamos utilizar os elementos individualmente. Ser Humano: Joo Carro: placa KKK 3333

Constantes e Variveis
Em um computador, manipulamos informaes que, durante a execuo de um programa, ficam armazenadas temporariamente em memria. Essas informaes , num nvel maior de abstrao, so os elementos pertencentes aos tipos. Variveis e constantes so repositrios elementos pertencentes aos tipos. de

Constantes e Variveis
Constantes: So valores especficos que no se modificam durante a execuo de um algoritmo A declarao de uma constante feita da seguinte forma: Constante <identidicador1> = <valor1>; <identidicador2> = <valor2>; ... <identidicador N> = <valor N>;

Constantes e Variveis
Variveis: Varivel uma entidade destinada a guardar dados. Estes dados podem variar durante a execuo do algoritmo A declarao de uma varivel feita da seguinte forma: Var <lista_de_variveis1> : <tipo1>; <lista_de_variveis2> : <tipo2>; ou <tipo> : <lista_de_variveis>

Constantes e Variveis
1 Algoritmo 1 2 inteiro: Contador, resultado; 3 Constante num = 6; 4 Incio 5 Leia (contador, resultado) 6 enquanto (contador <= 4) faa 7 resultado resultado + num 8 contador contador + 1 9 fim_enquanto 10 Escrever ( O resultado :resultado) 11 Fim

Constantes e Variveis
1 Algoritmo 1 2 Var contador, resultado : inteiro; 3 Constante num = 6; 4 Incio 5 Leia (contador, resultado) 6 enquanto (contador <= 4) faa 7 resultado resultado + num 8 contador contador + 1 9 fim_enquanto 10 Escrever ( O resultado :resultado) 11 Fim

Exerccio
1 Fazer um algoritmo para ler um nome do teclado e verificar se igual ao seu nome. Imprima conforme o caso: nome correto ou nome incorreto.
Algoritmo Nome Var N: caracter; Constante Result = Fabio; Inicio Leia (N) Se (N = Result) ento Escreva (nome correto); Seno Escreva (nome incorreto); Fim_se Fim

2 Faa um algoritmo que leia a idade de uma pessoa e diga-lhe se maior de idade ou no. Represente o valor que indica maior de idade como uma constante que valer 18.
Algoritmo Idade Var id: inteiro; Constante limite = 18; Inicio Escreva(Entre com a idade:); Leia (id) Se (id > = limite) ento Escreva ( maior de idade); Seno Escreva ( menor de idade); Fim_se Fim

Exerccio

Exerccio 2
Algoritmo Idade Var id: inteiro; maior : booleano; Constante limite = 18; Inicio Escreva(Entre com a idade:); Leia (id) Se (id > = limite) ento maior V; Seno maior F; Fim_se Se (maior) ento Escreva ( maior de idade); Seno Escreva ( menor de idade); Fim_se Fim

1 - Sabendo que a relao entre vrtices, arestas e faces de um objeto geomtrico dada pela frmula: Vrtice + faces = arestas + 2 Calcule o nmero de vrtices de um objeto geomtrico genrico. A entrada ser o nmero de faces e arestas (dadas por um nmero inteiro e positivo) e a sada ser o nmero de vrtices 2 Faa um algoritmo que armazene dois nmeros em duas variveis e que troque os valores das variveis

Exerccio

Exerccio
1 - Resposta: Algoritmo Vertice Var vert, face, aresta: inteiro; Incio Escreva (entre com o nmero de faces); Leia (face); Escreva (entre com o nmero de arestas); Leia (aresta); Vert aresta + 2 face; Escreva ( O n de vrtices do objeto : vert); Fim

Exerccio
2 - Resposta: Algoritmo troca-valor Var a, b, aux: inteiro; Incio Escreva (entre com o primeiro nmero); Leia (a); Escreva (entre com o segundo nmero); Leia (b); aux a; a b; b aux; Escreva ( O 1 e 2 n, consecutivamente, so: a, b); Fim

Operadores aritmticos
+ / * ** div adio subtrao diviso multiplicao potenciao diviso inteira. Ex: 5 div 2 = 2 ( o resultado apenas o valor inteiro) mod resto inteiro da diviso. Ex: 5 mod 2 = 1 (o resultado o resto da diviso)

Operadores Relacionais
> < = >= <= <> Maior que Menor que igual maior ou igual que menor ou igual que diferente

Operadores Lgicos
no e ou negao conjuno disjuno

Exerccio
1 - Fazer um algoritmo para determinar se possvel calcular ou no uma raiz quadrada. Caso positivo calcule-a.

Exerccio
1 Resposta: Algoritmo Raiz-quadrada Var num, raiz: real Inicio Escreva (digite um nmero) Leia (num) Se (num >= 0) ento raiz num ** 0.5; Escreva (a raiz quadrada : raiz); Seno escreva (no h raiz quadrada) Fim-se Fim

Exerccio
2 Fazer um algoritmo que identifique se o nmero digitado par ou impar:

Exerccio
2 Resposta:

Algoritmo par-impar Var num: inteiro Inicio Escreva (digite um nmero) Leia (num) Se (num mod 2 = 0) ento Escreva (O nmero par); Seno escreva (O nmero impar) Fim-se Fim

Exerccio
3 - Faa um algoritmo que leia 100 nmeros e retorne a soma e a mdia desses valores

Exerccio
Algoritmo Soma-media Var contador: inteiro; valor, soma, media: real Inicio contador 0; soma 0; Enquanto (contador < 100) faa Escreva (entre com um valor:); leia (valor); soma soma + valor; contador contador + 1; Fim-enquanto media soma / contador; Escreva (a soma : soma); Escreva (a mdia : media) Fim

Exerccio
Algoritmo Soma-media Var contador: inteiro; valor, soma, media: real Inicio contador 0; soma 0; Repita Escreva (entre com um valor:); leia (valor); soma soma + valor; contador contador + 1; At (contador = 100) media soma / contador; Escreva (a soma : soma); Escreva (a mdia : media) Fim

Estrutura Repetitiva
Dentre as Estruturas de programao, foram vistas: Estrutura Seqencial Estrutura Condicional Estruturas Repetitivas: Enquanto e Repita Uma terceira forma de Estrutura Repetitiva :
Para <var> <incio> at <fim> passo <inc> faa bloco de comando Fim_para

Estrutura Repetitiva
Algoritmo Soma-media Var contador: inteiro; valor, soma, media: real Inicio contador 0; soma 0; Enquanto (contador < 100) faa Escreva (entre com um valor:); leia (valor); soma soma + valor; contador contador + 1; Fim-enquanto media soma / contador; Escreva (a soma : soma); Escreva (a mdia : media) Fim Algoritmo Soma-media Var contador: inteiro; valor, soma, media: real Inicio soma 0; Para (contador 0 at 99 passo 1) faa Escreva (entre com um valor:); leia (valor); soma soma + valor; Fim-para media soma / contador; Escreva (a soma : soma); Escreva (a mdia : media) Fim

Estrutura Repetitiva
Enquanto: consiste em um teste de condio antes de efetivar a repetio. A sada do lao s ocorre quando a condio se torna falsa. Repita: Consiste em um teste de condio no final. A sada de um lao repita ocorre quando a condio booleana se torna verdadeira. Para: Consiste em uma estrutura de repetio cujo processo tem um incio e um fim fixo.

Exerccio
4 - Faa um algoritmo que leia um nmero inteiro e em seguida calcule e escreva o seu fatorial. Se o nmero for negativo, informe que o valor invlido.

Algoritmo Fatorial var valor, fat, num: inteiro Inicio Escreva (Entre com um valor:); Leia (valor); Se (valor < 0) ento Escreva (valor invlido); Seno fat 1; num valor; Enquanto (num > 1) faa fat fat * num; num num 1; Fim-enquanto Fim-se Escreva(O fatorial de valor igual a: fat); Fim

Exerccio

Exerccio
Algoritmo Fatorial var valor, fat, num: Inteiro Incio Escreva (Entre com um valor:); Leia(valor); Se (valor < 0) ento Escreva(No existe fatorial de nmero negativo.); Seno fat 1; Para (num 2 at valor) faa fat fat*num; Fim_para Escreva (Fatorial de valor igual a, fat); Fim_se Fim

Exerccio
5 - Escreva um algoritmo para calcular a soma de dez nmeros quaisquer fornecidos pelo usurio. Utilize a estrutura de repetio do tipo Para.

Exerccio
Algoritmo Soma-10 Var Soma, num: real; Cont: int; Incio Soma 0; Para ( Cont 1 at 10 ) faa Escreva (digite o nmero); Leia (num); Soma soma + num Fim-para Escreva ( A soma : soma); Fim

Exerccio
6 - Faa um algoritmo que leia trs valores que representam os lados de um tringulo. Primeiramente, verifique se os lados podem formar um tringulo (a soma de dois lados no pode ser menor que o terceiro lado). Caso possa formar um tringulo, indique se este equiltero (trs lados iguais), issceles (dois lados iguais) ou escaleno (trs lados diferentes).

Algoritmo Tringulo Var a, b, c: int; Incio Escreva (entre com os trs lados do tringulo); Leia (a, b, c); Se ((a + b < c) ou (a + c < b) ou (b + c < a)) ento Escreva ( valores invlidos); Seno Se ((a = b) e (b = c)) ento Escreva (equiltero); Seno Se ((a = b) ou (a = c) ou (b = c)) ento Escreva (issceles); Seno Escreva (escaleno); Fim-se Fim-se Fim-se Fim

Exerccio
7 - Faa um algoritmo que calcule a potenciao. Utilize o operador * quando o expoente for positivo ou nulo e utilize o operador ** quando o expoente for negativo.

Algoritmo Potencia Var result, base, expoente, cont: real; Incio Escreva (entre com a base); Leia (base); Escreva (entre com o expoente); Leia (expoente); Se (expoente < 0) ento Result base ** expoente; Seno cont 1; // usa-se as duas barras para colocar comentrios result 1; // no caso de expoente 0, o lao evitado Enquanto (cont <= expoente) faa result result * base; cont cont + 1; Fim-enquanto Fim-se Escreva (base, elevado a, expoente, =, result); Fim

Exerccio
8 Dado o algoritmo abaixo: Algoritmo Incio Ler (x, y) Z xy Se (z = 0) ento Escrever (x igual a y) Seno Se (z > 0) ento Escrever (x maior do que y) Seno Escrever (x menor do que y) Fim_se Fim_se Fim Represente-o em forma de fluxograma.

Incio

Exerccio

Ler X, Y

X-Y

Z=0 F

Escreva (X igual a Y)

Z>0 F Escreva (X menor que Y)

Escreva (X maior que Y)

Fim

Exerccio
9 - Calcular a mdia aritmtica de 4 notas para vrios alunos e parar quando aparecer uma nota negativa

Exerccio
Algoritmo media var n1, n2, n3, n4, media: reais; Incio Escreva ("Informe as quatro notas do aluno: "); Leia (n1, n2, n3, n4); Enquanto (n1 >= 0 e n2 >= 0 e n3 >= 0 e n4 >= 0) faa media = (n1 + n2 + n3 + n4) / 4; Escreva ("a mdia calculada : " media); /* Obteno das notas para os demais alunos */ Escreva ("Informe as quatro notas do aluno: "); Leia (n1, n2, n3, n4); Fim_enquanto Fim.

Você também pode gostar