Algoritmos Objetivos Os alunos deverão ser capazes de: * Sintetizar algoritmos para resolver computações simples. * Utilizar controle de fluxo de processamento (processamento condicional e laços) * Realizar conversões algoritmos <--> fluxogramas
Exercícios de lógica I. Num determinado local, todas as pessoas de olhos claros falam sempre a verdade e todas as de olhos escuros mentem sempre, e ninguém tira os óculos escuros. Você encontrou 3 pessoas. Querendo saber a cor de seus olhos, perguntou à primeira que respondeu no dialeto local. Perguntou à segunda: o que a primeira disse?, e a resposta foi ela disse que tem olhos escuros. O que você poderia perguntar à terceira pessoa para descobrir as cores dos olhos? Dada a resposta, quais são as cores dos olhos? II. A mother is four times as old as her daughter. In 20 years she will be twice as old as her daughter. How old are mother and daughter now? III. Two strangers from different parts of America both build simular apartment buildings in their home towns. By chance, they both forget an important part of thier project. They each, once again by chance, call the same national hardware store and order the missing items. The prices they are quoted are as follows: one will cost them $2, two will cost them $2, twelve will cost them $4 and a hundred and fourty-four will cost $6. What was the item they needed? IV. Sejam o Sr. Silva, Souza e Santos, cada qual com um automóvel de uma cor. Quem é quem, dado que: 1. Sr. Silva tem um VW, que não é preto. 2. O Ford não é vermelho. 3. Senhor Souza não tem um GM nem um carro preto. V. Pergunta: O que as questões propostas têm em comum? E de diferente? Vamos a http://www.johnpratt.com/items/puzzles/logic_puzzles.html e a http://www.thakur.demon.nl/index_1.html
Computação, computador e algoritmo Uma computação é uma tarefa que se pode realizar com lápis e papel, seguindo uma receita, sendo necessário apenas saber ler e escrever símbolos básicos. Essa é a definição aproximada dada por Alan Turing. Um computador é uma máquina que pode executar uma computação. Algoritmo é a receita a ser seguida para se realizar a computação. Deve poder ser realizada por qualquer computador, desde que escrita de forma interpretável por ele. Alan Turing proved that his universal machine and by extension, even today s most powerful computers could never solve certain problems. For instance, a universal Turing machine cannot always determine whether a given software program will terminate or continue running forever. In some cases, the best the universal machine can do is execute the program and wait maybe eternally for it to finish. But [...] [he] did imagine that a machine equipped with a special 'oracle' could perform this and other 'uncomputable' tasks. No entanto, atenção: http://en.wikipedia.org/wiki/algorithm http://www.cs.virginia.edu/~robins/alan_turing's_forgotten_ideas.pdf
Algoritmo Um algoritmo, ou método de computação, deve ser escrito por alguém para representar uma computação. O computador deverá ser capaz de lê-lo. A síntese de algoritmos é uma tarefa exclusivamente humana! A avaliação da capacidade de um dado algoritmo resolver o problema a que se destina é realizado por um humano, mesmo que a construção do algoritmo seja automática. A estado entrada 0 Tabela de transição A 0 B 1 > A 1 B 0 < B 0 A 1 > 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1... Por outro lado, um algoritmo, escrito para uma máquina qualquer, concreta ou abstrata, pode ser reescrito para outra máquina concreta ou abstrata, desde que essa outra máquina seja também um computador. O computador essencial é a máquina de Turing.
Algoritmos e fluxogramas Pergunta: como seria um algoritmo para ligar um automóvel, e seu fluxograma? Um algoritmo sempre pode ser representado por um fluxograma. O fluxograma apresenta, diagramaticamente, a seqüência de passos a executar. Início: 1- Sente-se no banco do motorista... (qual é o fim do algoritmo?) No fluxograma, ficam nítidas as entradas, saídas, operações sobre os dados, variáveis auxiliares, desvios condicionais e laços de repetição. http://www.cs.virginia.edu/~robins/alan_turing's_forgotten_ideas.pdf