Fundamentos de Programação Introdução Arquitetura Genérica de um Computador Máquina de Von Neumann Diagrama conhecido como Máquina de Von Neumann (grande nome da informática) A finalidade de um computador é receber, armazenar e manipular dados, produzindo informação Mas o computador: É trabalhador Possui muita energia Tem boa memória Não tem iniciativa Não é independente Não é criativo Precisa receber instruções nos mínimos detalhes: Programas de Computador Programa de Computador: seqüência de instruções coerentes que dirigem a CPU na execução de alguma tarefa. - 1 -
O que é a Lógica? O uso da palavra lógica está normalmente relacionado à coerência. Nossa razão pode funcionar desordenadamente. Por isso, a lógica estuda e ensina a colocar ordem no pensamento. A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro abrir a gaveta Utilizando a lógica: Anacleto é mais velho que Felisberto. Felisberto é mais velho que Marivaldo. Portanto, Anacleto é mais velho que Marivaldo. O silogismo (argumento composto de duas premissas e uma conclusão) ilustra outro objetivo da lógica, o estudo de técnicas de formalização e dedução que verificam a validade (ou não) de um argumento. Nos três exemplos abaixo, quais são válidos e quais são inválidos? Todo mamífero é um animal. Todo cavalo é um mamífero. Portanto, todo cavalo é um animal. O pinheiro é verde. O pinheiro é motorista. Então, o motorista é verde. Todos os peixes nadam. Todos os peixes têm escamas. Logo, todos os que têm escamas nadam. Lógica de programação Usa a ordem da razão na programação de computadores, objetivando a produção de soluções logicamente válidas (coerentes) e de qualidade para problemas (tarefas) que se deseja programar. Fases da programação (construção de um programa de computador) - 2 -
Algoritmo Algoritmo é uma seqüência de passos que visa atingir um objetivo bem definido. (FORBELLONE, 1999) Por que usar algoritmos? A lógica da solução fica representa de forma clara e o mais objetivamente possível, sem se preocupar com detalhes da linguagem de programação que será utilizada para traduzir a solução para o computador, se ela for representada, primeiramente, sob a forma de um algoritmo. O uso de algoritmos permite que, nesta fase de criação da solução lógica para o problema, seja possível focalizar nossa atenção naquilo que é importante: a lógica da construção da solução e não nos detalhes de implementação. Fases de programação (detalhes) Representação apenas da lógica da solução Também chamado de Código Fonte (*), é um arquivo texto. (conforme sintaxe da linguagem de programação utilizada). O computador não entende o Código Fonte. Interpretador (gera o código de máquina dinamicamente, a cada execução) Compilador (gera executável (exe), uma vez, em código de máquina) Somente 0 e 1 código binário (Linguagem de Máquina ou Código Objeto) Linguagem de Máquina (**) ou Código Objeto - 3 -
Definições: Um programa é a codificação de um algoritmo em uma linguagem de programação. (ASCENCIO, 1999) Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais (sintaxe) usadas para escrever programas de computador. Detalhes: O código fonte (*) instruções escritas em determinada linguagem de programação é um texto que precisa ser convertido (traduzido) para a linguagem do computador: linguagem de máquina (**). Se o método utilizado converte todo o texto (código fonte), para só depois executar\rodar o programa (agora um código objeto), dizemos que o programa foi compilado. O mecanismo (também um programa) que faz a conversão é chamado compilador. Se o método roda o próprio texto (código fonte), traduzindo linha a linha, o programa vai sendo utilizado na medida em que vai sendo traduzido, dizemos que o programa foi interpretado. A cada execução o programa precisa ser novamente interpretado pelo mecanismo interpretador. Sistema Binário A linguagem da máquina Internamente, o computador opera com o sistema binário (no lugar do tradicional sistema decimal) para simplificar o projeto e construção, acarretando redução de custo e maior confiabilidade. O termo binário deve-se ao fato dos circuitos eletrônicos que formam os computadores digitais serem capazes de distinguir apenas dois níveis de tensão: um valor positivo (nos PC's, cerca de +3 volts) para representar o valor binário 1 e um valor aproximado a 0 (zero volt) para representar o valor binário 0. Dois algarismos (0,1) dígitos binários (0,1) o elemento mínimo de informação nos computadores foi apelidado de bit (uma contração do inglês binary digit). Obs.: os discos magnéticos trabalham com positivo\negativo (também binário) e os discos óticos trabalham com reflexão e não reflexão da luz (também binário). Tanto as instruções quanto os dados precisam estar no sistema binário. - 4 -
Conversões Numéricas Decimal Binário 25 2 1 12 2 0 6 2 0 3 2 1 1 _2 1 0 Temos: 25 = 110012 Decimal Binário 101101 2 = 1 x 2 5 + 0 x 2 4 + 1 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 101101 2 = 2 5 + 0 + 2 3 + 2 2 + 0 + 1 101101 2 = 32 + 8 + 4 + 1 = 45 (no sistema decimal) Os programas (sistema operacional, aplicativos) e os dados que estão em uso por um computador num determinado momento ficam carregados na memória RAM (Armazenamento no Diagrama de Von Neumann). A memória RAM é dividida em células denominadas palavras de 8 bits (0,1) = byte. Cada palavra tem um endereço lógico e armazena uma informação. Abaixo apresentamos um esquema parcial do conteúdo de uma memória RAM. Os dígitos binários representados em cada célula podem ser uma INSTRUÇÃO ou um DADO (um número ou um caractere). Endereço 0 Endereço 1 Endereço 2 01011011 01101110 00000001 (91 em decimal) (110 em decimal) (1 em decimal) - 5 -
Algoritmos Alguns detalhes Através da Lógica Estruturada, provou-se que três estruturas são suficientes para explicar a solução de qualquer problema: SEQÜÊNCIA; DECISÃO; REPETIÇÃO. Todos nós sabemos construir algoritmos. Se isso não fosse verdade, não conseguiríamos: sair de casa pela manhã; ir ao trabalho; decidir qual o melhor caminho para chegar a um lugar; voltar para casa, etc. Para que tudo isto seja feito é necessário uma série de entradas do tipo: a que hora acordar; que hora sair de casa; qual o melhor meio de transporte, etc. - 6 -
Exemplos de algoritmos: 1 - Um exemplo de algoritmo pode ser as instruções que um professor passa aos seus alunos em uma academia de ginástica. Por exemplo: Repetir 10 vezes os quatro passos abaixo: 1. Levantar e abaixar braço direito; 2. Levantar e abaixar braço esquerdo; 3. Levantar e abaixar perna esquerda; 4. Levantar e abaixar perna direita. 2 - Testar e trocar 10 lâmpadas. 3 - Um escritório de previsão do tempo armazena diariamente a temperatura média de uma determinada região. A tarefa é descobrir qual é a menor temperatura jamais registrada nos arquivos do escritório. Um possível algoritmo seria o seguinte: Início do algoritmo. o Pegue a primeira temperatura registrada. o Anote esta temperatura como a menor de todas as temperaturas. o Enquanto ainda houver registros de temperaturas, execute repetidamente e em ordem todas as instruções numeradas abaixo: 1. Pegue a próxima temperatura. 2. Se esta temperatura for menor que àquela registrada no momento como a menor então jogue fora a anteriormente registrada e anote a nova temperatura como a menor de todas. o Leia a temperatura que está anotada como a menor. Esta é a menor temperatura (informação que estávamos procurando). Fim do algoritmo. - 7 -
Como representar o Algoritmo Pode ser representado de forma gráfica ou textual (as três representações de algoritmo abaixo executam a mesma tarefa, tente descobri-la interpretando-os). Representação Gráfica (fluxograma) Representação Gráfica (Diagrama de Chapin) Representação Textual (Pseudocódigo ou Português Estruturado ou Portugol) ALGORITMO Media DECLARE N1, N2, Media REAL ESCREVA Digite as duas notas LEIA N1, N2 Media (N1+N2)/2 SE Media >= 7 ENTÃO ESCREVA "Aprovado" SENÃO ESCREVA Reprovado FIM_ALGORITMO Porque usar o Português Estruturado e não usar simplesmente o Português Coloquial? - 8 -
Método para construção de Algoritmos a. Compreender o problema. b. Definir os dados de entrada. c. Definir o processamento (procedimentos para transformar os dados de entrada em dados de saída). d. Definir os dados de saída/informação. e. Construir o algoritmo seguindo as regras que serão apresentadas nos próximos tópicos. f. Testar o algoritmo realizando simulações. Durante o curso, as soluções algorítmicas serão convertidas para a linguagem de programação C/C++. Obs.: C++ possui incrementos em relação à linguagem C. Tais incrementos dão suporte à programação orientada a objetos. A sintaxe é basicamente a mesma. - 9 -