programação computacional aula 2: introdução -algoritmos profa. madeleine medrano...

29
Programação Computacional Aula 2: Introdução - Algoritmos Profa. Madeleine Medrano [email protected]

Upload: gabriela-marroquim-candal

Post on 07-Apr-2016

229 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Programação ComputacionalAula 2: Introdução -Algoritmos

Profa. Madeleine Medrano

[email protected]

Page 2: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Roteiro Termos técnicos Algoritmos

Conceito de Algoritmo Partes de um algoritmo Representação de um algoritmo

Fluxograma Programas de computador Linguagens

Linguagem Natural Linguagem de Maquina e Assembler Linguagem de Programação Pseudocódigo

Page 3: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Alguns Termos Técnicos

Hardware Componentes mecânicos e eletro- eletrônicos que compõem o computador. Parte dura do computador.

Software Sequencia de instruções e comandos que fazem o computador realizar determinada tarefa.

Também chamados de programas de computador. Devem estar armazenados em algum tipo de memória.

Exemplos: contabilidade, folha de pagamento, correção de provas.

Page 4: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Alguns Termos Técnicos

Periférico É qualquer componente do computador (hardware) que não seja a CPU.

Exemplos: leitoras de disquete, CDs, monitores, teclados, vídeo, impressoras, etc.

Page 5: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Alguns Termos Técnicos Sistema Operacional Coleção de programas que

gerencia e aloca recursos de hardware e software.

Exemplos de tarefas que um sistema operacional realiza são: leitura de dados pelo teclado, impressão de informações no monitor, gerenciamento da execução de vários programas pela CPU, gerenciamento da memória principal e da memória secundária

para uso dos programas em execução, etc. Exemplos: Linux,Unix, Windows98, OS2, MS-DOS, etc.

Page 6: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Alguns Termos Técnicos Linguagens de Programação

Conjunto de instruções que podem ser interpretados e executados diretamente pela CPU de um dado computador.

É específica para cada computador.

Serve como meio de comunicação entre o individuo que deseja resolver um determinado problema e o computador

Gerações de linguagens 1ª geração: linguagens em nível de maquina 2ª geração: linguagens de montagem (Assembly) 3ª geração: linguagens orientadas à aplicações 4ª geração: linguagens orientadas à modularização 5ª geração: linguagens de conhecimento

Page 7: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

1ª Geração: Linguagens em nível de máquina

Instrução 0010 0001 0110 1100

realiza a soma (código de operação 0010) do dado armazenado no registrador 0001, com o dado armazenado na posição de memória 108 (0110 1100)

Programa: sequência de zeros e uns

programação trabalhosa, cansativa e fortemente sujeita a erros

Page 8: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

•2ª geração: Linguagens de Montagem (Assembly)

(Linguagem de Baixo Nível) Representação da linguagem de máquina através de códigos mnemônicos.

Também é específica de cada máquina.

minimizar as dificuldades da programação em notação binária

Códigos de operação e endereços binários foram substituídos por mnemônicos¹

ADD R1, TOTAL R1 representa o registrador 1 e TOTAL é o nome atribuído ao endereço de

memória 108

processamento requer tradução para linguagem de máquina ¹ Conjunto de técnicas utilizadas para auxiliar o processo de memorização

Page 9: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

3ª geração: Linguagens Orientadas à Aplicação

Surgiram na década de 60

FORTRAN, Pascal, COBOL

O foco deixa de ser no processador / instruções Programa em C:

if (a>b) printf (“O valor de A é maior que o valor de B”);

else printf (“O valor de A é menor que o valor de B”);

Page 10: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

4ª geração: Linguagens Orientadas à Módulos

Esta geração é essencialmente o sinônimo para linguagens com abstração de dados.

A maioria das linguagens desta geração focam na modularização e no encapsulamento

Ada

Page 11: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

•5ª geração: Linguagens de Conhecimento

mecanismos da área de inteligência artificial

Sistemas especialistas, processadores de língua natural e sistemas com bases de conhecimento

Um sistema de 5ª geração armazena conhecimento complexo de modo que a máquina pode obter inferências a partir da informação codificada

PROLOG, LISP http://www.pandorabots.com/pandora/talk?

botid=f5d922d97e345aa1

Page 12: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Níveis de linguagem linguagens de baixo nível

primeira e segunda geração linguagens de alto nível

terceira geração em diante Linguagem de alto nível Linguagem que independe do conjunto de instruções da linguagem de

máquina do computador.

Cada instrução de alto nível equivale a várias instruções da linguagem de máquina, sendo assim mais produtiva. Ex.: Pascal, C, Algol, BASIC, Lisp, Prolog, etc.

PS: no site http://www2.latech.edu/~acm/HelloWorld.shtml, você pode encontrar o programa ‘Hello World’ implementado em dezenas de linguagens

Page 13: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Tradutores de linguagens de programação

Page 14: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Tradutores de linguagens de programação

Page 15: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Tradutores de linguagens de programação

Tradutor programa que recebe como entrada um programa escrito em uma

linguagem de programação (dita linguagem fonte) e produz como resultado as instruções deste programa traduzidas para linguagem de máquina (chamada linguagem objeto).

Se a linguagem do programa fonte é uma linguagem de montagem (Assembly)

tradutor é chamado de Montador (Assembler) Tradutores que traduzem os programas escritos em linguagem de alto

nível

compiladores e os interpretadores

Page 16: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Tradutores de linguagens de programação

Compilador Tradutor de programas escritos em uma linguagem de

programação de alto nível para programas em linguagem de máquina ou linguagem executável.

pode ser executado uma ou mais vezes no futuro

enquanto o código fonte do programa não for alterado, ele poderá ser executado sucessivas vezes, sem necessidade de nova compilação

Page 17: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Compilador

Page 18: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Interpretador É um programa que executa outros programas escritos em alguma linguagem

de programação, instrução a instrução, enquanto ele vai sendo executado

A execução de um programa interpretado é em geral mais lenta que o programa compilado.

Por outro lado, o uso de programas interpretados permite que trechos de códigos possam ser trocados por novos facilmente, fazendo com que o programa fonte possa mudar durante sua execução.

Este é um dos grandes motivos de se usar programas interpretados em sistemas especialistas.

Duas linguagens para as quais podemos encontrar interpretadores são Lisp e Prolog.

Page 19: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Interpretador

Cada vez que um programa interpretado tiver que ser re-executado, todo o processo de interpretação deverá ser refeito.

Independentemente de ter havido ou não modificações no código fonte do programa desde sua última execução

Page 20: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Software básico Utilitários

Softwares de apoio à solução de problemas de disco, memória, etc

Desfragmentador, limpeza de disco...

Compactadores e descompactadores de arquivos, programas anti-virus

Vírus Programas capazes de se instalar de forma clandestina nos sistemas Podem adotar procedimentos perturbadores » fazer uma bolinha pular na tela » declaradamente destrutivos (apagar informações)

Page 21: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo

É a descrição de uma sequencia finita de ações para realizar alguma tarefa.

Nesta aula estaremos interessados em algoritmos computacionais, que escrevem uma sequencia de ações que podem ser traduzidos para alguma linguagem de programação

Page 22: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmos

Algoritmos usam dados e produzem um resultado.

- uma sequência de instruções para solucionar um problema

Um passo de um algoritmo: Lê dados armazenados no

computador. Executa operações matemáticas e lógicas sobre dados. Armazena resultados.

Page 23: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo: Bolo de Chocolate

Aqueça o forno a 180o C Unte uma forma redonda Numa taça

Bata 75g de manteiga 250g de açúcar

até ficar cremoso Junte

4ovos, um a um 100g de chocolate derretido

Adicione aos poucos 250g de farinha peneirada Ponha a massa na forma Leve ao forno durante 40 minutos

Page 24: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Pseudo-código e Fluxograma

Ex.: imprimir maior valor

Imprima A

Início

Leia A e B

A > B?

Sim

Não

A recebe B

Leia A;Leia B;Se A > B entãoImprima A;SenãoImprima B;Fim Se

Page 25: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo de Euclides

Um exemplo é o algoritmo de Euclides para calcular o máximo divisor comum de dois números inteiros positivos.

Passo 1: Adote x = m e y = n; Passo 2: Adote r =(resto de x dividido por y); Passo 3: Adote novos valores x = y e y = r; Passo 4: Se r é diferente de 0, volte ao passo

2; senão pare com a resposta x.

Page 26: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo de Euclides Estilizado Passo1: Dados: m e n. Passo2: x ← m. Passo3: y ← n. Passo4: Repita Passo4.1: r ← resto(x, y); Passo4.2: x ← y; Passo4.3: y ← r; Passo4.4: Até que r = 0. Passo5: Imprima o resultado x.

Page 27: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Um programa em C

Page 28: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Algoritmo de Euclides em Linguagem C

Page 29: Programação Computacional Aula 2: Introdução -Algoritmos Profa. Madeleine Medrano madeleine@icte.uftm.edu.br madeleine@icte.uftm.edu.br

Fim da apresentação

Obrigada pela atenção