Você está na página 1de 31

Lgica de Programao aula 1

UFMS / Faculdade de Computao Projeto Destacom

Algoritmo
um procedimento composto por um conjunto de instrues (aes) para realizar uma tarefa.
Exemplos 1 receita de bolo de chocolate 2 Algoritmo de Euclides (Clculo de m.d.c.)

Um algoritmo transforma uma entrada em sada


entrada sada Algoritmo

Exemplos
4 ovos, 1 xc de gua, 1 xc leo, 2 xc farinha 1 xc acar

Receita de bolo de chocolate

Bolo de chocolate

a, b

Algoritmo de Euclides

mdc(a,b)

Algoritmo Computacional
um algoritmo, cujas instrues podem ser traduzidas para uma linguagem de programao.

Algoritmo

programador

Programa

compilador

Programa Executvel

Traduz o algoritmo para uma uma linguagem de programao

Traduz o programa para a linguagem de mquina

Algoritmo Computacional
Exemplos
Algoritmo Exemplo #include <stdio.h> Var x do tipo inteiro int main () Incio { x 1 int x; x x + 1 x = 1; escreva x x++; Fim printf (%d, x); return 0; } 55 push %rbp 48 89 e5 mov %rsp,%rbp 48 83 ec 10 sub $0x10,%rsp c7 45 fc 01 00 00 00 movl $0x1,-0x4(%rbp) 83 45 fc 01 addl $0x1,-0x4(%rbp) b8 00 00 00 00 mov $0x0,%eax 8b 55 fc mov -0x4(%rbp),%edx 89 d6 mov %edx,%esi 48 89 c7 mov %rax,%rdi b8 00 00 00 00 mov $0x0,%eax e8 00 00 00 00 callq 2a <main+0x2a> b8 00 00 00 00 mov $0x0,%eax c9 leaveq c3 retq

Algoritmo

Programa na Linguagem C

Programa Executvel Linguagem de Mquina

Algoritmo Computacional
um algoritmo, cujas instrues podem ser traduzidas para uma linguagem de programao.
voc Algoritmo programador Programa compilador Programa Executvel

Precisar de Lpis e papel.

Precisar de Editor de texto ou Ambiente de programao

um programa como gcc, Visual C, etc. Outros programas tambm sero necessrios.

Usaremos uma linguagem de programao e um compilador SOMENTE mais pra frente!

Algoritmo (Computacional)
um algoritmo, cujas instrues podem ser traduzidas para uma linguagem de programao.

Quais ???

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo

Alm disso, precisar de variveis (memria) para guardar valores!! Por exemplo, valores lidos da entrada ou obtidos como resultado de uma operao.

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo
Um valor obtido da entrada e guardado na varivel x.

Leia x

Instruo leia
A instruo Leia x aguarda que um valor seja dado (digitado, clicado, etc) na entrada e este valor guardado na varivel chamada x. Uma forma alternativa para: Leia a Leia b Leia c : Leia a, b,c

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo
O valor guardado em x mostrado na sada.

escreva x

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo
realizada a multiplicao de x por 2 e o resultado guardado em x.

x 2*x

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo
realizada a comparao x > y e o resultado guardado em maior.

maior x > y

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo
O computador executar as instrues que estiverem aqui!

Incio fim

Algoritmo instrues vlidas


Ler a entrada Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo
O computador executar estas instrues repetidamente enquanto x for maior que zero.

CUIDADO! Um programa mal feito pode ficar repetindo instrues infinitamente. (lao/loop infinito)

Enquanto x>0 faa fimEnquanto

Ler a entrada

Algoritmo instrues vlidas

Mostrar a sada Realizar clculos matemticos (adio, multiplicao, subtrao, diviso) Realizar comparaes (>, <, , , =, ) Iniciar/terminar o programa Repetir uma sequncia de instrues Decidir se realiza ou no uma instruo

Se d 0 ento O computador executar estas instrues se d 0. X1 (-b +sqrt(d))/(2*a) X2 (-b - sqrt(d))/(2*a) O computador executar esta instruo se d < 0. Seno Escreva no existem razes reais FimSe

Algoritmo esquema geral


Algoritmo bl Variveis: Incio Coloque aqui os nomes das variveis e seus tipos Coloque aqui o nome do seu algoritmo

Fim

Coloque aqui a sequncia de instrues. O computador executar as instrues na ordem dada.

Exemplo
Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio Leia a, b, c d b^2 4*a*c Se d 0 ento x1 (-b + sqrt(d))/(2*a) x2 (-b - sqrt(d))/(2*a) FimSe Escreva As razes da equao so:, x1, e, x2, . Fim

O que este programa faz???

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha a b c d x1 x2

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha 1 a 1 b 4 c 0 d x1 x2

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha 1 2 a 1 1 b 4 4 c 0 0 16 d x1 x2

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha 1 2 3 a 1 1 1 b 4 4 4 c 0 0 0 16 16 d x1 x2

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha 1 2 3 4 a 1 1 1 1 b 4 4 4 4 c 0 0 0 0 16 16 16 0 d x1 x2

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha 1 2 3 4 5 a 1 1 1 1 1 b 4 4 4 4 4 c 0 0 0 0 0 16 16 16 16 0 0 -4 d x1 x2

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? linha 1 2 3 4 5 6 a 1 1 1 1 1 1 b 4 4 4 4 4 4 c 0 0 0 0 0 0 16 16 16 16 16 0 0 0 -4 -4 d x1 x2

As razes da equao so: 0 e 4.

Exemplo Teste de Mesa


Teste de mesa Algoritmo Exemplo Variveis a, b, c, d, x1, x2 : inteiros Incio 1) Leia a, b, c 2) d = b^2 4*a*c 3) Se d 0 ento 4) x1 = (-b + sqrt(d))/(2*a) 5) x2 = (-b - sqrt(d))/(2*a) FimSe 6) Escreva As razes da equao so:, x1, e, x2, . Fim Suponha a seguinte entrada: 1, 4, 0 Qual ser a sada do algoritmo? Repita para a seguinte entrada: 1, 4, 5 linha 1 2 3 4 5 6 a 1 1 1 1 1 1 b 4 4 4 4 4 4 c 0 0 0 0 0 0 16 16 16 16 16 0 0 0 -4 -4 d x1 x2

As razes da equao so: 0 e 4.

Teste de Mesa

usado para verificar a correo de um algoritmo; Note que isso no prova a correo, pois impossvel validar o algoritmo para todos os valores de entrada; Dica: validar os limites do intervalo de valores e situaes diferentes; Sempre faa teste de mesa de seus algoritmos antes de program-lo em uma linguagem de programao para eliminar erros de lgica.

Exerccios
1) Joo embaralhou as instrues de um algoritmo. Voc consegue ordenar as instrues e descobrir que tarefa o algoritmo resolve? FimEnquanto
Leia x cont 0 Enquanto cont < 50 faa soma soma + x Escreva soma/cont Incio soma 0 Fim cont cont + 1 Variveis x, soma, cont inteiros Algoritmo Exemplo2

A soluo abaixo est correta?


Algoritmo Exemplo2 Variveis x, soma, cont inteiros Incio soma 0 cont 0 Leia x soma soma + x cont cont + 1 Enquanto cont < 50 faa FimEnquanto Escreva soma/cont Fim

O que o programa faz? Faa o teste de mesa para a entrada: 35

E a soluo abaixo?
Algoritmo Exemplo2 Variveis x, soma, cont inteiros Incio soma 0 cont 0 Enquanto cont < 50 faa Leia x soma soma + x cont cont + 1 FimEnquanto Escreva soma/cont Fim

Este algoritmo calcula a mdia aritmtica de 50 nmeros. Faa o teste de mesa para a entrada: 1,3,5,0,1
Obs.: Considere 5 ao invs de 50 no lao, Ou seja, o algoritmo calcula a mdia de 5 nmeros.

Olimpada Brasileira de Informtica (OBI)

Problemas de programao de diferentes nveis de dificuldade Exemplos:


Meteoros (OBI de 2001) Macaco Prego (OBI de 2000) Detectando Colises (OBI de 2007) Proteja sua senha (OBI de 2004)

Site: http://olimpiada.ic.unicamp.br/