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

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

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

Page 1: 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

Page 2: Introdução à Programação Aula 1 — Apresentação

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

Page 3: Introdução à Programação Aula 1 — Apresentação

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

Page 4: Introdução à Programação Aula 1 — Apresentação

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

Page 5: Introdução à Programação Aula 1 — Apresentação

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

Page 6: Introdução à Programação Aula 1 — Apresentação

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

Page 7: Introdução à Programação Aula 1 — Apresentação

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

Page 8: Introdução à Programação Aula 1 — Apresentação

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

Page 9: Introdução à Programação Aula 1 — Apresentação

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

Page 10: Introdução à Programação Aula 1 — Apresentação

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

Page 11: Introdução à Programação Aula 1 — Apresentação

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

Page 12: Introdução à Programação Aula 1 — Apresentação

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

Page 13: Introdução à Programação Aula 1 — Apresentação

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

Page 14: Introdução à Programação Aula 1 — Apresentação

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

Page 15: Introdução à Programação Aula 1 — Apresentação

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

Page 16: Introdução à Programação Aula 1 — Apresentação

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

Page 17: Introdução à Programação Aula 1 — Apresentação

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

Page 18: Introdução à Programação Aula 1 — Apresentação

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

Page 19: Introdução à Programação Aula 1 — Apresentação

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

Page 20: Introdução à Programação Aula 1 — Apresentação

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

Page 21: Introdução à Programação Aula 1 — Apresentação

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

Page 22: Introdução à Programação Aula 1 — Apresentação

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

Page 23: Introdução à Programação Aula 1 — Apresentação

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

Page 24: Introdução à Programação Aula 1 — Apresentação

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

Page 25: Introdução à Programação Aula 1 — Apresentação

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

Page 26: Introdução à Programação Aula 1 — Apresentação

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

Page 27: Introdução à Programação Aula 1 — Apresentação

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

Page 28: Introdução à Programação Aula 1 — Apresentação

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

Page 29: Introdução à Programação Aula 1 — Apresentação

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

Page 30: Introdução à Programação Aula 1 — Apresentação

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

Page 31: Introdução à Programação Aula 1 — Apresentação

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

Page 32: Introdução à Programação Aula 1 — Apresentação

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