Computação e Programação MEMec - LEAN 2009-2010 Docentes: Miguel Pedro Silva - Responsável José Borges João Reis Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII
Programa 1. Introdução à Computação; 2. Introdução ao ambiente MATLAB; 3. Introdução ao MATLAB: tipos de dados, operações e expressões; 4. Etapas básicas do desenvolvimento de programas. Algoritmos; 5. Instruções de entrada/saída para o monitor; 6. Instruções de selecção; Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 2
Programa 7. Instruções de repetição; 8. Desenvolvimento de funções. Tópicos avançados sobre funções; 9. Interface gráficas para utilizadores (GUIs); 10. Cadeias de caracteres (strings) e conversão entre tipo de dados; 11. Tipos de dados estruturados: células e estruturas; 12. Leitura e escrita de ficheiros; 13. Algoritmos de procura e ordenação; Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 3
Bibliografia Bibliografia Principal: Stormy Attaway, MATLAB: A Practical Introduction to Programming and Problem Solving, Elsevier, 2009. Miguel Pedro Silva e José Borges, Acetatos das aulas teóricas, 2009/10. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 4
Bibliografia Bibliografia Secundária: Brian Hahn, Dan Valentine, Essential MATLAB for Engineers and Scientists, Elsevier, 2007. Stephen J. Chapman, MATLAB Programming for Engineers, Thomson, 2005. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 5
Avaliação Avaliação de conhecimentos NOTA FINAL = ARREDONDAMENTO( 0.15x[1ºTrabalho] + 0.35x[2ºTrabalho] + 0.5x[MÁXIMO( ([0.5x[1ºTeste] + 0.5x[2ºTeste]] OU [1ºExame] ), [2ºExame] )]) NOTA IMPORTANTE: Trabalhos realizados em anos anteriores não serão considerados. Logo, todos os alunos inscritos terão de os realizar neste ano lectivo. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 6
Avaliação Requisitos da Avaliação: A data do 2º Teste coincide com a do 1º Exame, logo o aluno terá que optar por uma das provas. [2ºTrabalho] >= 9,5 ( 0,15 * [1ºTrabalho] + 0,35 * [2ºTrabalho] ) / 0,5 >= 9,5 [1ºTeste] >= 7,5 ; [2ºTeste] >= 7,5 ( [1ºTeste] + [2ºTeste] ) / 2 >= 9,5 [1ºExame] >= 9,5 ; [2ºExame] >= 9,5 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 7
Informação geral Corpo docente Miguel Pedro Silva Docente responsável (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: 19/Out. >> 6/Nov. 2º Trabalho: 30/Nov. >> 6/Jan. 1º Teste: 11/Nov. 2º Teste: coincide com o 1º exame Exames: Entre 7/Jan. e 13/Fev. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 8
Informação geral Software: MATLAB student edition Podem utilizar o Matlab do Lab. de LEMAC/LTI (Pav. Mec. II) (Devem fazer inscrição na secretaria do LEMAC/LTI) Também podem instalar o MATLAB no vosso PC (ver página do CIIST) Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 9
Informação geral Página Web: Página da disciplina no Fénix https://fenix.ist.utl.pt/disciplinas/cp2/2009-2010/1-semestre/pagina-inicial Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 10
Introdução à Computação Primeiros computadores Máquina Analítica, Charles Babbage, 1822 Ada Augusta (primeira programadora), 1842 Máq. de cartões perfurados, censo nos EUA, Herman Holleritm, fundador IBM, 1890 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 11
Computadores da 1ª Geração Computadores de válvulas,1945-1956 ENIAC, 1943-1946 Conceito de programa de computador, John Von Neumann, 1945 Primeiro erro bug num computador, 1945 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 12
Computadores da 2ª Geração Utilizam transistores 1956-1963 Linguagem FORTRAN 1957 Computador IBM 7090 1958 Linguagem LISP Linguagem COBOL 1960 Linguagem ALGOL 60 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 13
Computadores da 3ª Geração Circuitos integrados e chips, 1964-1971 Computador IBM System/360, 1964 Comptador PDP-8 (Digital), 1965 Douglas Englebart desenvolve applicações userfriendly, 1968 Linguagem Pascal, 1968 Ken Thompson introduz UNIX, 1968 ARPANET Início da Internet, 1969 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 14
Computadores da 4ª Geração Intel 4004 Chip (VLSI),1971 Dennis Richie: C, Ethernet, 1973 Altair, BASIC, Apple I, 1974 Apple II, Cray 1, Apple, Microsoft, 1976 IBM PC, 1981 Bjarne Stroustrup: C++, TCP/IP, 1983 Macintosh, 1984 Windows, 1985 Intel 386, 1986 Linux, 1992 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 15
Computadores da 4ª Geração Chips Pentium, MOSAIC, Apple Newton, 1993 Netscape Navigator 1.0, Yahoo!, 1994 James Gosling: JAVA, Windows 95, Internet Explorer, 1995 Windows 98, IMAC (Apple) Windows 2000, 1 GHZ processors, 2000 Windows XP, Mac OS X, 2001 Windows Vista, 2007 5ª geração - Processamento paralelo Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 16
Sistemas de Computação Os computadors têm dois tipo de componentes: Hardware componentes fisicos,tais como CPU Memória Dispositivos de armazenamento (discos, etc.) Software programas, tais como Sistema Operativo Aplicações Utilitários, jogos, etc. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 17
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 virtual Memória externa discos rígidos, disquettes Outros periféricos Input/Output: terminais, monitores, scanners, impressoras, rato, etc. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 18
Computador Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 19
A arquitectura de uma máquina de von Neumann Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 20
Arquitectura de PC simples Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 21
Os vários buses num PC típico Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 22
Funcionamento do Hardware cache CPU Memória principal Memória secundária Bus Armazenamento de programas Em 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 executa as suas instruções. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 23
A troca de informação entre o CPU e a memória (e entre esta e os outros dispositivos) Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 24
A execução na ALU numa máquina de von Neumann Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 25
Comparação em termos de armazenamento das várias memórias Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 26
Uma porção da pista de um disco rígido (2 sectores) Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 27
Um disco rígido Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 28
O armazenamento de dados num CD-ROM Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 29
Sistema Operativo Cache CPU OS RAM Disco Bus Sistema Operativo Carregado 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. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 30
Software: Sistema Operativo O sistema operativo é o gestor do sistema Garante que todos os dispositivos de hardware interagem de forma correcta uns com os outros. Fornece uma interface Permite 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,... Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 31
Software: Aplicações Applicações são todos os outros programas Desempenham alguma tarefa útil Incluem 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) Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 32
O que é a Programação? Programa de computador Sequência de instruções que indicam ao computador como resolver um dado problema. Programação O acto de projectar, escrever e manter um programa. Programadores Pessoas que escrevem programas. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 33
Linguagem de programação Que tipo de instruções é que o computador percebe? O computador só percebe instruções em linguagem 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. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 34
Linguagem máquina Instruções em linguagem máquina Guardadas 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 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 35
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 = 2 10 =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 Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 36
Três formas de organizar uma memória de 96 bits Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 37
Primeiros computadores... requeriam que um programador escrevesse em linguagem 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! Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 38
Linguagem assembly Conjunto de abreviaturas (mnemónicas) correspondentes às instruções em linguagem máquina O assembler (um programa) traduz para linguagem máquina. ADD 34, R1 MOVE R1,1200 CMPR R1, R2 Assembler 1001110011 1001011010 0110110111 Instruções em linguagem Assembly (mnemónicas) Instruções em linguagem máquina Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 39
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 em linguagem 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. Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 40
Vantagens de linguagens de alto nível Programas são fáceis de ler Erros são fáceis de encontrar Programas são portáveis entre computadores Assumem que a linguagem é standard Os compiladores traduzem na linguagem máquina correcta Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 41
Objectivos da Programação Um programa deve resolver um problema: Correctamente Resolve de facto o problema Eficientemente De forma legível Sem desperdiçar tempo ou espaço Perceptível por outra pessoa De maneira user-friendly De forma a ser fácil de ser utilizado Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 42
Correr um programa Programas e aplicações que não estão a correr estão armazenados (gravados) no disco. Cache CPU SO RAM Disco Apl. Bus Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 43
Correr um programa Quando se corre um programa Sistema Operativo controla o CPU Carrega o programa do disco para a RAM. Cache CPU SO RAM Apl. Disco Apl. Bus Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 44
Correr um programa Sistema Operativo carrega o programa para o CPU Aplicação começa a correr. Cache CPU Apl. SO RAM Apl. Disco Apl. Bus Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 45
Ciclo de execução Sistema Operativo vai repetidamente buscar a próxima instrução (à memória ou à cache), Executa-a Grava os resultados em memória. Cache CPU Apl. SO RAM Apl. Disco Apl. Bus O computador só faz isto: recebe-executa-grava, milhões de vezes por segundo! Miguel Pedro Silva José Borges Computação e Programação 2009 / 2010 46