ENIAC Introdução aos Computadores e à ção (Noções Básicas) Introdução aos Computadores e à ção (Noções Básicas) 1 Introdução aos Computadores e à ção (Noções Básicas) 2 O transistor foi inventado em 1947 nos Laboratórios Bell (USA) Isso permitiu que, no início dos anos 1980, fossem comercializados, a baixo preço, pequenos computadores A sua utilização, a partir do final da década de 1960-1970, permitiu uma redução significativa das dimensões dos computadores. Introdução aos Computadores e à ção (Noções Básicas) 3 Introdução aos Computadores e à ção (Noções Básicas) 4
Tipos de Computadores Componentes de um computador Super-computadores Computadores pessoais de secretária Computadores portáteis Personal Digital Assistants (PDA s)... e até mesmo telemóveis Memória (principal e auxiliar) Dispositivos de entrada Processador (CPU) Dispositivos de saída Processador (CPU): Interpreta e executa as instruções Memória (RAM (Random Access Memory), Disco ): Guarda os dados e as instruções Dispositivos de entrada: teclado, rato, leitor óptico, etc. Dispositivos de saída: monitor (ou ecrã), impressora, etc. Introdução aos Computadores e à ção (Noções Básicas) 5 Introdução aos Computadores e à ção (Noções Básicas) 6 Dois tipos de memória Capacidade de Memória Central ou Principal (RAM) Volátil (perde-se quando o computador é desligado) Área de trabalho Guarda temporariamente o programa e os dados, enquanto o programa está em execução Bit é um dígito binário pode assumir apenas um de dois valores, 0 ou 1 Byte é uma sequência de 8 bites A capacidade da memória é expressa no número de bytes que consegue armazenar: Unidade Símbolo Nº de bytes Auxiliar ou secundária Permanente (pelo menos teoricamente...) Guarda programas e dados/resultados Inclui discos rígidos, disquetes, CD-Rom s, etc. kilobyte megabyte KB MB 2 10 =1024 2 20 (> 1 milhão) gigabyte GB 2 30 (> 1 bilião) Introdução aos Computadores e à ção (Noções Básicas) 7 Introdução aos Computadores e à ção (Noções Básicas) 8
Software, Hardware, Sistema Operativo Software do computador - Colecção de programas no nosso computador. Hardware do computador - Conjunto de componentes físicos (dispositivos mecânicos, magnéticos, eléctricos ou electrónicos). - Conjunto de instruções, escritas num código compreendido pelo computador que especificam exactamente como o trabalho deve ser executado. Dados (input) Computador Resultados (output) Conjunto de programas que fazem de interface entre o hardware do computador (disco, memória, unidade de processamento, rato, teclado,...) e os outros programas (compiladores, editores de texto, programas de desenho, folhas de cálculo, sistemas de bases de dados, jogos, motores de busca (browsers) para aceder à internet,... ). Cria um ambiente onde os utilizadores podem preparar os seus programas e executá-los sem se preocuparem com os detalhes de hardware específicos de cada máquina. Podemos dizer que é o programa supervisor de todas as operações do computador. Actualmente os sistemas operativos mais conhecidos e usados são o MSDOS/Windows, o UNIX (Ken Thompson e Dennis Ritchie 1969, versão em assembly; Ken Thompson 1972, versão em C) e o Linux(Linus Torvalds 1991). Introdução aos Computadores e à ção (Noções Básicas) 9 Introdução aos Computadores e à ção (Noções Básicas) 10 Arquitectura de von Neumann (Abstração do computador moderno) Linguagens de ção Uma máquina de von Neumann é constituída por um conjunto de células de memória e uma unidade de processamento que inclui algumas células de memória locais os registos. A unidade de processamento é responsável por transferir informação das células de memória para os registos (operação de leitura), avaliar expressões lógicas e aritméticas nos registos, e transferir a informação nos registos para as células de memória (operação de escrita). Um programa para uma máquina de von Neumann é uma sequência de instruções para executar as operações de leitura, escrita e avaliação (mencionadas acima) e um conjunto de instruções de controlo de execução da sequência de instruções (estabelecem qual a próxima instrução a ser executada que pode ser condicionada a um conteúdo de um registo). Linguagem de ção é um sistema formal de regras de descrição, com sintaxe e semântica bem definidas, capaz de representar um programa de computador. Classificação por níveis: Linguagens de muito alto nível (SQL, PROLOG, Haskell) Linguagens de alto nível (Pascal, Fortran, C, C++, Java,...) Linguagens de baixo nível (linguagem máquina e assembly) Introdução aos Computadores e à ção (Noções Básicas) 11 Introdução aos Computadores e à ção (Noções Básicas) 12
Linguagens de ção Vantagens e desvantagens Linguagem de Alto Nível Linguagens de alto nível Linguagens máquina Linguagem Assembly Linguagem Máquina Hardware Mais próximas da linguagem natural Usam palavras, números e símbolos matemáticos O código é portável (independente do hardware) Não são directamente entendidas pela máquina Menos natural para as pessoas Composta só com 0 s e 1 s Directamente entendida pela máquina Não portável (dependente do hardware) Introdução aos Computadores e à ção (Noções Básicas) 13 Introdução aos Computadores e à ção (Noções Básicas) 14 Paradigmas da ção Paradigmas da ção Imperativo Fortran Assembler Basic Procedimental Pascal Algol C Orientado aos objectos C++ Java Simula Declarativo Funcional Lisp Exel Haskell Lógico Prolog Imperativo Permite descrever a resolução de um problema através de uma sequência de tarefas elementares (comandos) que definem o processo a seguir e permitem a mudança de estado de variáveis (células de memória) através da operação de atribuição (FORTRAN, COBOL, ALGOL, PASCAL, C, ADA, etc.). Normalmente surge associado aos paradigmas procedimental, modular e abstração de tipos de dados. Orientado aos Objectos O programa é organizado com base em objectos, que contêm não só as estruturas de dados mas também as funções que actuam sobre eles. A computação num sistema de objectos decorre da troca de mensagens entre os vários objectos, donde resultam alterações nos seus estados internos e, consequentemente, no estado global do programa, que neste modelo computacional, é um estado distribuído por todos os objectos que o constituem.(smalltalk, C++, Java, etc.) Introdução aos Computadores e à ção (Noções Básicas) 15 Introdução aos Computadores e à ção (Noções Básicas) 16
Paradigmas da ção Mapa dos principais conceitos associados a programação Funcional Um programa é uma declaração de funções, que descrevem como computar um resultado a partir dos seus argumentos. As funções são aplicadas recursivamente ou por composição. A parte algorítmica e procedimental é (idealmente) suprimida, modela-se apenas as formulações matemáticas da computabilidade. (LISP, APL, ML, Haskell, etc.) Lógico Um programa é um conjunto de afirmações e regras (cláusulas - fórmulas da lógica de 1ª ordem modificadas), que descrevem o conhecimento dos objectos e relações entre eles num determinado domínio, sobre o qual são introduzidas questões e, recorrendo à técnica de pesquisa por retrocesso (backtracking), são fornecidas respostas (consequências lógicas) (PROLOG, CTL, etc.). Inteligência artificial Interfaces gráficas Bases de Dados Arquitectura de s Técnicas Paradigmas ção Sistemas operativos Arquitectura de Computadores ção imperativa ção funcional ção com objectos ção em Lógica Introdução aos Computadores e à ção (Noções Básicas) 17 Introdução aos Computadores e à ção (Noções Básicas) 18 Mapa dos principais conceitos associados a programa Compilação tradicional Matemática discreta Álgebra Estruturas de Informação Especificações Controlo Arquitectura de Computadores Processadores de linguagens Compilador é um programa especializado que verifica a correcção sintáctica de um programa escrito numa linguagem de alto nível e o traduz para um programa escrito numa linguagem de baixo nível (i.e. a linguagem compreendida pelo computador que executa o programa). Código fonte vs. Código objecto o programa escrito numa linguagem de alto nível diz-se código fonte e o programa escrito numa linguagem de baixo nível diz-se código objecto. Processo Computacional Abstracções Linguagem Estudo de linguagens formais Compilar um programa (que não contenha erros sintácticos) significa traduzir o código fonte para código objecto (sequências de 0 s e 1 s) através da execução do (programa) compilador. Para fazer a tradução o compilador tem de entender a linguagem de programação e a linguagem máquina do microprocessador onde o programa vai ser executado Complexidade Computacional Algoritmo Computabilidade Fundamentos Teoria da Computação Os compiladores tradicionais são específicos para uma linguagem de programação e um tipo de computador Introdução aos Computadores e à ção (Noções Básicas) 19 Introdução aos Computadores e à ção (Noções Básicas) 20
Tradução do programa para 'linguagem máquina' Tradução do programa para 'linguagem máquina' Usando um assemblador - assembler Usando um compilador Assembler Processador A Compilador Processador A Assembler Processador B Compilador Processador B Introdução aos Computadores e à ção (Noções Básicas) 21 Introdução aos Computadores e à ção (Noções Básicas) 22 Tradução do programa para 'linguagem máquina' Compilação Java Usando um interpretador Interpretador Interpretador A compilação de um programa em Java difere do tradicional e permite que um programa possa ser executado em qualquer tipo de computador sem ter de ser alterado nem compilado novamente O compilador de Java gera um código constituído por instruções simples, denominado bytecode, que não depende do tipo de computador Cada computador possui um interprete de Java (adaptado ao seu tipo) que permite interpretar e executar o bytecode O conjunto de todos os intérpretes disponíveis é designado por Máquina Virtual Java (JVM Java Virtual Machine) Introdução aos Computadores e à ção (Noções Básicas) 23 Introdução aos Computadores e à ção (Noções Básicas) 24
Tradução do programa para 'linguagem máquina' Criação, Compilação e Execução de um em Java Usando um compilador e um interpretador via um código intermédio Editor Criar o Tradução compilador bytecode Interpretador Código em Java Compilador de Java (javac) Java bytecode Execução Interprete de Java bytecode (Java) interpretador Instruções em linguagem máquina Introdução aos Computadores e à ção (Noções Básicas) 25 Introdução aos Computadores e à ção (Noções Básicas) 26