Processamento da Informação
Processamento da Informação
Introdução a Algoritmos
Introdução a Algoritmos
SUMÁRIO •
Lógica;
•Lógica de Programação;
•Algoritmo;
•Pseudolinguagem;
•Comandos;
•Leituras Sugeridas;
Algoritmo: Uma seqüência finita de instruções,
ordenada de forma lógica para a resolução de uma determinada tarefa ou problema
Um algoritmo fixa um padrão de comportamento a ser seguido, uma norma de execução, com o objetivo
de resolver um determinado problema
• No dia-a-dia, entendemos a palavra lógica como: Algo que é coerente, óbvio, correto
Lógica Logos + Ica
Razão Ciência
•Estuda o raciocínio/pensamento humano; •Estudo de argumentos.
•Argumento é uma seqüência de enunciados, na qual um dos
enunciados é a conclusão, derivado a partir dos outros enunciados premissas.
Todos os peixes vivem na água. (premissa1) Golfinhos são peixes. (premissa 2)
.·. Golfinhos vivem na água. (conclusão)
Todos os peixes vivem na água. (premissa1) Golfinhos são peixes. (premissa 2)
.·. Golfinhos vivem na água. (conclusão)
Tanto a forma de argumento quando a conclusão são verdadeiras, apesar de esta última ter sido deduzida a partir de uma premissa falsa ("golfinhos são peixes").
Todas as baleias são mamíferos. (premissa 1) Alguns animais são baleias. (premissa 2)
Logo, alguns animais são mamíferos. (conclusão)
Raciocínio certo, baseado em premissas corretas SILOGISMO - ARISTÓTELES
Lógica de programação está relacionada ao raciocínio que precisamos desenvolver para resolver um problema cuja solução deverá ser implementada em um computador.
Encadear pensamentos para atingir determinado objetivo.
Como pensar como programadores??
A habilidade mais importante para um cientista da computação é a solução de problemas;
A solução de problemas é a habilidade de formular questões, pensar criativamente sobre soluções possíveis e expressar uma solução de forma clara e precisa;
E aprender a programar é uma excelente oportunidade de praticar as habilidades da solução de problemas.
Exemplos de problemas:
Diagnosticar a doença de um paciente que descreva os seus sintomas, e medicá-lo
Criar um sistema de informação que permita gerir as entradas/saídas (cargas/descargas) de navios em um porto marítimo
Desenvolver um programa para controle da movimentação de um robô
Um algoritmo é uma forma de representar a
solução de um problema através de uma seqüência de passos
Um algoritmo é uma forma de representar a solução de um problema através de uma
seqüência de passos
São exemplos de algoritmos: Receitas de bolos
Manuais técnicos
Guias de montagem
Programas de computadores
Ingredientes:
5 ovos
250 gramas de margarina cremosa 2 xícaras (chá) de açúcar
1 xícara (chá) de farinha de trigo 1 xícara (chá) de chocolate
200 gramas de côco ralado 1 copo de leite
1 colher (sopa) de fermento
Modo de Preparo:
Bata a margarina, as gemas e o açúcar até ficar
cremoso
Junte o leite, o côco e a farinha e continue
batendo
Acrescente o fermento e, por último, as claras em
neve
Unte uma forma com manteiga e leve ao forno
para assar
Escreva um algoritmo para realizar a troca de uma lâmpada
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova • Subir na escada
• Retirar a lâmpada velha • Colocar a lâmpada nova
E se a lâmpada não estiver queimada?
1. Acionar o interruptor
2. Se a lâmpada não acender, então Pegar uma escada
Posicionar a escada embaixo da
lâmpada
Buscar uma lâmpada nova Subir na escada
Retirar a lâmpada queimada Colocar a lâmpada nova
Pode haver vários algoritmos para resolver um mesmo problema
Afinal, cada pessoa pensa e age de forma diferente
O desenvolvimento de algoritmos é
um exercício de
Criatividade
Diferentes algoritmos podem estar corretos, se levarem ao alcance do objetivo final
Entretanto, deve-se procurar desenvolver algoritmos que resolvam o
problema com menos
esforço e maior objetividade
Instrução/Comando: São frases que indicam as ações a serem executadas. São compostas de um verbo no imperativo, ou no infinitivo, mais um complemento.
Por exemplo:
Bata (Bater) duas claras em neve Ligue (Ligar) os faróis
Some (Somar) dois números
Imprima (Imprimir) resultado da soma
• Identificar o problema (objetivo)
mediante leitura atenta de seu enunciado (entendimento)
• Identificar no enunciado os dados a
serem fornecidos para o algoritmo (entrada de dados)
• Identificar os resultados que devem ser
gerados na solução (saída de dados)
• Determinar o que deve ser feito para
transformar as entradas nas saídas desejadas
(processamento)
O que preciso? (Entrada) Como chegar ao que quero (Processa-mento) O que quero? (Saída)
Escreva um algoritmo para somar dois números quaisquer
1. Leia o número X 2. Leia o número Y 3. Some X e Y
4. Mostre o resultado da soma
ALGORITMO – EXERCÍCIO
Entrada
Processamento
Saída
Número X
Número Y Somar X e Y
Resultado da soma
Um lobo, uma cabra e uma couve têm de atravessar um rio num barco que transporta um de cada vez, incluindo o barqueiro. Como é que o barqueiro os levará para o outro lado de forma que a cabra não coma a couve e o lobo não coma a cabra?
Eram dois homens que iam por um caminho. Um levava 8 litros de vinho em um garrafão e o outro levava 8 litros de vinho em dois garrafões, um com cinco litros e um com três. Beberam o vinho do garrafão maior, de 8 litros, e agora querem dividir os 8 litros de vinho restante igualmente, para que nenhum dos dois carregue mais peso do que o outro. Entretanto, eles só podem usar como medida, os próprios garrafões: um de 8 litros, um de 5 e um de 3. Como fazer?
Formalizar a
escrita de
algoritmos
Escrita na forma de
pseudocódigo
Problema Pseudo linguagem se... então... senão... Linguagem de progra-mação Java, C, Pascal, etc Linguagem de máqui-na Zeros e uns... PSEUDOLINGUAGEMQuando da definição de
uma linguagem,
precisamos definir:
Sua sintaxe: como
escrever os comandos e seus componentes (tipos, variáveis, etc) Sua semântica: o significado de cada comando e conceito Inicialmente veremos: Tipos Constantes e Variáveis Comando de declaração Comando de atribuição Comandos de entrada e de saída Bloco de execução seqüencial PSEUDOLINGUAGEM
Na Matemática: As informações são classificadas em conjuntos. Por exemplo:
N = {0, 1, 2, 3, ...}
R = {..., -1000, ..., -0,7. ..., 6, .... 400, ....}
Na Computação: As informações são geralmente agrupadas nos seguintes tipos:
Inteiro Real Caracter String Lógico PSEUDOLINGUAGEM
Inteiro: Toda e qualquer informação numérica que pertence ao conjunto dos números inteiros (Z)
Pode assumir os valores nulo, positivo ou negativo
Exemplos: 15, 0, 20, 4434
Real: Toda e qualquer informação numérica que pertence ao conjunto dos números reais (R)
Exemplos: -234.4, 45, 98, 45
PSEUDOLINGUAGEM
Caracter: Toda e qualquer informação composta por um único caracter numérico (0,1,..,9), alfanumérico (A,B,..,Z,a,b,..,z) ou especial (@,#,!,...)
Exemplos: ‘D’, ‘@’, ‘1’
String: Toda e qualquer informação composta por um conjunto de caracteres numéricos (0,1,..,9), alfanuméricos (A,B,..,Z,a,b,..,z) ou especiais (@,#,!,...)
Exemplos: “Não pise na grama”, “José da Silva”
PSEUDOLINGUAGEM
Lógico: Toda e qualquer informação que pode assumir apenas os valores: verdadeiro (1) ou falso (0)
Exemplos: true, false
PSEUDOLINGUAGEM
Em programas computacionais precisamos armazenar informações para utilizarmos durante a execução do programa Armário Memória do computador 3000:B712 2000:12EC PSEUDOLINGUAGEM - VARIÁVEIS
As linguagens de programação permitem que os usuário atribuam nomes para as posições de memória da máquina Armário Memória do computador nome idade nacionalidade profissao PSEUDOLINGUAGEM - VARIÁVEIS
Uma variável é um endereço da memória de acesso randômico (RAM), representada por um nome (rótulo), criado pelo usuário, cujo conteúdo pode se alterar no decorrer do programa
nome
Uma variável é composta por dois elementos:
Identificador: nome dado pelo programador à variável
Conteúdo: valor atual da variável
nome idade nacionalidade profissao Maria Carla nome Identificador 17 idade Identificador brasileira nacionalidade Identificador estudante profissao
Identificador apenas UM valor por vez Uma variável assume
O primeiro caracter deve ser uma letra
Pode ser seguido de mais caracteres alfabéticos ou
numéricos
Não devem ser usados caracteres especiais (#,@,
%,?)
Não pode haver espaços em branco entre os
caracteres
Os nomes dos identificadores não podem ser os
mesmos das palavras reservadas da linguagem de programação
Os nomes escolhidos devem ser explicativos do seu
conteúdo
Exemplos de identificadores válidos: alpha, notas, FGTS, K7
Exemplos de identificadores inválidos: 6X, E(13), a:B, awq&
Um dado que não sofre alteração no
transcorrer do tempo nAval
PI
3,14...
302.453
CPF
Seu valor não é alterado
desde o início até o fim da
execução do algoritmo
O comando de declaração cria uma variável ou constante
Quando se declara/cria uma variável é feita uma reserva de uma área da memória RAM, que irá receber o nome do identificador da variável
Para se criar uma variável é necessário dizer de qual tipo ela será
Em pseudocódigo uma variável é declarada, e portanto, criada, através da seguinte sintaxe:
<tipo>: <nome_Da_Variavel> inteiro: <nome_Da_Variavel>; real: <nome_Da_Variavel>; caracter: <nome_Da_Variavel>; string: <nome_Da_Variavel>; logico: <nome_Da_Variavel>;
Exemplos de declaração de variáveis: inteiro: x1;
real: a,b;
caracter: letra;
string: nome, frase; logico: tem; 10 10,4 “Olá”
x1
Tipo inteiro
Comando de atribuição é o comando que indica o que a variável vai receber em seu conteúdo em determinado momento
Para colocar/atribuir um valor em uma variável é usado o comando de atribuição:
<nome_Da_Variavel> <Valor_Da_Variavel>; Sua sintaxe é: 10.6 soma Verde cor real: soma; soma 10.6; string: cor; cor “Verde”; COMANDO DE ATRIBUIÇÃO
Como podemos calcular expressões matemáticas em
pseudo-código
Com o uso de: Variáveis Operadores Parênteses Chamadas de métodos EXPRESSÕES MATEMÁTICAS
+
( ) >
Operadores são elementos que possibilitam a manipulação de dados
Analisaremos os seguintes operadores: Aritméticos
Relacionais Lógicos
Operadores podem ser:
Unários trabalhando com um operando (int) x Bináriostrabalhando com dois operandos
a + b a / b a >= b NOT TEM
Operadores aritméticos são símbolos que
representam as operações básicas da
Matemática
/ * -+ Operador 3*4, A*B Multiplicação 4-2, N-M Subtração 10/2, X1/X2 Divisão 2+3, X+Y Adição Exemplos Operação OPERADORES ARITMÉTICOSPara representar as operações de radiciação, potenciação e resto da divisão inteira usaremos as palavras rad, pot e mod
pot(2,3)=23 Potenciação pot(X,Y) mod rad(X) Operador 9 mod 4 = 1 Resto da divisão inteira
rad(9)= Radiciação Exemplos Operação 9 9 4 2
1
OPERADORES ARITMÉTICOS*, /, mod 3ª pot, rad 2ª 4ª 1ª Prioridade +,
-parênteses mais internos Operadores
*, /, mod 3ª pot, rad 2ª 4ª 1ª Prioridade +, -parênteses mais internos Operadores
Álgebra:
y=pr mod q+
w
x
−
y
y=p∗r mod q+w / x − y
2 1 4 3 5 6 Pseudo-código: Em caso de empate (operadores na mesmaprioridade), devemos resolver da esquerda para a direita,
conforme a seqüência na expressão
OPERADORES ARITMÉTICOS - PRIORIDADE
Álgebra:
y
=
a
b
c
d
e
/
5
Pseudo-código:y= a+b+c+d+e/ 5 ;
*, /, mod 3ª pot, rad 2ª 4ª 1ª Prioridade +, -parênteses mais internosOperadores Para alterar a prioridade
dos operadores, usamos parênteses. Eles têm
precedência sobre qualquer outro operador
OPERADORES ARITMÉTICOS - PRIORIDADE
Operadores relacionais são utilizados para realizar comparações entre dois valores do mesmo tipo primitivo
5>=3, X>=Y Maior ou igual a >= 5<=3, X<=Y Menor ou igual a <= <> < > = Operador 3<6,X<Y Menor que 5>4,X>Y Maior que 8<>9,X<>Y Diferente a 3=3, X=X Igual a Exemplos Operação
Operadores relacionais sempre
retornam valores lógicos
Na resolução de expressões relacionais, as
operações guardam uma hierarquia entre si
2ª 1ª Prioridade <, <=, >, >= =, <> Operadores
Proposição = enunciado declarativo, que pode assumir um valor verdade (Verdadeiro ou Falso)
O Brasil é signatário do protocolo de Kioto Amsterdã é a capital da Áustria
Frases que podem expressar proposições: – Sentenças declarativas afirmativas
A Lua é o único satélite natural do planeta Terra
Recife é capital do Ceará
proposição (V)
proposição (F)
Frases que NÃO expressam proposições – Sentenças interrogativas
Que horas são?
– Sentenças exclamativas Feliz Ano Novo!
Parece que não sei – Sentenças imperativas
Pare!
Não falte à aula
Proposições compostas: geradas a partir da combinação de várias proposições, através do uso de conectivos lógicos
Conectivos Lógicos: e: ٨
ou:٧ Não: ~
Exemplo: Se chover e relampejar, eu fico em casa Quando eu fico em casa?
p: Está chovendo
q: Está relampejando p e q p q
Exemplo: Se acabar café ou acabar o açúcar, irei ao mercado
Quando irei ao mercado? p: Acabou o café
q: Acabou o açúcar p ou q p q
Exemplo:
p: O Sol é uma estrela
~p: O Sol NÃO é uma estrela (Não é verdade que o Sol é uma estrela)
Na resolução de expressões lógicas, as operações guardam uma hierarquia entre si
e 2ª 3ª 1ª Prioridade não ou
Operadores Em caso de empate (operadores na mesma prioridade), devemos resolver da esquerda para a direita, conforme a seqüência na expressão p q r ~t s 1 2 3 4
operadores relacionais 3ª operadores aritméticos 2ª 4ª 1ª Prioridade parênteses internos operadores lógicos Operadores pot(2,4) <> 4+2 2+3*5/3 mod 5 < 0 OPERADORES – PRIORIDADE 16 <> 6 2+15/3 mod 5 < 0 16 <> 6 2+5 mod 5 < 0 16 <> 6 2+0 < 0 16 <> 6 2 < 0 16 <> 6 2 < 0 V F V
Comandos de entrada permitem que dados sejam inseridos no algoritmo. Sua sintaxe é:
leia (<lista_de_identificadores>);
leia (a,b,nome);
leia (nota,num);
leia (rg);
Exemplos: Corresponde ao nome dasvariáveis nas quais estão
armazenados os valores de entrada
Comandos de saída permitem que dados seja passados do algoritmo para outros dispositivos. Sua sintaxe é:
escreva(<lista_de_identificadores>);
escreva (media,n1);
escreva (soma);
Exemplos: Corresponde ao nome das
variáveis/constant es a serem enviadas a um dispositivo de saída COMANDOS DE SAÍDA
Bloco de execução é um conjunto de ações que possui uma função bem definida
O início de um bloco é marcado pela palavra
início
O fim de um bloco é marcado pela palavra fim início
<declaração de variáveis> <comandos>
fim
O próprio algoritmo é um bloco de execução. A sintaxe da definição do bloco de um algoritmo é:
Algoritmo <NomeDoAlgoritmo>
início
<declaração de variáveis>
<comandos>
fimalgoritmo.
BLOCO DE EXECUÇÃOLEITURAS SUGERIDAS
http://www.inf.pucrs.br/~debora/aa/ftp/tvs.html (visitado
em 05/02/2007)
http://pt.wikipedia.org/wiki/Silogismo (visitado em
05/02/2007)
FORBELLONE, A. L. V.; EBERSPACHER, H. F., Lógica de Programação – A Construção de Algoritmos e Estruturas de Dados, Prentice Hall, 2005
http://java.sun.com/docs/books/tutorial/java/javaOO/met hods.html