Programação I Aula 1 — Apresentação Pedro Vasconcelos DCC/FCUP 2017 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 1 / 32 Nesta aula 1 Objetivos, funcionamento e avaliação 2 Introdução aos computadores Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 2 / 32 Conteúdo e objetivos Introdução ao uso de computadores com sistema operativo GNU/Linux Introdução à programação usando a linguagem Python No fim deste curso deverá ser capaz de: 1 2 3 4 5 simular a execução de programas simples passo-a-passo; aprendar algumas estruturas de dados e algoritmos fundamentais; codificar algoritmos simples em Python; decompor problemas em subrotinas e funções re-utilizáveis; testar e corrigir erros dos seus programas. Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 3 / 32 Funcionamento Teóricas exposição de conceitos; resolução e discussão de exercícios 2 × 1 h por semana Práticas (em laboratório) consolidação de conhecimentos; resolução individual de exercícios 2 h por semana Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 4 / 32 Avaliação Teste intermédio (20%) Exame final (80%) Condições para obtenção de frequência: 1 Presença em 2/3 (dois terços) das aulas práticas 2 Resolução de 1/2 (metade) dos exercícios de aulas práticas com correção automática Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 5 / 32 Bibiografia recomendada 1 How to Think Like a Computer Scientist – Learning with Python 3 (RLE), 3rd Edition (Using Python 3.x). P. Wentworth, J. Elkner, A. B. Downey, and C. Meyers. http://thinkcspy.appspot.com/ 2 Learning with Python: Interactive Edition. B. Miller and D. Ranum. http: //openbookproject.net/thinkcs/python/english3e 3 Think Python. A. B. Downey. http://www.greenteapress.com/thinkpython/ thinkpython.html Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 6 / 32 Bibliografia complementar Para quem quiser explorar tópicos mais avançados: Python: How to Program. H. M. Deitel, P. J. Deitel, J. P. Liperi, B. A. Wiedermann. Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 7 / 32 Outros recursos Página web slides de aulas, folhas de exercícios http: //www.dcc.fc.up.pt/~pbv/aulas/programacaoI Página de submissão de exercícios para avaliação automática https://ipminor.dcc.fc.up.pt/ Fórum de discussão perguntas sobre aulas, exercícios e submissões https://piazza.com/fc.up.pt/spring2017/ cc1015/home Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 8 / 32 Introdução aos computadores Computador um processador de informação (dados); segundo um programa (lista de instruções). Efectua rapidamente muitas operações aritméticas: humano: aproximadamente 1 operação/segundo computador actual: >1 milhão de operações/segundo Processa informação matematizável (ex: números, textos, sons, imagens. . . ) Utilizável para diversos fins com diferentes programas Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 9 / 32 Breve cronologia dos computadores 1940s Computadores eletro-mecânicos e a válvulas: Colossus, Harvard Mk I, ENIAC ENIAC, U.S. Army photo Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 10 / 32 Breve cronologia dos computadores (cont.) 1950s Primeiros computadores comerciais: UNIVAC I 1960s “Mainframes”: IBM System/360 IBM System/360 exposto no Deutsches Museum in Munich Germany Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 11 / 32 Breve cronologia dos computadores (cont.) 1970s Mini-computadores: DEC VAX, PDP-11, UNIX PDP-11, 1972 Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 12 / 32 Breve cronologia dos computadores (cont.) 1977–1982: Primeiros computadores pessoais Apple II IBM PC Sinclair ZX Spectrum Acorn BBC Micro Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 13 / 32 Breve cronologia dos computadores (cont.) 1984–1986: Computadores pessoais com interfaces gráficas Apple Macintosh Pedro Vasconcelos (DCC/FCUP) Commodore Amiga Programação I Aula 1 — Apresentação Atari ST 2017 14 / 32 Breve cronologia dos computadores (cont.) 1985–1990: “IBM PC clones” e a arquitetura “Wintel” Windows 1.0 Pedro Vasconcelos (DCC/FCUP) Windows 3.0 Programação I Aula 1 — Apresentação Windows 95 2017 15 / 32 Breve cronologia dos computadores (cont.) 1991: World Wide Web Primeiro servidor web (CERN) Pedro Vasconcelos (DCC/FCUP) NCSA Mosaic 1.0 web browser Programação I Aula 1 — Apresentação 2017 16 / 32 Breve cronologia dos computadores (cont.) 1991: GNU/Linux Richard Stallman (fundador da Free Software Foundation e do projeto GNU) Pedro Vasconcelos (DCC/FCUP) Linus Torvalds (criador do kernel Linux) Programação I Aula 1 — Apresentação 2017 17 / 32 Breve cronologia dos computadores (cont.) 2007–2008: Plataformas móveis Apple iPhone Pedro Vasconcelos (DCC/FCUP) Apple iPad Google Android Nexus Programação I Aula 1 — Apresentação 2017 18 / 32 Níveis conceptuais de um computador Hardware: CPU, memória, unidades de disco, ecrã, teclado, rato. . . Software: sistema operativo, aplicações, jogos, ficheiros (imagens, músicas, filmes, folhas de cálculo, bases de dados. . . ) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 19 / 32 Níveis conceptuais de um computador (cont.) Tendências: hardware mais barato software mais complexo e caro importância do desenvolvimento de software: utilização de linguagens de alto nível re-utilização de componentes (bibliotecas) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 20 / 32 Sistemas de operação Conjunto de software de base para gerir recursos do computador Proporciona funcionalidades para as aplicações: gestão de utilizadores gestão de memória gestão de ficheiros gestão de input/output (I/O): terminais, impressoras, interfaces gráficas, ligações de rede Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 21 / 32 Cronologia do sistemas de operação Primeiros sistemas de operação (1950s): um trabalho de cada vez (batch) apenas supervisiona as transições entre trabalhos Mainframes (1960-1970s) caros: necessário partilhar recursos multi-utilizador: vários utilizadores em terminais multi-tarefa: divisão o tempo de processamento entre os vários trabalhos (time-sharing) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 22 / 32 Cronologia do sistemas de operação (cont.) Mini-computadores: sistema UNIX (1970s) multi-utilizador, multi-tarefa portável para diferentes modelos de computadores código-fonte em linguagem C distribuído com o sistema popular na comunidade académica (Universidade de Berkeley) variantes comerciais: Ultrix, System V, IRIX, Solaris Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 23 / 32 Cronologia do sistemas de operação (cont.) Primeira geração de computadores pessoais (1970–1982) um utilizador, uma tarefa interface textual muitas vezes combinada com um interpretador de BASIC específico para cada modelo de computador Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 24 / 32 Cronologia do sistemas de operação (cont.) Primeiras interfaces gráficas (1984–1990) um utilizador, multi-tarefa aplicações associadas a janelas independentes apresentação de programas e ficheiros usando ícones seleção usando um “rato” específico para cada modelo de computador Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 25 / 32 Cronologia do sistemas de operação (cont.) Actualmente: computadores pessoais com mais recursos do que os antigos super-computadores ligados em redes locais e globais (internet) sistemas multi-utilizador, multi-tarefa maior independência do hardware separação entre o núcleo e a interface gráfica UNIX em PCs: GNU/Linux, MacOS X Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 26 / 32 O sistema UNIX organizado num núcleo (kernel) e vários processos núcleo: tem acesso directo ao hardware processos: pedem recursos ao núcleo (exemplo: acesso a ficheiros em disco) cada utilizador: identificado por um utilizador (exemplo: pbv) autenticado por uma palavra-passe (secreta) área pessoal para ficheiros: “home directory” super-utilizador: root administrador do sistema pode alterar configurações de sistema pode acrescentar/remover utilizadores Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 27 / 32 Organização de ficheiros ficheiros: textos, imagens, programas. . . identificados por nomes estruturados em directórios hierárquicos, exemplo: /home/pbv/aulas/teorica-01.tex permissões associadas a cada ficheiro: leitura, escrita, execução Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 28 / 32 Processos Processo: execução dum programa num determinado contexto (utilizador e dados) Aparência de vários processos a “correr” em simultâneo Processos de utilizadores comuns: aplicações, editores, compiladores, interpretadores, etc. Processos de sistema: interface gráfica, servidores (WWW, email, ssh), etc. Filosofia do UNIX: núcleo simples, tudo o resto são processos Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 29 / 32 Interpretador de comandos UNIX Shell: interface textual para executar comandos UNIX Cada comando é (normalmente) um programa em /bin ou /usr/bin Sintaxe típica: comando [opções] [argumentos . . . ] Cada comando é executado com um novo processo Associado ao directório corrente (“working directory”) Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 30 / 32 Alguns comandos úteis ls pwd cd mkdir rmdir cp mv rm less ps man listar ficheiros no directório actual imprime o directório actual mudar o directório actual criar um novo directorio remover um directório (vazio) copiar ficheiro mover/mudar nome de um ficheiro remover um ficheiro mostrar um ficheiro de texto página-a-página listar processos (do utilizador ou do sistema) mostrar manual de um comando Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 31 / 32 Caminhos absolutos e relativos . .. ∼ directório actual directório pai directório casa absoluto: /home/pbv/docs/thinkCSpy.pdf relativo: ../docs/thinkCSpy.pdf relativo à casa: ∼/docs/thinkCSpy.pdf Pedro Vasconcelos (DCC/FCUP) Programação I Aula 1 — Apresentação 2017 32 / 32