Algoritmia
paginas=REG[ n_paginas:inteiro; c_utente:inteiro;
]
m_obras=REG[ n_vezes:inteiro; c_obra:inteiro;
]
endereco=REG[ rua: array[0..50] de caracter; numero: inteiro; localidade: arry[0..50] de caracter; cod_postal: inteiro;
]
emprestimo=REG[codigo_emprestimo:inteiro; data_emprestimo:inteiro; codigo_obra:inteiro; pg_emprestimo:inteiro; ]utente=REG[codigo_utente:inteiro;nome:arry[0..40] de caracter;morada:endereco;data_nascimento:inteiro;bi:inteiro;nif:inteiro;limite_emprestimo:inteiro;lista_emprestimo=seq[0..10]:emprestimo;]obras=REG[codigo_obra:inteiro;titulo:caractereditora:arry[0..40] de caracter;data_edicao:inteiro;local_edicao:arry[0..40] de caracter;isbn:inteiro;numero_pag:inteiro;tipo:arry[0..40] de caracter;]função ler_ficheiro() ler_ficheiro(“basedados.bin”); função gravar_ficheiro() gravar_ficheiro(”basedados.bin”);
Função data_sistema():inteiro datal:inteiro; data<--data_do_sistema; data_sistema<--data; Função conta_digitos(numero:inteiro):inteiroresto,digitos:inteiro;digitos<--0;resto<--numero;enq(resto<>0)digitos<--digitos+1; resto<--resto/10;fenqse(digitos=0)conta_digitos<--digitos;senãoconta_digitos<--digitos;fseFunção valida_data (data:inteiro):inteiro
ano,mes,dia,data_atual,digitos:inteiro; data_atual<--data_sistema; digitos<--conta_digitos(data);
ano<---data/10000; mes<--(data_atual-ano*10000)/100; dia<--data_atual-(ano*10000+mes*100);
se (digitos<>8Vano<ano_atual-120 V data>data_atual) validar_data<--0; senão se(mes<1 V mes>12) validar_data<--0; senão se(dia<0Vdia>31) validar_data<--0; senão se(mes=4Vmes=6Vmes=9Vmes=11 ^dia>30 )
validar_data<--0;