Upload
reverton
View
3.611
Download
4
Embed Size (px)
DESCRIPTION
Apostila do Módulo I do curso de Algoritmo do Professor Reverton
Citation preview
28/08/2009
1
Módulo I
Prof. Reverton Cristaldowww.revertoncristaldo.com
Tópicos
O que é “lógica ” ou “pensamento lógico ”?
O que é algoritmo ?
Alguns outros conceitos de algoritmos
Exemplos de algoritmos
Exercícios de Fixação e aprendizado
28/08/2009
2
Exemplos de Algoritmos
- pegar uma escada;- posicionar embaixo da lâmpada;- buscar uma lâmpada nova;- ligar o interruptor;- se a lâmpada não acender, então:
- subir na escada;- retirar a lâmpada velha;- colocar a lâmpada nova.
- senão, se a lâmpada acender, então:- fim do algoritmo.
O que é “lógica” ou “pensamento
lógico”?
Lógica é a forma correta de organizar os pensamentos e demonstrar o raciocínio de maneira correta.
A utilização da lógica é a melhor forma de solucionar problemas e atingir objetivos.
28/08/2009
3
O que é “lógica” ou “pensamento
lógico”?
Sempre que se quer pensar , falar ou escrevercorretamente, deve-se colocar os pensamentosem ordem.
Exemplo
Todo mamífero é um animal.
Todo cavalo é mamífero.
PORTANTO, todo cavalo é animal.
28/08/2009
4
A lógica é muito importante em nossa
vida, no dia - a - dia. Veja os exemplos
abaixo:A gaveta está fechada.
A Bala está dentro da gaveta
Preciso primeiro abrir a gaveta, para depois pegar a bala.
Recapitulando...
O que é “lógica ” ou “pensamento lógico ”?
é a forma correta de organizar os pensamentos e demonstrar o raciocínio de maneira correta.
28/08/2009
5
O que é algoritmo?
Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema
A seguir, um exemplo de algoritmo não computacional...
28/08/2009
6
Algoritmo
Apesar do nome estranho, os algoritmos são muito comuns no nosso cotidiano, como por exemplo, emuma receita de bolo . Nela estão escritos os ingredientes necessários e a seqüências de passos ou ações a serem cumpridos para que se consiga fazer um determinado tipo de bolo.
Em um modo geral, um algoritmo segue um determinado padrão de comportamento, com objetivo de alcançar a solução de um problema.
Algoritmo
Padrão de Comportamento:
Imagine a seqüência de números: 1, 6, 11, 16, 21, 26, ...
Para determinar qual será o sétimo elemento dessa série, precisamos descobrir qual é a sua regra de formação, isto é, qual é o seu padrão de comportamento.
Regra: X + 5
28/08/2009
7
Alguns outros conceitos de algoritmos
� Algoritmo é a forma organizada de expressar uma seqüência de passos que visam atingir um objetivo definido. Algoritmo é a lógica necessária para o desenvolvimento de um programa.
Palavras que sempre encontramos nos conceitos de algoritmos:
Exercícios de Fixação
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?
28/08/2009
8
Elabore um algoritmo que mova 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 haste C.
Mova <disco n> da haste <n1> para haste <n2>
Passo 1Passo 2Passo 3Passo 4Passo 5Passo 6Passo 7
Mova Disco 1 da haste a para a haste c
Mova Disco 2 da haste a para a haste bMova Disco 1 da haste c para a haste bMova Disco 3 da haste a para a haste cMova Disco 1 da haste b para a haste aMova Disco 2 da haste b para a haste cMova Disco 1 da haste a para a haste c
28/08/2009
9
Algoritmo computacional –
Trabalhando os conceitos
Um algoritmo é um procedimento computacional definido que recebe um ou mais valores (entrada) e produz um ou mais valores (saída) .
Entrada Saída
Algoritmo computacional –
Trabalhando os conceitos
O algoritmo é aquela fórmula matemática, aquele pedaço de código, que fica ali no meio da entrada e da saída para transformar o primeiro no segundo.
Vamos supor por exemplo que temos a função:
A sua entrada é o x e a sua saída é o y (ou f(x) , o valor que a função retorna).
28/08/2009
10
Algoritmo computacional –
Trabalhando os conceitos
Os passos do algoritmo para resolução deste problema ficariam da seguinte forma:
O algoritmo aqui seria o seguinte:
1. Entrada: Receber o valor X. 2. Elevar X ao quadrado e guardar o número resultante
como Z. 3. Dividir Z por 3 e guardar o número resultante como Y. 4. Saída: Imprimir o valor Y.
Pseudocódigo – Introdução.
É uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação.
Como ficaria a escrita do algoritmo para a resolução deste problema, independente do valor de X?
28/08/2009
11
algoritmo "calculaX"// Função : Calcular: F(x) = (X2)/2// Autor : Prof. Reverton Cristaldo// Data : 31/7/2008// Seção de Declarações varx : realy : realinicio// Seção de Comandos leia(x)y <- (x * x)/3escreva("O Valor de F(x) é : ", y:2:2)fimalgoritmo
Pseudocódigo � Linguagem de Programação Pascal
algoritmo "calculaX"// Função : Calcular: F(x) = (X2)/2// Autor : Prof. Reverton Cristaldo// Data : 31/7/2008// Seção de Declarações varx : realy : realinicio// Seção de Comandos leia(x)y <- (x * x)/3escreva("O Valor de F(x) é : ", y:2:2)fimalgoritmo
program calculaX;uses Crt;{ Função : Calcular: F(x) = (X2)/2}{ Autor : Prof. Reverton Cristaldo}{ Data : 31/7/2008}{ Seção de Declarações}varx : real;y : real;begin
{ Seção de Comandos}readln(x);y := (x * x)/3;write('O Valor de F(x) é : ', y:2:2);
end.
28/08/2009
12
Fatores a serem levados em consideração
na construção de um algoritmo
1. Complexidade
Percebemos que, na medida em que colocamos situações novas no problema a ser resolvido, o algoritmo vai aumentando a sua complexidade .
Esse certamente é o maior problema envolvido na construção de algoritmos.
Complexidade
A complexidade pode ser vista como um sinônimo de variedade (quantidade de situaçõesdiferentes que um problema pode apresentar ), as quais devem ser previstas na sua solução.
28/08/2009
13
Ah!, Sim! Pode ser digital
E um relógio sem ponteiro, pode ?
Pode..com 3,2 ou 1 ponteiro
E um relógio com 1 ponteiro é possível?
É...Pode ser
Um relógio com 2 ponteiros é possível?
Exemplo de Complexidade
É um instrumento com três ponteiros concêntricos
O que é um Relógio ?
É um instrumento cuja finalidade é marcar o decorrer do tempo.
Exemplo de Complexidade
O que é um relógio ?
Algumas variáveis podem aumentar ou diminuir a complexidade de um sistema quando forem bem ou mal utilizadas.
28/08/2009
14
Exercícios de Fixação e
aprendizado1. Crie um algoritmo, ou descreva os passos para se
trocar o pneu furado de um carro parado no acostamento de uma rodovia.
2. Crie um algoritmo para calcular o X na seguinte fórmula:
Recapitulando conceito
A palavra algoritmo significa:
"conjunto de regras e instruções, que devem ser seguidas na ordem especificada, para resolver um problema específico" .
28/08/2009
15
Recapitulando - Exercícios de Fixação
e aprendizado1. Crie um algoritmo, ou descreva os passos para se
trocar o pneu furado de um carro parado no acostamento de uma rodovia.
2. Crie um algoritmo para calcular o X na seguinte fórmula:
Método para construir um algoritmo
1. Ler atentamente o enunciado
Deve-se reler o enunciado de um exercício quantas vezes for necessário, até compreendê-lo completamente.
A maior parte da resolução de um exercício consiste na compreensão completa do enunciado.
Crie um algoritmo, ou descreva os passos para se trocar o pneu furado de um carro parado no acostamento de uma rodovia.
28/08/2009
16
Método para construir um algoritmo
Crie um algoritmo, ou descreva os passos para se trocar o pneu furado de um carro parado no acostamento de uma rodovia.
descreva os passos
trocar o pneu furado
O que eu tenho que fazer ?
Condição 1
de um carro parado no acostamento de uma rodovia
Condição 2
Método para construir um algoritmo
2. Retirar a relação das entradas de dados do enunciado .
Através do enunciado, descobrimos quais são os dados que devem ser fornecidos ao programa, via teclado, a partir dos quais são desenvolvidos os cálculos.
Obs. Pode haver algum algoritmo que não necessite da entrada de dados (pouco comum).
28/08/2009
17
Variáveis de entrada
Que informação variável eu preciso fornecer para a fórmula?
Valor de “a”
Valor de “b”Valor de “c”
Método para construir um algoritmo
3. Retirar do enunciado, a relação das saídas das informações
Através do enunciado podemos descobrir quais são as informações que devem ser mostradas para compor o resultado final, objetivo do algoritmo.
28/08/2009
18
Variáveis de saída
Que informação será apresentada como resposta?
Valor de “x”
Neste exercício queremos os valores de X1 para (+) e X2 para (-)
Método para construir um algoritmo
4. Determinar o que deve ser feito para transformar as entradas nas saídas especificadas
Nessa fase é que teremos a construção do Algoritmo propriamente dito. Devemos determinar qual seqüência de passos ou ações é capaz de transformar um conjunto de dados nas informações de resultado.
28/08/2009
19
Portugol – Português estruturado
é uma pseudo-linguagem (de programação), criado para demonstrar o uso de algoritmos.
Portugol é uma pseudo-linguagem que permite ao programador pensar no problema em si e não no equipamento que irá executar o algoritmo. Devem ser considerados a sintaxe (em relação à forma) e a semântica (em relação ao conteúdo ou seu significado). Em portugol a sintaxe é definida pela linguagem e a semântica depende do significado que quer se dar ao algoritmo.
Como ficaria o português estruturado
para a fórmula de Bhaskara?
Escreva no caderno sua versão estruturada dessa fórmula...
28/08/2009
20
Fatores a serem levados em consideração
na construção de um algoritmo
� Complexidade� Legibilidade� Portabilidade� Técnica de resolução por método cartesiano
� ”Dividir para Conquistar”� Dividir o problema em partes� Analisar a divisão e garantir a coerência entre as partes.� Reaplicar o método, se necessário
� Planejamento reverso
Entendendo a complexidade (fatores
agregados ao algoritmo) e detalhamento
Observe o algoritmo abaixo:
1. Colocar um ovo na frigideira2. Esperar o ovo ficar frito3. Remover o ovo da frigideira
Correto
28/08/2009
21
Entendendo a complexidade (fatores
agregados ao algoritmo) e detalhamento
1. Retirar um ovo da geladeira2. Colocar a frigideira no fogo3. Colocar óleo4. Esperar até o óleo ficar quente5. Quebrar o ovo separando a casca6. Colocar o conteúdo do ovo na frigideira7. Esperar um minuto8. Retirar o ovo da frigideira9. Apagar o fogo
Correto
Premissas da construção de algoritmos
� é preciso que a linguagem utilizada no algoritmo seja conhecida tanto por quem o escreveu quanto por quem vai executá-lo.
� Para que o algoritmo possa ser executado por uma máquina é importante que as instruções sejam corretas e sem ambigüidades
� Construir algoritmo é um processo semelhante ao de tornar-se competente em um jogo qualquer: aprender as regras do jogo (a sintaxe) é só o primeiro passo, tornar-se um bom jogador (programador) exige tempo, muito exercício e dedicação.
28/08/2009
22
Algoritmos Computacionais
� O computador (hardware), a princípio, não executa nada . Para que ele faça uma determinada tarefa - calcular uma folha de pagamento, por exemplo -, é necessário que ele execute um programa (Software).
é um conjunto de muitas instruções que indicam ao computador, passo a passo, o que ele tem que fazer.
Construindo o algoritmo para a
Fórmula de Bhaskara
Primeiro devemos fazer a “Linearização das Expressões”.
28/08/2009
23
Construindo o algoritmo para a
Fórmula de Bhaskara
X = -B
+/- Raiz Quadrada (B
2- 4 * *
A C
)
2 *
Delta
Delta > 0 � duas raízes reais e diferentesDelta = 0 � duas raízes reais e iguaisDelta < 0 � não existem raízes reais
6 6 3 1
3
Calcular
Aplicativo Bhaskara
28/08/2009
24
algoritmo "calculo_baskara“var
a,b,c : realx1 : realx2 : real
delta : real
Inicioleia(b)leia(a)leia(c)delta <- (b * b) - (4 * a * c)
se delta < 0 entaoescreva("Valor de delta menor que zero, não existem raizes")
Fimsex1 <- (- b + (raizq(delta)))/(2 * a)x2 <- (- b - (raizq(delta)))/(2 * a)
escreval(x1:2:2)escreval(x2:2:2)
fimalgoritmo
Fatores a serem levados em consideração
na construção de um algoritmo (Continuação)
� Legibilidade� Mede a capacidade de compreensão de um
algoritmo por qualquer observador (que não o construiu); a clareza com que sua lógica está exposta. Quanto mais legível for um algoritmo, menor será sua complexidade.
28/08/2009
25
Fatores a serem levados em consideração
na construção de um algoritmo (Continuação)
� Portabilidade� Devido a quantidade enorme de linguagens
de programação existentes, não será adotada nenhuma linguagem específica para trabalhar os algoritmos (ex: C, pascal, Java, etc.). Isso porque a solução do problema fica ligada a características e recursos da linguagem na qual ela foi concebida.
Fatores a serem levados em consideração
na construção de um algoritmo (Continuação)
� Técnica de resolução por método cartesiano� Dividir para conquistar
� 1. Dividir o problema em partes� 2. Analisar a divisão e garantir a coerência
entre as partes.� 3. Reaplicar o método, se necessário
28/08/2009
26
Dados (Tipos de informações
utilizadas em algoritmo).
� São as informações necessárias para que o algoritmo execute, e apresente valores de resposta.
A = 12B = “Professor Reverton”C = 0,23D = Verdadeiro
DadosVariáveis
Dados (Tipos de informações
utilizadas em algoritmo).
� Inteiro : toda e qualquer informação numéricaque pertença ao conjunto dos números inteiros (negativa, nula ou positiva). � Exemplos:
� 39, 0, -56 entre outros.� Ele tem 15 irmãos. � A temperatura desta noite será de -2 graus.
28/08/2009
27
Dados (Tipos de informações
utilizadas em algoritmo).
� Real: toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativa, nula ou positiva, inteiro ou fracionário). � Exemplos:- 4, 3, 0, 35, 1,23� Ela tem 1,73 metro de altura.� Meu saldo bancário é de - R$ 121,07..
Dados (Tipos de informações
utilizadas em algoritmo).
� Caractere : São caracterizadas como tipos caracteres, as seqüências contendo letras, números e símbolos especiais. Uma seqüência de caracteres deve ser indicada entre aspas (““). Este tipo de dado é também conhecido como alfanumérico, string, literal ou texto.
� Exemplos: � Endereço: “Rua Alfa, 52 Apto 1”, “Fone:574-
9988”, “04387-456”, “ “, “7”.
28/08/2009
28
Dados (Tipos de informações
utilizadas em algoritmo).
� Lógico : São caracterizados como tipos lógicos, os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Os dados do tipo lógico, poderão ser apresentados e delimitados pelo caractere ponto (.) ou não: falso, .f., verdadeiro ou .v.� Exemplo: você pode entrar.
Exercício 01
� Determine qual o tipo primitivo de informação presente nas sentenças abaixo:� Telefone: 36219999� Idade: 34 anos� RG: 452215� Nome: “Pedrinho não sei das quantas“� A = “Olá”� B = 3,34� C = - 5
28/08/2009
29
Constantes e Variáveis
� São espaços de memória alocados para armazenar informações.
� Porque precisamos de variáveis?� Para armazenar valores que serão utilizados
posteriormente.
A = 2; B = 5; C=8
A = B + C
Constantes e Variáveis
Uma variável pode ser vista como uma caixa com um rótulo ou nome colado a ela,que num dado instante guarda um determinado objeto.
O conteúdo desta caixa não é algo fixo, permanente.
28/08/2009
30
A variável pode aceitar apenas 1 tipo de informação:
-Inteiro
-Real
-Caractere
-Lógico
Exemplo de nome de variável: “Nome”, “Endereço”,”Idade”,”Estado”, “Bairro”
Conteúdo é variável, em determinada instância de execução ele pode variar o valor.
28/08/2009
31
Exercícios de FixaçãoDetermine qual é o tipo primitivo e as variáveis de informação presente nas sentenças abaixo:
a) A placa “Pare!” tinha dois furos de bala.b) Josefina subiu 5 degraus para pegar uma maçã boa.c) Alberta levou 3 horas e meia para chegar ao hospital onde concebeu uma garota.d) Julia escreveu em sua casa: “Preserve o meio ambiente”, e ficou devendo R$ 20,59 ao vendedor de tintas.e) José recebeu sua 18 a medalha na natação por ter alcançado a marca de 57,3 segundos nos 100 metros rasos.
Constante x Variável
Entende-se por uma informação constante , aquela que não sofre nenhuma alteração no decorrer do tempo.
Por exemplo, na fórmula a seguir, o que é constante e o que é variável?
RESULTADO � ENTRADA + 2,25
28/08/2009
32
Detalhes acerca de variáveis
Variáveis são palavras que tem um significado bem específico em um algoritmo. Para que o computador possa executar comandos que envolvem variáveis da maneira correta, ele deve conhecer os detalhes das variáveis que pretendemos usar.
No algoritmo, usamos a área destinada a declaração de variáveis: VAR
VAR<identificador 1>, <identificador 2>, ..., <identificador n>: <tipo das variáveis >
Regras para identificação das
variáveisa. nomes de variáveis não podem ser iguais a palavras reservadas;
b. nomes de variáveis devem possuir como primeiro caractere uma letra ousublinhado '_' (os outros caracteres podem ser letras, números e sublinhado);
c. nomes de variáveis devem ter no máximo 127 caracteres;
d. Nomes de variáveis não podem conter espaços em branco;
28/08/2009
33
Regras para identificação das variáveis
e. na sintaxe do Português Estruturado, não há diferença entre letras maiúsculas deminúsculas (NOME é o mesmo que noMe).
Identificadores válidos: NOME, TELEFONE, IDADE_FILHO, IdadeFilho, NOTA1, Est_Civil
Identificadores inválidos: 3Endereco, Estado Civil, PARA, algoritmo, numero/complemento
Iniciando no Visualg
Nome do algoritmo
Comentários de autoria
Área de declaração de variáveis
Declaração de início de algoritmo
Declaração de fim de algoritmo
28/08/2009
34
Iniciando no Visualg
Nome do algoritmo
Comentários de autoria
Área de declaração de variáveis
Declaração de início de algoritmo
Declaração de fim de algoritmo
Operadores Aritméticos em
Algoritmos
Alguns exemplos:2 + 3 = 52 * 3 = 62 – 3 = -12 / 3 = 0,666...2 ^ 3 = 8
28/08/2009
35
Estruturando os comandos do meu
algoritmo.
� var - Declaração de variáveis.� leia(<nome_da_variável>) - comando para
leitura do dado via teclado.� escreva( <nome_da_variável>) � escreva( “=== Olá ===”)
� comando para escrever em tela a saída do processamento ou a mensagem que você deseja.
28/08/2009
36