4° Anno TEORIA 2. Allocazione dinamica della memoria | Page 22

10 : Allocazione dinamica della memoria Vers . 8.3 – Ottobre 2023
USO DEI PUNTATORI CON LA STRUTTURA DATI RECORD
Abbiamo già visto in precedenza come creare tipi di dato utente a partire da tipi di dato base grazie alla pseudoistruzione TIPO ( analoga nel linguaggio C l ’ istruzione typedef ).
Utilizziamo quanto appreso finora per realizzare un algoritmo che legga ( controllandone i valori ) e visualizzi poi a video un record allocato dinamicamente .
ALGORITMO Record _ Singolo _ Dinamico
MAXNUMCHAR 30 MINNUMMAGLIA 1 MAXNUMMAGLIA 99
TIPO Calciatore = RECORD Cognome : ARRAY [ MAXNUMCHAR ] DI CHAR Nome : ARRAY [ MAXNUMCHAR ] DI CHAR Maglia : INT
FINE RECORD
PROCEDURA main ( ) p : PUNTATORE A Calciatore INIZIO
/* Allocazione record DINAMICA */ Alloca ( p , DimensioneDi ( Calciatore ))
SE ( p ≠ NULL ) ALLORA
N . B . ATTENZIONE Del tutto analogo a : ( Lunghezza ( p�Cognome ) ≠ 0 ) AND ( Lunghezza ( p�Cognome ) ≤ MAXNUMCHAR )
/* Caricamento e controllo campi del record */ RIPETI
Leggi ((* p ). Cognome ) FINCHE ’ ( Lunghezza ((* p ). Cognome ) ≠ 0 ) AND ( Lunghezza ((* p ). Cognome ) ≤ MAXNUMCHAR )
RIPETI
Leggi ((* p ). Nome ) FINCHE ’ ( Lunghezza ((* p ). Nome ) ≠ 0 ) AND ( Lunghezza ((* p ). Nome ) ≤ MAXNUMCHAR )
RIPETI
Leggi ((* p ). Maglia ) FINCHE ’ ( (* p ). Maglia ) ≥ MINNUMMAGLIA ) AND ( (* p ). Maglia ) ≤ MAXNUMMAGLIA )
/* Visualizzazione campi del record */ Scrivi ((* p ). Cognome ) Scrivi ((* p ). Nome ) Scrivi ((* p ). Maglia )
/* Deallocazione record allocato DINAMICAMENTE */ Dealloca ( p )
ALTRIMENTI
Scrivi (" Allocazione non riuscita !") FINE SE
FINE
N . B . ATTENZIONE Del tutto analogo a : Scrivi ( p�Cognome ) Scrivi ( p�Nome ) Scrivi ( p�Maglia )
N . B . L ’ operatore � ( da non confondere con quello di assegnazione � ) può essere applicato ESCLUSIVAMENTE ai PUNTATORI AD UN TIPO RECORD
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 22