• Nenhum resultado encontrado

Informática para Ciências e Engenharias (B) 2015/16. Teórica 8

N/A
N/A
Protected

Academic year: 2021

Share "Informática para Ciências e Engenharias (B) 2015/16. Teórica 8"

Copied!
64
0
0

Texto

(1)

Informática para Ciências e

Engenharias (B)


2015/16

(2)

Na aula de hoje

l  Organização de um disco.

Sistema de ficheiros.

Ficheiros de texto e binários.

(3)

Ficheiros

(4)

Ficheiros

l  Organização de um disco.

Sistema de ficheiros.

l  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

(5)

Ficheiros

l  Ficheiro:

é persistente, geralmente guardado no disco rígido, cartão de memória, etc.

l  Disco:

O SO encarrega-se de gerir os ficheiros e os discos em que estes residem. A organização do disco é escondida aos

(6)

Disco

l  Disco:

(7)

Disco

l  Disco:

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

Uma superfície contém pistas (tracks) concêntricas e divide-se em divide-sectores, que também dividem a pista.

(8)

Disco

l  Tempo de Acesso

Tempo de “seek”: tempo requerido para atingir a pista desejada

•  Tipicamente entre 8 e

(9)

Disco

l  Tempo de Acesso

Latência de rotação: tempo necessário para que o disco rode até ao sector pretendido

•  Tipicamente entre 2 e

(10)

Disco

l  Tempo de Acesso

Tempo de transferência: tempo para transferir do disco para a memória –

•  muito mais pequeno

do que os tempos anteriores.

(11)

Ficheiros e Discos

l  Escrita num ficheiro

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

(12)

Ficheiros e Discos

l  Escrita num ficheiro

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

(13)

Tipos de Ficheiros

l  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.

l  Mas, conceptualmente, categorizamos os ficheiros de acordo

(14)

Tipos de Ficheiros

l  Ficheiros de texto

Os bytes são interpretados como caracteres imprimíveis: letras maiúsculas e minúsculas, algarismos e sinais de pontuação.

l  A codificação usada é a ASCII ou uma derivada desta.

Essencialmente, um ficheiro de texto é um ficheiro codificado com esta convenção.

(15)

Tipos de Ficheiros

l  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),

(16)

Tipos de Ficheiros

l  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)) && … ...

(17)

Tipos de Ficheiros

l  Exemplo: ficheiro de texto (compara.m)

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

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

(18)

Tipos de Ficheiros

(19)

Tipos de Ficheiros

(20)

Tipos de Ficheiros

(21)

Sistemas de Ficheiros

l  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).

(22)

Sistemas de Ficheiros

l  Raiz

C:\ •  Programas •  Matlab •  Office •  word.exe •  Users •  Luis •  ICE •  ... C:\ Programas Users Office Word.exe Luis

(23)

Sistemas de Ficheiros

l  O separador (\ em Windows) indica que a subdirectoria ou

ficheiro está localizados numa directoria.

l  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 (C:\users\am.fonseca).

(24)

Sistemas de Ficheiros

l  Notações especiais (que podem ser usadas nos caminhos):

. (ponto) representa a directoria corrente;

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

l  O comando cd <nomeDaDirectoria> muda a directoria

(25)

Sistemas de Ficheiros

l  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).

(26)

Acesso aos Ficheiros

l  Para ler ou escrever num ficheiro é preciso “abrir” o ficheiro

Ou seja, pedir ao sistema operativo que nos dê acesso ao ficheiro.

l  No final é preciso “fechar” o ficheiro

Ou seja, notificar o sistema operativo de que já não estamos a usar o ficheiro

(27)

Acesso aos Ficheiros

l  O acesso ao ficheiro é sequencial

À medida que se lê ou escreve avança-se no ficheiro

Posição corrente

•  Leitura de nelems de tamanho T

•  Ao deslocamento corrente é somado nelems*T.

Início Fim

(28)

Acesso aos Ficheiros

l  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' )

(29)

Acesso aos Ficheiros

l  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)

(30)

Acesso aos Ficheiros

l  Escrever no ficheiro, em MATLAB

fprintf para escrever uma string inserindo e formatando valores adicionais em que a formatação é indicada por %

•  %i inteiro, decimal

•  %f fraccionári

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

•  %% sinal de percentagem

•  \n mudança de linha

•  \t tab

(31)

Acesso aos Ficheiros

l  Ler do ficheiro, em MATLAB

Função fgetl permite ler uma linha do ficheiro

•  Ou seja, um conjunto de bytes, 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)

(32)

Calcular Pauta

(33)

Calcular Pauta

l  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;

(34)

Calcular Pauta

l  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

•  ou codificado em

(35)

Calcular Pauta

l  Copiamos para um editor

de texto simples e

gravamos como texto.

notas.txt

Melhor: Guardamos a

folha de cálculo directamente num formato texto.

(36)

Calcular Pauta

l  Seguidamente, precisamos de

Ler o ficheiro para uma matriz com 5 colunas

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

Calcular a pauta da avaliação

•  Usar a função calculapauta

Gravar a matriz calculada no ficheiro pauta.txt

(37)

Calcular Pauta

l  Já temos funções para calcular a pauta

function 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)

(38)

Calcular Pauta

l  Vamos então analisar os outros passos

Ler o ficheiro para uma matriz com as notas function notas = lenotas(nomeFich)

Gravar a matriz calculada no ficheiro

function gravapauta(pauta,nomeFich)

Juntar tudo

(39)
(40)

Calcular Pauta

Abre o ficheiro para leitura e guarda o identificador, necessário para as

(41)

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.

(42)

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

(43)

Calcular Pauta

É importante fechar o acesso ao ficheiro para o sistema operativo

permitir que outros processos acedam ao ficheiro.

(44)

Calcular Pauta

l  Testar a leitura 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 ...

(45)

Calcular Pauta

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

(46)

Calcular Pauta

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

(47)

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

(48)

Calcular Pauta

l  Testar com uma pauta simplificada

l  Ler ficheiro produzido (‘testepauta.txt)

octave:8> pauta=[1,-1;2,9;3,14] pauta = 1 -1 2 9 3 14 octave:9> gravapauta(pauta,'testepauta.txt') Aluno Nota 1 Excluído 2 Admitido 3 14

(49)

Calcular Pauta

(50)

Calcular Pauta

l  Testar com as notas lida do ficheiro

octave:9> gerapauta('notas.txt','pauta.txt') Número TP1 TP2 T1 T2 60133 3.3 1.6 7.4 7 60136 4.9 0 0 10.4 60137 11.3 14.9 14.8 3.9 60145 6.3 16.4 16.3 6.8 60148 8 11.7 17 5.9 60157 8.4 2.1 16.6 4.6 60161 0 12.4 10.6 5.4 60166 15.3 7.6 18 14.3 60175 12.1 10 0 6.1 60182 7.2 5.2 0.6 6.2 60184 8.5 18.8 11 0 60190 12.6 9.4 4.3 10.1 ... Aluno Nota 60133 Excluído 60136 Excluído 60137 Admitido 60145 11 60148 10 60157 Excluído 60161 Admitido 60166 14 60175 Admitido 60182 Excluído 60184 Admitido 60190 Admitido ...

(51)

Calcular Pauta

(52)

Calcular Pauta

l  Mesmo problema de criar a

pauta, mas a partir de uma

listagem dos alunos e trabalhos:

•  número

•  [TP1:]

•  [TP2:]

•  [T1:]

•  [T2:]

Nota: Os elementos em falta

são 0 60133 TP1:3.3 TP2:1.6 T1:7.4 T2:7 60136 TP1:4.9 T2:10.4 60137 TP1:11.3 TP2:14.9 T1:14.8 T2:3.9 ...

(53)

Calcular Pauta

l  O problema é o mesmo, mas há que

substituir a função que lê as notas:

function notas = lenotas(nomeFich)

… por uma que as leia no novo formato de lista

function notas = lelistanotas(nomeFich)

... e substituir a função que junta tudo

(54)

Calcular Pauta

l  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

(55)

Calcular Pauta

l  Algoritmo para ler a lista de elementos de avaliação:

Se a linha contém TP1:, TP2:, etc,

•  usar findstr

verificar se o resultado não é um vector vazio

•  length( … ) ~= 0 ou

(56)
(57)

Calcular Pauta

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

(58)

Calcular Pauta

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

(59)

Calcular Pauta

l  Testar a leitura das novas notas

octave:11> lelistanotas('listagem.txt') ans = 60133 3.30 1.60 7.40 7.00 60136 4.90 0.00 0.00 10.40 60137 11.30 14.90 14.80 3.90 60145 6.30 16.40 16.30 6.80 60148 8.00 11.70 17.00 5.90 60157 8.40 2.10 16.60 4.60 60161 0.00 12.40 10.60 5.40 60166 15.30 7.60 18.00 14.30 60175 12.10 10.00 0.00 6.10 60182 7.20 5.20 0.60 6.20 60184 8.50 18.80 11.00 0.00 ... 60133 TP1:3.3 TP2:1.6 T1:7.4 T2:7 60136 TP1:4.9 T2:10.4 60137 TP1:11.3 TP2:14.9 T1:14.8 T2:3.9 ...

(60)

Calcular Pauta

l  Na realidade 60133 TP1:3.3 TP2:1.6 T1:7.4 T2:7 60136 TP1:4.9 T2:10.4 60137 TP1:11.3 TP2:14.9 T1:14.8 T2:3.9 ... octave:11> lelistanotas('listagem.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

(61)

Calcular Pauta

(62)

Calcular Pauta

l  Testar a leitura das notas

geradalista('listagem.txt','pautalista.txt') Aluno Nota 60133 Excluído 60136 Excluído 60137 Admitido 60145 10 60148 10 60157 Excluído 60161 Admitido 60166 14 60175 Admitido 60182 Excluído 60184 Admitido 60190 Admitido ... pautalista.txt 60133 TP1:3.3 TP2:1.6 T1:7.4 T2:7 60136 TP1:4.9 T2:10.4 60137 TP1:11.3 TP2:14.9 T1:14.8 T2:3.9 ...

(63)

Para estudar a aula de hoje

l  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

(64)

Referências

Documentos relacionados

Artigos Pele de tilápia, curativo biológico, uma alternativa para queimaduras • Lesões de pele e tratamento de feridas sob o escopo do enfermeiro: Relato de experiência

Aos 90 DAP verificou-se um peso seco das raízes e das folhas significativamente maior nas modalidades de fertilização com a concentração de azoto mineral total de 175 mg

O browser contacta a máquina com aquele endereço IP na porta 80 para o protocolo HTTP... World

•   Neste caso, se as strings não tiverem o mesmo comprimento, as mais pequenas são preenchidas com brancos.. Acesso

M ATERIAIS RESTAURADORES DEFINITIVOS : RESINAS COMPOSTAS FOTOPOLIMERIZÁVEIS  Usadas para todas as classes de cavidades  Sistema de polimerização física-luz.  Compostas

Com o fomento de políticas voltadas o contexto da Língua de Sinais nos cursos de Ensino Superior tem como fator de observação a prática docente e o uso de

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Tal será possível através do fornecimento de evidências de que a relação entre educação inclusiva e inclusão social é pertinente para a qualidade dos recursos de