Nesta aula. . .
Funcionamento da disciplina
Docente: Joo Pedro Pedroso http://www.dcc.fc.up.pt/~jpp Pgina da disciplina: http://www.dcc.fc.up.pt/~jpp/ip Bibliograa recomendada:
1
How to Think Like a Computer Scientist Learning with Python 3 (RLE), 3rd Edition (Using Python 3.x). Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers. Disponvel na Internet em: http://thinkcspy.appspot.com/ Learning with Python: Interactive Edition. Brad Miller and David Ranum. Based on [1]. Disponvel na Internet em: http://openbookproject.net/thinkcs/python/english3e Think Python. Allen B. Downey. Disponvel na Internet em: http: //www.greenteapress.com/thinkpython/thinkpython.html Python: How to Program. H. M. Deitel, P. J. Deitel, J. P. Liperi, B. A. Wiedermann; (Recomendado para estudo de tpicos mais avanados).
Objetivos
Programa
Breve introduo aos computadores. Variveis, expresses, instrues. Ferramentas essenciais; utilizao de bibliotecas. Mdulos e documentao. Funes. Condies, decises e seleo. Iterao. Sequncias de carateres (strings). Listas. Dicionrios. Recurso. Classes e objetos.
2 3 4 5 6 7 8 9 10 11 12
Se familiarize com a utilizao de computadores pessoais com sistema operativo da famlia GNU/Linux; Adquira competncia para codicar algoritmos elementares numa linguagem de programao; Adquira bons hbitos de programao e de estruturao dos programas; Apreenda algumas estruturas de dados e algoritmos fundamentais; Adquira competncias para testar e corrigir erros dos seus programas.
3 4 5
Funcionamento
Avaliao
Aulas tericas (apresentao de conceitos) Aulas teorico-prticas (anlise de programas, resoluo de exerccios) Aulas prticas (em laboratrio)
Presena nas aulas prticas (conforme o regulamento da Universidade do Porto). Resoluo correta de pelo menos metade dos exerccios prticos propostos
Computador: processador de informao (dados) segundo uma lista de instrues (programa) efectua operaes simples (aritmticas/lgicas) depressa: humano: aproximadamente 1 operao/segundo computador actual: >1 milho de operaes/segundo qualquer tipo de dados quanticveis (e.g. nmeros, textos, sons, imagens. . . ) universal: utilizvel para diversos ns com diferentes programas
1940s 1950s 1960s 1970s 1977 1981 1984 1986 1990 1991 1993 1995 2001 2007 2008
Colossus, Harvard Mk I, ENIAC 2a Guerra Mundial UNIVAC I computadores comerciais IBM System/360 PDP-11, DEC VAX, VMS, UNIX Apple II computadores pessoais IBM PC Apple Mac interfaces grcas Intel 386, Windows 1.0 Windows 3.0 WWW, GNU/Linux internet, open-source Intel Pentium Windows 95 Windows XP, MacOS X iOS (iPhone OS) Android
Sistemas de operao
Hardware: CPU, memria, unidades de disco, ecr, teclado, rato. . . Software: sistema operativo, aplicaes, jogos, cheiros de dados (imagens, msicas, lmes, folhas de clculo, bases de dados. . . ) Tendncias: hardware mais barato software mais complexo e caro importncia do desenvolvimento de software:
utilizao de linguagens de alto nvel re-utilizao de componentes (bibliotecas)
Conjunto de software de base para gerir recursos do computador Proporciona funcionalidades para as aplicaes:
gesto de utilizadores gesto de memria gesto de cheiros gesto de input/output (I/O): terminais, impressoras, interfaces grcas, ligaes de rede
Primeiros sistemas de operao (1950s): um trabalho de cada vez (batch) apenas supervisiona as transies entre trabalhos Mainframes (1960-1970s) caros: necessrio partilhar recursos multi-utilizador: vrios utilizadores em terminais multi-tarefa: diviso o tempo de processamento entre os vrios trabalhos (time-sharing)
Mini-computadores: sistema UNIX (1970s) multi-utilizador, multi-tarefa portvel para diferentes modelos de computadores cdigo-fonte em linguagem C distribudo com o sistema popular na comunidade acadmica (Universidade de Berkeley) variantes comerciais: Ultrix, System V, IRIX, Solaris
Primeira gerao de computadores pessoais (19701980) recursos escassos: um utilizador, uma tarefa interface textual (e.g. interpretador de comandos MS-DOS) combinado com uma linguagem de programao (BASIC) especcos de cada modelo de computador e.g. Apple II, IBM PC
Primeiras interfaces grcas (19841990) aplicaes associadas a janelas separadas apresentao de programas e cheiros usando cones seleco visual usando o rato facilita o acesso aos utilizadores um utilizador, multi-tarefa associadas a um modelo de hardware especco
O sistema UNIX
Actualmente: computadores pessoais com mais recursos do que os antigos mainframes ligados em redes locais e globais (internet) sistemas multi-utilizador, multi-tarefa maior independncia do hardware separao entre o ncleo e a interface grca UNIX em PCs: GNU/Linux, Free BSD, MacOS X
organizado num ncleo (kernel) e vrios processos ncleo: tem acesso directo ao hardware processos: pedem recursos ao ncleo (e.g. consultar cheiros) cada utilizador:
identicado por um login e.g. pbv autenticado por uma palavra-passe (secreta) rea pessoal para cheiros: home directory
Organizao de cheiros
Processos
cheiros: textos, imagens, programas. . . identicados por nomes estruturados em directrios hierrquicos e.g. /home/pbv/aulas/teorica-01.tex permisses associadas a cada cheiro: leitura, escrita, execuo
processo: execuo dum programa num determinado contexto (utilizador e dados) aparncia de vrios processos a correr em simultneo processos de utilizadores comuns: aplicaes, editores, compiladores, interpretadores, etc. processos de sistema: interface grca, servidores (WWW, email, ssh), etc. losoa UNIX: ncleo simples, tudo o resto so processos!
shell: interface textual para executar comandos UNIX cada comando (normalmente) um programa em /bin ou /usr/bin sintaxe tpica: comando [opes] [arg1 arg2 . . . ] cada comando executado com um novo processo associado ao directrio corrente (working directory)
listar cheiros no directrio actual imprime o directrio actual mudar o directrio actual criar um novo directorio remover um directrio (vazio) copiar cheiro mover/mudar nome de um cheiro remover um cheiro mostrar um cheiro de texto pgina-a-pgina listar processos (do utilizador ou do sistema) mostrar manual de um comando
Nesta aula. . .
. ..
Introduo aos computadores; Sistemas de operao; Organizao de cheiros; Terminal do UNIX (shell); alguns comandos teis.
Prxima aula