1) O documento introduz os conceitos de algoritmos e estruturas de dados, explicando que a construção de programas envolve ambos;
2) É destacado que a formulação de algoritmos e escolha de estruturas de dados estão relacionadas e dependem uma da outra;
3) Dois aspectos de algoritmos são definidos: um estático referente à estrutura do texto e um dinâmico referente à execução no tempo.
1. Capítulo 1
INTRODUÇÃO
Programar é basicamente construir algoritmos. Essa definição relaciona o aspecto
fundamental, a construção de programas. Construção de programas são estruturas de dados
utilizadas no algoritmo para representar as informações do problema a ser resolvido.
De fato, no processo de construção de programas, a formulação do algoritmo e a definição
das estruturas de dados a serem utilizadas estão intimamente relacionadas. Isto é, decisões sobre
as estruturações dos dados não podem ser feitas sem conhecimento dos algoritmos aplicados a
eles, e vice e versa. A estrutura e a escolha dos algoritmos depende, muitas vezes, da estrutura de
dados.
Em um algoritmo (e em particular em um programa) deve-se distinguir claramente dois
aspectos complementares: um aspecto estático e um aspecto dinâmico.
A formulação de um algoritmo geralmente consiste em um texto contendo instruções
(comandos ou ações) que devem ser executadas em uma ordem prescrita. Uma ação é um evento
que ocorre em um período de tempo finito, estabelecendo um efeito intencionado e bem
definido. Como exemplos: "caminhar até a próxima esquina", "colocar um livro em cima de uma
mesa", "descascar as batatas para o jantar", "atribuir o valor 3.14 a uma variável".
Esses textos são representações concretas dos algoritmos e tem um caráter estático,
expandindo somente no espaço. Por outro lado esses textos não tem importância em si, mas os
efeitos que podem evocar quando executados no tempo, dado um conjunto de "valores iniciais".
Cada execução de um algoritmo é um evento dinâmico, evoluindo no tempo.
A grande dificuldade na concepção e no entendimento de algoritmos é o problema do
relacionamento desses aspectos, ou seja: como entender ("visualizar") as estruturas dinâmicas das
possíveis execuções do algoritmo a partir da estrutura estática do texto do algoritmo.
Lógica Cotidiana
A lógica do cotidiano (do dia a dia), as vezes é massivamente utilizada sem no entanto se
perceber disso. A lógica pode ser descrita como coerência de raciocínio de idéias ou ainda
seqüência coerente, regular e necessária de acontecimentos, de coisas.
Como exemplo, têm-se:
O número 3 é menor que o número 5. O número 7 é maior que o número 5. Logo, o
número 3 é menor que os números 5 e 7.
Quando chove, não é preciso regar as plantas no jardim. Hoje choveu. Logo, hoje não é
preciso regar as plantas no jardim.
O Brasil fica na América do Sul. (Quem nasce no Brasil é brasileiro). A América do Sul fica
no continente americano. (Quem nasce no continente americano é americano.) Logo, os
brasileiros são americanos.
O Raciocínio Lógico nasce de um conjunto de idéias desordenadas. Normalmente, pelo
motivo de querer chegar ao resultado mais rapidamente. Como exemplo, na seqüência de ações a
seguir (tabela 1), veja se é possível retirar o dinheiro de um banco, obedecendo, estritamente, a
seqüência descrita.
2. 1. Sair do Banco.
2. Aguardar a vez de ser atendido.
3. Entrar na fila do caixa.
4. Digitar a senha.
5. Entrar no banco.
6. Informar o valor a ser retirado.
7. Procurar a fila do caixa.
8. Pegar o comprovante do saque, o cartão eletrônico e o dinheiro.
9. Conferir o valor em dinheiro.
Seqüência de ações a serem efetuadas, para retirada de dinheiro.
A Lógica de Programação tem como intuito resolver problemas com maior rapidez e
menor esforço. Isso é possível quando se consegue automatizar tarefas. As tarefas devem ser
realizadas pelo computador de forma automática, e ter sido anteriormente, divididas em etapas e
colocadas em uma seqüência de ações, e só então inseridas na máquina. Para isso, a meta
principal de um programador é resolver problemas utilizando soluções lógicas, e dessa forma
obter resultados eficientes (corretos) e eficazes (com qualidade).
No exemplo da retirada de dinheiro acima, a ordem correta dos passos poderia ser:
1. Entrar no banco.
2. Procurar a fila do caixa.
3. Entrar na fila do caixa.
4. Aguardar a vez de ser atendido.
5. Informar o valor a ser retirado.
6. Digitar a senha.
7. Pegar o comprovante do saque, o cartão eletrônico e o dinheiro.
8. Conferir o valor em dinheiro.
9. Sair do Banco.
Seqüência de ações a serem efetuadas, para retirada de dinheiro.
EXERCÍCIOS PROPOSTOS
Questão 01:
Aplicando um raciocínio lógico, resolva o enunciado:
Existe um rio a ser atravessado por 3 pessoas. Essas pessoas pesam 50, 50 e 100kg. Para
atravessar esse rio, as 3 pessoas dispõem de uma canoa que leva no máximo 100kg por viagem.
Essa canoa tem que ser conduzida, isto é, ela não navega sozinha. Como essas pessoas chegam ao
outro lado da margem?
3. Questão 02:
Menos conhecidos que seus primos distantes, companheiros da Branca de Neve, os cinco anões
desta história raramente têm companhia. Eles são lenhadores. Quando vão para a floresta, cada
um põe na cabeça um boné de cor diferente. E cada anão derruba apenas um tipo de árvore,
diferente da dos outros quatro. Com as indicações a seguir, associe cada anão ao seu boné e à sua
árvore.
a) Léo usa boné vermelho.
b) Dino derruba olmos.
c) O anão que derruba carvalhos não usa boné amarelo.
d) Quem usa boné verde e corta salgueiros.
e) Boni não usa boné amarelo.
f) Leno usa boné azul e não preto.
g) Boni derruba maçarandubas.
h) O anão de boné azul derruba pinheiros.
Questão 03:
Em uma corrida, estão alinhados, lado a lado, 8 carros de marcas e cores diferentes. Estabeleça a
ordem em que os carros estão dispostos, com base nas informações:
a) O Ferrari está entre os carros vermelho e cinza.
b) O Lotus é o segundo carro à direita do carro creme e o segundo a esquerda do carro marrom.
c) O carro cinza está à esquerda da Lotus.
d) À direita do carro verde está o March.
e) O Shadow não tem carro algum à sua esquerda e está à esquerda do carro verde.
f) O Mclaren é o segundo carro à esquerda do Ferrari e o primeiro à direita do carro azul.
g) O Tyrrel não tem carro à sua direita e está logo depois do carro preto.
h) O carro preto está entre o Tyrrel e o carro amarelo.
i) O Lola é o segundo carro à esquerda do Isso.
Questão 04:
Mary tinha um número de biscoitos. Depois de comer um, Ela deu metade do que sobrou para sua
irmã. Então ela comeu mais um e deu metade do restante para seu irmão. Mary tinha agora
somente cinco biscoitos. Com quantos biscoitos ela começou?
Questão 05:
No antigo Egito, havia um prisioneiro numa cela com duas saídas, cada uma delas com um guarda.
Cada saída dava para um corredor diferente em que um dava para o campo e, portanto, para a
liberdade e o outro para um fosso de crocodilos. Só os guardas sabiam qual a saída certa, mas um
4. deles dizia sempre a verdade e outro mentia sempre. O prisioneiro não sabia nem qual a saída
certa nem qual o guarda verdadeiro. Qual a pergunta (e uma só pergunta) que o prisioneiro
deveria fazer a um dos guardas ao acaso, para saber qual a porta certa?