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

Propaganda
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
Download