Programao I Laboratrio I Mateus Raeder Material baseado
Programação I Laboratório I Mateus Raeder Material baseado nos originais da Profa. Denise Bandeira e do Prof. Aníbal P. Cardoso
Introdução Arquitetura de Von Neumann § Apesar das mudanças na informática nas últimas décadas, grande parte dos computadores ainda segue a arquitetura de Von Neumann § Esta arquitetura foi proposta por Neumann (John Von Neumann) na década de 40 § Composto por basicamente 3 subsistemas: CPU, Unidade de Memória Principal (RAM) e Unidades de Entrada/Saída Prof. Mateus Raeder - Prog e Lab I
Arquitetura de Von Neumann CPU Unidade de Controle Entrada e Saída Unidade Aritmética e Lógica Memória Principal Arquitetura de Von Neumann Prof. Mateus Raeder - Prog e Lab I
Arquitetura de Von Neumann Mas o que é uma instrução? § Unidade de Controle: identifica e decodifica as instruções, acionando a unidade responsável pela sua execução § Unidade Aritmética e Lógica: executa as operações lógicas e aritméticas § Unidade de Memória Principal (RAM - Random Access Memory): armazena o programa e seus respectivos dados. O programa e os dados devem estar na memória RAM no momento da execução. § Unidades de Entrada: transferem informações externas à máquina para a Unidade de Memória Principal (por exemplo, mouse, scanner, teclado, webcam, microfone) § Unidades de Saída: exibem as informações que encontram-se guardadas na Unidade de Memória Principal através de algum meio que seja legível aos seres humanos (por exemplo, monitor de vídeo, caixas de som, impressora) Prof. Mateus Raeder - Prog e Lab I
Instruções Mas o que é uma instrução? § Instrução (ou comando) é uma regra que vai indicar ao computador quais os dados a serem operados e qual a operação a ser realizada. § Por exemplo: 7 – 5 = § A CPU, então, executa alguns passos para que cada uma das instruções sejam corretamente efetuadas Prof. Mateus Raeder - Prog e Lab I
Instruções – etapas de processamento As etapas para o processamento de uma instrução são (basicamente): § A Unidade de Controle busca a instrução na memória § A Unidade de Controle decodifica a instrução, definindo as posições de memória necessárias para sua execução § A Unidade de Controle transfere os dados para a Unidade Aritmética e Lógica § A Unidade Aritmética e Lógica executa as operações sobre os dados e o resultado é armazenado na memória Prof. Mateus Raeder - Prog e Lab I
Linguagem de Máquina x Linguagem de Alto Nível § Podemos, então, passar para a máquina o conjunto de instruções que desejamos que sejam executadas § Porém, a máquina não entende a nossa linguagem § Então, como passamos estas instruções para a máquina? Linguagem de máquina Linguagem de programação de alto nível Prof. Mateus Raeder - Prog e Lab I Tipo mais primitivo de linguagem. É a linguagem que o computador entende. Tipo de linguagem criada para facilitar a comunicação com a máquina. Deve ser traduzida em linguagem de máquina.
Processos de tradução § Existem diversas linguagens de programação de alto nível. Por exemplo: C, C++, Java, Pascal, Delphi, etc. § Os programas de computador são, então, escritos utilizando uma linguagem de programação de alto nível (na qual um código ou programa fonte é criado) e são traduzidos para a linguagem de máquina § Os 2 principais processos que traduzem programas escritos em uma linguagem de alto nível para a linguagem de máquina são interpretação e compilação Prof. Mateus Raeder - Prog e Lab I
Processo de Interpretação § Um interpretador é um programa que recebe como entrada um arquivo contendo um programa fonte § O interpretador lê linha a linha este arquivo de entrada, e executa uma as instruções que estão nele programadas Interpretador Programa fonte Exemplo: teste. py Prof. Mateus Raeder - Prog e Lab I Execução
Processo de Interpretação § Um programa pode ser executado em qualquer máquina, desde que haja o interpretador disponível para utilização § Porém, pode-se perceber que a execução de um programa que utiliza um interpretador é relativamente lenta, pois a cada nova linha lida no programa fonte, esta deve ser decodificada antes de ser executada § Se houver algum erro de no código (que vá contra as definições da linguagem), o programa será interrompido abruptamente com um erro Prof. Mateus Raeder - Prog e Lab I
Processo de Compilação § Um compilador é um programa (ou um conjunto de programas) que recebe como entrada um programa fonte e cria um novo arquivo como saída § O arquivo de entrada é o código fonte escrito pelo programador § O arquivo que o compilador produz, é normalmente identificado como código objeto § Este código objeto contém instruções de baixo nível, traduzidas para a linguagem de máquina Prof. Mateus Raeder - Prog e Lab I
Processo de Compilação Compilador Programa fonte 01001110 01100111 01001011 00011110 101011001001 Arquitetura Execução Programa objeto Exemplo: teste. c § O código produzido não é portável para qualquer arquitetura § Diferentes compiladores são construídos para as diferentes arquiteturas de processadores (diferentes famílias de processadores possuem conjuntos diferentes de instruções) § O compilador somente gera corretamente o código objeto caso não tenha encontrado um erro de compilação Prof. Mateus Raeder - Prog e Lab I
Linguagem Java § Java é uma linguagem compilada § O compilador Java, entretanto, não gera código para um processador específico, mas sim para uma máquina virtual Java (a JVM - Java Virtual Machine) Compilador javac Programa fonte Exemplo: teste. java Prof. Mateus Raeder - Prog e Lab I 01001110 01100111 01001011 00011110 101011001001 Programa objeto (bytecode) Exemplo: teste. class Máquina Virtual Java (JVM) Execução
Linguagem Java § Os programas escritos em Java são, portanto, portáveis sobre todos os computadores para os quais existir uma implementação da JVM § Desta forma, Java possui tanto beneficios característicos das linguagens compiladas uma vez que a execução de um programa não corre o risco de ser abortada devido a um erro de sintaxe no seu código § quanto das linguagens interpretadas uma vez que executa sobre uma máquina virtual que tem um comportamento semelhante a um interpretador Prof. Mateus Raeder - Prog e Lab I
Algoritmo § Um algoritmo é uma sequência de passos finita, que devem ser seguidos para alcançar algum objetivo § Para ordenar ao computador que realize uma determinada tarefa, um algoritmo é descrito em uma linguagem de programação § Este algoritmo é, então, compilado (ou interpretado) e executado Prof. Mateus Raeder - Prog e Lab I
Algoritmo § Exemplos de algoritmos do dia-a-dia: - vir para a Unisinos - escovar os dentes - comprar comida - outros? Prof. Mateus Raeder - Prog e Lab I
Algoritmo Formas de representação de um algoritmo: FLUXOGRAMA Início Ir até o açougue Açougue fechado? sim não Escolher carne Comprar carne Prof. Mateus Raeder - Prog e Lab I não Carne ruim? sim Comer miojo
Algoritmo Formas de representação de um algoritmo: PORTUGUÊS ESTRUTURADO se quero comprar carne então vou ao açougue se o açougue está fechado então vou comer miojo se o açougue não está fechado então vou escolher a carne se a carne está ruim então vou comer miojo se a carne não está ruim então compro a carne Prof. Mateus Raeder - Prog e Lab I
- Slides: 18