View
215
Download
0
Category
Preview:
Citation preview
Computação e Programação
Acetatos:João Miguel da Costa SousaMiguel Pedro Silva
Instituto Superior Técnico,Dep. de Engenharia Mecânica - Secção Sistemas,
Grupo de Controlo Automação e Robótica
2João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Informação geral
BibliografiaJ. Adams, L. Nyhoff, C++: An Introduction to Computing, 3/E, Prentice-Hall International, Inc. 2003.Stephen J. Chapman, Matlab Programming for Engineers, Thomson, 2005.João Sousa e Miguel Pedro Silva, Acetatos das aulas teóricas, 2007/08.
Avaliação de conhecimentosNF = 0,025 x 1ºTrabalho + 0,025 x 2º Trabalho + 0,10 x 3º Trabalho +
0,35 x Projecto + 0,50 x ExameNF – nota finalOnde: NF ≥ 9.5 valores, Exame ≥ 9.5 valores, Projecto ≥ 9.5 valores,(0,025x1ºTrab. + 0,025x2ºTrab. + 0,10x3ºTrab.) / 0.15 ≥ 9.5 valores.
Página Web: Página da disciplina no Fénix
3João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Informação geral
Corpo docenteMiguel Pedro Silva – Docente responsável(miguel.silva@dem.ist.utl.pt ou mps@ist.utl.pt)José Borges (jborges@ist.utl.pt)João Reis (reis@dem.ist.utl.pt)Datas de avaliação:Entrega de enunciados aos alunos / entrega dos trabalhos:
1º Trabalho C++: 15/Out. >> 29/Out.2º Trabalho C++: 5/Nov. >> 19/Nov.3º Trabalho Matlab: 26/Nov. >> 7/Jan.Projecto C++: 22/Out. >> 17/Dez.Exames: Entre 3/Jan. e 9 Fev.
4João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Informação geral
Software:
Microsoft Visual C++ 2005 Express Edition ( gratuito! )http://msdn2.microsoft.com/en-us/express/aa975050.aspx
Podem utilizar o Visual Studio 2005 e o Matlab do Lab. de LTI (Pav. Mec. II)
Também podem instalar o Microsoft Visual Studio 2005 original no vosso PC (falar no LTI)
5João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Programa
1. Introdução à Computação2. Resolução de problemas e Engenharia de Software3. Tipos de dados. Operações e expressões4. Funções. Utilização de Classes5. Selecção e repetição6. Operações de entrada/saída. Ficheiros7. Tipos de dados e Objectos estruturados8. Introdução ao Matlab: vantagens, desvantagens e ambiente9. Estruturas básicas de Matlab. Programação em Matlab10. Funções definidas pelo utilizador11. Instruções de entrada/saída. Tipos de dados estruturados
6João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Áreas de “Computer Science”
Computação Numérica e SimbólicaSistemas OperativosLinguagens de ProgramaçãoEngenharia e Metodologias de Software
Algoritmos e Estruturasde DadosArquitecturaInteligência Artificial e RobóticaBases de Dados e Sistemas de InformaçãoInterface Pessoa –Máquina
7João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Conceitos chave na História dos Computadores
Mecanização de cálculo aritmético (operações)
Armazenamento de programas
“Graphical User Interface”
Redes de computadores
8João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Introdução à Computação
Primeiros “computadores”Máquina Analítica, Charles Babbage, 1822Ada Augusta (primeira programadora), 1842Máq. de cartões perfurados, censo nos EUA, HermanHolleritm, fundador IBM, 1890
9João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computadores da 1ª Geração
Computadores de válvulas,1945-1956ENIAC, 1943-1946Conceito de “programade computador”, John Von Neumann, 1945Primeiro erro “bug” num computador, 1945
10João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computadores da 2ª Geração
Utilizam transistores 1956-1963
Linguagem FORTRAN 1957
Computador IBM 7090 1958Linguagem LISP
Linguagem COBOL 1960Linguagem ALGOL 60
11João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computadores da 3ª Geração
Circuitos integrados e “chips”, 1964-1971Computador IBM System/360, 1964Comptador PDP-8 (Digital), 1965Douglas Englebart desenvolve applicações “user-friendly”, 1968Linguagem Pascal, 1968Ken Thompson introduz UNIX, 1968ARPANET – Início da Internet, 1969
12João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computadores da 4ª Geração
Intel 4004 Chip (VLSI),1971Dennis Richie: C, Ethernet, 1973Altair, BASIC, Apple I, 1974Apple II, Cray 1, Apple, Microsoft, 1976IBM PC, 1981Bjarne Stroustrup: C++, ProtocoloTCP/IP, 1983Macintosh, 1984Windows, 1985Intel 386, 1986Linux, 1992
13João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computadores da 4ª Geração
Chips Pentium, MOSAIC, Apple Newton, 1993Netscape Navigator 1.0, Yahoo!, 1994James Gosling: JAVA, Windows 95, Internet Explorer, 1995Windows 98, IMAC (Apple)Windows 2000, 1 GHZ processors, 2000Windows XP, Mac OS X, 2001Windows Vista, 20075ª geração - Processamento paralelo
14João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Sistemas de Computação
Os computadors têm dois tipo de componentes:Hardware – componentes fisicos,tais como
CPUMemóriaDispositivos de armazenamento (discos, etc.)
Software – programas, tais comoSistema OperativoAplicaçõesUtilitários, jogos, etc.
15João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computador
ControlUnit
MainMemory
Arithmetic-Logic Unit
CPU = Central Processing UnitInput Devices
Output Devices
External Memory
16João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Computador
Composto por vários componentes com funções diferentes a trabalhar para um objectivo comum.Componentes principais
CPU – Central Processing Unit; contém Unidade de controlo e ALU (Arithmetic and Logic Unit)Memórias – registos, RAM, ROM, memória virtualMemória externa – discos rígidos, disquettesOutros periféricos – Input/Output: terminais, monitores, scanners, impressoras, rato, etc.
17João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Funcionamento do Hardware
cache CPU
Bus
Memóriaprincipal
Memóriasecundária
Armazenamento de programasEm memórias de longa duração (memória secundária).Copiado para a memória principal para correr.O CPU recebe o programa da memória principal e executaas suas instruções.
18João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Sistema Operativo
DiscoRAMCPUCache
Bus
OS
Sistema OperativoCarregado da memória secundária para a memória principal quando o computador é ligado.Mantém- se em memória até o computador ser desligado.
19João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Software: Sistema Operativo
O sistema operativo é o “gestor” do sistemaGarante que todos os dispositivos de hardware interagem de forma suave uns com os outros.
Fornece uma interfacePermite que o utilizador interactue com o computador, Espera por instruções quando nenhuma aplicação está a correr.
Exemplos: MacOS, WindowsXP, WindowsVista, UNIX, Linux, Solaris, ...
20João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Software: Aplicações
Applicações são todos os outros programasDesempenham alguma tarefa útilIncluem processadores de texto, folhas de cálculo, bases de dados, web browsers, compiladores de C++
Exemplos de ambientes/compiladores de C++ : Visual C++ (WindowsXP)CodeWarrior (MacOS, WindowsXP, Solaris) GNU C++ (UNIX, Linux)Turbo/Borland C++ (WindowsXP)
21João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
O que é a Programação?
Programa de computadorSequência de instruções que indicam ao computador comoresolver um dado problema.
ProgramaçãoO acto de projectar, escrever e manter um programa (involve arte e engenho).
ProgramadoresPessoas que escrevem programas (engenheiros ou artistas?)
22João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Linguagem de programação
Que tipo de instruções é que o computador percebe?O computador só percebe instruções emlinguagem máquina.Características da linguagem máquina
Uma sequência de uns e zeros. Faz com que o computador execute uma dada acção, tal como adicionar, subtrair ou multiplicar.
23João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Linguagem máquina
Instruções em linguagem máquinaGuardadas na memória do computador
Memória do computador é uma sequência de “interruptores”.
se está ligado (“on”) é representado por 1, se está desligado (“off”) é representado por 0.
Linguagem máquina é binária (base 2):0010111010110101
24João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Organização da memória
Sistema binário - 0,1 bits (binary digits)
byte - conjunto de 8 bits. Medida da memória em bytes. 1K = 210=1024 bytes. 1 megabyte = 1024 K = 1048576 bytes.
word - conjunto de bytes igual ao usado nos registos do CPU. 16, 32, 64 bits
address - endereço associado a cada word.
Memória guarda instruções dos programas a serem executadas
25João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Primeiros computadores
... requeriam que um programador escrevesse emlinguagem máquina...Problema
Muito fácil de fazer erros!Esses erros eram difíceis de encontrar!Não portáveis – só corriam numa dada máquina!
Programação era muito difícil!
26João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Linguagem assembly
Conjunto de abreviaturas (mnemónicas) correspondentes às instruções em linguagem máquinaO “assembler” (um programa) traduz para linguagemmáquina.
ADD 34, R1MOVE R1,1200CMPR R1, R2
100111001110010110100110110111
Assembler
Instruções em linguagemAssembly (mnemónicas)
Instruções emlinguagem máquina
27João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Linguagens de alto nível
Nas linguagens de alto nível:As instruções estão muito perto da linguagem natural (if, while, do, ...)O ambiente de programação permite traduzir o programa emlinguagem máquina.
O conjunto de instruções é chamada uma linguagem de alto nível.O programa de tradução para linguagem máquina échamado um compilador.
28João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Vantagens de linguagens de alto nível
Programas são fáceis de lerErros são fáceis de encontrarProgramas são portáveis entre computadores
Assumem que a linguagem é standardOs compiladores traduzem na linguagem máquinacorrecta
29João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Objectivos da Programação
Um programa deve resolver um problema:
Resolve de facto o problema
Sem desperdiçar tempo ouespaçoPerceptível por outra pessoa
De forma a ser fácil de ser utilizado
Correctamente
Eficientemente
De forma legível
De maneira user-friendly
30João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Correr um programa
Programas e aplicações que não estão a correr estãoarmazenados (gravados) no disco.
Apl.
DiscoRAMCPUCache
Bus
SO
31João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Correr um programa
Quando se corre um programaSistema Operativo controla o CPU Carrega o programa do disco para a RAM.
Apl.
DiscoRAMCPUCache
Bus
SO
Apl.
32João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Correr um programa
Sistema Operativo carrega o programa para o CPU Aplicação começa a correr.
Apl.
DiscoRAMCPUCache
Bus
SOApl.Apl.
33João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Ciclo de execução
Sistema Operativo vai repetidamente buscar a próximainstrução (à memória ou à cache), Executa-aGrava os resultados em memória.
Apl.
DiscoRAMCPUCache
Bus
SOApl.Apl.
O computador só faz isto: recebe-executa-grava, milhões de vezes por segundo!
34João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
De um código em liguagem de alto nível a um programa executável
Source Code
Preprocessor
ModifiedSource Code
Compiler
Object Code
Linker
Executable Code
35João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Nota importante: os slides seguintes são apenas informativos e não são considerados matéria de avaliação
36João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
A arquitectura de uma máquina de von Neumann
37João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Arquitecture de PC simples
38João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Os vários buses num PC “típico”
39João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
A execução na ALU numa máquina de vonNeumann
40João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
A troca de informação entre o CPU e a memória (e entre esta e os outros dispositivos)
41João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Um processador com um pipeline de 5 estágios
42João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Um processador com dois pipelines de 5 estágios
43João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Um processor superescalar c/ 5 unidades funcionais
44João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Arquitecturas multiprocessador
45João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Três formas de organizar uma memória de 96 bits
46João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
As caches internas (L1) e externas (L2)
47João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Comparação em termos de armazenamento dasvárias memórias
48João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Uma porção da pista de um disco rígido (2 sectores)
49João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
Um disco rígido
50João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008
O armazenamento de dados num CD-ROM
Recommended