2
Informação
Docente (teóricas)• Ludwig Krippahl ([email protected])
• Terças, 15:00-16:00 Gab. 252 Ed. II
Página de ICE:• http://ssdi.di.fct.unl.pt/ice/
Livro aconselhado:• Allen B. Downey. Physical Modeling in
MATLAB• PDF: http://greenteapress.com/matlab/
3
Na aula de hoje...
Objectivos, trabalhos e avaliação Aulas teóricas e práticas Sistema computacional
• Componentes e execução de programas
MATLAB• Modelo de execução (interpretador).
• Expressões aritméticas, atribuição e strings
4
Objectivos
Visão abrangente das metodologias e ferramentas da Informática para a resolução de problemas em Ciência e nas Engenharias.
5
Objectivos
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, ...
6
Trabalho do aluno
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)
7
Aulas Teóricas
Perceber, não decorar.• Preparação para o estudo
~70% exposição, ~30% discussão• Aproveitem para ir tirando dúvidas
8
Aulas Práticas
Começam sexta feira (dia 7) 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
9
Aulas Práticas
Login, password: os do CLIP Trabalhem na vossa área em c:\users No final, copiar os ficheiros
• pendisk
• drive Z: (área do aluno na FCT)
• enviar por email.
10
Avaliação Duas componentes:
• Laboratorial (trabalhos práticos)
• Teórico-prática (testes ou exame)
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
11
Avaliação Contínua
Dois testes• 9 de Abril e 28 de Maio
Dois trabalhos• Grupos de 2 alunos
• Prazos de entrega terminam a:• P1: 4 de Maio
• discussões conforme necessário
• P2: 8 de Junho
• discussões com todos de 9 a 12 de Junho
12
Avaliação Contínua
Condições necessárias• Frequência
• P1 ≥ 9.5 ou P2 ≥ 9.5
• Aprovação• Frequência e CompTP ≥ 8.5
Notas• CompL = (TP1+TP2) / 2
• CompTP = 0.4 * T1 + 0.6 * T2 (ou exame)
• Final = 0.4 * CompL + 0.6 * CompTP
13
Avaliação
Nota final (só com frequência)• Se CompTP<8.5
• Nota final = CompTP
• Caso contrário• NF= 0.4 * CompL + 0.6* CompTP
14
Avaliação
Notas de 2012/13• Frequência em 2012/13
• Dispensados de realizar os trabalhos
• Se os realizarem, ficam com a melhor CompL entre 2012/13 e 2013/14
• Alunos com CompTP ≥ 8.5• Estão dispensados dos testes e exame
• Se realizarem testes ou exame, ficam com a melhor CompTP entre 2012/13 e 2013/14
15
Avaliação em Recurso
Condições• Frequência (TP1 ≥ 9.5 ou TP2 ≥ 9.5)
• Exame ≥ 8.5
• CompTP = nota do exame
Nota final• NF= 0.4 * CompL + 0.6 * Nota do Exame
16
Melhoria na época de recurso
Condições• Ter aprovado
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)
18
Informática:Ciência e Engenharia
Processamento de informação• sistemas computacionais, ambientes de
programação, concepção e implementação de programas, ...
Contribui para a resolução de problemas de todas as áreas.
Usando o computador podemos• desenvolver programas
• executar programas
19
Sistema computacional
Hardware• dispositivos electrónicos que compõem o
computador
Software• Programas executados pelo hardware
• Sistema: controla a execução de aplicações
• Aplicações: executam várias funções
Dados• Informação lida ou escrita pelo software
20
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).
• Tudo depende de como a informação é interpretada.
21
Programas
Programa:• conjunto de instruções
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
22
Programas
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, ...
23
Hardware
imagens:
Unidade Central de Processamento
Microprocessador:Circuito integrado que opera, sequencialmente, em valores binários (voltagem, 0 e 1).
Pentium pro, 19955.5 milhões de transistores (Core)
26
Hardware
imagens:
Random Access Memory (RAM)
Memória central, rápida
Armazena dados eprogramas
Volátil: conteúdo perde-sequando o computador é desligado
30
Hardware
Na memória, os bits estão organizados em palavras (8, 16, 32 bits, por exemplo)• 1 byte = 8 bits (normalmente)
Cada palavra tem um endereço• endereço é fixo
• conteúdo varia 10100010010101110100101001011010
00000000000000000000000000000000
00000000000010010100101001001100
00010010011000000000000000000000
00000000000000000000000000000000
106
107
108
109
110
106
31
Hardware
Leitura• CPU apresenta endereço à memória
10100010010101110100101001011010
00000000000000000000000000000000
00000000000010010100101001001100
00010010011000000000000000000000
00000000000000000000000000000000
106
107
108
109
110
106
...
...CPU 109
32
Hardware
Leitura• Memória devolve cópia do conteúdo
10100010010101110100101001011010
00000000000000000000000000000000
00000000000010010100101001001100
00010010011000000000000000000000
00000000000000000000000000000000
106
107
108
109
110
106
...
...CPU
33
Hardware
Escrita• CPU apresenta endereço e novo conteúdo
10100010010101110100101001011010
00000000000000000000000000000000
00000000000010010100101001001100
00010010011000000000000000000000
00000000000000000000000000000000
106
107
108
109
110
106
...
...CPU
10710100101...
34
Hardware
Escrita• Memória actualiza o conteúdo no endereço
indicado.
10100010010101110100101001011010
10100101010010101010001001100100
00000000000010010100101001001100
00010010011000000000000000000000
00000000000000000000000000000000
106
107
108
109
110
106
...
...CPU
10710100101...
35
Hardware
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
36
Hardware
CPU• Exemplo (simplificado): SOMA 106 107 110
• Soma valores em 106 e 107, guarda em 110
Unidade deControlo
Unidade de aritmética e lógica
00100010010101110100101001011010
00000101010010101010001001100100
00000000000010010100101001001100
00010010011000000000000000000000
00100111101000011110110010111110
106
107
108
109
110
106
...
...
37
Sistema operativo (SO) 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.
38
Ficheiros 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
O ficheiro é guardado no disco
• não se perde ao desligar o computador
• tem um identificador único (caminho/nome).
Um ficheiro com código fonte
• código escrito pelo programador
39
Sistema operativo
Gere a memória
Acesso a periféricos e ficheiros
Carregador
Interpretador de comandos
Memória paraonde são carregados
os programas
Memória ocupada pelo SO
Memória livre para as aplicações
40
Sistema operativo “simples”
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
41
Arranque
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.
42
Interpretador de comandos
Linha de comando• apresenta prompt
• lê comando
• executa o comando• mostra resultados
• volta ao prompt
• cmd, konsole
44
Interpretador de comandos
Linha de comandoprompt> 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
45
Interpretador de comandos
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
47
Programar
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
48
Programar
Para quê?• Versatilidade
• Reprodutibilidade• fazer coisas “à mão” não é reprodutível
• é muito importante processar dados de forma reprodutível
49
Programar
Para quê?• Versatilidade
• Reprodutibilidade
• Fiabilidade• Uma vez testado, se funciona, funciona
50
Programar
Para quê?• Versatilidade
• Reprodutibilidade
• Fiabilidade
• Conveniência• O investimento inicial pode compensar muito
51
Programar
Exemplo: calcular massa molecular• Alanina: CH3CH(NH2)COOH
Objectivo• corremos o programa:
• massamol('CH3CH(NH2)COOH')
• e recebemos a resposta• 89.093
massamol
52
Programar
Exemplo: calcular massa molecular• Precisamos de aprender umas coisas antes
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).
53
Programar
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,countermov cx,digits+cntDigits/2cldrep stoswinc ax...
http://assembly.happycodings.com/code1.html
54
Programar
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)];
55
Programar
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
56
Programar
Vamos usar:• Linguagem de programação
• MATLAB
• Um interpretador• MATLAB
• ou Octave
• Gratuito.
• Disponível em http://www.gnu.org/software/octave/
57
O interpretador é um programa
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
58
O interpretador é um programa
Consola do interpretador
Código e dados do
interpretador
Memória
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)
59
Linguagem MATLAB
Constantes numéricas1 1.5 -20.8
• Nota: o ponto é o separador decimal
• Constantes numéricas valem o que representam.
60
Linguagem MATLAB
Expressões aritméticas• Operadores aritméticos básicos:
+ - * / ^
octave:4> 5+12ans = 17octave:5> -1.7*(5-3)ans = -3.4000octave:6> 5^2+3*2ans = 31
61
Linguagem MATLAB
Constantes Operadores aritméticos Funções pré-definidas
• Chamar funções:• nome
• nome(argumento)
• nome(arg1,arg2,arg3...)
octave:7> cos(1)ans = 0.54030octave:8> sqrt(15)ans = 3.8730octave:9> sin(sqrt(2))ans = 0.98777octave:10> exp(2)ans = 7.3891octave:11> e^2ans = 7.3891octave:12> pians = 3.1416
contas e funções
62
Linguagem MATLAB
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
63
Linguagem MATLAB
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
64
Linguagem MATLAB
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.
65
Linguagem MATLAB
Atribuiçãox = 6
• interpretador lê a linha
• analisa o conteúdo• definir uma variável com nome x
• atribuir-lhe o valor 6
66
Linguagem MATLAB
Atribuiçãox = 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
67
Linguagem MATLAB
Atribuiçãox = 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
68
Linguagem MATLAB
Atribuiçãoy = 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
69
Linguagem MATLAB
Cálculo e atribuiçãoz = 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
70
Linguagem MATLAB
Cálculo e atribuiçãoz = 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
71
Linguagem MATLAB
Cálculo e atribuiçãoz = 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
72
Linguagem MATLAB
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
73
Linguagem MATLAB
Tipos de dados (alguns)• inteiros
x = 1
• reais • (aproximadamente... na verdade alguns racionais)
y = 23.8
• string (texto literal)t = 'abc'
74
Linguagem MATLAB
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)
75
Linguagem MATLAB
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.
77
Codificação ASCII
7777
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
80
Linguagem MATLAB
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
81
Linguagem MATLAB
Funções para stringsoctave:1> string='Estudante na FCT/UNL'string = Estudante na FCT/UNLoctave:2> stringRes=lower(string)stringRes = estudante na fct/unloctave:3> stringRes=upper(string)stringRes = ESTUDANTE NA FCT/UNLoctave:4> numEmTexto='3.14'numEmTexto = 3.14octave:5> num=str2num(numEmTexto)num = 3.1400octave:6> outroTexto=num2str(num)outroTexto = 3.14octave:7>
strings
82
Linguagem MATLAB
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)
83
Linguagem MATLAB
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 π
84
Linguagem MATLAB
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.
85
Linguagem MATLAB
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)
86
Linguagem MATLAB
Funções e variáveis 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
88
Exemplo
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
89
Exemplo
Sequências simples de comandos:• Podem usar o editor (e.g. notepad++)
• Escrevam no editor. Depois seleccionam, copy (ctrl+c) e paste no interpretador
• Octave, shift+ins.
• Ou botão da direita, etc
• Depende da versão da consola...
concentração
90
Gestão de Variáveis
who lista as variáveis definidas• whos para mais informação
clear “esquece-se” delas• ou de uma em particular:
• clear x
91
Resumo Comandos básicos do sistema Operadores * / + - ^ Atribuição de valor a variável =
• números e strings Funções nome(argumentos)
92
Estudar esta aula
Recomendado• Physical Modeling in MATLAB
• Capítulo 1 todo
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
Top Related