Vettori e record

Analizza e commenta le singole istruzioni seguenti

A.x:=(A.y = A.z);

Assegna ad A.x il risultato del confronto tra A.y e A.z, x è boolean e y e z sono dello stesso tipo.

A.V[3]:=A.V[1]+A.V[2];

Assegna a V[3] il valore della somma tra V[1] e V[2], V (vettore) è un campo di A.

V[W[i]]:=V[W[i]+1];

Assegna alla posizione W[i] di V il valore contenuto alla posizione W[i]+1 di V, W è un vettore di interi.

Dichiara (e commenta) un tipo di dato per immagazzinare

i compleanni dei tuoi conoscenti

Const Namici=30;Type Compleanno=Record Nome: String[15]; Data: String[8]; end; I_compleanni=Array[1..Namici] of Compleanno;

i tuoi impegni mensili

Const Nimpegni=100;Type Impegno=Record Descr: String[15]; Data_Ora: String[14]; end; Gli_impegni=Array[1..Nimpegni] of Impegno;

oppure

Const Ngiorni=31; Nimpegni=12; {in un giorno}Type Impegno=Record Descr: String[15]; Orario: String[5]; end; Gli_impegni=Array[1..Ngiorni, 1..Nimpegni] of Impegno;

La data e l'ora potrebbero essere trattati come ADT...

Progetta (analisi con esempi, algoritmo risolutivo, interfaccia) e realizza (dichiarazione dei tipi di dato, codifica commentata) un sottoprogramma risolutivo per ognuno dei problemi

Dati due vettori di reali determinare a quali posizioni contengono (o meno) gli stessi valori.

Const Nmax=10;Type VETT_REAL=Array[1..Nmax] of Real; VETT_BOOL=Array[1..Nmax] of Boolean;

{Utilizzo un vettore di Boolean (VR) per immagazzinare le Nmax risposte...}

Procedure Confronta(V1, V2: VETT_REAL; Var VR: VETT_BOOL);Var i: Integer;Begin For i:=1 To Nmax Do VR[i]:=(V1[i] = V2[i]);End;

Data la sequenza dei risultati di una squadra di calcio (3-2, 2-0, 0-1, ...) si vuole calcolare la differenza reti (2).

Const Npartite=34; {campionato a 18 squadre...}Type UNRISULTATO=record GiocatoCon: String[15]; {facoltativo...} GolFatti, GolSubiti: Byte; End; IRISULTATI=Array[1..Npartite] of UNRISULTATO;

Function DifferenzaReti(VR: IRISULTATI; Ngiocate: Byte): Integer;Var i, Risp: Integer;Begin Risp:=0; For i:=1 To Ngiocate Do Risp:=Risp+(VR[i].GolFatti-VR[i].GolSubiti); DifferenzaReti:=Risp;End;

oppure

... Fatti:=0; Subiti:=0;... Fatti:=Fatti+VR[i].GolFatti; Subiti:=Subiti+VR[i].GolSubiti;...DifferenzaReti:=Fatti-Subiti;

- ApPuNtIdIuNiNfOrMaTiCo