Aula 3 Algoritmos

Post on 15-Jan-2016

238 views 0 download

description

aula de programacao

Transcript of Aula 3 Algoritmos

Algoritmos

Professor Renan

Perguntas

• O que é algoritmo?

• Qual sua relação com programação de computadores?

Computador

Finalidade do computador

• Realizar a tarefa de processamento de dados.

• Receber dados por um dispositivo de entrada

• Realizar operações com esses dados

• Gera uma resposta

Processamento dos dados

Computador

SOFTWARE

HARDWARE

COMPUTADOR

Software

• Programa em processamento no computador

• Podem ser do tipo básico, programas que definem o padrão doequipamento e são necessários para o funcionamento do computador.

• Tipos:

• Sistema operacional

• Ambiente operacional

• Linguagens de programação (tradutores)

Sistema operacional

• É um programa ou conjunto de programas cuja função égerenciar os recursos do computador.

• Em geral, são fornecidos pelos fabricantes do equipamento.

• Constituídos por programas escritos em linguagem deprogramação de baixo nível.

Ambiente Operacional

• Interface gráfica entre o usuário e o Sistema Operacional.

Linguagem de programação

• Conjunto de símbolos e regras que especificam um padrão sintático paraestabelecer a comunicação entre usuários e computador.

• Na língua portuguesa,

• Os símbolos são as letras.

• As regras são a gramática da língua portuguesa.

• Padrão sintático é a escrita correta.

Linguagem de programação

• É dividida em linguagem de baixo nível e linguagem de alto nível.

Baixo nível

Alto nível

Linguagem de baixo nível

• Linguagem de Máquina

• Baseada no código binário, em 0s e 1s e interpretada diretamente pelo computador.

• 01000110 01110101 01101110 01100100 01100001 01101101 01100101 0110111001110100 01101111 01110011 00100000 01100100 01100101 00100000 0111000001110010 01101111 01100111 01110010 01100001 01101101 01100001 1110011111100011 01101111

• Fundamentos de Programação

Linguagem de baixo nível

Linguagem de

máquinaSignificado

0010 0001 1110 carrega no registrador 1 o conteúdo da posição de memória 14

0010 0010 1111 carrega no registrador 2 o conteúdo da posição de memória 15

0001 0001 0010soma o conteúdo do registrador 1 com o conteúdo do registrador

2 e coloca no registrador 1

0011 0001 1111 armazena o conteúdo do registrador 1 na posição de memória 15

Linguagem de baixo nível

• Linguagem de baixo nível simbólica:

• Simplificação da linguagem de máquina, faz uso de códigos para expressar as

instruções.

• Exemplo: Assembly

Linguagem de máquina Linguagem simbólica

0010 0001 1110 LOAD R1, val1

0010 0010 1111 LOAD R2, val2

0001 0001 0010 ADD R1, R2

0011 0001 1111 STORE R1, val2

Linguagem de alto nível

• É a combinação de um conjunto de símbolos de acordo com certas regras de

sintaxe para expressar uma sequência de operações de máquina.

• É uma linguagem que não exige conhecimento do código de máquina.

• Exemplos: FORTRAN, ALGOL, COBOL, BASIC, PASCAL, LOGO, C,

JAVA, LISP, PROLOG, Phyton etc.

Compilador

• Um compilador é um programa de sistema que traduz um programa descrito

em uma linguagem de alto nível para um programa equivalente em código de

máquina para um processador.

• Produz um programa em linguagem simbólica (assembly).

• Montadores traduz a linguagem simbólica para a linguagem de máquina.

Linguagem: Máquina x Simbólica x Alto Nível

Linguagem de

máquinaLinguagem simbólica

Linguagem de alto

nível

0010 0001 1110 LOAD R1, val1

val2 = val1 + val2

0010 0010 1111 LOAD R2, val2

0001 0001 0010 ADD R1, R2

0011 0001 1111 STORE R1, val2

Desenvolvendo programas

• Quando queremos escrever um software para realizar um determinado tipo

de processamento de dados, devemos escrever um programa ou vários

programas interligados.

• Para isso utilizamos a linguagem de programação.

O que é o programa

• É a codificação de um algoritmo em uma determinada linguagem de

programação.

Etapas de desenvolvimento de programas

• Análise – nessa etapa estuda-se o enunciado do problema para definir os dados deentrada, o processamento e os dados de saída;

• Algoritmo – ferramentas do tipo descrição narrativa, fluxogramas ou portuguêsestruturado são utilizadas para descrever o problema com suas soluções.

• Codificação – o algoritmo é transformado em código da linguagem de programaçãoescolhida para se trabalhar.

Algoritmo

• Um algoritmo é uma redação que deve descrever, de forma lógica e sem

ambiguidades, os passos (ações) a serem seguidos para se resolver um

problema especifico que tenha um comportamento padrão em sua solução.

História

• Historiadores trazem divergências sobre a origem da palavra algoritmo.

• A mais difundida é de Mohamed ben Musa Al-Khwarizmi.

• Um matemático persa do século IX, cujas obras foram traduzidas no ocidente noséculo XII.

• Uma das obras recebeu o nome Algorithmi de numero indorum (indiano).

• Algoritmos sobre o sistema de numeração decimal.

História

• Algoritmo mais antigo (400 a 300 AC).

• Algoritmo de Euclides, calcula o máximo divisor comum

(MDC) de dois números inteiros positivos.

História

• Para a Ciência da computação, o conceitode algoritmo foi formalizado em 1936 porAlan Turing (Máquina de Turing) eAlonzo Church.

• Um algoritmo é um conjunto nãoambíguo e ordenado de passos executáveisque definem um processo finito.

Algoritmos

• Objetivo de um algoritmo é o de ensinar a resolver problemas.

• Nosso objetivo é o de construir algoritmos.

• Construiremos textos que ensinem a resolver problemas,

• Não preocupamos com o resultado da solução do problema, desde que o algoritmoesteja correto.

Algoritmo

• Exemplos clássicos deste fato são as receitas de bolos.

• Um livro de receitas de bolos

• Descreve os passos a serem seguidos e ingredientes a serem usados

• Resultado final: o bolo.

• Nenhum livro de receitas traz o bolo pronto.

Lógica e comportamento do algoritmo

• Algoritmo se resume na organização sequencial das ações de solução do problemaespecífico.

• Exemplo: só levaremos o bolo ao forno quando a massa do mesmo estiver pronta enão antes.

• Mas a grande exigência da lógica se encontra nas tomadas de decisões e nosprocessos de repetição no algoritmo

Algoritmo

• Como desenvolvemos um algoritmo para fazer um sanduíche?

Algoritmo

• Fazer uma prova?

Exercício

• Desenvolver um algoritmo para trocar uma lâmpada?

• Desenvolver um algoritmo para sacar dinheiro no banco 24 horas?

Variações

• Todas as possíveis execuções do mesmo devem produzir resultados corretos.

• Deve ser um conjunto de passos finitos.

• Detalhamento de um algoritmo é escolhido de acordo com o problema.

Exemplo de detalhamento

• Suponha que seu carro esteja falhando, você o leva no mecânico e simplesmente diz: - "O meu carro estáfalhando, conserte-o!“

• Agora vamos supor que você leve o seu carro para um aprendiz de mecânico, você terá que supervisionar otrabalho, informando-o das ações que ele deverá executar:

• 1. "verificar velas e distribuidor"

• 2. "limpar carburador e giclês"

• 3. "verificar platinado"

• 4. "verificar partes elétricas relacionadas com o motor"

• 5. "verificar se o combustível não foi adulterado“

Métodos para a construção de algoritmos

• Ler atentamente o enunciado, destacando os pontos mais importantes.

• Definir os dados de entrada, ou seja, quais dados serão fornecidos.

• Definir o processamento, ou seja, quais cálculos serão efetuados e quais as

restrições para esses cálculos. O processamento é responsável pela

transformação dos dados de entrada em dados de saída.

Métodos para a construção de algoritmos

• Definir os dados de saída, ou seja, quais dados serão gerados depois do

processamento.

• Construir o algoritmo.

• Testar o algoritmo realizando simulações.

Tipos de algoritmos

• Os tipos mais utilizados de algoritmos são:

• descrição narrativa

• fluxograma

• pseudocódigo.

Descrição narrativa

• Analisar o enunciado do problema e escrever, utilizando umalinguagem natural, os passos a serem seguidos para a resolução doproblema.

• Vantagem: não é necessário aprender nenhum conceito novo.

• Desvantagem: a língua natural abre espaço para váriasinterpretações, o que dificultará a transição desse algoritmo para oprograma.

Problema

• Faça um algoritmo para mostrar o resultado da multiplicação de dois

números.

Solução descrição narrativa

• Passo 1 – Recebe os dois números que são multiplicados

• Passo 2 – multiplica os números

• Passo 3 – mostrar o resultado obtido na multiplicação

Fluxograma

• Consiste em analisar o enunciado do problema e escrever, utilizandosímbolos gráficos predefinidos, os passos a serem seguidos para a resoluçãodo problema.

• Vantagem: entendimento dos elementos gráficos é mais fácil

• Desvantagem: é necessário aprender a simbologia dos fluxogramas, e oalgoritmo não apresenta muitos detalhes, dificultando a transição para umprograma.

Fluxograma

Solução pelo Fluxograma

• Problema da multiplicação entre dois números.

Início

valor1, valor2 Multi = valor1*valor2Multi

Fim

Pseudocódigo

• Consiste em analisar o enunciado do problema e escrever, por meio de regras

predefinidas, os passos a serem seguidos para a resolução do problema.

• Vantagem: passagem do algoritmo para qualquer linguagem de programação

é quase imediata, bastando conhecer as palavras reservadas da linguagem de

programação que será utilizada.

• Desvantagem: é necessário aprender as regras do pseudocódigo.

Solução Pseudocódigo

• ALGORITMO

• DECLARE VALOR1, VALOR2, MULTI NUMÉRICO

• ESCREVA “Digite os dois números”

• LEIA VALOR1, VALOR2

• MULTI <- VALOR1*VALOR2

• ESCREVA “Multiplicação = “, MULTI

• FIM_ALGORITMO.

Exercício:

• Faça um algoritmo para mostrar o resultado da divisão de dois números.

Perguntas

• O que é algoritmo?

• Qual sua relação com programação de computadores?

Para casa

• Para os problemas a seguir, desenvolva o algoritmo na forma narrativa, fluxograma e pseudocódigo.

1. Desenvolver um algoritmo que calcule a média aritmética entre duas notas de um aluno e mostrar se oaluno foi reprovado ou se foi aprovado na disciplina.

2. Desenvolver um algoritmo para calcular o novo salário de um funcionário. Sabe-se que os funcionários quepossuem um salário atual até R$ 500,00 terão aumento de 20%, os demais terão aumento de 10%.

3. Desenvolva um algoritmo que Leia o nome, o sobrenome e concatene o nome e sobrenome. O resultadoserá o nome completo.

4. Faça um algoritmo que calcule a área de um retângulo.

5. Faça um algoritmo que calcule a área de um triângulo.

6. Faça um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a expressaapenas em dias.

Fim!