51
Computação e Programação Acetatos: João Miguel da Costa Sousa Miguel Pedro Silva Instituto Superior Técnico, Dep. de Engenharia Mecânica - Secção Sistemas, Grupo de Controlo Automação e Robótica

Computação e ProgramaçãoP_C... · Tipos de dados e Objectos estruturados 8. Introdução ao Matlab: vantagens, desvantagens e ambiente 9. Estruturas básicas de Matlab. ... Redes

  • Upload
    vanngoc

  • View
    215

  • Download
    0

Embed Size (px)

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([email protected] ou [email protected])José Borges ([email protected])João Reis ([email protected])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

51João Sousa João Sousa –– Miguel Miguel Pedro SilvaPedro Silva ComputaComputaçção e Programaão e Programaçção 2007 / 2008ão 2007 / 2008

Codificação da informação num CD-ROM