Você está na página 1de 50

INTRODUO LGICA DE PROGRAMAO

Algoritmos e Lgica de Programao

Profa. Ianna Sodr

INTRODUO

Muitos anos se passaram desde os primrdios da histria da computao.


Surgiram vrios paradigmas de programao.

Uma base de conhecimento que no mudou e no mudar nunca a Lgica de Programao.


Lgica de Programao e Raciocnio Matemtico interpretao de um problema e a utilizao correta de uma frmula.
No existem frmulas em informtica!

INTRODUO

Aperfeioamento de nossa forma de pensar e raciocinar sobre um problema.


Extrair do problema uma soluo eficiente e eficaz.

preciso aprender a pensar sobre os problemas, extraindo deles o mximo de informaes.

INTRODUO

A soluo que criamos para um determinado problema necessita ser exteriorizada e expressa numa linguagem publicamente conhecida. Assim, utilizamos a lgica de programao para desenvolver nossas solues e os algoritmos para apresentar essas solues ao mundo. Precisamos mais do que frmulas, precisamos aprender a pensar.

NOES DE LGICA
O que Lgica? Lgica trata da correo do pensamento (por que pensamos de determinado jeito e no de outro). Lgica a arte de pensar corretamente e, visto que a forma mais complexa do pensamento o raciocnio, a Lgica estuda ou tem em vista a correo do raciocnio. A Lgica tem em vista a ordem da razo. Isto d a entender que a nossa razo pode funcionar desordenadamente, pode pr as coisas de pernas para o ar. Por isso a Lgica ensina a colocar Ordem no Pensamento.

NOES DE LGICA
Exemplos: a) Todo mamfero animal. Todo cavalo mamfero. Portanto, todo cavalo animal. b) Todo mamfero bebe leite. O homem bebe leite. Portanto, todo homem mamfero e animal.

EXISTE LGICA NO DIA-A-DIA?


Sempre que pensamos, o raciocnio e a lgica nos acompanham necessariamente. Tambm quando falamos, pois a palavra falada a representao do pensamento; e, visto que a palavra escrita a representao da palavra falada, tambm pensamos quando escrevemos, utilizando lgica ou no (textos sem sentido). Da percebemos a importncia da Lgica na nossa vida no s na teoria, como tambm na prtica, j que quando queremos pensar, falar ou escrever corretamente precisamos colocar em Ordem o Pensamento, isto , utilizar a Lgica.

EXISTE LGICA NO DIA-A-DIA?


Exemplos: a) A gaveta est fechada. A bala est na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala.

b) Joo mais velho que Jos. Marcelo mais novo que Jos. Portanto, Joo mais velho que Marcelo.

ALGORITMIZANDO A LGICA
Construir algoritmos o objetivo fundamental de toda a programao, mas, afinal, O que Algoritmo?

Algoritmo uma seqncia de passos que visam atingir um objetivo bem definido.

Apesar de achar este nome estranho, algoritmos so comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela est descrita uma srie de ingredientes necessrios, uma seqncia de diversos passos aes - a serem cumpridos para que se consiga fazer determinado tipo de bolo - objetivo bem definido aguardado ansiosamente por todos.

ALGORITMIZANDO A LGICA

Ao um acontecimento que a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido, em que, Estado a situao atual de dado objeto. Exemplo de ao: sequncia de Fibonacci

A escolha de um valor qualquer para depois escrever a sequncia de Fibonacci considerada uma ao?

No, pois a escolha imprevisvel! A escrita dos termos da sequncia uma ao?

Sim, pois parte de um estado inicial e depois de um tempo produz resultado previsvel e bem definido.

ALGORITMIZANDO A LGICA

Um mesmo comando poderia ter sido usado: Escreva os termos de Fibonacci inferiores a x

Algoritmo a descrio de um conjunto de comandos que obedecidos, resultam numa sucesso finita de aes. No a soluo de um problema. S se aprende construindo, testando.

ALGORITMO

Outros algoritmos freqentemente encontrados so: instrues para utilizar um aparelho eletrodomstico; uma receita para preparo de algum prato; guia de preenchimento para declarao do imposto de renda; a regra para determinao de mximos e mnimos de funes por derivadas sucessivas; a maneira como as contas de gua, luz e telefone so calculadas mensalmente; etc.

EXERCCIOS
1. Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? 2. Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um barco com capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a seqncia de passos que permitiria a travessia com segurana? 3. Numa determinada noite, acontece uma queda de energia. Voc sabia que poderia encontrar uma vela na gaveta da cozinha, um lampio embaixo da cama, fusveis de reserva no armrio da sala e fsforos na estante da cozinha. Descreva a seqncia de passos que poderia ser utilizada para diagnosticar e resolver o problema, que pode ser previsto em duas possibilidades: a) o fusvel queimou; b) a queda na estao da companhia eltrica.

ALGORITMO
So vrios os conceitos para algoritmo.

Um conjunto finito de regras que prov uma seqncia de operaes para resolver um tipo de problema especfico [KNUTH] Seqncia ordenada, e no ambgua, de passos que levam soluo de um dado problema [TREMBLAY] Processo de clculo, ou de resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, as regras formais para a obteno do resultado ou da soluo do problema [AURLIO]

ALGORITMO
Portanto, podemos redefinir Algoritmo como: Algoritmo a descrio de um conjunto de aes que, obedecidas, resultam numa sucesso finita de passos, atingindo o objetivo. Em geral um algoritmo destina-se a resolver um problema: fixa um padro de comportamento a ser seguido, uma norma de execuo a ser trilhada, com o objetivo de alcanar a soluo de um problema. O que padro de comportamento? Imagine a seguinte seqncia de nmeros: 1, 6, 11, 16, 21, 26.... Para determinar o stimo elemento da srie, precisamos descobrir qual a sua regra de formatao, isto , seu padro de comportamento.

ALGORITMO

Descrever uma atividade bem cotidiana, como, por exemplo, trocar uma lmpada. pegue a escada; posicione-a embaixo da lmpada; busque uma lmpada nova; suba na escada; retire a lmpada velha; coloque a lmpada nova.

ALGORITMO
Algoritmo no computacional cujo objetivo usar um telefone pblico.
Incio
1. Tirar o fone do gancho;

S E Q U N C I A L

2. Ouvir o sinal de linha; 3. Introduzir o carto; 4. Teclar o nmero desejado; 5. Se der o sinal de chamar 5.1 Conversar; 5.2 Desligar; 5.3 Retirar o carto;

DESVIO

6. Seno
6.1 Repetir; Fim.

ALGORITMO
Involuntariamente, j seguimos uma determinada seqncia de aes que, representadas neste algoritmo, fazem com que ele seja seguido naturalmente por pessoas, estabelecendo um padro de comportamento. assim tambm com os algoritmos escritos para computador. preciso especificar todos os passos, para que o computador possa chegar ao objetivo.

ALGORITMO SER QUE ENTENDI?


1) Dados os nmeros naturais(N) 0, 1, 2, 3, 4, 5, 6, ... passo 1 faa N igual a zero passo 2 some 1 a N passo 3 volte ao passo 2

Os dois exemplos so algoritmos? Justifique.

2) Soma dos primeiros 100 nmeros naturais: passo 1 faa N e Soma iguais a zero passo 2 some 1 a N passo 3 some N a Soma passo 4 se N for menor que (100 1) ento volte ao passo 2 seno pare

POR QUE PRECISAMOS DE ALGORITMOS?

A noo de algoritmo bsica para toda a programao de computadores. [KNUTH Professor da Universidade de Stanford, autor da coleo The art of computer programming] O conceito central da programao e da cincia da computao o conceito de algoritmo. [WIRTH Professor da Universidade de Zurique, autor de diversos livros na rea e responsvel pela criao de linguagens de programao como ALGOL, PASCAL e MODULA -2]

POR QUE PRECISAMOS DE ALGORITMOS?


A importncia do algoritmo est no fato de termos que especificar uma seqncia de passos lgicos para que o computador possa executar uma tarefa qualquer, pois o mesmo por si s no tem vontade prpria, faz apenas o que mandamos. Com uma ferramenta algortmica, podemos conceber uma soluo para um dado problema, independendo de uma linguagem especfica e at mesmo do prprio computador.

CARACTERSTICAS DOS ALGORITMOS


Todo algoritmo deve apresentar algumas caractersticas bsicas:

Finitude; no dar margem dupla interpretao (no ambguo); capacidade de receber dado(s) de entrada do mundo exterior; poder gerar informaes de sada para o mundo externo ao do ambiente do algoritmo; Efetividade (todas as etapas especificadas no algoritmo devem ser alcanveis em um tempo finito).

FORMAS DE REPRESENTAO
Algoritmos podem ser representados, dentre outras maneiras, por:
Descrio narrativa; Fluxograma; Linguagem algortmica.

DESCRIO NARRATIVA
Faz-se uso do portugus para descrever algoritmos. Exemplo: Receita de Bolo: Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Despeje a mistura na frma de bolo Leve a frma ao forno Espere 20 minutos Retire a frma do forno Deixe esfriar Prove VANTAGENS: o portugus bastante conhecido por ns; DESVANTAGENS: impreciso; pouca confiabilidade (a impreciso acarreta a desconfiana); extenso (normalmente, escreve-se muito para dizer pouca coisa).

FLUXOGRAMA
Utilizao

de smbolos grficos para representar algoritmos. No fluxograma existem smbolos padronizados para incio, entrada de dados, clculos, sada de dados, fim, etc.

FLUXOGRAMA
Exemplo Explicao

Incio do algoritmo
Entrada do nmero Clculo do dobro do nmero Apresentao do resultado Fim do algoritmo

FLUXOGRAMA
VANTAGENS: Uma das ferramentas mais conhecidas; Figuras dizem muito mais que palavras; Padro mundial DESVANTAGENS: Pouca ateno aos dados, no oferecendo recursos para descrev-los ou representlos; Complica-se medida que o algoritmo cresce.

LINGUAGEM ALGORTMICA
Consiste na definio de uma pseudolinguagem de programao, cujos comandos so em portugus, para representar algoritmos. Exemplo: Algoritmo CALCULA_DOBRO var NUM, DOBRO: inteiro inicio Leia (NUM) DOBRO 2 * NUM Escreva (DOBRO) fimalgoritmo VANTAGENS: Usa o portugus como base; Pode-se definir quais e como os dados vo estar estruturados; Passagem quase imediata do algoritmo para uma linguagem de programao qualquer. DESVANTAGENS: Exige a definio de uma linguagem no real para trabalho; No padronizado.

UM AMBIENTE PARA ESCREVER


Descreveremos uma mquina hipottica para a qual escreveremos nossos algoritmos. O nosso computador hipottico apresentar a seguinte organizao:

ALGORITMOS

UM AMBIENTE PARA ESCREVER


ALGORITMOS
Cada uma das partes constituintes da figura acima tem os seguintes significados: 1. Dispositivo de entrada (o teclado): o meio pelo qual os dados que sero trabalhados pelo algoritmo vo ser introduzidos em nosso computador hipottico; 2. Unidade Lgica e Aritmtica (ULA): Parte responsvel pelas operaes matemticas e avaliaes lgicas; 3. Unidade de Controle: Exerce controle sobre as demais partes do nosso computador. uma verdadeira gerente que distribui tarefas s outras unidades; 4. Memria: Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operaes ficam guardados na memria; 5. Dispositivo de Sada (vdeo e impressora): o meio que se dispe para apresentao dos resultados obtidos.

FUNCIONAMENTO DO NOSSO
COMPUTADOR
Todos os computadores, independentemente dos seus tamanhos, so conceitualmente semelhantes ao esquema da figura anterior. Resumidamente, podemos afirmar que existem 4 operaes bsicas que qualquer computador pode executar: a) operaes de entrada e sada: ler dados do teclado e escrever dados na tela so exemplos destas operaes. Elas servem para introduzir dados na memria do nosso computador e exibir dados que j estejam l armazenados; b) operaes aritmticas: so utilizadas na realizao de operaes matemticas (adio, subtrao, multiplicao e diviso);

FUNCIONAMENTO DO NOSSO
COMPUTADOR
c) operaes lgicas e relacionais: tm aplicabilidade em comparaes, testes de condies lgicas (2>6 ? X=Y ?); d) movimentao de dados entre os vrios componentes: as operaes aritmticas so executadas na Unidade Lgica e Aritmtica, necessitando da transferncia dos dados para essa unidade e da volta do resultado final para ser guardado na memria.

RESOLVENDO UM PROBLEMA
Suponha

que queiramos resolver o seguinte problema: a partir de dois nmeros que sero informados, calcular a adio dos mesmos. Se voc fosse encarregado de efetuar essa tarefa, seria bem provvel que utilizasse os passos a seguir: a) saber quais so os nmeros; b) calcular a soma dos nmeros; c) responder questo com o valor do resultado.

RESOLVENDO UM PROBLEMA
Vejamos como seria resolvido esse mesmo problema em termos das operaes bsicas citadas anteriormente: a) operao de entrada de dados dos nmeros ; b1) movimento do valor dos nmeros entre a memria e a ULA; b2) operao aritmtica de somar os 2 nmeros; b3) movimentao do resultado da ULA para guardar na memria; c) operao de sada do resultado, que est guardado na memria, para o dispositivo de sada desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operao matemtica, no sendo explicitados.

RESOLVENDO UM PROBLEMA
Ento, escrever algoritmos, ou programar, consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operaes bsicas citadas. Esses passos que compem o algoritmo so denominados de comandos. Os comandos de uma linguagem de programao podem estar mais prximos da mquina (linguagens de baixo nvel) ou serem mais facilmente entendidos pelo homem (linguagens de alto nvel).

RESOLVENDO UM PROBLEMA
A seqncia de operaes bsicas, dada anteriormente, para resolver o problema de adicionar dois nmeros, est em uma linguagem de baixo nvel para o nosso computador hipottico. Em uma linguagem de alto nvel teramos um resultado assim: Leia X,Y SOMA X + Y Escreva SOMA Como seria a soluo usando fluxograma?

ESTRUTURAS CHAVES DA
CONSTRUO DE ALGORITMOS

Existem 3 estruturas bsicas de controle nas quais se baseiam os algoritmos: Sequenciao Deciso ou seleo Repetio ou iterao

SEQENCIAO

Os comandos do algoritmo fazem parte de uma seqncia, onde relevante a ordem na qual se encontram os mesmos, pois sero executados um de cada vez, estritamente, de acordo com essa ordem. De uma forma genrica, poderamos expressar uma seqncia da seguinte maneira: Comando-1 Comando-2 : Comando-n Tem-se uma seqenciao de n comandos na qual os comandos sero executados na ordem em que aparecem, isto , o comando de ordem i+1 s ser executado aps a execuo do de ordem i (o 3 s ser executado aps o 2). Todo algoritmo uma seqncia. A seqenciao aplicada quando a soluo do problema pode ser decomposta em passos individuais.

DECISO OU SELEO OU CONDICIONAL

H a subordinao da execuo de um ou mais comandos veracidade de uma condio. Se <condio> ento <seq. de comandos-1> seno <seq. de comandos-2> A deciso deve ser sempre usada quando h a necessidade de testar alguma condio e em funo da mesma tomar uma atitude. Em nosso dia-a-dia, estamos sempre tomando decises, vejamos um exemplo: Se tiver dinheiro suficiente, ento vou almoar em um bom restaurante. Caso contrrio (seno), vou comer um sanduche na lanchonete da esquina.

REPETIO OU ITERAO
Essa estrutura tambm conhecida por looping ou lao. A repetio permite que tarefas individuais sejam repetidas um nmero determinado de vezes ou tantas vezes quantas uma condio lgica permita. Exemplos: a) vou atirar pedras na vidraa at quebr-la; b) baterei cinco pnaltis; c) enquanto tiver sade e dinheiro, vou desfrutar a vida.

A utilizao combinada dessas 3 estruturas descritas vai permitir expressar a soluo para uma gama muito grande de problemas. Todas as linguagens de programao oferecem representantes dessas estruturas.

REFINAMENTOS SUCESSIVOS

Um algoritmo considerado completo se os seus comandos forem do entendimento do seu destinatrio. Num algoritmo, um comando que no for do entendimento do destinatrio ter que ser desdobrado em novos comandos, que constituiro um refinamento do comando inicial, e assim sucessivamente, at que os comandos sejam entendidos pelo destinatrio. Por exemplo, o algoritmo para calcular a mdia aritmtica de dois nmeros pode ser escrito da seguinte forma: Algoritmo CALCULA_MDIA Inicio Receba os dois nmeros Calcule a mdia dos dois nmeros ? Exiba o resultado Fimalgoritmo

REFINAMENTOS SUCESSIVOS
Podemos

desdobrar o comando Calcule a mdia dos dois nmeros em: Soma os dois nmeros Divida o resultado por 2 Aps esse refinamento, o algoritmo pode ser considerado completo, a menos que o destinatrio no saiba fazer as operaes de adio e diviso, ou no seja capaz de entender diretamente algum comando.

REFINAMENTOS SUCESSIVOS
Assim sendo, obtm-se: Algoritmo CALCULA_MDIA Inicio Receba os dois nmeros Soma os dois nmeros Divida o resultado por 2 Exiba o resultado Fimalgoritmo

Refinamento

REFINAMENTOS SUCESSIVOS
Reescrever

um algoritmo completo, com os refinamentos sucessivos inseridos nos seus devidos lugares, permite ter uma viso global de como o algoritmo deve ser executado. medida que o algoritmo passa a ser maior e mais complexo, esta viso global torna-se menos clara e, neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entend-lo.

MTODO PARA CONSTRUO DE


ALGORITMOS

Ler atentamente o enunciado. justamente o enunciado do exerccio que fornece o encaminhamento necessrio resoluo do problema, que se torna, portanto, dependente de sua completa compreenso. Retirar do enunciado a relao das entradas de dados. Retirar do enunciado a relao das sadas de dados. Determinar o que deve ser feito para transformar as entradas determinadas nas sadas especficas.

ALGORITMO X QUALIDADE
Todo algoritmo deve ser feito de maneira lgica e racional, visando principalmente a sua eficincia e clareza. Ao construir algoritmos devemos:

1.

2.
3.

4.

Saber que estes sero lidos por outras pessoas, permitindo sua fcil correo. Escrever comentrios na sua elaborao. Devem acrescentar alguma coisa, no apenas frasear. Sempre atualizar os comentrios, em caso de manuteno. Pior do que um programa sem comentrios, um programa com comentrios errados. Use comentrios, tambm, no cabealho do algoritmo, incluindo, principalmente:
descrio do que faz o algoritmo autor data de criao

ALGORITMO X QUALIDADE
5. 6. 7. 8.

9.

Os comandos nos dizem o que est sendo feito, os comentrios dizem o porqu. Utilizar espaos e/ou linhas em branco para melhorar a legibilidade. Uso de parnteses aumenta a legibilidade e previne erros. Escolha nomes representativos para variveis, todavia evite nomes muito longos. Ex: Prefira SalBruto ou SalarioBruto ao invs de SB ou VAR1 Prefira TotAlunosAprovDireta ao invs de TotalAlunosAprovacaoDireta Destaque as palavras-chave das estruturas de controle e comandos com sublinhado. Ex: se media >= 7 ento ... seno ... fimse

ALGORITMO X QUALIDADE
10.Um

comando por linha suficiente. 11.Use identao (mostra a estrutura lgica do algoritmo) nos comandos de acordo com o nvel que estejam, ou seja, alinhe comandos de mesmo nvel e desloque comandos de nvel inferior. Ex.:
incio comando 1 se condicao1 entao comando2 comando3 senao comando4 comando5 fimse comando6 fimalgoritmo

EXERCCIOS
1. Construa um algoritmo que mostre todos os passos que voc segue para escolher o tipo de roupa com que vai sair, aps levantar, levando em considerao apenas o tempo (bom, nublado, chuvoso) e a temperatura (quente, moderado, frio). 2. Elabore 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 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 um menor. O objetivo transferir os trs discos para outra haste.

EXERCCIOS
3.

Suponha que voc possua um rob e queira faz-lo trocar uma lmpada, sendo que o mesmo foi programado para obedecer aos seguintes comandos:

pegue <objeto> pressione <objeto> gire garras 180 no sentido horrio gire garras 180 no sentido anti-horrio mova <objeto> para <lugar> desloque-se para <lugar> perceber quando algum comando no pode mais ser executado sentir alguma fonte de calor

e ainda capaz de:

Que ordens voc daria para que seu rob trocasse a lmpada?

Você também pode gostar