93
Informática para Ciências e Engenharias (B) 2013/14 Teórica 1

Informática para Ciências e Engenharias (B) 2013/14iceb.ssdi.di.fct.unl.pt/1314/b/files/ICE-B-T01.pdf · Trabalho do aluno 6 créditos ECTS ... Pentium pro, 1995 5.5 milhões de

  • Upload
    lamdan

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Informática para Ciências e Engenharias (B)

2013/14

Teórica 1

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)

17

Informática

(Introdução)

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)

24

Hardware

imagens:

CPU

25

Funcionamento

imagens:

CPU

26

Hardware

imagens:

Random Access Memory (RAM)

Memória central, rápida

Armazena dados eprogramas

Volátil: conteúdo perde-sequando o computador é desligado

27

Hardware

imagens:

CPU

MotherboardElectrónica de comunicação dentro e para fora do PC

28

Hardware

imagens:

HDDDisco rígidoNão volátil, mais lento

CPU

RAM

29

Hardware

imagens:

010010101 0111101

0100110

0100110

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

43

Interpretador de comandos

Gráfico• ícones

• janelas

• botões

• menus

imagem:

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

46

Programar

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.

76

Codificação ASCII

7676

Codificação ASCII

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

78

Codificação ASCII

7878

Codificação ASCII

Dígitos, 48 a 57

79

Codificação ASCII

7979

Codificação ASCII

Letras

Maiúsculas 65 a 90

Minúsculas 97 a 122

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

87

Exemplo

Cálculo de concentração.• NaCl: massa molar 58.4 g/mol

• Concentração de 2g em 125ml?

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

93

Dúvidas