Introdução à Programação Aula 1 — Apresentação Pedro Vasconcelos DCC/FCUP 2015 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 1 / 32 Nesta aula 1 Objetivos, funcionamento e avaliação 2 Introdução aos computadores Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 3 / 32 Funcionamento Teóricas: exposição de conceitos 2 × 1 h por semana Teórico-práticas: exposição e resolução de exercícios 1 h por semana Práticas: resolução individual de exercícios (nos laboratórios) 2 h por semana Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 4 / 32 Avaliação Por exame final, parcialmente com avaliação contínua. Condições de frequência: 1 2 Presença em 2/3 (dois terços) das aulas práticas Resolução de 1/2 (metade) dos exercícios das folhas práticas com correção automática Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 6 / 32 Bibliografia complementar Python: How to Program. H. M. Deitel, P. J. Deitel, J. P. Liperi, B. A. Wiedermann. (Apenas para quem quiser explorar tópicos mais avançados.) Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 7 / 32 Outros recursos Página web slides de aulas, folhas de exercícios http://www.dcc.fc.up.pt/~pbv/aulas/ipm 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, folhas de exercícios e submissões https: //piazza.com/fc.up.pt/fall2015/cc101/home Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 11 / 32 Breve cronologia dos computadores (cont.) 1970s Mini-computadores: DEC VAX, PDP-11, UNIX PDP-11, 1972 Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 13 / 32 Breve cronologia dos computadores (cont.) 1984–1986: Computadores pessoais com interfaces gráficas Apple Macintosh Pedro Vasconcelos (DCC/FCUP) Commodore Amiga Atari ST Introdução à Programação Aula 1 — Apresentação 2015 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 Windows 95 Introdução à Programação Aula 1 — Apresentação 2015 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 Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 17 / 32 Breve cronologia dos computadores (cont.) 2007–2008: Plataformas móveis Apple iPhone Pedro Vasconcelos (DCC/FCUP) Apple iPad Gloogle Android Nexus Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 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) Introdução à Programação Aula 1 — Apresentação 2015 32 / 32