Engenharia Informática
Computador como máquina programável
Conceitos de línguas naturais, linguagens de programação de baixo e de alto nível e linguagens máquina
Noções de algoritmo e de programa
2013/2014 2Fundamentos de Programação
 Máquina programável
genérica
 Constituído por
 Processador
 Memória rápida
▪ RAM (volátil)
▪ ROM (persistente)
 Memória lenta
▪ Disco rígido
2013/2014 Fundamentos de Programação 3
 Suporte físico ou hardware
 Suporte lógico ou software
2013/2014 Fundamentos de Programação 4
girtby.net/images/hardware.jpg
do filme Matrix, whatisthematrix.warnerbros.com
hardware + software
→ Execução de programas
 Limitações no hardware podem impor
limitações no software
 Estrutura exacta do hardware varia
 Mas arquitectura do hardware assemelha-se
2013/2014 Fundamentos de Programação 5
 Processador
 Unidade Central de Processamento (CPU)
 Executa instruções
 Memória
 Primária: ROM e, sobretudo, RAM
 Secundária: discos rígidos
 Amovível: CD-ROM, DVD, canetas USB, cartões, etc.
 Periféricos
 Comunicações com mundo exterior, armazenamento, etc.
2013/2014 Fundamentos de Programação 6
Central
Processing Unit
 Ficheiro ou arquivo
 Unidade de armazenamento de dados num
sistema de ficheiros
 Normalmente em hierarquia de pastas
 Com identificador único (caminho ou path)
2013/2014 Fundamentos de Programação 7
 Programa
 Instruções (contidas num ficheiro) numa dada
linguagem que resolvem um dado problema
 Sistema operativo
 Programa ou conjunto de programas que gerem o
hardware, executam outros programas, fornecem
uma interface de utilização, etc.
2013/2014 Fundamentos de Programação 8
2013/2014 Fundamentos de Programação 9
 Linguagens naturais
 Português
 Inglês
 …
 Linguagens artificiais
 Comunicação entre humanos
 Esperanto
 Interlingua
 …
 Linguagens de programação
2013/2014 Fundamentos de Programação 10
As nossas!
 Linguagens de programação
 De baixo nível
 Linguagem máquina
 Assembly
 De alto nível
 Snap!
 PHP
 C++
 Java
 …
2013/2014 Fundamentos de Programação 11
Comunicação com
computador.
Desadequadas
para humanos.
Adequadas a
humanos.
A nossa!
 Assemblies
 Linguagens muito básicas
 Usadas (quase) directamente pelos processadores
 Linguagens máquina
 Usadas directamente pelos processadores (reais ou virtuais)
 Por exemplo, o assembly
LOAD @R1, 0
JMP @R1
equivale, em linguagem máquina, a
010000100010011100100110001010001001001000110001010
2013/2014 Fundamentos de Programação 12
 Informação armazenada
 Sob a forma de bits
 Bits organizados em octetos ou bytes
 Instruções são também informação
 Instruções representadas por sequências de octetos
 Processador executa
 Instruções do seu próprio repertório
 Instruções de baixo nível
 Instruções de alto nível
 Próximas da forma humana de raciocinar
 Processador não as pode executar directamente
2013/2014 Fundamentos de Programação 13
 Sem ambiguidades e imprecisões de línguas naturais
 Menos penosas para humanos que as de baixo nível
 O Java
if (n == 1)
System.out.println(“n é igual a 1.");
pode traduzir-se para linguagem natural por
«Se a variável n contiver neste momento o valor 1,
escrever no monitor o texto “n é igual a 1.”.»
2013/2014 Fundamentos de Programação 14
 CPU não as entende
 Humanos preferem-nas
 Necessário traduzi-las para linguagem
máquina
 Tradução realizada por compiladores
2013/2014 Fundamentos de Programação 15
 Compreender bem problema e dados envolvidos
 Averiguar melhor forma de resolver problema e
representar os dados
 Determinar instruções duma linguagem de
programação que resolvem (de forma genérica)
esse problema
 Essas instruções formam um programa
2013/2014 Fundamentos de Programação 16
 Como uma receita, mas mais precisa:
Conjunto finito de regras, traduzíveis numa
sequência de operações/instruções, que
permitem resolver um determinado tipo de
problema.
Donald E. Knuth
2013/2014 Fundamentos de Programação 17
 Tipos de linguagens (das línguas naturais às
linguagens programação de alto nível)
 Algoritmo como método de resolver um dado
problema
 Programa enquanto algoritmo expresso
numa linguagem de programação
2013/2014 Fundamentos de Programação 18
 Computador como máquina programável
 Conceitos de
 línguas naturais
 linguagens de programação de baixo e de alto
nível
 linguagens máquina
 Noções de algoritmo e de programa
2013/2014 Fundamentos de Programação 19

1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e programa – Fundamentos de Programação

  • 1.
  • 2.
    Computador como máquinaprogramável Conceitos de línguas naturais, linguagens de programação de baixo e de alto nível e linguagens máquina Noções de algoritmo e de programa 2013/2014 2Fundamentos de Programação
  • 3.
     Máquina programável genérica Constituído por  Processador  Memória rápida ▪ RAM (volátil) ▪ ROM (persistente)  Memória lenta ▪ Disco rígido 2013/2014 Fundamentos de Programação 3
  • 4.
     Suporte físicoou hardware  Suporte lógico ou software 2013/2014 Fundamentos de Programação 4 girtby.net/images/hardware.jpg do filme Matrix, whatisthematrix.warnerbros.com
  • 5.
    hardware + software →Execução de programas  Limitações no hardware podem impor limitações no software  Estrutura exacta do hardware varia  Mas arquitectura do hardware assemelha-se 2013/2014 Fundamentos de Programação 5
  • 6.
     Processador  UnidadeCentral de Processamento (CPU)  Executa instruções  Memória  Primária: ROM e, sobretudo, RAM  Secundária: discos rígidos  Amovível: CD-ROM, DVD, canetas USB, cartões, etc.  Periféricos  Comunicações com mundo exterior, armazenamento, etc. 2013/2014 Fundamentos de Programação 6 Central Processing Unit
  • 7.
     Ficheiro ouarquivo  Unidade de armazenamento de dados num sistema de ficheiros  Normalmente em hierarquia de pastas  Com identificador único (caminho ou path) 2013/2014 Fundamentos de Programação 7
  • 8.
     Programa  Instruções(contidas num ficheiro) numa dada linguagem que resolvem um dado problema  Sistema operativo  Programa ou conjunto de programas que gerem o hardware, executam outros programas, fornecem uma interface de utilização, etc. 2013/2014 Fundamentos de Programação 8
  • 9.
    2013/2014 Fundamentos deProgramação 9
  • 10.
     Linguagens naturais Português  Inglês  …  Linguagens artificiais  Comunicação entre humanos  Esperanto  Interlingua  …  Linguagens de programação 2013/2014 Fundamentos de Programação 10 As nossas!
  • 11.
     Linguagens deprogramação  De baixo nível  Linguagem máquina  Assembly  De alto nível  Snap!  PHP  C++  Java  … 2013/2014 Fundamentos de Programação 11 Comunicação com computador. Desadequadas para humanos. Adequadas a humanos. A nossa!
  • 12.
     Assemblies  Linguagensmuito básicas  Usadas (quase) directamente pelos processadores  Linguagens máquina  Usadas directamente pelos processadores (reais ou virtuais)  Por exemplo, o assembly LOAD @R1, 0 JMP @R1 equivale, em linguagem máquina, a 010000100010011100100110001010001001001000110001010 2013/2014 Fundamentos de Programação 12
  • 13.
     Informação armazenada Sob a forma de bits  Bits organizados em octetos ou bytes  Instruções são também informação  Instruções representadas por sequências de octetos  Processador executa  Instruções do seu próprio repertório  Instruções de baixo nível  Instruções de alto nível  Próximas da forma humana de raciocinar  Processador não as pode executar directamente 2013/2014 Fundamentos de Programação 13
  • 14.
     Sem ambiguidadese imprecisões de línguas naturais  Menos penosas para humanos que as de baixo nível  O Java if (n == 1) System.out.println(“n é igual a 1."); pode traduzir-se para linguagem natural por «Se a variável n contiver neste momento o valor 1, escrever no monitor o texto “n é igual a 1.”.» 2013/2014 Fundamentos de Programação 14
  • 15.
     CPU nãoas entende  Humanos preferem-nas  Necessário traduzi-las para linguagem máquina  Tradução realizada por compiladores 2013/2014 Fundamentos de Programação 15
  • 16.
     Compreender bemproblema e dados envolvidos  Averiguar melhor forma de resolver problema e representar os dados  Determinar instruções duma linguagem de programação que resolvem (de forma genérica) esse problema  Essas instruções formam um programa 2013/2014 Fundamentos de Programação 16
  • 17.
     Como umareceita, mas mais precisa: Conjunto finito de regras, traduzíveis numa sequência de operações/instruções, que permitem resolver um determinado tipo de problema. Donald E. Knuth 2013/2014 Fundamentos de Programação 17
  • 18.
     Tipos delinguagens (das línguas naturais às linguagens programação de alto nível)  Algoritmo como método de resolver um dado problema  Programa enquanto algoritmo expresso numa linguagem de programação 2013/2014 Fundamentos de Programação 18
  • 19.
     Computador comomáquina programável  Conceitos de  línguas naturais  linguagens de programação de baixo e de alto nível  linguagens máquina  Noções de algoritmo e de programa 2013/2014 Fundamentos de Programação 19