Informática para Ciências e Engenharias (B)
2015/16
Teórica 1
Informação
l Regência e Teóricas • Pedro Barahona ([email protected])
l Outros docentes e mais informação na...
l ... página de ICE-B: • http://ssdi.di.fct.unl.pt/ice/b
l Livro aconselhado: • Allen B. Downey. Physical Modeling in MATLAB
• PDF: http://greenteapress.com/matlab/
Na aula de hoje...
l Objectivos, trabalhos e avaliação
l Aulas teóricas e práticas
l Sistema computacional
• Componentes e execução de programas
l MATLAB
• Modelo de execução (interpretador).
• Expressões aritméticas, atribuição e strings
Objectivos
l Visão abrangente das
• metodologias e ferramentas da Informática para a
• resolução de problemas em Ciência e nas Engenharias.
Objectivos
l Introdução a metodologias e ferramentas da Informática para resolver problemas em Ciência e Engenharias.
• fundamentos de programação;
• (breve) introdução a bases de dados;
• redes e protocolos de comunicação;
• aplicações: simulação, análise, ...
Trabalho do aluno
l 6 créditos ECTS
• Presencial
• Aulas teóricas: 2h por semana
• Aulas práticas: 3h por semana
• Autónomo
• Estudo: 55h
• Trabalhos: 35h
• (~ 6 horas por semana)
Aulas Teóricas
l Perceber, não decorar.
• Preparação para o estudo
l ~70% exposição, ~30% discussão
• Aproveitem para ir tirando dúvidas
Aulas Práticas
l Começam segunda feira (dia 7 Março)
l 3 horas:
• Praticar e fazer os trabalhos.
• (algumas aulas têm exercícios extra)
• mais autonomia
• devem ir preparados
• Sem perceber a teórica é muito mais difícil
Aulas Práticas
l Login, password: os do CLIP
l Trabalhem na vossa área em c:\users
• Não no pendisk nem no Z:
l No final, copiar os ficheiros
• pendisk
• drive Z: (área do aluno na FCT)
• enviar por email.
Avaliação
l Duas componentes:
• Laboratorial (trabalhos práticos)
• Teórico-prática (testes ou exame)
l Fraude
• actos que viciem o processo de avaliação
• copiar, ceder trabalho para cópia, assinar trabalhos que não se fez, etc...
• reprovação imediata
Avaliação Contínua
l Dois testes
• 16 de Abril e 6 de Junho
l Dois trabalhos
• Grupos de 2 alunos
• Prazos de entrega terminam a: • P1: 3 de Maio
• discussões conforme necessário • P2: 7 de Junho
• discussões com todos de 8 a 11 de Junho
Avaliação Contínua
l Condições necessárias para se obter
• Frequência • P1 ≥ 9.5 ou P2 ≥ 9.5
• Aprovação • Frequência e CompTP ≥ 8.5
l Notas • CompL = (P1+P2) / 2 • CompTP = 0.4 * T1 + 0.6 * T2 (ou exame) • Final = 0.4 * CompL + 0.6 * CompTP
Avaliação
l Nota final (para quem obteve frequência)
• Se CompTP < 8.5 • Nota final = CompTP (reprovação)
• Caso contrário • NF= 0.4 * CompL + 0.6* CompTP
Avaliação
l Notas de 2012/13, 2013/14 ou 2014/15
• Alunos com Frequência
• Dispensados de realizar os trabalhos
• Se os realizarem, ficam com a melhor CompL
• Alunos com CompTP ≥ 8.5
• Estão dispensados dos testes e exame
• Se realizarem testes ou exame, ficam com a melhor CompTP
Avaliação em Recurso
l Condições
• Frequência (TP1 ≥ 9.5 ou TP2 ≥ 9.5)
• Exame ≥ 8.5
• CompTP = nota do exame
l Nota final
• NF= 0.4 * CompL + 0.6 * Nota do Exame
Melhoria na época de recurso
l Condições
• Ter aprovado
l Nota final
• NF= 0.4 * CompL + 0.6 * Nota do Exame
• (se a nota do exame for superior à nota já obtida na componente teórico-prática)
Informática (Introdução)
Informática: Ciência e Engenharia
l Processamento de informação
• sistemas computacionais, ambientes de programação, concepção e implementação de programas, ...
l Contribui para a resolução de problemas de todas as áreas.
l Usando o computador podemos
• desenvolver programas
• executar programas
Sistema computacional
l Hardware
• dispositivos electrónicos que compõem o computador
l Software
• Programas executados pelo hardware
• Sistema: controla a execução de aplicações
• Aplicações: executam várias funções
l Dados
• Informação lida ou escrita pelo software
Hardware
l 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).
• Tudo depende de como a informação é interpretada.
Programas
l Programa:
• conjunto de instruções l Para executar programas é preciso:
• Hardware
• interpreta conjuntos de bits que especificam acções muito simples (instruções).
• A funcionalidade dos programas vem do encadeamento de muitas acções simples
Programas
l Software (os programas)
• sistema operativo • conjunto de programas que medeiam interacção com
hardware e outros
• interpretador de comandos
• permite especificar acções e invocar programas
• compiladores e interpretadores
• traduzem instruções de alto nível para o hardware
• outras aplicações
• processador de texto, folha de cálculo, imagem, ...
Hardware
imagens:
Unidade Central de Processamento (CPU)
Microprocessador: Circuito integrado que opera, sequencialmente, em valores binários (voltagem, 0 e 1).
Pentium pro, 1995 5.5 milhões de transistores (Core)
Hardware
imagens:
CPU
Hardware
imagens:
CPU
Hardware
imagens:
Random Access Memory (RAM)
• Memória central, rápida
• Armazena dados e programas
• Volátil: conteúdo perde-se quando o computador é desligado
Hardware
imagens:
CPU
Motherboard • Electrónica de
comunicação dentro e para fora do PC
Hardware
imagens:
HDD
• Disco rígido
• Não volátil, mais lento
CPU
RAM
Hardware
imagens:
010010101 0111101
0100110
0100110
Hardware
l Na memória, os bits estão organizados em palavras (8, 16, 32 bits, por exemplo)
• 1 byte = 8 bits (normalmente)
l Cada palavra tem um endereço
• endereço é fixo
• conteúdo varia
10100010010101110100101001011010 00000000000000000000000000000000 00000000000010010100101001001100 00010010011000000000000000000000 00000000000000000000000000000000
106 107 108 109 110
106
Hardware
l Leitura
• CPU apresenta endereço à memória
10100010010101110100101001011010 00000000000000000000000000000000 00000000000010010100101001001100 00010010011000000000000000000000 00000000000000000000000000000000
106 107 108 109 110
106
...
... CPU 109
Hardware
l Leitura
• Memória devolve cópia do conteúdo
10100010010101110100101001011010 00000000000000000000000000000000 00000000000010010100101001001100
00000000000000000000000000000000
106 107 108
110
106
...
... CPU
00010010011000000000000000000000 109
Hardware
l Escrita
• CPU apresenta endereço e novo conteúdo
10100010010101110100101001011010 00000000000000000000000000000000 00000000000010010100101001001100 00010010011000000000000000000000 00000000000000000000000000000000
106 107 108 109 110
106
...
... CPU
107 10100101...
107
Hardware
l Escrita
• Memória actualiza o conteúdo no endereço indicado.
10100010010101110100101001011010 00000000000000000000000000000000 00000000000010000100101001001100 00010010011000000000000000000000 00000000000000000000000000000000
106 107 108 109 110 ...
... CPU
107 10100101...
10100101010010101010001001100100 107
Hardware
l CPU
• Obtém instruções guardadas na memória (RAM)
• Em cada momento guarda o endereço da instrução a executar
• Execução sequencial
• Componentes principais
• Unidade de controlo: determina que operações efectuar para cada instrução
• Unidade aritmética e lógica: operações algébricas
Hardware
l CPU • Exemplo (simplificado): SOMA 106 107 110
• Soma valores em 106 e 107, guarda em 110
Unidade de
Controlo
Unidade de aritmética e
lógica
00100010010101110100101001011010 00000101010010101010001001100100 00000000000010010100101001001100 00010010011000000000000000000000 00100111101000011110110010111110
106
108 109 110
107 106
...
...
Sistema operativo (SO)
l Funções de acesso a periféricos e ficheiros
• Sistema de ficheiros, drivers, etc.
• Invocadas pelos programas em execução
l Carregador
• Usando funções anteriores, carrega programas em memória e coloca-os em execução
l Interpretador de comandos
• Usando as funções anteriores, lê comandos do teclado e invoca o carregador para executar programas.
Ficheiros
l Qualquer ficheiro é uma sequência de bits (1,0)
• Organizado em bytes (8 bits)
• pode representar um texto, números, imagem, sons, ...
• depende de como é interpretado
l O ficheiro é guardado no disco
• não se perde ao desligar o computador
• tem um identificador único (caminho/nome).
l Um ficheiro com código fonte
• código escrito pelo programador
Sistema operativo
l Gere a memória
Acesso a periféricos e ficheiros
Carregador Interpretador de comandos
Memória ocupada pelo SO
Memória para onde são carregados
os programas
Memória livre para as aplicações
Sistema operativo “simples”
l Um utilizador de cada vez
• Supervisiona a utilização dos recursos do sistema
• Controla os periféricos
• Gere a memória central (RAM)
• Gere o acesso aos ficheiros (HDD, SDD, MC, ...)
• Gere a interacção com o utilizador
Arranque
l Quando a energia é ligada
• O CPU começa a executar código, que carrega o SO do sistema de ficheiros para a RAM.
• Depois, 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 de comandos.
Interpretador de comandos
l Linha de comando
• apresenta prompt
• lê comando
• executa o comando • mostra resultados
• volta ao prompt
• cmd, konsole
Interpretador de comandos
l Interface Gráfica
• ícones
• janelas
• botões
• menus
imagem:
Interpretador de comandos
l Linha de comando prompt> comando argumento1 argumento2 …
• o comando pode ser interno do SO
• dir, cd, print, type
• ou pode ser um programa para executar
• o SO verifica se existe o programa, invoca o carregador e o CPU executa o programa
• os argumentos são passados para esse programa
• e.g. format G: /FS:FAT32
Interpretador de comandos
l Interface Gráfica
• (GUI: Graphical User Interface)
• janelas, icons, menus, ...
• click (ou duplo click)
• se no ícone que representa um programa, o programa é carregado e executado
• se no ícone que representa um ficheiro de dados é executado o programa associado, passando o nome do ficheiro como argumento
shell + click
Programar
Programar
l Para quê?
• Versatilidade
• Não estamos limitados aos programas que • já estão feitos • que temos • e que sabemos como usar
• Se soubermos programar podemos resolver muito mais problemas
• aproveitar melhor o potencial do computador
Programar
l Para quê? • Versatilidade • Reprodutibilidade
• fazer coisas “à mão” não é reprodutível • é muito importante processar dados de forma
reprodutível
Programar
l Para quê? • Versatilidade • Reprodutibilidade • Fiabilidade
• Uma vez testado, se funciona, funciona
Programar
l Para quê? • Versatilidade • Reprodutibilidade • Fiabilidade • Conveniência
• O investimento inicial pode compensar muito
Programar
l Exemplo: calcular massa molecular • Alanina: CH3CH(NH2)COOH
l Objectivo • corremos o programa:
• massamol('CH3CH(NH2)COOH') • e recebemos a resposta
• 89.093
massamol
Programar
l Exemplo: calcular massa molecular • Precisamos de aprender umas coisas antes
l Hoje: • Como dar instruções ao CPU?
• ou seja, traduzir uma linguagem de programação prática para nós (alto nível)
• para as instruções correspondentes no CPU (baixo nível).
Programar
l Baixo nível • Mais próximo do hardware • Instruções simples, mais elementares
• Operações lógicas, leitura e escrita, operações algébricas
... mov ax,'00' mov di,counter mov cx,digits+cntDigits/2 cld rep stosw inc ax ...
http://assembly.happycodings.com/code1.html
Programar
l Alto nível • Mais próximo de nós • Instruções complexas
• (convertidas em muitas simples para o CPU)
s=b^2-4*a*c; if s<0 raizes=[]; elseif s==0 raizes=[-b/(2*a)]; else raizes=[(-b+sqrt(s))/(2*a),(-b-sqrt(s))/(2*a)];
Programar
l Precisamos de: • linguagem de programação
• C++, Java, Python, … MATLAB • um compilador...
• Traduz o programa escrito na linguagem de programação num formato que o SO pode carregar em memória e o CPU executar
• … ou um interpretador • Interpreta cada instrução da linguagem de programação
em instruções para o CPU
Programar
l Vamos usar: • Linguagem de programação
• MATLAB • Um interpretador
• MATLAB • ou Octave
• Gratuito. • Disponível em http://www.gnu.org/software/octave/
O interpretador é um programa
l Funcionamento da consola do interpretador: • utilizador escreve a linha com a instrução
• (enter no final) • o interpretador analisa a linha • o interpretador executa a instrução
• mostra o resultado • volta ao prompt
O interpretador é um programa
l Consola do interpretador
Utilizador dá ao interpretador o comando na linguagem de alto nível (MATLAB) O interpretador interpreta o comando e dá ao CPU as instruções correspondentes. (o CPU também executa o interpretador e coordena as entradas e saídas)
Memória
Código e dados do
interpretador
Linguagem MATLAB
l Constantes numéricas 1 1.5 -20.8 • Nota: o ponto é o separador decimal • Constantes numéricas valem o que representam.
Linguagem MATLAB
l Expressões aritméticas • Operadores aritméticos básicos: + - * / ^
octave:4> 5+12
ans = 17 octave:5> -1.7*(5-3) ans = -3.4000 octave:6> 5^2+3*2 ans = 31
Linguagem MATLAB
l Constantes l Operadores aritméticos l Funções pré-definidas
• Chamar funções: • nome • nome(argumento) • nome(arg1,arg2,arg3...)
octave:7> cos(1) ans = 0.54030 octave:8> sqrt(15) ans = 3.8730 octave:9> sin(sqrt(2)) ans = 0.98777 octave:10> exp(2) ans = 7.3891 octave:11> e^2 ans = 7.3891 octave:12> pi ans = 3.1416
contas e funções
Linguagem MATLAB
l Variáveis • uma variável é um nome para uma posição na memória • o valor da variável é o conteúdo dessa posição • nome da variável
• letras (sem acentos, cedilhas, etc), algarismos e _ (underscore) começando por uma letra ou _
• e.g. var var1 _spec Y y • maiúsculas e minúsculas são diferentes
Linguagem MATLAB
l Variáveis • o CPU executa instruções que especificam endereços de
memória; • a unidade de aritmética e lógica opera sobre os conteúdos desses
endereços. • mas as linguagens de alto nível permitem associar nomes a
endereços de memória • para o programador não precisar de saber os endereços
Linguagem MATLAB
l Variáveis • os interpretadores mantêm uma tabela que associa nomes de
variáveis a endereços. • quando um valor é atribuído a um nome pela primeira vez é criada
a variável acrescentando uma linha à tabela. • a partir daí, sempre que o nome aparecer, a tabela é consultada
para se saber qual é o endereço de memória correspondente a esse nome.
Linguagem MATLAB
l Atribuição x = 6 • interpretador lê a linha • analisa o conteúdo
• definir uma variável com nome x • atribuir-lhe o valor 6
Linguagem MATLAB
l Atribuição x = 6 • interpretador lê a linha • analisa o conteúdo
• definir uma variável com nome x • atribuir-lhe o valor 6
• Executa • associa o nome x um endereço
1000
RAM
1000 1001 1002
x
Nome Endereço
Linguagem MATLAB
l Atribuição
x = 6 • interpretador lê a linha • analisa o conteúdo
• definir uma variável com nome x • atribuir-lhe o valor 6
• Executa • associa o nome x um endereço • guarda o valor no endereço RAM
• (em binário, mas vamos simplificar...)
6
1000
RAM
1000 1001 1002
x
Nome Endereço
Linguagem MATLAB
l Atribuição y = 12 • interpretador lê a linha • analisa o conteúdo • executa
• associa o nome y um endereço • guarda o valor no endereço RAM
6 12
1000 1001
RAM
1000 1001 1002
x y
Nome Endereço
Linguagem MATLAB
l Cálculo e atribuição z = x + y • interpretador lê a linha • analisa o conteúdo
• somar x e y • guardar em z
6 12
1000 1001
RAM
1000 1001 1002
x y
Nome Endereço
Linguagem MATLAB
l Cálculo e atribuição z = x + y • interpretador lê a linha • analisa o conteúdo • executa
• y e x estão em memória
6 12
1000 1001
RAM
1000 1001 1002
x y
Nome Endereço
Linguagem MATLAB
l Cálculo e atribuição z = x + y • interpretador lê a linha • analisa o conteúdo • executa
• y e x estão em memória • é criada a variável z • CPU: SOMA 1000, 1001, 1002
6 12 18
1000 1001 1002
RAM
1000 1001 1002
x y z
Nome Endereço
Linguagem MATLAB
l Variáveis e valores • variável = expressão
• = é o sinal de atribuição • à esquerda do = tem de ficar uma variável
• Só se pode atribuir valores à variável x = 2 ✓ 2 = x ✗
atribuição e binário
Linguagem MATLAB
l Tipos de dados (alguns) • inteiros
x = 1
• reais • (aproximadamente... na verdade alguns racionais)
y = 23.8 • string (texto literal)
t = 'abc'
Linguagem MATLAB
l strings
• entre plicas indicar que é valor e não um nome x = abc
• o interpretador interpreta abc como um nome de uma variável ou função
x = 'abc' • assim atribui o texto, literalmente, à variável x • (como sempre, codificado numericamente, e em binário)
Linguagem MATLAB
l strings (texto) • sequências de símbolos (caracteres): letras maiúsculas e
minúsculas, algarismos, sinais de pontuação. • cada carácter é armazenado no computador usando uma dada
codificação numérica • sequência de bits
• A codificação mais utilizada está definida na norma ASCII • American Standard Code for Information Interchange.
Codificação ASCII
Codificação ASCII
Codificação ASCII
Caracteres de controlo, como o LF - mudança de linha, em MATLAB ‘\n’, iniciam-se no código 01 e vão até ao código 31
Codificação ASCII
Codificação ASCII
Dígitos, 48 a 57
Codificação ASCII
Codificação ASCII
Letras
Maiúsculas 65 a 90
Minúsculas 97 a 122
Codificação ASCII
Linguagem MATLAB
l Resumindo, strings • uma sequência de caracteres. • Em MATLAB
• escreve-se entre plicas • são valores que se pode atribuir a variáveis
octave:1> string='Estudante na FCT/UNL' string = Estudante na FCT/UNL
Linguagem MATLAB
l Funções para strings
octave:1> string='Estudante na FCT/UNL' string = Estudante na FCT/UNL octave:2> stringRes=lower(string) stringRes = estudante na fct/unl octave:3> stringRes=upper(string) stringRes = ESTUDANTE NA FCT/UNL octave:4> numEmTexto='3.14' numEmTexto = 3.14 octave:5> num=str2num(numEmTexto) num = 3.1400 octave:6> outroTexto=num2str(num) outroTexto = 3.14 octave:7>
strings
Linguagem MATLAB
l Funções e variáveis • podemos usar variáveis como argumentos
• sin(a) (se a estiver definida) • ATT: se definirmos uma variável com o mesmo nome que uma
função “escondemos” a função • e.g. sin=2 (já não podemos usar função sin)
Linguagem MATLAB
l Funções e variáveis • todas as funções são chamadas pelo seu nome seguido dos
argumentos entre parênteses: • sin(2) calcula o seno de 2 • help('sin') mostra a documentação da função sin • cd('c:\users\a.meireles')
muda a pasta de trabalho para a pasta indicada • pwd sem argumentos, indica a pasta corrente • pi sem argumentos, devolve o valor de π
Linguagem MATLAB
l Funções e variáveis • Excepção:
• se uma função recebe apenas uma string sem espaços como argumento, pode ser chamada sem parênteses nem plicas na string.
• help sin equivale a help('sin') • format bit equivale a format('bit) • cd c:\users\a.meireles cd('c:\users\a.meireles')
• só usem esta síntaxe nestes casos • sin 0 equivale a sin('0'), que calcula o seno do
código numérico do carácter '0' (48) ou erro.
Linguagem MATLAB
l Funções e variáveis • Excepção:
• se uma função recebe apenas uma string sem espaços como argumento, pode ser chamada sem parênteses nem plicas na string.
• Dá jeito em casos como help, cd e format, mas evitem usar esta síntaxe noutros casos para não fazer confusão.
• Em geral, invocar a função com • nome(argumentos)
Linguagem MATLAB
l Funções e variáveis l Expressões
• Quando uma expressão é avaliada o interpretador “ecoa” o resultado • excepto se terminarmos linha com ;
• Se o valor de uma expressão não é atribuído a uma variável o interpretador guarda na variável ans
funções
Exemplo
l Cálculo de concentração. • NaCl: massa molar 58.4 g/mol • Concentração de 2g em 125ml?
Exemplo
l Cálculo de concentração. • NaCl: massa molar 58.4 g/mol • Concentração de 2g em 125ml?
mmNaCl=58.4
v=0.125
q=2/mmNaCl
c=q/v
Exemplo
l Sequências simples de comandos: • Podem usar o editor (e.g. notepad++)
• Escrevam no editor. Depois seleccionam, copy (ctrl+c) e paste (ctrl+v) no interpretador
• Octave, shift+ins. • Ou botão da direita, etc • Depende da versão da consola...
concentração
Gestão de Variáveis
l who lista as variáveis definidas • whos para mais informação
l clear “esquece-se” delas • ou de uma em particular:
• clear x
Resumo
l Comandos básicos do sistema l Operadores * / + - ^ l Atribuição de valor a variável =
• números e strings l Funções
• nome(argumentos)
Estudar esta aula
l Recomendado • Physical Modeling in MATLAB
• Capítulo 1 todo l Opcional (ler por alto)
• Manual do Octave • Capítulos 1 e 2, introdução do capítulo 4 • tem mais matéria do que é dada nesta disciplina, mas é
útil saberem o que lá está • principalmente para consulta
Dúvidas?
Top Related