PDA

View Full Version : [Pascal] Non capisco procedure/function e array


Il Razziatore
09-10-2007, 13:36
Allora, ritorno con un altro noioso topic, ma se non m'illumina chi ne sa già qualcosa di stè cose, rimango piantato.

Non riesco a capire l'utilità/come vanno utilizzati le "scritte" messe nel titolo.
Al momento uso questa (http://lagash.dft.unipa.it/AL/al208.htm) (e questa (http://lagash.dft.unipa.it/AL/al209.htm)) guida.
Ho guardato anche in quella su www.pierotofy.it, al momento è "sparita", comunque sia non mi era servita a molto, troppo ermetica e "taccagna" di esempi.
Quindi qualcuno mi può chiarificare QUANDO (e non come!) vanno utilizzate queste funzioni (o come si chiamano)? Meglio se con esempi.

Lo so che la mia richiesta è un pò generica, ma oltre a non sapere come esporre il mio problema in maniera migliore, è inutile che continui ad andare avanti se tanto queste cose non le ho capite.

Spero qualcuno mi possa aiutare :D

Grazie ciao

cdimauro
09-10-2007, 19:25
A quanto pare sei proprio agli inizi. :D

Se utilizzi Delphi o Turbo Pascal ti consiglio di leggere la guida al linguaggio che è estremamente chiara e che affronta passo passo i concetti della programmazione con questi linguaggi (Delphi è il successore di TP).

Comunque, in estrema sintesi:
- gli array si usano quando hai l'esigenza di memorizzare una sequenza di dati dello stesso tipo (es: 10 numeri interi, 100 numeri reali, ecc.);
- le procedure si usano quando hai l'esigenza di "raggruppare" una serie di istruzioni che eseguono un certo lavoro, e che vengono ripetutamente utilizzate all'interno del programma (es: se hai l'esigenza di visualizzare più volte una scritta centrata nello schermo);
- le funzioni sono molto simili alla procedure, ma oltre a eseguire una serie di istruzioni, restituiscono anche un valore (es: in un gestionale potrei avere l'esigenza di calcolare più volte l'iva di un prodotto; in tal caso racchiudo tutto il calcolo dentro una funzione).

Questo a grandissime linee, giusto per darti un'idea. Non ho voluto aggiungere altro per non complicarti la vita.

Il Razziatore
13-10-2007, 15:49
Grazie mille, sei stato molto chiaro, adesso penso di aver capito.

Una cosa riguardante gli array, ho fatto questa prova:
program prvarr;
uses crt;
var nome:array[1..10] of string[10];
i:byte;
sc,sc1:char;
begin
repeat
clrscr;
writeln('Inserisci nome');
readln(nome[i]);
writeln('Vuoi inserirne un altro? s/n');
readln(sc);
until sc='n';
repeat
clrscr;
writeln('Inserisci un numero per visualizzare il nome corrispettivo');
readln(i);
writeln('Il numer ',i,' corrisponde al nome ',nome[i]);
writeln('Vuoi visualizzare un altro nome? s/n');
readln(sc1);
until sc1='n';
end.

ma non capisco perchè non mi stampi il nome :stordita:

EDIT: risolto. Non avevo messo i:=1 e poi i:=i+1.

Qwertid
13-10-2007, 18:08
Ma perchè i è dichiarato come byte e non come integer?

Il Razziatore
13-10-2007, 19:04
Ma perchè i è dichiarato come byte e non come integer?:confused:
Bho, gli va bene comunque :asd:

Adesso c'ho un altro problema:
program ass;
uses windows;
var file1,file2:file;
var nome1,nome2,stringa:string;
begin
writeln('Inserire il nome di un file: ');
readln(nome1);
writeln('Inserire il nome del file copia: ');
readln(nome2);
Assign(file1,nome1);
Assign(file2,nome2);
Reset(file1);
Rewrite(file2);
repeat
readln(file1,stringa);
writeln(file2,stringa);
until eof(file1);
Close(file1);
Close(file2);
writeln('Copia completata!');
readln;
end.

Mi da questi errori
untitled1.pas(15,26) Error: Can't use readln or writeln on typed file
untitled1.pas(16,27) Error: Can't use readln or writeln on typed file

cdimauro
13-10-2007, 20:01
Stai usando Delphi presumo: metti AssignFile e CloseFile al posto di Assign e Close. ;)

P.S. Byte va bene perché può rappresentare numeri da 0 a 255, e il tuo vettore al più ne conterrebbe 10. :)

Il Razziatore
13-10-2007, 20:40
Sinceramente non so cosa uso... se intendi come programma allora Dev-Pascal.

Satine
16-10-2007, 17:47
Ciao a tutti!^^
Anche io uso il dev-pascal e a scuola stiamo facendo proprio le procedure e gli array...:muro: devo ammettere che non è che ho capito molto, :mc: quindi spero possiate aiutarmi!^^(spero di aver scelto la sezione e il topic giusto..)

Se potete, vorrei sapere quando devo usare la var all'interno dei paramentri formali.
Poi, se ad esempio ho un programma che prende da tastiera un array e lo visualizza, devo usare una function o una procedure per avere il massimo valore? e per calcolare la media?

Vi ringrazio