1. Introdução a Programação
O principal objetivo deste módulo é apresentar o que é programar computadores. Na
verdade, não se trata de um esforço tão milagroso. Programar um computador para
executar algo é, na verdade, uma tarefa muito comum, pois o que faremos é apenas
descrever passo a passo o que um computador precisa executar para chegar ao objetivo
final.
A essa descrição chamamos de ALGORITMO e é através do estudo de algoritmos que
identificaremos o modelo de lógica de programação fundamental para aprender a
programar.
Algoritmo
Algoritmo é uma seqüência de ações, organizadas de forma lógica, que visam alcançar um
objetivo bem definido. Apesar do nome parecer estranho para os iniciantes, algoritmos são
comuns em nosso cotidiano, como por exemplo, uma receita de bolo. Nela está descrita
uma série de ingredientes necessários e uma seqüência de diversos passos (ações) a
serem executados para que se consiga fazer determinada tarefa (objetivo bem definido).
DICA
Lembre bem que um algoritmo tem esses dois elementos (essa informação será usada várias vezes daqui para frente):
elementos que serão usados
passos que serão seguidos
Fazer um algoritmo é basicamente seguir esse roteiro !
Exemplo: Troca de uma lâmpada.
VERSÃO 1
pegue uma escada;
posicione-a embaixo da lâmpada;
busque uma lâmpada nova
suba na escada;
retire a lâmpada velha;
coloque a lâmpada nova;
Esse algoritmo tem um objetivo: troca de uma lâmpada, e faz isso bem. Mas, troca a
lâmpada mesmo que ela não esteja queimada. Ou seja, podemos melhorar esse algoritmo
para que a lâmpada não seja trocada caso esteja funcionando, incluindo um teste.
DICA
Na primeira versão do nosso algoritmo de trocar lâmpadas pode-se perceber o principal erro que acontece nos primeiros algoritmos: AM
sempre produzir instruções (ações) que não sejam ambíguas e que façam a operação necessária sem dar margem a mais de um resul
resultado que lhe é necessário.
Para entender bem essa dica, analise as diferenças entre a versão 1 e a versão do 2 do nosso algoritmo de trocar lâmpada - que difere
VERSÃO 2
ligue o interruptor;
se o interruptor não acender, então:
pegue uma escada;
posicione-a embaixo da lâmpada;
busque uma lâmpada nova;
suba na escada;
retire a lâmpada velha;
coloque a lâmpada nova;
Ainda pode ocorrer de a nova lâmpada também não funcionar, neste caso podemos alterar
o algoritmo para que as lâmpadas continuem sendo trocadas até que alguma funcione.
DICA
Calma ! Não pense que as ambigüidades desaparecem instantaneamente. Chegar a uma versão aceitável de um algoritmo é um pouco
processo que exige paciência e muita atenção. A esse processo costumamos dar o nome de REFINAMENTO. E refinar um algoritmo, o
exemplo, observe que, agora, a versão 3 está praticamente clara e sem nenhuma ambigüidade !
VERSÃO 3
ligue o interruptor;
se o interruptor não acender, então:
pegue uma escada;
posicione-a embaixo da lâmpada;
busque uma lâmpada nova;
suba na escada;
retire a lâmpada velha;
coloque a lâmpada nova;
enquanto a lâmpada não acender, faça:
retire a lâmpada;
coloque outra lâmpada;
Algumas conclusões:
Nessa primeira etapa da nossa aula, esperamos que tenham percebido:
que o principal problema de fazer um algoritmo é que ele pode ficar ambíguo;
que para retirar a ambigüidade de um algoritmo podemos usar de dois artifícios (EXISTEM OUTROS QUE SERÃO
MOSTRADOS):
criar decisões (são rotas alternativas)
criar repetições (para não deixar implícito quando termina alguma operação).
Lista de Exercícios 1
para fazer os exercícios abaixo você pode consultar os materiais:
[1]http://www.uergsai.hpg.ig.com.br/material/Algoritmo_Uergs.pdf
[2]http://henrique.brodbeck.com.br/inf01040/logica.pdf
Além dos livros citados na bibliografia
1) “Um homem quer atravessar um rio com um barco que pode carregar ele mesmo e apenas mais uma de suas três
cargas: um lobo, um carneiro e um maço de alfafa. O que o homem deve fazer para atravessar o rio sem perder nenhuma
de suas cargas?” Descreva os passos desse homem de forma a conseguir atingir o objetivo requisitado.
2) Suponha que você possua um robô e queira fazê-lo trocar uma lâmpada e depois conferir se a mesma acende, sendo
que o mesmo foi programado para obedecer os seguintes comandos:
pegue <objeto>
largue <objeto>
pressione <objeto>
gire garras 180 graus no sentido horário (parafusar)
gire garras 180 graus no sentido anti-horário
mova <objeto> para/até < lugar>
desloque-se para <lugar> O robô ainda é capaz de :
perceber quando um comando não é mais possível
(Utilize escada, lâmpada, interruptor, abaixo da lâmpada, parte superior da escada, lixeira, etc...)
3) Elabore um algoritmo (descrever os passos) que permita mover 3 discos de uma torre de Hanói, que consiste em 3
hastes (a-b-c), uma das quais serve de suporte para os três discos de tamanhos diferentes (1-2-3), os menores sobre os
maiores. Pode-se mover um disco de cada vez para qualquer haste, sendo que nunca deve ser colocado um disco maior
sobre um menor. O objetivo é transferir os três discos da haste “a” para a haste “c”. Mova <disco n> da haste <n1> para
haste <n2>
Cursos de Programação à Distância © Departamento de Ciência da Computação - Udesc, Joinville - 2004
Download

:: Modulo 1 :: Aula 1