Introdução à Programação Aula 1 — Apresentação

Post on 07-Jan-2017

222 views 0 download

Transcript of Introdução à Programação Aula 1 — Apresentação

Introdução à ProgramaçãoAula 1 — Apresentação

Pedro Vasconcelos

DCC/FCUP

2017

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 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 2017 2 / 32

Conteúdo e objetivos

Introdução ao uso de computadores com sistema operativoGNU/LinuxIntrodução à programação usando a linguagem PythonNo fim deste curso deverá ser capaz de:

1 simular a execução de programas simples passo-a-passo;2 aprendar algumas estruturas de dados e algoritmos fundamentais;3 codificar algoritmos simples em Python;4 decompor problemas em subrotinas e funções re-utilizáveis;5 testar e corrigir erros dos seus programas.

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 3 / 32

Funcionamento

Teóricas: exposição de conceitos2 × 1 h por semana

Teórico-práticas: exposição e resolução de exercícios1 h por semana (apenas para L:CE)

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 2017 4 / 32

Avaliação

Por exame final, parcialmente com avaliação contínua:1 Teste intermédio (16-20 outubro): 20% da classificaçao2 Exame final: 80% da classificaçao

Condições de frequência:1 Presença em 2/3 (dois terços) das aulas práticas2 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 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 Think Python. A. B. Downey.http://www.greenteapress.com/thinkpython/thinkpython.html

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 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 2017 7 / 32

Outros recursos

Página da UC com slides de aulas, folhas de exercícioshttp://www.dcc.fc.up.pt/~pbv/aulas/ipm

Submissão de exercícios para correção automáticahttps://ipminor.dcc.fc.up.pt/

Fórum web para discussão sobre aulas, folhas de exercícios esubmissõeshttps://piazza.com/fc.up.pt/fall2017/cc1015/home

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 8 / 32

Introdução aos computadores

Computadorum 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/segundoProcessa 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 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) Introdução à Programação Aula 1 — Apresentação 2017 10 / 32

Breve cronologia dos computadores (cont.)

1950s Primeiros computadores comerciais: UNIVAC I1960s “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 2017 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 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) Introdução à Programação Aula 1 — Apresentação 2017 13 / 32

Breve cronologia dos computadores (cont.)

1984–1986: Computadores pessoais com interfaces gráficas

Apple Macintosh Commodore Amiga Atari ST

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 14 / 32

Breve cronologia dos computadores (cont.)

1985–1990: “IBM PC clones” e a arquitetura “Wintel”

Windows 1.0 Windows 3.0 Windows 95

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 15 / 32

Breve cronologia dos computadores (cont.)

1991: World Wide Web

Primeiro servidor web (CERN) NCSA Mosaic 1.0 web browser

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 16 / 32

Breve cronologia dos computadores (cont.)

1991: GNU/Linux

Richard Stallman (fundador da Free Software Foundatione do projeto GNU)

Linus Torvalds (criador do kernel Linux)

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 17 / 32

Breve cronologia dos computadores (cont.)

2007–2008: Plataformas móveis

Apple iPhone Apple iPad Gloogle Android Nexus

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação 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) Introdução à Programação Aula 1 — Apresentação 2017 19 / 32

Níveis conceptuais de um computador (cont.)

Tendências:

hardware mais barato

software mais complexo e caroimportância do desenvolvimento de software:

utilização de linguagens de alto nívelre-utilização de componentes (bibliotecas)

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 20 / 32

Sistemas de operação

Conjunto de software de base para gerir recursos do computadorProporciona funcionalidades para as aplicações:

gestão de utilizadoresgestão de memóriagestão de ficheirosgestão de input/output (I/O): terminais, impressoras, interfacesgráficas, ligações de rede

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação 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áriostrabalhos (time-sharing)

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação 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) Introdução à Programação 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 tarefainterface textualmuitas vezes combinada comum interpretador de BASICespecífico para cada modelode computador

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 24 / 32

Cronologia do sistemas de operação (cont.)

Primeiras interfaces gráficas (1984–1990)

um utilizador, multi-tarefaaplicações associadas ajanelas independentesapresentação de programas eficheiros usando íconesseleção usando um “rato”específico para cada modelode computador

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 25 / 32

Cronologia do sistemas de operação (cont.)

Actualmente:

computadores pessoais com mais recursos do que os antigossuper-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 2017 26 / 32

O sistema UNIX

organizado num núcleo (kernel) e vários processosnú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: rootadministrador do sistemapode alterar configurações de sistemapode acrescentar/remover utilizadores

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 27 / 32

Organização de ficheiros

ficheiros: textos, imagens,programas. . .identificados por nomesestruturados em directórioshierárquicos, exemplo:/home/pbv/aulas/teorica-01.tex

permissões associadas a cadaficheiro: leitura, escrita, execução

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação 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âneoProcessos 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 2017 29 / 32

Interpretador de comandos UNIX

Shell: interface textual para executar comandos UNIXCada comando é (normalmente) um programa em /bin ou/usr/bin

Sintaxe típica: comando [opções] [argumentos . . . ]Cada comando é executado com um novo processoAssociado ao directório corrente (“working directory”)

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 30 / 32

Alguns comandos úteis

ls listar ficheiros no directório actualpwd imprime o directório actualcd mudar o directório actualmkdir criar um novo directoriormdir remover um directório (vazio)cp copiar ficheiromv mover/mudar nome de um ficheirorm remover um ficheiroless mostrar um ficheiro de texto página-a-páginaps listar processos (do utilizador ou do sistema)man mostrar manual de um comando

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação 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.pdfrelativo: ../docs/thinkCSpy.pdfrelativo à casa: ∼/docs/thinkCSpy.pdf

Pedro Vasconcelos (DCC/FCUP) Introdução à Programação Aula 1 — Apresentação 2017 32 / 32