1 - introduçãoiceb.ssdi.di.fct.unl.pt/1718/files/ice-b-01.pdf · 1 introdução resumo...
TRANSCRIPT
ICE-B
1 - Introdução
Ludwig Krippahl
1
Introdução
Resumo■ Informações sobre o funcionamento de ICE-B■ Objectivos de ICE-B■ Informática e sistemas computacionais■ Porquê aprender a programar?■ Sistemas computacionais• Hardware, Sofware (sistema operativo e aplicações)
2
Introdução
Informações
3
Informações
Docentes:■ Regência, teóricas e "teórico-práticas":• Ludwig Krippahl ([email protected])
■ Práticas:• Nuno Marques, David Carmo, Sérgio Casca
■ Página de ICE-B: iceb.ssdi.di.fct.unl.pt/1718• Aulas, slides, apontamentos e gravaçoes• Planeamento• Nota: esta é a primeira edição em Python, e só ICE-B
4
Informações
Livro aconselhado:■ Lutz, M.
"Learning python" (5ª ed.) O'Reilly Media, 2013
5
Informações
Trabalho do aluno■ Presencial, 5h por semana:• Aulas teóricas, 2h por semana• Aulas teórico-práticas, 1h por semana• Aulas práticas, 2h por semana (começam dia 12 de Março)
■ Autónomo, ~6h por semana:• 55h de estudo• 35h de trabalhos
6
Informações
Trabalho do aluno■ Aulas teóricas, 2h por semana• Para perceber e esclarecer dúvidas.• ~70% exposição, ~30% discussão• Não há nada para decorar (exposição disponível em vídeo)
■ Aulas "teórico-práticas", 1h por semana• Começam dia 12 de Março• Apresentação dos exercícios e preparação para as práticas• (Servem como primeira parte da aula prática)• MIEQB: 11:00; LBCM: 12:00
7
Informações
Trabalho do aluno■ Aulas práticas, 2h por semana• (começam dia 12 de Março)• Login nos PC do laboratório: credenciais do CLIP• Usem a vossa pasta em C:/users para trabalhar
• No final copiem para drive Z: ou enviem por email• (podem usar pendisk mas não aconselho)• Devem ir preparados para praticar• Sem perceber a teórica é mais difícil
■ Mudar de turno: entre vocês, pelo CLIP
8
Informações
Avaliação■ Teórico-prática (testes ou exame)• Testes: 28 de Abril e 6 de Junho
■ Componente laboratorial (trabalhos práticos)• Dois trabalhos em grupos de 2 alunos (25 Abril, 18 Maio)• Formar grupos até 6 de abril
■ Defesa de nota• No final de cada teste perguntas específicas acerca de cada trabalho
• Limitam a nota que poderão obter no trabalho
Fraude: reprovação imediata■ Qualquer acto que vicie o processo de avaliação• Copiar, ceder trabalho para cópia, assinar trabalhos que não se fez, etc...
9
Informações
Trabalhos práticos■ Entregas e formação de grupos• Endereço: [email protected]• Enviar sempre do vosso endereço oficial na FCT• Este endereço não é para dúvidas; o processamento é automático
■ Para formar grupos• Máximo 2 alunos.
• Cada aluno tem de enviar um email para [email protected], do seuendereço oficial, indicando o número de aluno do outro membro do grupo
• Cada grupo é formado apenas se ambos enviarem o email indicando o número doparceiro
10
Informações
Trabalhos práticos■ Entregas e formação de grupos• Endereço: [email protected]• Enviar sempre do vosso endereço oficial na FCT• Este endereço não é para dúvidas; o processamento é automático
■ Para entregar Trabalhos• Têm de enviar o mesmo ficheiro .zip para [email protected]
• O trabalho será considerado entregue se o ficheiro estiver de acordo com asespecificações e for igual para ambos os membros do grupo
• O conteúdo do ficheiro .zip será indicado para cada trabalho
11
Informações
Avaliação, notas■ Condições necessárias• Frequência: TP1 ≥ 9.5 ou TP2 ≥ 9.5• Aprovação: Frequência e CompTP ≥ 8.5
■ Notas:• CompL = (TP1+TP2) / 2• CompTP = 0.4 * T1 + 0.6 * T2 (ou exame)
■ Nota final (só com frequência)• Se CompTP<8.5, Nota final = CompTP• Caso contrário, Nota Final = 0.4 * CompL + 0.6* CompTP
■ Frequência de 2 anos anteriores• (Mas notem que a linguagem é diferente)
12
Introdução
Objectivos
13
Objectivos
Objectivos de ICE-B■ Visão abrangente da informática, com ênfase na programação• Metodologias e ferramentas da Informática para a resolução de problemas em
Ciência e nas Engenharias.
• Fundamentos de programação;
• (Breve) introdução a bases de dados;
• Noções de redes e protocolos de comunicação;
• Aplicações: simulação, análise de dados, ...
■ Plano resumido• Introdução à programação imperativa (Python)• Gráficos, ficheiros e uso de recursos remotos (Internet)• Introdução às bases de dados e SQL
14
Introdução
Informática e Computadores
15
Informática e Computadores
Informática: Processamento de informação■ Sistemas computacionais■ Ambientes de programação■ Concepção e implementação de programas■ Bases de dados■ IA, Aprendizagem automática,■ ...Contribui para a resolução de problemas em todas asáreas de ciência e tecnologias.
16
Informática e Computadores
Componentes de um sistema computacional■ Hardware• Dispositivos electrónicos que compõem o computador
■ Software: programas executados pelo hardware• Sistema Operativo: controla a execução de aplicações• Aplicações: executam várias funções
■ Dados• Informação lida ou escrita pelo software
17
Informática e Computadores
Hardware■ O hardware opera sobre sequências de elementos em dois estados• zero e um, desligado e ligado, bit (binary digit)
■ Um conjunto de 8 bits é um byte■ Tudo é codificado em sequências de bytes:• Programas, dados (texto, imagens, músicas, vídeos).• Efeito depende de como a informação é interpretada.
18
Informática e Computadores
Hardware■ Unidade Central de Processamento (CPU)
■ Microprocessador:• Circuito integrado que opera,
sequencialmente, em valoresbinários (voltagem, 0 e 1).
■ Pentium pro, 1995• 5.5 milhões de transistores (Core)
19
Informática e Computadores
Hardware■ Unidade Central de Processamento (CPU)
20
Informática e Computadores
Hardware■ Motherboard: circuitos para comunicação e controlo
21
Informática e Computadores
Hardware■ Random Access Memory (RAM): memória volátil rápida
22
Informática e Computadores
Hardware■ Disco: memória não volátil, mais capacidade mas mais lenta
23
Informática e Computadores
Hardware■ Disco: Periféricos (input, output, rede, ...)
24
Informática e Computadores
Hardware■ Valores binários, materializados de formas diferentes
0101001010101010101001011011001001011011010100110101010100101010010101101010010101010010101010010010101010101010010101001001110100010101010101010100010101001001010010101010101010010110110110110101011010010101010101001010100101011010100101010100101010100100101010101010100101010101000101001101010101010101000101010010010100101010101010100101101101101101010011010101010010100110101001010110101001010101001010101001001010101010101001010101010001010101010101001001010001010100100100100101001010101010101001011011011011010100110101010100101010010101101010010101010010001010101010010010101010101010010101010100010101010101010100010101001001010010101010101001101010010110110110110101001101010101001010100101011010100101010100101010100100100100101010101010100101010101000101010101010101000101010010101010010101010010010101011001010101010010101010100010101010101010100010101001001010010101010101010010110110110001010110101001101010101001010100101011010100101010100101010100100101010101010100101000101010101000101010101010101000101010010010100101010101010100101101101101101010011010101001101010010101001010110101001010101001010101001001010101010101001010101010001010100100101010101010001010100100101001010101010100110101001011011011011010100110101010100101010010101101010010101010010101010010010010010101010101010010101010100010101010101010100010101001010101001010101001001010101100101010101001010101010001010101010101010001010100100101001010101010101001011011011000101011010100110101010100101010010101101010010
25
Informática e Computadores
Hardware■ Em memória, organizados em palavras• 8, 16, 32 ou 64 bits, por exemplo (1 byte = 8 bits)• Endereço fixo, conteúdo variável
Endereço Valor
201 01010110001101011101111101101010
202 01110000000110100100110010010111
203 10000010111010010100001000110000
204 01100100011010000111001000000101
205 11110001100000010110000110111001
206 11110001011111110100001111000110
... ...
26
Informática e Computadores
Hardware■ Leitura da memória RAM:• CPU apresenta endereço à memória (e.g. 203)• RAM devolve uma cópia do valor
Endereço Valor
201 01010110001101011101111101101010
202 01110000000110100100110010010111
203 10000010111010010100001000110000
204 01100100011010000111001000000101
205 11110001100000010110000110111001
206 11110001011111110100001111000110
... ...
27
Informática e Computadores
Hardware■ Escrita na memória RAM:• CPU apresenta endereço e novo conteúdo (e.g. 205, 0000...)• RAM escreve uma cópia do valor apresentado
Endereço Valor
201 01010110001101011101111101101010
202 01110000000110100100110010010111
203 10000010111010010100001000110000
204 01100100011010000111001000000101
205 00000000000000000000000000000000
206 11110001011111110100001111000110
... ...
28
Informática e Computadores
Execução de código no CPU■ CPU obtém instruções guardadas em memória (RAM)• Em cada momento guarda o endereço da instrução a executar• Executa sequencialmente, a menos de instruções específicas
29
Informática e Computadores
Execução de código no CPU■ Exemplo (simplificado): SOMA 106 107 110• Obtém valores em 106 e 107• Soma e guarda o resultado em em 110
30
Informática e Computadores
Sistema Operativo■ Funções de acesso a periféricos e ficheiros• Sistema de ficheiros, drivers, etc.• Invocadas pelos programas em execução
■ Carregador• Usando funções anteriores, carrega programas em memória e coloca-os em
execução
■ Interpretador de comandos• Usando as funções anteriores, lê comandos do teclado e invoca o carregador para
executar programas.
31
Informática e Computadores
Sistema Operativo■ Qualquer ficheiro é uma sequência de bits (1,0)• Organizado em bytes (8 bits)• Pode representar um texto, números, imagem, sons, ...• Depende apenas de como é interpretado
■ O ficheiro é guardado no disco• Não se perde ao desligar o computador• Tem um identificador único (caminho/nome).
■ E.g. ficheiro com código fonte• código escrito pelo programador
32
Informática e Computadores
Sistema Operativo■ Gere recursos do sistema• Controla os periféricos• Gere a memória central (RAM)• Gere o acesso aos ficheiros (HDD, SSD, MC, PD...)• Gere a interacção com o utilizador
■ Quando a energia é ligada• O CPU começa a executar código que carrega o SO do sistema de ficheiros para a
RAM.
• O CPU executa instruções que fazem a inicialização do SO
• Terminada a inicialização, passa a ser executado o código do interpretador decomandos.
33
Informática e Computadores
Interpretador de comandos■ Consola• Apresenta prompt• Lê comando• Executa, mostra resultado• Volta ao prompt
■ Interface Gráfica• GUI: Graphical User Interface• Ícones• Janelas• Botões• Menus
34
Introdução
Introdução à Programação
35
Programação
Porquê programar?■ Versatilidade• Não estamos limitados aos programas que já estão feitos
• E que temos, e que sabemos como usar
• Se soubermos programar podemos resolver muito mais problemas e aproveitarmelhor o potencial do computador
■ Reprodutibilidade• Fazer coisas “à mão” não é reprodutível
■ Fiabilidade• Uma vez testado, se funciona, funciona
■ Conveniência• O investimento inicial pode compensar muito
36
Programação
Programa para calcular massa molecular:■ Exemplo: massa molecular da alanina, )COOHCH3CH(NH2
... def molecular_mass(formula,elements): fragments = [] while formula!='': fragment,formula = parse_fragment(formula) fragments.append(fragment) mass = 0 for fragment in fragments: mass+=elements[fragment['element']]['mass']*fragment['number'] return mass def calc_mass(formula): elements = load_elements('elementos.txt') return molecular_mass(formula,elements)
In : calc_mass('CH3CH(NH2)COOH') Out: 89.09318
37
Programação
Para programar precisamos de dar instruções ao CPU■ O CPU funciona a mais
"baixo nível"• Operações algébricas, leitura e
escrita, condições acerca dosvalores em memória
... mov ax,'00' mov di,counter mov cx,digits+cntDigits/2 cld inc ax ...
■ Linguagens de "alto nível" estão mais próximas dos humanos• Instruções e estruturas de dados mais complexos, "traduzidas" para o CPU
def solve_quadratic(a,b,c): delta = b**2 - 4*a*c if delta<0: return [] elif delta>0: return [(-b -delta**0.5)/(2*a),(-b + delta**0.5)/(2*a)] else: return [-b/(2*a)]
38
Programação
Precisamos de:■ Linguagem de programação• C++, Java, MATLAB, Python, ...
■ Um compilador...• Traduz o programa escrito na linguagem de programação e cria um ficheiro num
formato que o SO pode carregar em memória e o CPU executar
• E.g. Em C++, o programa é compilado para um executável (*.exe em Windows)
■ ...ou um interpretador• Traduz cada instrução da linguagem de programação em instruções para o CPU
conforme percorre o nosso programa
• E.g. Em Python, o nosso programa tem de ser executado com o auxílio dointerpretador
39
Programação
Vamos usar:■ Python: linguagem (Python 3.x) e Interpretador■ iPython: consola que permite interagir com o Interpretador■ Spyder: Ambiente integrado de programação que gere ficheiros,
consola e Interpretador
40
Extras
Material extra■ Por vezes vou mencionar alguns detalhes que não são
directamente relevantes para a avaliação• Podem ser úteis para ajudar a perceber os mecanismos subjacentes a algumas
operações
• Ou podem ser úteis para, de futuro, utilizarem melhor a Linguagem
■ Será matéria complementar e opcional, e assinalada pela imagem"EXTRA" nos slides e apontamentos.
41
Introdução
Resumo
42
Introdução
Resumo■ Funcionamento da disciplina: CLIP e iceb.ssdi.di.fct.unl.pt/1718■ Sistema computacional• Hardware e Software
■ Programação• Porquê programar• Linguagens de alto nível (Python)• Interpretador e IDE (Spyder)
Leitura adicional:■ Recomendada: Capítulo 1 dos apontamentos■ Opcional: Learning Python, Caps 1 e 2 (introdução ao Python)