INF1004 e INF1005: Programação 1 Introdução à Programação Tópicos Principais • Modelo de um Computador • Um computador hipotético • Ciclo de Desenvolvimento Modelo de um Computador Modelo de um Computador A Bus é o canal que transfere informação entre os componentes do computador Modelo de um Computador “Cérebro” do computador Modelo de um Computador Executa instruções armazenadas na memória principal Modelo de um Computador Informação é perdida quando o computador é desligado Modelo de um Computador Informação é mantida mesmo quando o computador é desligado Modelo de um Computador Para executar um programa, ele precisa ser copiado da memória secundária para a principal Modelo de um Computador Possibilitam o usuário fornecer e receber informações do computador Um computador hipotético • A memória armazena números. • Cada posição na memória possui um endereço. Os endereços começam com 0. Logo os endereços 0, 1, 2 são os endereços das primeiras 3 posições. • Existe uma memória chamada registrador, que registra o resultado de uma operação. Instruções do computador • read pos: lê um número do teclado e armazena na posição de memória pos • write pos: escreve na tela o número armazenado na posição de memória pos • storeconst num pos: grava na posição pos o número num Instruções do computador • add pos1 pos2: soma os números armazenados em pos1 e pos2 e armazena o resultado no registrador. • sub pos1 pos2: calcula pos1 - pos2 e armazena o resultado no registrador. • mul pos1 pos2: multiplica os números em pos1 e pos2 e armazena o resultado no registrador. • div pos1 pos2: divide os números em pos1 e pos2 e armazena o resultado no registrador. Instruções do computador • store pos: armazena o número no registrador na posição de memória pos Executando programas • Programas nesse computador são sequências das instruções mostradas Programa soma 2.5 • Nós queremos implementar um programa que lê do teclado um valor, soma 2.5 a ele e mostra na tela o resultado Programa soma 2.5 read 0 storeconst 2.5 1 add 0 1 store 2 write 2 Programa soma 2.5 O programa abaixo também resolve o problema read 0 storeconst 2.5 1 add 0 1 store 0 write 0 Programa soma 2.5 O programa abaixo resolve o problema? read 0 storeconst 2.5 1 add 0 1 store 0 write 2 Armazenamento de números na memória • No nosso computador, cada posição de memória possui 8 subseções e cada subseção é capaz de armazenar um número de 0 a 9. Armazenamento de números na memória • O número zero é representado assim: Armazenamento de números na memória • Somos capazes de armazenar valores distintos em uma posição de memória. 8 10 • O maior valor inteiro positivo seria: Armazenamento de números na memória • Para armazenar números negativos, nós podemos usar uma convenção. A primeira subseção terá o valor 1 para números negativos e 0 para números positivos. • Logo o número -457 é representado pela memória abaixo: Armazenamento de números na memória • Para armazenar números fracionários, podemos usar as 4 subseções após o sinal para o número inteiro, e as 3 seguintes para a parte fracionária. • Abaixo está representado o número -257.4 Armazenamento de números na memória • O formato que nós usaremos em nossos exemplos usa notação científica para armazenar números fracionários. O número -257.4 em notação científica fica -0.2574 x 103. As 5 primeiras subseções armazenam o número e as 3 seguintes armazenam a potência. Ambas as partes possuem uma subseção destinada ao sinal (1 = negativo, 0 = positivo). • Abaixo temos o número -0.2574 x 103: Armazenando Programas • Para o nosso computador hipotético executar um programa, ele precisa estar armazenado na memória. • Como nossa memória só armazena números, precisamos definir um número para cada instrução. • • • • • • • • Números para cada Instrução read = 0 write = 1 storeconst = 2 add = 3 sub = 4 mul = 5 div = 6 store = 7 Um programa em memória read 0 storeconst 2.5 1 add 0 1 store 2 write 2 Um programa em memória read 0 storeconst 2.5 1 add 0 1 store 2 write 2 Um programa em memória read 0 storeconst 2.5 1 add 0 1 store 2 write 2 Ciclo de Desenvolvimento • Escolha da linguagem depende da aplicação que será desenvolvida • No nosso caso vamos trabalhar com C: - Base para Programação II Interoperabilidade entre as engenharias Eficiência, facilidade de uso Base para qualquer outra linguagem (as mais sofisticadas) Ciclo de Desenvolvimento • Um programa em C deve respeitar a sintaxe da linguagem. • O computador não é capaz de executar instruções em C. • Para executar um programa em C devemos convertê-lo para linguagem de máquina (0s e 1s). • • Essa conversão chama-se compilação. O programa que faz a conversão chama-se compilador. Ciclo de Desenvolvimento Ciclo de Desenvolvimento Extensão .C Ciclo de Desenvolvimento Extensão .C Converte C para Código de Máquina Ciclo de Desenvolvimento Extensão .C Converte C para Código de Máquina Extensão .exe Referências • Waldemar Celes e Roberto Ierusalimschy, Apostila de Programação (Disponível no site da disciplina) • Capítulo 1 - Introdução à Programação