Aula 3 Algoritmos

  • View
    213

  • Download
    0

Embed Size (px)

DESCRIPTION

aula de programacao

Transcript

  • Algoritmos

    Professor Renan

  • Perguntas

    O que algoritmo?

    Qual sua relao com programao de computadores?

  • Computador

  • Finalidade do computador

    Realizar a tarefa de processamento de dados.

    Receber dados por um dispositivo de entrada

    Realizar operaes com esses dados

    Gera uma resposta

  • Processamento dos dados

  • Computador

    SOFTWARE

    HARDWARE

    COMPUTADOR

  • Software

    Programa em processamento no computador

    Podem ser do tipo bsico, programas que definem o padro doequipamento e so necessrios para o funcionamento do computador.

    Tipos:

    Sistema operacional

    Ambiente operacional

    Linguagens de programao (tradutores)

  • Sistema operacional

    um programa ou conjunto de programas cuja funo gerenciar os recursos do computador.

    Em geral, so fornecidos pelos fabricantes do equipamento.

    Constitudos por programas escritos em linguagem deprogramao de baixo nvel.

  • Ambiente Operacional

    Interface grfica entre o usurio e o Sistema Operacional.

  • Linguagem de programao

    Conjunto de smbolos e regras que especificam um padro sinttico paraestabelecer a comunicao entre usurios e computador.

    Na lngua portuguesa,

    Os smbolos so as letras.

    As regras so a gramtica da lngua portuguesa.

    Padro sinttico a escrita correta.

  • Linguagem de programao

    dividida em linguagem de baixo nvel e linguagem de alto nvel.

    Baixo nvel

    Alto nvel

  • Linguagem de baixo nvel

    Linguagem de Mquina

    Baseada no cdigo binrio, 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 Programao

  • Linguagem de baixo nvel

    Linguagem de

    mquinaSignificado

    0010 0001 1110 carrega no registrador 1 o contedo da posio de memria 14

    0010 0010 1111 carrega no registrador 2 o contedo da posio de memria 15

    0001 0001 0010soma o contedo do registrador 1 com o contedo do registrador

    2 e coloca no registrador 1

    0011 0001 1111 armazena o contedo do registrador 1 na posio de memria 15

  • Linguagem de baixo nvel

    Linguagem de baixo nvel simblica:

    Simplificao da linguagem de mquina, faz uso de cdigos para expressar asinstrues.

    Exemplo: Assembly

    Linguagem de mquina Linguagem simblica

    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 nvel

    a combinao de um conjunto de smbolos de acordo com certas regras desintaxe para expressar uma sequncia de operaes de mquina.

    uma linguagem que no exige conhecimento do cdigo de mquina.

    Exemplos: FORTRAN, ALGOL, COBOL, BASIC, PASCAL, LOGO, C,JAVA, LISP, PROLOG, Phyton etc.

  • Compilador

    Um compilador um programa de sistema que traduz um programa descritoem uma linguagem de alto nvel para um programa equivalente em cdigo de

    mquina para um processador.

    Produz um programa em linguagem simblica (assembly).

    Montadores traduz a linguagem simblica para a linguagem de mquina.

  • Linguagem: Mquina x Simblica x Alto Nvel

    Linguagem de

    mquinaLinguagem simblica

    Linguagem de alto

    nvel

    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 tipode processamento de dados, devemos escrever um programa ou vrios

    programas interligados.

    Para isso utilizamos a linguagem de programao.

  • O que o programa

    a codificao de um algoritmo em uma determinada linguagem deprogramao.

  • Etapas de desenvolvimento de programas

    Anlise nessa etapa estuda-se o enunciado do problema para definir os dados deentrada, o processamento e os dados de sada;

    Algoritmo ferramentas do tipo descrio narrativa, fluxogramas ou portugusestruturado so utilizadas para descrever o problema com suas solues.

    Codificao o algoritmo transformado em cdigo da linguagem de programaoescolhida para se trabalhar.

  • Algoritmo

    Um algoritmo uma redao que deve descrever, de forma lgica e semambiguidades, os passos (aes) a serem seguidos para se resolver um

    problema especifico que tenha um comportamento padro em sua soluo.

  • Histria

    Historiadores trazem divergncias sobre a origem da palavra algoritmo.

    A mais difundida de Mohamed ben Musa Al-Khwarizmi.

    Um matemtico persa do sculo IX, cujas obras foram traduzidas no ocidente nosculo XII.

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

    Algoritmos sobre o sistema de numerao decimal.

  • Histria

    Algoritmo mais antigo (400 a 300 AC).

    Algoritmo de Euclides, calcula o mximo divisor comum(MDC) de dois nmeros inteiros positivos.

  • Histria

    Para a Cincia da computao, o conceitode algoritmo foi formalizado em 1936 porAlan Turing (Mquina de Turing) eAlonzo Church.

    Um algoritmo um conjunto noambguo e ordenado de passos executveisque 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,

    No preocupamos com o resultado da soluo do problema, desde que o algoritmoesteja correto.

  • Algoritmo

    Exemplos clssicos deste fato so 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.

  • Lgica e comportamento do algoritmo

    Algoritmo se resume na organizao sequencial das aes de soluo do problemaespecfico.

    Exemplo: s levaremos o bolo ao forno quando a massa do mesmo estiver pronta eno antes.

    Mas a grande exigncia da lgica se encontra nas tomadas de decises e nosprocessos de repetio no algoritmo

  • Algoritmo

    Como desenvolvemos um algoritmo para fazer um sanduche?

  • Algoritmo

    Fazer uma prova?

  • Exerccio

    Desenvolver um algoritmo para trocar uma lmpada?

    Desenvolver um algoritmo para sacar dinheiro no banco 24 horas?

  • Variaes

    Todas as possveis execues 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 mecnico e simplesmente diz: - "O meu carro estfalhando, conserte-o!

    Agora vamos supor que voc leve o seu carro para um aprendiz de mecnico, voc ter que supervisionar otrabalho, informando-o das aes que ele dever executar:

    1. "verificar velas e distribuidor"

    2. "limpar carburador e gicls"

    3. "verificar platinado"

    4. "verificar partes eltricas relacionadas com o motor"

    5. "verificar se o combustvel no foi adulterado

  • Mtodos para a construo de algoritmos

    Ler atentamente o enunciado, destacando os pontos mais importantes.

    Definir os dados de entrada, ou seja, quais dados sero fornecidos.

    Definir o processamento, ou seja, quais clculos sero efetuados e quais asrestries para esses clculos. O processamento responsvel pela

    transformao dos dados de entrada em dados de sada.

  • Mtodos para a construo de algoritmos

    Definir os dados de sada, ou seja, quais dados sero gerados depois doprocessamento.

    Construir o algoritmo.

    Testar o algoritmo realizando simulaes.

  • Tipos de algoritmos

    Os tipos mais utilizados de algoritmos so:

    descrio narrativa

    fluxograma

    pseudocdigo.

  • Descrio narrativa

    Analisar o enunciado do problema e escrever, utilizando umalinguagem natural, os passos a serem seguidos para a resoluo doproblema.

    Vantagem: no necessrio aprender nenhum conceito novo.

    Desvantagem: a lngua natural abre espao para vriasinterpretaes, o que dificultar a transio desse algoritmo para oprograma.

  • Problema

    Faa um algoritmo para mostrar o resultado da multiplicao de doisnmeros.

  • Soluo descrio narrativa

    Passo 1 Recebe os dois nmeros que so multiplicados

    Passo 2 multiplica os nmeros

    Passo 3 mostrar o resultado obtido na multiplicao

  • Fluxograma

    Consiste em analisar o enunciado do problema e escrever, utilizandosmbolos grficos predefinidos, os passos a serem seguidos para a resoluodo problema.

    Vantagem: entendimento dos elementos grficos mais fcil

    Desvantagem: necessrio aprender a simbologia dos fluxogramas, e oalgoritmo no apresenta muitos detalhes, dificultando a transio para umprograma.

  • Fluxograma

  • Soluo pelo Fluxograma

    Problema da multiplicao entre dois nmeros.

    Incio

    valor1, valor2 Multi = valor1*valor2Multi

    Fim

  • Pseudocdigo

    Consiste em analisar o enunciado do problema e escrever, por meio de regraspredefinidas, os passos a serem seguidos para a resoluo do problema.

    Vantagem: passagem do algoritmo para qualquer linguagem de programao quase imediata, bastando c