Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Vettori...
Forum - Pascal - Vettori...

Avatar
lucca (Normal User)
Pro


Messaggi: 84
Iscritto: 03/12/2009

Segnala al moderatore
Postato alle 17:45
Giovedì, 03/12/2009
Ho appena iniziato il mio percorso di informatica all'ITIS,
abbiamo cominciato a parlare  dei vettori array e qui mi son bloccato!!!
Non riesco a capirli!!!
vi do un esercizio che non riesco a svolgere anche se a voi sarà facile:
riempire il vettore così:
[0,0,1,1,2,2,3,3,4,4,5,5...ecc].

Aspetto con ansia un vostro aiuto!!
Grazie.

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 21:52
Giovedì, 03/12/2009
Testo quotato

Postato originariamente da lucca:

Ho appena iniziato il mio percorso di informatica all'ITIS,
abbiamo cominciato a parlare  dei vettori array e qui mi son bloccato!!!
Non riesco a capirli!!!
vi do un esercizio che non riesco a svolgere anche se a voi sarà facile:
riempire il vettore così:
[0,0,1,1,2,2,3,3,4,4,5,5...ecc].

Aspetto con ansia un vostro aiuto!!
Grazie.  



ciao...

beh... i vettori non sono altro che dei contenitori di variabili.
Prima di fare i vettori avrete visto che esistono diversi tipi di variabili no??
ad esempio integer, real, boolean ecc

ecco, quindi quando a te ti serve un elemento da trattare, puoi dichiarare una variabile di un certo tipo che ti serve e poi lavorarci, ma se per esempio a te servissero molti più elementi?? come potresti fare???
ecco che entrano in gioco i vettori..
perché non sono altro che dei contenitori di variabili che praticamente al loro interno contengono tanti elementi diversi di un certo tipo

un esempio pratico è:

tu sei uno studente, giusto?

ecco... tu studente rappresenti una singola variabile, mentre la classe in cui stai rappresenta il vettore perché la tua classe è composta, oltre da te, da tanti altri studenti (i tuoi compagni di classe appunto) ognuno raggiungibile tramite il proprio nome e cognome..

nel caso dei vettori in pascal, tu puoi accedere ai diversi elementi tramite un indice, che in questo caso è rappresentato dal nome e cognome

e quando i professori fanno l'appello, non fanno altro che scandire ogni elemento del vettore come in pascal si fa usando un ciclo...

per gestire i vettori si usa solitamente il ciclo for poichè anche questo ciclo ha bisogno di un indice che sale di volta in volta.. e tu lo puoi sfruttare per scandire tutti gli elementi di un array

detto questo, sei in grado di fare da solo l'esercizio o vuoi che ti dia una dritta?

Ultima modifica effettuata da Anonymous il 09/12/2009 alle 21:47
PM Quote
Avatar
lucca (Normal User)
Pro


Messaggi: 84
Iscritto: 03/12/2009

Segnala al moderatore
Postato alle 14:41
Venerdì, 04/12/2009
grazie per la tua risposta,
provo a fare da solo l'esercizio concentrandomi molto di più e poi ti inserisco l'esercizio per vedere se è giusto.
grazie ciao

PM Quote
Avatar
lucca (Normal User)
Pro


Messaggi: 84
Iscritto: 03/12/2009

Segnala al moderatore
Postato alle 15:46
Martedì, 08/12/2009
ragazzi non riesco proprio mi potete dare un aiutino????

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 16:14
Martedì, 08/12/2009
ok... allora ti spiego io

allora.. prima di tutto devi partire con l'idea di quello che devi fare... per poi sapere quello che ti serve...

quindi..
tu devi riuscire a riempire un vettore (dunque ti serve un vettore e allora per forza anche un ciclo per scandire gli elementi), con una determinata sequenza data...

analizzando la sequenza ti accorgi che praticamente quando la posizione dell'array è dispari, allora l'elemento da inserire viene copiato dal precendente... giusto??

benissimo, si inizia quindi con il dichiarare le variabili... abbiamo detto serve un vettore e allora:
Codice sorgente - presumibilmente Plain Text

  1. v:array[0..n-1]of integer;



dove n sarà un numero che indica quanto deve essere lungo il vettore, e glie lo si darà a priori come costante

N.B. c'è n-1 perché se guardi bene facciamo partire il vettore da 0, dunque se noi vogliamo che abbia dimensione n, se parte da 0, dovrà arrivare a n-1.. non so se mi son spiegato..

cmq
detto questo, siccome n abbiamo detto che deve essere una costante, prima del vettore, dobbiamo dichiarare anche questo e avremo dunque:
Codice sorgente - presumibilmente Pascal

  1. const n = 20;
  2. var v:array[0..n-1]of integer;



perfetto... ma non è finito...

abbiamo anche parlato di ciclo, e per gli array e vettori, il più adatto è il for.. ma cmq sia ci servirà quindi anche un indice i per poter usare nel for..
e poi servirà un contatore che servirà a contare tutte le volte che incontriamo un indice pari...
quindi la dichiarazione delle variabili sarà in fine cosi:

Codice sorgente - presumibilmente Pascal

  1. const n = 20;
  2. var i, conta:integer; v:array[0..n-1]of integer;


perfetto...
ora buttiamo giù il codice...

Codice sorgente - presumibilmente Delphi

  1. conta:=-1;
  2. for i:=0 to n-1 do
  3. begin
  4.   if not odd(i) then
  5.      conta:=conta+1;
  6.  
  7. v[i] := conta;
  8. writeln(v[i]);
  9. end;
  10. readln()



cosa fa?? praticamente inizia con impostare a -1 il valore del contatore
dopodiché parte il ciclo for che per ogni i che va da 0 a n-1 controlla se quella i è pari o dispari (la funzione odd(numero) restituisce true se il numero è dispari, quindi not(numero) ti dice se il numero è pari)

quindi ogni volta che incontra un indice pari, incrementa di 1 la variabile conta

e dopo la inserisce nel vettore

puoi notare che se l'indice è dispari, dentro all'if non ci entra mai, e quindi inserirà dentro al vettore la variabile conta non aggiornata, che sarà quindi uguale a quella precendete...

in definitiva il programma dovrebeb essere cosi:
Codice sorgente - presumibilmente Delphi

  1. program prova;
  2. uses crt;
  3. const n = 20;
  4. var i, conta:integer; v:array[0..n-1]of integer;
  5. begin
  6. conta:=-1;
  7. for i:=0 to n-1 do
  8. begin
  9.   if not odd(i) then
  10.      conta:=conta+1;
  11.  
  12. v[i] := conta;
  13. writeln(v[i]);
  14. end;
  15. readln()
  16. end.


Ultima modifica effettuata da Anonymous il 09/12/2009 alle 21:49
PM Quote
Avatar
lucca (Normal User)
Pro


Messaggi: 84
Iscritto: 03/12/2009

Segnala al moderatore
Postato alle 20:37
Martedì, 08/12/2009
ok grazie:k:

Ultima modifica effettuata da lucca il 08/12/2009 alle 20:37
PM Quote