Informática para Ciências e Engenharias...

66
Informática para Ciências e Engenharias 2014/15 Teórica 8

Transcript of Informática para Ciências e Engenharias...

Page 1: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

Informática para Ciências e Engenharias

2014/15

Teórica 8

Page 2: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

2

Na aula de hoje...

Organização de um disco.• Sistema de ficheiros.

• Ficheiros de texto e binários.

Operações sobre ficheiros de texto.

Page 3: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

3

Ficheiros

Page 4: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

4

Ficheiros

Ficheiro:• espaço de endereçamento logicamente

contíguo acessível através de um identificador único (nome).

• contém uma sequência de bytes que pode ser interpretada como dados (texto, imagem, som, etc.) ou programas.

Page 5: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

5

Ficheiros

Ficheiro:• é persistente, geralmente guardado no disco

rígido, cartão de memória, etc.

Disco:• O SO encarrega-se de gerir os ficheiros e os

discos em que estes residem. A organização do disco é escondida aos programadores e utilizadores.

Page 6: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

6

Disco

Um disco contém várias superfícies (platters).

Page 7: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

7

Disco

Uma superfície contém pistas (tracks) concêntricas e divide-se em sectores, que também dividem a pista. Os dados na pista são organizados em blocos.

Page 8: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

8

Disco

Tempo de Acesso

• Tempo de “seek”: tempo requerido para atingir a pista desejada – 8 a 20 milissegundos

Page 9: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

9

Disco

Tempo de Acesso

• Latência de rotação: tempo necessário para que o disco rode até ao sector pretendido – 2 a 5 milissegundos

Page 10: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

10

Disco

Tempo de Acesso

• Tempo de transferência: tempo para transferir do disco para a memória – muito mais pequeno do que os tempos anteriores.

Page 11: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

11

Disco

Escrita num ficheiro

• A informação é transferida da RAM para o disco.

Page 12: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

12

Disco

Escrita num ficheiro

• Os dados ficam fragmentados no disco mas o SO apresenta-os como contíguos (o ficheiro)

• (desfragmentar)

Page 13: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

13

Tipos de ficheiro

Todos os ficheiros contêm bytes• Cada byte é um número de 0 a 255, em

binário (conjunto de bits)

• Qualquer ficheiro só contém bytes.

Mas, conceptualmente, categorizamos os ficheiros de acordo com a interpretação que fazemos dos valores.

Page 14: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

14

Tipos de ficheiro

Ficheiros de texto• Os bytes são interpretados como caracteres

imprimíveis: letras maiúsculas e minúsculas, algarismos e sinais de pontuação.

A codificação usada é a ASCII ou uma derivada desta.• Essencialmente, um ficheiro de texto é um

ficheiro codificado com esta convenção.

Page 15: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

15

Tipos de ficheiro

Ficheiros binários• A interpretação do seu conteúdo está a cargo

do programa que o utiliza; pode conter bytes que não correspondem a caracteres imprimíveis.

• Podem ser dados (inteiros, reais), programas (códigos máquina de um dado CPU), sons (segundo uma codificação como o MP3), imagens (codificadas num formato como o JPEG), filmes (MPEG, por exemplo), etc.

Page 16: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

16

Tipos de ficheiro

Exemplo: ficheiro de texto (compara.m)

function igual=compara(s1,s2)% igual=compara(s1,s2)% devolve true se as strings forem iguais a menos% de posicoes marcadas com ? if length(s1)==length(s2) pos = 1; while (pos<=length(s1)) && …...

Page 17: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

17

Tipos de ficheiro

Exemplo: ficheiro de texto (compara.m)

Page 18: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

18

Tipos de ficheiro

Exemplo: ficheiro de texto (compara.m)

f u n c t i o n i g u a l = c

Page 19: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

19

Tipos de ficheiro

Exemplo: ficheiro de texto (compara.m)

Mudança de linha (carriage return, line feed)

Page 20: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

20

Tipos de ficheiro

Exemplo: ficheiro binário (wav)

Page 21: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

21

Tipos de ficheiro

Exemplo: ficheiro binário (wav)

Page 22: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

22

Sistema de ficheiros

O sistema de ficheiros está organizado hierarquicamente em árvore (“invertida”).• Raiz (a directoria do topo)

• C:\ (Windows)

• Ramos (as outras directorias).• Cada directoria pode conter ficheiros e outras

(sub-) directorias.

• Folhas (ficheiros).

• Nesta árvore, a pesquisa de um ficheiro é eficiente.

Page 23: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

23

Sistema de ficheiros

Raiz• C:\

• Programas

• Matlab

• Office

• word.exe

• Users

• Luis

• ICE

• ...

Page 24: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

24

Sistema de ficheiros

O separador (\ em Windows) indica que a subdirectoria ou ficheiro está localizados numa directoria.

O caminho para o ficheiro (pathname) pode ser:• Absoluto: completo a partir da raiz

• C:\users\am.fonseca\ICE\ahetal.m

• Relativo: a partir da directoria corrente.• ICE\ahetal.m ..\jp.meireles\ICE\papel.m

Page 25: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

25

Sistema de ficheiros

Notações especiais (que podem ser usadas nos caminhos):• . (ponto) representa a directoria corrente;

• .. (dois pontos) representa a directoria pai da directoria corrente.

O comando cd <nomeDaDirectoria> muda a directoria corrente.

Page 26: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

26

Acesso ao ficheiro

Para ler ou escrever num ficheiro é preciso “abrir” o ficheiro• Ou seja, pedir ao sistema operativo que nos

dê acesso ao ficheiro.

No final é preciso “fechar” o ficheiro• Ou seja, notificar o sistema operativo de que

já não estamos a usar o ficheiro• Para este escrever os dados (cache)

• Para permitir o acesso a outras aplicações

Page 27: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

27

Acesso ao ficheiro

O acesso ao ficheiro é sequencial• À medida que se lê ou escreve avança-se no

ficheiroPosição corrente

•Leitura de nelems de tamanho T•Ao deslocamento corrente é somado nelems*T.

Início Fim

•Posição corrente após a leitura

Page 28: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

28

Acesso ao ficheiro

Em MATLAB• Função fopen pede acesso ao ficheiro (ao sistema

operativo) e devolve um identificador que depois usamos para aceder ao ficheiro• 'r' para leitura

• 'w' para escrita

• Em caso de erro devolve -1, um número positivo se tudo correr bem.

fich = fopen( nomeFicheiro, 'r' )

fich = fopen( nomeFicheiro, 'w' )

Page 29: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

29

Acesso ao ficheiro

Em MATLAB• Função fclose fecha o ficheiro notificando o

sistema operativo para que o liberte

• Em caso de erro devolve -1, 0 se tudo correr bem

res = fclose(fich)

fclose(fich) % se não é preciso res

Page 30: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

30

Acesso ao ficheiro

Escrever no ficheiro, em MATLAB• fprintf escrever uma string inserindo e formatando

valores adicionais onde indicado por %• %i inteiro, decimal

• %f fraccionário

• %.2f fracionário com 2 casas decimais

• %% sinal de percentagem

• \n mudança de linha (também \t para tab)

• Nota: omitindo o identificador fich, escreve na consola

fprintf(fich,'Demorou %i horas',12)

Grava ficheiro

Page 31: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

31

Acesso ao ficheiro

Ler do ficheiro, em MATLAB• Função fgetl permite ler uma linha do ficheiro. Ou

seja, um conjunto de bytes, que devolve numa string, até encontrar os caracteres de mudança de linha. Devolve -1 se passa o fim do ficheiro.

• Função feof devolve true se já chegámos ao fim do ficheiro, false caso contrário.

linha = fgetl(fich)

Ler ficheiro

feof(fich)

Page 32: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

32

Exemplo 1: calcular pauta

Page 33: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

33

Calcular pauta

Queremos obter no ficheiro pauta.txt a pauta da avaliação contínua de ICE

A nota final de um aluno é:• um inteiro entre 10 e 20, se aprovado;

• ‘Admitido’ se reprovou pode vir a exame;

• ‘Excluído’ se está definitivamente reprovado.

Page 34: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

34

Calcular pauta

Temos as notas dos trabalhos (TP1 e TP2) e dos testes (T1 e T2) numa folha de cálculo

• Mas tem um formato binário

Page 35: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

35

Calcular pauta

Copiamos para um editor de texto simples e gravamos como texto.

• notas.txt Ou gravamos a folha

de cálculo como texto, separando as colunas por vírgulas, tabs ou espaços

Page 36: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

36

Calcular pauta

Agora precisamos de• Ler o ficheiro

• Calcular a pauta da avaliação

• Gravar noutro ficheiro• pauta.txt

Page 37: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

37

Calcular pauta

Já temos funções para calcular a pautafunction pauta = calculapauta(notas)

• recebe a matriz com as notas e devolve a pauta com o número na primeira coluna e a nota na segunda

function nota = calculanota(notas)

• devolve -1 se não obteve frequência, CompTP arredondada se não teve nota mínima nesta, ou a média ponderada de CompTP e CompL arredondada.

function res=arredonda(valor,casasDec)

Page 38: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

38

Calcular pauta

Precisamos de• Ler o ficheiro para uma matriz com

• Número, TP1,TP2, T1, T2

• Usar a função calculapauta

• Gravar a matriz calculada no ficheiro• pautafinal.txt

Page 39: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

39

Calcular pauta

Precisamos de• Ler o ficheiro para uma matriz com as notas

function notas = lenotas(nomeFich)

• Gravar a matriz calculada no ficheirofunction gravapauta(pauta,nomeFich)

• Juntar tudofunction gerapauta(nomeNotas,nomePauta)

Page 40: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

40

Calcular pauta

Page 41: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

41

Calcular pauta

Abre o ficheiro para leitura e guarda o identificador, necessário para as outras funções.

Page 42: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

42

Calcular pauta

A primeira linha (o cabeçalho “Número TP1”, etc) não interessa. Mas temos de a ler para avançar a posição no ficheiro.

Page 43: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

43

Calcular pauta

Enquanto não chegamos ao fim do ficheiro, lemos uma linha, convertemos em vector numérico e acrescentamos como uma nova linha na matriz.(Matriz inicialmente vazia)

Page 44: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

44

Calcular pauta

Normalmente, dimensionamos à partida vectores e matrizes com o espaço necessário.No entanto, neste caso só poderíamos fazer isso percorrendo o ficheiro duas vezes, o que é ainda pior do que obrigar a redimensionar a matriz.

Page 45: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

45

Calcular pauta

É importante fechar o acesso ao ficheiro para o sistema operativo permitir que outros processos acedam ao ficheiro.

Page 46: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

46

Calcular pauta

Testar a leituras das notas

octave:21> lenotas('notas.txt')ans =

6.0133e+04 3.3000e+00 1.6000e+00 7.4000e+00 7.0000e+00 6.0136e+04 4.9000e+00 0.0000e+00 0.0000e+00 1.0400e+01 6.0137e+04 1.1300e+01 1.4900e+01 1.4800e+01 3.9000e+00 6.0145e+04 6.3000e+00 1.6400e+01 1.6300e+01 6.8000e+00 6.0148e+04 8.0000e+00 1.1700e+01 1.7000e+01 5.9000e+00 6.0157e+04 8.4000e+00 2.1000e+00 1.6600e+01 4.6000e+00 6.0161e+04 0.0000e+00 1.2400e+01 1.0600e+01 5.4000e+00 6.0166e+04 1.5300e+01 7.6000e+00 1.8000e+01 1.4300e+01 ...

Page 47: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

47

Calcular pauta

Testar a leituras das notas (format bank)

octave:21> lenotas('notas.txt')ans =

60133.00 3.30 1.60 7.40 7.00 60136.00 4.90 0.00 0.00 10.40 60137.00 11.30 14.90 14.80 3.90 60145.00 6.30 16.40 16.30 6.80 60148.00 8.00 11.70 17.00 5.90 60157.00 8.40 2.10 16.60 4.60 60161.00 0.00 12.40 10.60 5.40 60166.00 15.30 7.60 18.00 14.30 ...

Page 48: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

48

Calcular pauta

Abre o ficheiro para escrita e escreve o cabeçalho. \t é um tabulador, \n para mudar de linha

Page 49: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

49

Calcular pauta

Para cada linha da pauta escreve o número, um tab, e o valor (inteiro) da nota ou o texto.

Page 50: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

50

Calcular pauta

No caso da escrita fechar o ficheiro não só liberta o ficheiro mas leva o sistema operativo a escrever os dados que tenham ficado retidos em cache

Page 51: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

51

Calcular pauta

testaroctave:8> pauta=[1,-1;2,9;3,14]pauta =

1 -1 2 9 3 14

octave:9> gravapauta(pauta,'testepauta.txt')

Aluno Nota1 Excluído2 Admitido3 14

(testepauta.txt)

Page 52: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

52

Calcular pauta

Page 53: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

53

Calcular pauta

testar octave:9> gerapauta('notas.txt','pauta.txt')

Número TP1 TP2 T1 T260133 3.3 1.6 7.4 760136 4.9 0 0 10.460137 11.3 14.9 14.8 3.960145 6.3 16.4 16.3 6.860148 8 11.7 17 5.960157 8.4 2.1 16.6 4.660161 0 12.4 10.6 5.460166 15.3 7.6 18 14.360175 12.1 10 0 6.160182 7.2 5.2 0.6 6.260184 8.5 18.8 11 060190 12.6 9.4 4.3 10.1...

Aluno Nota60133 Excluído60136 Excluído60137 Admitido60145 1160148 1060157 Excluído60161 Admitido60166 1460175 Admitido60182 Excluído60184 Admitido60190 Admitido

...

Page 54: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

54

Exemplo 2: variante, listagem

Page 55: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

55

Criar pauta

Mesmo problema de criar a pauta, mas a partir de uma listagem dos alunos e trabalhos:• número

• [TP1:]

• [TP2:]

• [T1:]

• [T2:]

• Os elementos em falta são 0

60133TP1:3.3TP2:1.6T1:7.4T2:7.060136TP1:4.9T2:10.460137TP1:11.3TP2:14.9T1:14.8T2:3.960145TP1:6.3TP2:16.4T1:16.3T2:6.8...

Page 56: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

56

Criar pauta

O problema é o mesmo, à parte de uma função:

• em vez de:

• e substituir a função que junta tudofunction geradalista(nomeNotas,nomePauta)

function notas = lenotas(nomeFich)

function notas = lelistanotas(nomeFich)

Page 57: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

57

Criar pauta

Algoritmo para ler a lista de elementos de avaliação:• A matriz notas começa vazia

• Enquanto não termina o ficheiro• Se a linha contém TP1:, TP2:, etc, converter

número e copiar para a posição respectiva da última linha da matriz

• Caso contrário copiar o número para a primeira coluna de uma linha nova na matriz, com os restantes a 0.

Page 58: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

58

Criar pauta

Se a linha contém TP1:, TP2:, etc,• usar findstr

• verificar se o resultado não é um vector vazio• length( … )~=0 ou

• ~isempty( … )

Page 59: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

59

Calcular pauta

Page 60: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

60

Calcular pauta

Se a linha tem algum destes elementos, é preciso copiar o valor para a célula certa

Page 61: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

61

Calcular pauta

Caso contrário é preciso criar uma linha nova com o número e 0 nos elementos de avaliação.

Page 62: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

62

Calcular pauta

testar60133TP1:3TP2:1T1:7T2:760136TP1:4T2:1060137TP1:11TP2:14T1:14T2:360145TP1:6TP2:16T1:16T2:6...

octave:11> lelistanotas('listagem.txt')ans =

60133.00 3.30 1.60 7.40 7.00 60136.00 4.90 0.00 0.00 10.40 60137.00 11.30 14.90 14.80 3.90 60145.00 6.30 16.40 16.30 6.80 60148.00 8.00 11.70 17.00 5.90 60157.00 8.40 2.10 16.60 4.60 60161.00 0.00 12.40 10.60 5.40 60166.00 15.30 7.60 18.00 14.30 60175.00 12.10 10.00 0.00 6.10 60182.00 7.20 5.20 0.60 6.20 60184.00 8.50 18.80 11.00 0.00

...

Page 63: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

63

Calcular pauta

Page 64: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

64

Calcular pauta

testar geradalista('listagem.txt','pautalista.txt')

Aluno Nota60133 Excluído60136 Excluído60137 Admitido60145 1160148 1060157 Excluído60161 Admitido60166 1460175 Admitido60182 Excluído60184 Admitido60190 Admitido...

60133TP1:3.3TP2:1.6T1:7.4T2:7.060136TP1:4.9T2:10.460137TP1:11.3TP2:14.9T1:14.8T2:3.960145TP1:6.3TP2:16.4T1:16.3T2:6.8...

Page 65: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

65

Para estudar a aula de hoje

Manual do Octave• Capítulo 14

• Tem várias funções que podem ser úteis

• (ou confusas)

• Estas secções focam particularmente o que demos aqui:

• 14.2.1 Opening and Closing Files

• 14.2.3 Line-Oriented Input

• 14.2.4 Formatted Output

Page 66: Informática para Ciências e Engenharias 2014/15iceb.ssdi.di.fct.unl.pt/1415/b/files/ICE-B-T08.pdf · 4 Ficheiros Ficheiro: •espaço de endereçamento logicamente contíguo acessível

66

Dúvidas