Aula 2 Introdução

download Aula 2 Introdução

of 26

description

Introduçao a logica de programaçao

Transcript of Aula 2 Introdução

  • Universidade Federal do Esprito SantoProgramao IIProfessora: Norminda Luiza

  • LgicaPodemos relacionar a lgica com a correo do pensamento, pois uma de suas preocupaes determinar quais operaes so vlidas e quais no so fazendo anlises das formas e leis do pensamento.Poderamos dizer tambm que a arte de bem pensar, que a cincia das formas do pensamento. Visto que a forma mais complexa do pensamento o raciocnio, a lgica estuda a correo do pensamento.

  • LgicaTodo mamfero um animal.Todo cavalo um mamfero.Portanto, todo cavalo um animal.

    Esse exemplo ilustra silogismos, que no estudo da Lgica Proposicional (ou clculo sentencial) representam um argumento composto de duas premissas e uma concluso; e est estabelecendo uma relao, que pode ser vlida ou no.Esse um dos objetivos da lgica, o estudo de tcnicas de formalizao, deduo e anlise que permitam vefiricar a validade de argumentos.

  • Lgica de ProgramaoSignifica o uso correto das leis do pensamento, da ordem da razo e de processos de raciocnio e simbolizao formais na programao de computadores, objetivando racionalidade e o desenvolvimento de tcnicas que cooperam para a produo de solues logicamente vlidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.Para representar mais fielmente o raciocnio da Lgica de Programao, utilizamos os Algoritmos.

  • Algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita de aes.Ao um acontecimento que, a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido.

    Geralmente, um algoritmo se destina a resolver um problema: fixa um padro de comportamento a ser seguido, uma norma de execuo a ser trilhada, para se atingir, como resultado final, a soluo de um problema.

  • AlgoritmoUm algoritmo pode ser definido como uma sequncia de passos que visam a atingir um objetivo bem definidoPara especificar uma sequncia de passos, necessrio utilizar ordem, ou seja, pensar com ordem, portanto precisamos utilizar lgica.

    Ao elaborar um algoritmo, devemos especificar aes claras e precisas, que a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido.

  • AlgoritmoPor que importante construir um algoritmo?Representar mais fielmente o raciocnio envolvido na Lgica de Programao.Pode ser traduzida para qualquer linguagem de programao.

    Exemplo (utilizando um portugus coloquial) Algoritmo 1.1 - Troca de lmpadapegar uma escada;posicionar a escada embaixo da lmpada;buscar uma lmpada nova;subir na escada;retirar a lmpada velha;colocar a lmpada nova.

  • AlgoritmoAlgoritmo 1.2 - Troca de lmpada com testepegar uma escada;posicionar a escada embaixo da lmpada;buscar uma lmpada nova;acionar o interruptor;se a lmpada no acender, entosubir na escada;retirar a lmpada queimada;colocar a lmpada nova.

  • AlgoritmoAlgoritmo 1.3 - Troca de lmpada com teste no incioacionar o interruptor;se a lmpada no acender, entopegar uma escada;posicionar a escada embaixo da lmpada;buscar uma lmpada nova;subir na escada;retirar a lmpada queimada;colocar a lmpada nova.

  • AlgoritmoAlgoritmo 1.4 - Troca de lmpada com teste e repetio indefinidaacionar o interruptor;subir na escada;retirar a lmpada queimada;colocar a lmpada nova.se a lmpada no acender, entoretirar a lmpada queimada;colocar a lmpada nova.se a lmpada no acender, entoretirar a lmpada queimada;colocar a lmpada nova.se a lmpada no acender, entoretirar a lmpada queimada;colocar a lmpada nova. at quando?

  • AlgoritmoAlgoritmo 1.5 - Troca de lmpada com teste e condio de paradaacionar o interruptor;se a lmpada no acender, entopegar uma escada;posicionar a escada embaixo da lmpada;buscar uma lmpada nova;subir na escada;retirar a lmpada queimada;colocar uma lmpada nova;Enquanto a lmpada no acender, faa retirar a lmpada queimada; colocar uma lmpada nova;

  • AlgoritmoUm homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafas. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas?Informaes:um barcoum homemum loboum bodeum mao de alfafaAo:atravessar o rio sem perder as cargas

  • AlgoritmoResultado:todas as cargas na outra margem do rioalgoritmo:atravessar homem e bodevoltar homematravessar homem e lobovoltar homem e bodeatravessar homem e alfafavoltar homem atravessar homem e bodefim algoritmo

  • AlgoritmoElabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a-b-c), uma das quais serve de suporte para trs discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre o menor. O objetivo transferir os trs discos para outra haste.

  • Algoritmo Informaes:3 discos3 hastesAes:movimentar um disco de cada vez de forma que fiquem ordenadoResultado:discos transferidos o ordenados para outra hastealgoritmo- mover o disco 1 para a haste b- mover o disco 2 para a haste c- mover o disco 1 para a haste c- mover o disco 3 para a haste b- mover o disco 1 para a haste a- mover o disco 2 para a haste b- mover o disco 1 para a haste bfim algoritmo

  • Torre de Hani

  • Torre de Hani

  • AlgoritmoEscrever os termos da sequncia de Fibonacci inferiores a um valor numrico L.A Sequncia de Fibonacci se define como tendo os dois primeiros termos iguais a 1 e cada termo seguinte igual a soma dos dois termos imediatamente anteriores.

    L = 501 1 2 3 5 8 13 21 34

    L = 131 1 2 3 5 8

    L = 1

    Algoritmo Escreva os termos de Fibonacci inferiores a Lfim algoritmo

  • Algoritmo - Refinamentos sucessivosUm algoritmo considerado completo se for do entendimento do seu destinatrio.Num algoritmo, um comando que no for do entendimento do destinatrio ter de ser desdobrado em novos comandos, que constituiro um refinamento do comando inicial.

    Ref. Escreva os termos de Fibonacci inferiores a L Receba o valor de L. Processe os 2 primeiros termos. Processe os termos restantes.fim ref.

  • Algoritmo - Refinamentos sucessivosUm algoritmo e seus refinamentos so formados por comandos, que determinam as aes a serem executadas pelo seu destinatrio e por estruturas de controle que determinam a ordem em que os comandos devem ser executados, se devem ser executados ou no e quando devem ser repetidos.No refinamento anterior vigora a mais simples das estruturas de controle: a estrutura sequncial.Se um comando de um refinamento for um tanto vago, ele poder por sua vez, ser desdobrado em novos comandos, produzindo-se o refinamento de um refinamento, e assim sucessivamente.

  • Algoritmo - Refinamentos sucessivosRef. Processe os 2 primeiros termos Atribua o valor 1 ao primeiro termo Se ele for menor que L ento escreva-o fim se Atribua o valor 1 ao segundo termo Se ele for menor que L ento escreva-o fim sefim ref.

    Neste refinamento aparece uma segunda estrutura de controle: a estrutura condicional

  • Algoritmo - Refinamentos sucessivosRef. Processe os termos restantes Repita Calcule novo termo somando os 2 anteriores Se novo termo for maior ou igual a L ento interrompa fim se Escreva novo termo fim repitafim ref.

    Neste refinamento aparece uma terceira estrutura de controle: a estrutura de repetioAps esses refinamentos sucessivos, o algoritmo pode ser considerado completo, a menos que o destinatrio no saiba fazer a adio de dois termos ou no seja capaz de entender diretamente algum comando.

  • Algoritmo

    Algoritmo {Escrita dos termos de Fibonacci inferiores a L} Receba o valor de L. {Processamento dos 2 primeiros termos} Atribua o valor 1 ao primeiro termo Se ele for menor que L ento escreva-o fim se Atribua o valor 1 ao segundo termo Se ele for menor que L ento escreva-o fim se {Processamento dos termos restantes.} Repita Calcule novo termo somando os 2 anteriores Se novo termo for maior ou igual a L ento interrompa fim se Escreva novo termo fim repitafim algoritmo

  • Algoritmos EstruturadosSo tcnicas que permitem sistematizar e ajudar o desenvolvimento de algoritmos para a resoluo de grandes e complexos problemas nos computadores: so as tcnicas de desenvolvimento estruturado de algoritmos.Objetivos:facilitar o desenvolvimento dos algoritmos;facilitar o seu entendimento pelos humanos;antecipar a comprovao da sua correo;facilitar a sua manuteno e a sua modificao;permitir que o seu desenvolvimento possa ser empreendido simultaneamente por uma equipe de pessoas.

  • Algoritmos EstruturadosPara atingir estes objetivos, o desenvolvimento estruturado preconiza que:os algoritmos sejam desenvolvidos por refinamentos sucessivos. Este desenvolvimento tambm se denomina construo hierrquica de algoritmos e desenvolvimento de cima para baixo (em ingls, top-down);os sucessivos refinamento so mdulos, que delimitam poucas funes e so o mais independente possvel, isto , conservam poucos vnculos com outros mdulos;nos mdulos deve ser usado um nmero limitado de diferentes comandos e de diferentes estruturas de controle.

  • Linguagens de ProgramaoPara armazenar um algoritmo na memria de um computador e para que ele possa, em seguida, comandar as operaes a serem executadas, necessrio que ele seja programado, isto , que seja transcrito para uma linguagem que o computador possa entender, direta ou indiretamente. Os computadores s podem executar diretamente os algoritmos expressos em linguagem de mquina, que um conjunto de instrues capazes de ativar diretamente os dispositivos eletrnicos do computador. Compilador: um programa que traduz o algoritmo escrito na linguagem escolhida para a linguagem de mquinaInterpretador: um programa que interpreta cada comando do programa e executa uma srie de instrues que a ele correspondem.