capa
Um algoritmo pode ser expresso de diversas maneiras, dentre elas: Linguagem Natural Fluxograma Pseudocódigo Linguagem de Programação
Método para resolver problemas.
É a descrição de uma sequência de passos (ações/instruções) que devem ser seguidas para a solução de um problema.
Um exemplo clássico para definir algoritmos é uma receita culinária. Problema: produção de refeições. Solução: repetir passos definidos (fazer iterações) e tomar decisões até que a refeição esteja pronta para ser servida. A solução é o algoritmo.
Exemplo 1: receita de bolo simples Ingredientes 2 xícaras de açúcar 3 xícaras de farinha de trigo 4 colheres de margarina bem cheias 3 ovos 1 e 1/2 xícara de leite aproximadamente 1 colher (sopa) bem cheia de fermento em pó Dr. Oetker Fonte: http://www.tudogostoso.com.br/receita/29124-bolo-simples.html
Exemplo 1: receita de bolo simples Modo de Preparo 1. Bata as claras em neve 2. Reserve 3. Bata bem as gemas com a margarina e o açúcar 4. Acrescente o leite e farinha aos poucos sem parar de bater 5. Por último agregue as claras em neve e o fermento 6. Coloque em forma grande de furo central untada e enfarinhada 7. Asse em forno médio, preaquecido, por aproximadamente 40 minutos 8. Quando espetar um palito e sair limpo estará assado Fonte: http://www.tudogostoso.com.br/receita/29124-bolo-simples.html
Pergunta 1: de acordo com o exemplo, podemos observar que a execução do algoritmo do bolo é composta por: A. Ingredientes (Entrada Estado Inicial). B. Sequência de passos (Processamento Estado Intermediário). C. O Bolo (Saída Estado Final). D. Todas as alternativas acima.
Pergunta 1: de acordo com o exemplo, podemos observar que a execução do algoritmo do bolo é composta por: A. Ingredientes (Entrada Estado Inicial). B. Sequência de passos (Processamento Estado Intermediário). C. O Bolo (Saída Estado Final). D. Todas as alternativas acima. R: Alternativa D.
Pergunta 1 - Análise: Como pudemos observar, para a execução de um algoritmo (modo de preparo), foi necessário a presença de dados iniciais (ingredientes) a serem manipulados resultando em um estado final (o bolo).
Exemplo 2: descobrir a hipotenusa de um triângulo retângulo dado dois catetos. Dados iniciais: Cateto 1 Cateto 2 H=? C1 C2
Exemplo 2: descobrir a hipotenusa de um triângulo retângulo dado dois catetos. Algoritmo: 1. Eleve o cateto 1 ao quadrado. 2. Escreva o resultado 1 da operação acima. 3. Eleve o cateto 2 ao quadrado. 4. Escreva o resultado 2 da operação acima. 5. Some o resultado 1 com o resultado 2. 6. Escreva o resultado 3 da operação acima. 7. Tire a raiz quadrada do resultado 3. 8. Escreva o resultado da operação acima que será a hipotenusa.
Exemplo 2: descobrir a hipotenusa de um triângulo retângulo dado dois catetos. Dados finais: Cateto 1 Cateto 2 H=? Hipotenusa C1 C2
Variáveis: Conforme observamos, para executar um algoritmo é essencial a manipulação de dados, valores ou objetos. O mesmo vale para o computador.
Variáveis: Quando um computador executa um algoritmo, o mesmo precisa armazenar e manipular valores. Esses valores são armazenados e acessados da memória do computador. O acesso à memória é abstraído no conceito de variáveis.
Variáveis: As variáveis podem ser entendidas como caixas que podem guardar um valor Cada vez que guardamos um novo valor nela, apagamos o antigo Para guardarmos um novo valor em uma variável usamos o comando de atribuição.
Variáveis: Para a atribuição de valores iremos utilizar uma seta ( <- ) A variável sempre irá se encontrar à esquerda Na parte direita ficará uma expressão O resultado da expressão será armazenado pela variável
Variáveis: x <- 5 x <- 2+3*5 x <- (2+3)*5
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: A. 4 B. 7 C. 10 D. 25
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: R: Alternativa C. A. 4 B. 7 C. 10 D. 25
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: A. 20 B. 22 C. 16 D. 24
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: R: Alternativa B. A. 20 B. 22 C. 16 D. 24
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: A. 3 B. 6 C. 9 D. 21
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: R: Alternativa A. A. 3 B. 6 C. 9 D. 21
Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: A. 143 B. 105 C. 215 D. 47
R: Alternativa C. Algoritmos Variáveis: Exemplo: Determine o valor final da variável x ao final da sequência de passos: A. 143 B. 105 C. 215 D. 47
Um algoritmo pode ser constituído por 3 estruturas de fluxo: Estruturas Sequenciais Estruturas Condicionais Estruturas de Repetição
Estruturas Sequenciais Exemplo: Algoritmo para calcular média de três notas a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() c <- leiaumnumerodoteclado() media <- (a+b+c)/3 exiba media
Estruturas Sequenciais Exemplo: Dado o total de vendas de um vendedor, calcule a sua comissão. Suponha que a comissão do vendedor seja de 10% do total de vendas. totalvendas <- leiaumnumerodoteclado() comissao <- totalvendas*0,1 exiba comissao
Estruturas Sequenciais Exemplo: Algoritmo que troca o valor de duas variáveis a e b auxiliar <- a a <- b b <- auxiliar
Um algoritmo pode ser constituído por 4 estruturas de fluxo: Estruturas Sequenciais [OK] Estruturas Condicionais Estruturas de Repetição
Estruturas Condicionais Acontecem apenas quando alguma condição é verdadeira Uma condição só pode ser verdade ou falsa São usadas as palavras chave se-então-senão se(condição) então senão fim-se... <instruções> <instruções> Verdade Instruções <Condição> Falsa Instruções
Estruturas Condicionais Exemplo: Algoritmo que imprime qual o menor entre dois numeros a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() se(a < b)então menor <- a senão menor <- b fim-se exiba menor
Estruturas Condicionais Exemplo: Algoritmo que imprima qual o menor entre dois numeros a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() se(a < b)então menor <- a senão menor <- b fim-se exiba menor
Estruturas Condicionais Exemplo: Algoritmo para calcular as raízes de uma equação do segundo grau: a*x² + b*x + c = 0
Estruturas Condicionais a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() c <- leiaumnumerodoteclado() delta <- Opções: A. delta B. a+b+c C. 4*a*c D. b*b - 4*a*c
Estruturas Condicionais a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() c <- leiaumnumerodoteclado() delta <- b*b 4*a*c Opções: A. delta B. a+b+c C. 4*a*c D. b*b - 4*a*c
Estruturas Condicionais a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() c <- leiaumnumerodoteclado() delta <- b*b 4*a*c se ( delta >= 0 )então x1 <- (raiz(delta) b)/(2*a) x2 <- (-1*raiz(delta) b)/(2*a) fim-se Opções: A. delta = 0 B. delta > 0 C. delta >= 0 D. delta
Estruturas Condicionais a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() c <- leiaumnumerodoteclado() delta <- b*b 4*a*c se ( delta >= 0 )então x1 <- (raiz(delta) b)/(2*a) x2 <- (-1*raiz(delta) b)/(2*a) fim-se Opções: A. delta = 0 B. delta > 0 C. delta >= 0 D. delta
Estruturas Condicionais a <- leiaumnumerodoteclado() b <- leiaumnumerodoteclado() c <- leiaumnumerodoteclado() delta <- b*b 4*a*c se (delta >= 0)então x1 <- (raiz(delta) b)/(2*a) x2 <- (-1*raiz(delta) b)/(2*a) fim-se
Um algoritmo pode ser constituído por 4 estruturas de fluxo: Estruturas Sequenciais [OK] Estruturas Condicionais [OK] Estruturas de Repetição
Estruturas de Repetição Irão repetir enquanto uma condição for satisfeita São usadas as palavras chave enquanto-faça enquanto (<condição) faça <instruções> fim-enquanto <Condição> Verdade Instruções Falsa
Estruturas de Repetição Exemplo: Faça um algoritmo que imprima todos os números de 1 a 20 num <- 1 enquanto(num <= 20) faça exiba num num <- num+1 fim-enquanto
Estruturas de Repetição Exemplo: Faça um algoritmo que imprima todos os números de 1 a 20 num <- 1 enquanto(num <= 20) faça exiba num num <- num+1 fim-enquanto
Estruturas de Repetição Exemplo: Faça um algoritmo que some todos os números entre 200 e 400 num <- 200 soma <- 0 enquanto(num <= 400) faça soma <- soma + num num <- num + 1 fim-enquanto
Estruturas de Repetição Exemplo: Faça um algoritmo que some todos os números entre 200 e 400 num <- 200 soma <- 0 enquanto(num <= 400) faça soma <- soma + num num <- num + 1 fim-enquanto
Um algoritmo pode ser constituído por 4 estruturas de fluxo: Estruturas Sequenciais [OK] Estruturas Condicionais [OK] Estruturas de Repetição [OK]
Por que estudar algoritmos? O seu impacto é amplo e de longo alcance. Internet. Busca na web, roteamento de pacote, compartilhamento de arquivos,... Biologia. Projeto do genoma humano, enovelamento de proteínas,... Computador. Layout de circuitos, sistema de arquivos, compiladores (fique ligado!)... Computação gráfica. filmes, video games, realidade virtual... Segurança. celular, e-commerce, urna eletrônica,... Multimídia. MP3, JPG, DivX, HDTV, reconhecimento de face,... Redes Sociais. recomendações, feeds de notícia, propagandas,... Física. simulação de partículas, simulação de colisão de partículas,...
Linguagens de Programação Computador X Pessoas O que é conveniente para as pessoas às vezes não é conveniente para o computador Pessoas querem fazer X, máquinas só fazem Y Como proceder?
Linguagens de Programação Níveis de linguagens Computador recebe instruções (ordens) Instruções lógicas e padronizadas Processa essas instruções e gera um resultado Uma LP é uma forma padronizada de comunicação com o computador
Linguagens de Programação Níveis de linguagens A maioria dos computadores utilizam lógica digital binária A crescente complexidade dos programas Novas formas de programar
Linguagens de Programação Máquina multinível Solução para comunicação homem X máquina Cada máquina possui sua linguagem
Linguagens de Programação Linguagem de baixo nível Forte relação com o hardware Restritas a linguagem de máquina Codificação rígida com a arquitetura 00111010100100100100001111010101 01110101010111110010010001111101 00100011010100101100000001010010 10101010101111110000010101010010 01111111111010101001001010010010 01000010100100100100101000101001 00100011010101010100000001010010 01000110101010101000000010100100 10001101010101010000000101001001 00011010101010100000001010010010 00110101010101000000010100100100 01101010101010000000101001001000 00000010100001010010010010101010 10101010101000000010101010101001 11010101101010100100100111010010 01001000100110101001110010010010 01000110101010101000000010100100 10001101010101010000011111011001
Linguagens de Programação Arquitetura de Von Neumann Unidade de memória CPU Dispositivos de entrada Unidade de Controle ULA Dispositivos de saída
Linguagens de Programação Linguagem de montagem É uma linguagem de baixo nível Cada comando produz uma única instrução de máquina.data x1:.word 10 x2:.word 5 x3:.word -1.text lw $t0, x1 lw $t1, x2 add $t2, $t0, $t1 sw $t2, x3 li $v0, 1 move $a0, $t2 syscall li $v0, 10 syscall
Linguagens de Programação Linguagem de alto nível Se aproxima da linguagem utilizada por humanos Cada comando produz várias instruções de máquina #include <stdio.h> int main() { int a = 10, b = 5; printf ( %d\n, a+b); return 0; }
Linguagens de Programação Linguagens de alto nível X Linguagens de baixo nível ALTO NÍVEL Facilidade de manipulação, por tratar comandos com linguagens mais próximas do programador. Facilidade em encontra erros Possui portabilidade Lenta, se comparada a linguagem de baixo nível Rotinas mais complexas, portanto utiliza mais memória BAIXO NÍVEL Dificuldade de programação devido a forte proximidade com a sistemática de hardware. Dificuldade em encontrar erros Totalmente dependente da arquitetura computacional utilizada Rápida, pois opera em um nível próximo do hardware Utiliza menos espaço de memória
Linguagens de Programação Processamento de Linguagens O computador entende apenas a linguagem de máquina Alternativas: Interpretação e tradução
Linguagens de Programação Interpretação Comandos diretamente executados Sequência: Obter próximo comando Converter o comando em instruções em linguagem de máquina Executar as instruções
Linguagens de Programação Tradução Traduz um programa de uma linguagem para outra de nível mais baixo Ocorre com os programas escritos em linguagem de alto nível
Linguagens de Programação Compilador Traduz linguagem de alto nível (código fonte) em linguagem de de baixo nível (código objeto) na forma de um executável Exemplos: gcc, Turbo C, Visual C, Visual Basic, etc C é uma linguagem compilada!
Linguagens de Programação #include <stdio.h> int main() { int a = 10, b = 5; printf ( %d\n, a+b); return 0; }.data x1:.word 10 x2:.word 5 x3:.word -1.text lw $t0, x1 lw $t1, x2 add $t2, $t0, $t1 sw $t2, x3 li $v0, 1 move $a0, $t2 syscall li $v0, 10 syscall
capa