.
A
p.
Esercizio n. 147
S.
Dopo aver caricato in memoria centrale un array monodimensionale (vettore) di M elementi
numerici interi, individuare l’elemento maggiore ed il minore. Visualizzare il vettore iniziale ed
i risultati dell’elaborazione.
Analisi dei dati di input e di output
br
V( )
14 5 4 –2 10 11 15
1 10 5 7 8
1 4 7 0 0 –4 7 2
li
MIN
MAX
Esempi
N
7
5
8
Semantica
Dimensione del vettore (numero elementi)
Singolo elemento numerico del vettore
Elemento minore
Elemento maggiore
i
Output
MIN
–2
1
–4
se
Input
M
V( )
MAX
15
10
7
PROGRAMMA
PRINCIPALE
SOTTOPROGRAMMA
MIN - MAX
INIZIO
MIN - MAX
MAX = MAXINT* (–1)
ht
CARICA
©
INIZIO
Es
Flow-chart relativo all’algoritmo risolutivo
MIN - MAX
MIN = MAXINT
I = 1, N
ig
VISUALIZZA
yr
VISUALIZZA
MIN, MAX
C
op
FINE
VERO
V(I) > MAX
FALSO
MAX = V(I)
VERO
V(I) < MIN
MIN = V(I)
FINE
MIN - MAX
FALSO
Note
.
A
Esercizi sull’elaborazione di strutture dati vettoriali (array)
p.
Note
S.
Il sottoprogramma CARICA è lo stesso di quello presentato nell’esercizio n. 144.
Il sottoprogramma VISUALIZZA è lo stesso di quello presentato nell’esercizio n. 145.
Codifica in Turbo Pascal
PROGRAM Eser147;
i
USES WINCRT;
br
VAR
n,i,sw: INTEGER;
v:array[1..100] of REAL;
min,max: REAL;
li
{SOTTOPROGRAMMA CARICA}
PROCEDURE carica;
Es
se
BEGIN
WRITELN('Digita la dimensione del vettore ');
READLN(n);
FOR i:=1 to N DO
BEGIN
WRITELN('Digita l''elemento ',i,' del vettore ');
READLN(v[i]);
END;
END;
{SOTTOPROGRAMMA MIN _ MAX}
PROCEDURE min _ max;
ht
©
BEGIN
max:=maxint;
max:=max*(-1);
min:=MAXINT;
FOR i:=1 to N DO
BEGIN
IF v[i] > max THEN max:=v[i];
IF v[i] < min THEN min:=v[i];
END;
END;
BEGIN
END;
ig
{SOTTOPROGRAMMA VISUALIZZA}
PROCEDURE visualizza;
FOR i:=1 to N DO
WRITELN(v[i]:8:1);
{PROGRAMMA PRINCIPALE}
yr
BEGIN
op
CLRSCR;
WRITE('Esercizio 147 - Programma di calcolo del minimo e massimo in un vettore.');
WRITELN(' ');
carica;
min _ max;
visualizza;
WRITELN('Il maggiore è ',max:8:1);
WRITELN('Il minore è ',min:8:1);
END.
C
END.
.
A
Esercizio n. 147
Interfaccia
p.
Implementazione in Visual Basic
se
li
br
i
S.
Note sull’interfaccia:
Tipo
Form
CommandButton
Label
ht
Label
©
CommandButton
Textbox
ig
MAX
Label
Textbox
yr
MIN
op
CommandButton
C
Proprietà
Name
Name
Caption
TabIndex
Name
Caption
TabIndex
Name
Caption
Name
Caption
Name
Text
Locked
Name
Caption
Name
Text
Locked
Name
Caption
TabIndex
Name
Caption
TabIndex
Es
Rif.
CommandButton
Valore
Form_Es147
Cmd_Carvet
Caricamento Vettore
2
Cmd_MaxMin
Visualizzazione vettore, Maggiore e Minore
3
lblvo
lblmax
Maggiore:
txtmax
True
lblmin
Minore:
txtmin
True
CmdReset
Reset dati
6
CmdUscita
Uscita
7
.
A
Esercizi sull’elaborazione di strutture dati vettoriali (array)
p.
Codice:
S.
Private Sub Form_Load()
CmdReset.Enabled = False
Cmd_Carvet.Enabled = True
Cmd_Media.Enabled = False
End Sub
Es
li
se
Private Sub Cmd_MaxMin_Click()
Visual_Vettore n, v(), Strv
Max_Min_Vettore n, v(), max, min
Cmd_MaxMin.Enabled = False
lblvo.Caption = "Vettore: " & Strv
lblvo.Visible = True
txtmax.Text = CStr(max)
lblmax.Visible = True
txtmax.Visible = True
txtmin.Text = CStr(min)
lblmin.Visible = True
txtmin.Visible = True
CmdReset.Enabled = True
Cmd_MaxMin.Enabled = False
End Sub
br
i
Private Sub Cmd_Carvet_Click()
Carica_Vettore n, v()
Cmd_Carvet.Enabled = False
Cmd_Media.Enabled = True
End Sub
op
yr
ig
ht
©
Private Sub CmdReset_Click()
lblvo.Visible = False
lblvo.Caption = ""
Strv = ""
lblmax.Visible = False
txtmax.Text = ""
txtmax.Visible = False
lblmin.Visible = False
txtmin.Text = ""
txtmin.Visible = False
CmdReset.Enabled = False
Cmd_Carvet.Enabled = True
For i = 1 To n
v(i) = 0
Next i
End Sub
C
Private Sub CmdUscita_Click()
End
End Sub
.
A
Esercizio n. 147
p.
Modulo Vettore
li
br
i
S.
Dim i As Byte
Dim max, min As Integer
Dim Strv As String
Public Sub Carica_Vettore(n As Byte, v() As Integer)
Do
n = Val(InputBox("Digita la dimensione del vettore (max: 50) ",_
"Digitazione Dimensione Vettore"))
Loop Until n > 0 And n <= 50
ReDim v(1 To n)
For i = 1 To n
v(i) = Val(InputBox("Inserisci il " & CStr(i) & " °elemento",_
"Digitazione Elemento Vettore"))
Next i
End Sub
se
Public Sub Visual_Vettore(n As Byte, v() As Integer, Strv As String)
For i = 1 To n
Strv = Strv & v(i) & "; "
Next i
End Sub
©
Es
Public Sub Max_Min_Vettore(n As Byte, v() As Integer, max As Integer, _
min As Integer)
max = -32768
min = 32767
For i = 1 To n
If v(i) > max Then max = v(i)
If v(i) < min Then min = v(i)
Next i
End Sub
ht
Note al codice
Il programma in Visual Basic, conformemente al flow chart presentato, utilizza subroutine contenute
nel modulo vettore ed in particolare:
C
op
yr
ig
• Carica_vettore
• Visual_vettore
• Max_Min_vettore
Caricamento del vettore in memoria centrale
Visualizzazione del vettore nella stringa Strv
Determinazione del maggiore e del minore elemento del vettore
.
A
p.
Esercizio n. 147
S.
Dopo aver caricato in memoria centrale un array monodimensionale (vettore) di M elementi
numerici interi, individuare l’elemento maggiore ed il minore. Visualizzare il vettore iniziale ed
i risultati dell’elaborazione.
Analisi dei dati di input e di output
br
V( )
14 5 4 –2 10 11 15
1 10 5 7 8
1 4 7 0 0 –4 7 2
li
MIN
MAX
Esempi
N
7
5
8
Semantica
Dimensione del vettore (numero elementi)
Singolo elemento numerico del vettore
Elemento minore
Elemento maggiore
i
Output
MIN
–2
1
–4
se
Input
M
V( )
MAX
15
10
7
PROGRAMMA
PRINCIPALE
SOTTOPROGRAMMA
MIN - MAX
INIZIO
MIN - MAX
MAX = MAXINT* (–1)
ht
CARICA
©
INIZIO
Es
Flow-chart relativo all’algoritmo risolutivo
MIN - MAX
MIN = MAXINT
I = 1, N
ig
VISUALIZZA
yr
VISUALIZZA
MIN, MAX
C
op
FINE
VERO
V(I) > MAX
FALSO
MAX = V(I)
VERO
V(I) < MIN
MIN = V(I)
FINE
MIN - MAX
FALSO
Note
.
A
Esercizi sull’elaborazione di strutture dati vettoriali (array)
p.
Note
S.
Il sottoprogramma CARICA è lo stesso di quello presentato nell’esercizio n. 144.
Il sottoprogramma VISUALIZZA è lo stesso di quello presentato nell’esercizio n. 145.
Codifica in Turbo Pascal
PROGRAM Eser147;
i
USES WINCRT;
br
VAR
n,i,sw: INTEGER;
v:array[1..100] of REAL;
min,max: REAL;
li
{SOTTOPROGRAMMA CARICA}
PROCEDURE carica;
Es
se
BEGIN
WRITELN('Digita la dimensione del vettore ');
READLN(n);
FOR i:=1 to N DO
BEGIN
WRITELN('Digita l''elemento ',i,' del vettore ');
READLN(v[i]);
END;
END;
{SOTTOPROGRAMMA MIN _ MAX}
PROCEDURE min _ max;
ht
©
BEGIN
max:=maxint;
max:=max*(-1);
min:=MAXINT;
FOR i:=1 to N DO
BEGIN
IF v[i] > max THEN max:=v[i];
IF v[i] < min THEN min:=v[i];
END;
END;
BEGIN
END;
ig
{SOTTOPROGRAMMA VISUALIZZA}
PROCEDURE visualizza;
FOR i:=1 to N DO
WRITELN(v[i]:8:1);
{PROGRAMMA PRINCIPALE}
yr
BEGIN
op
CLRSCR;
WRITE('Esercizio 147 - Programma di calcolo del minimo e massimo in un vettore.');
WRITELN(' ');
carica;
min _ max;
visualizza;
WRITELN('Il maggiore è ',max:8:1);
WRITELN('Il minore è ',min:8:1);
END.
C
END.
.
A
p.
Esercizio n. 147
S.
Dopo aver caricato in memoria centrale un array monodimensionale (vettore) di M elementi
numerici interi, individuare l’elemento maggiore ed il minore. Visualizzare il vettore iniziale ed
i risultati dell’elaborazione.
Analisi dei dati di input e di output
br
V( )
14 5 4 –2 10 11 15
1 10 5 7 8
1 4 7 0 0 –4 7 2
li
MIN
MAX
Esempi
N
7
5
8
Semantica
Dimensione del vettore (numero elementi)
Singolo elemento numerico del vettore
Elemento minore
Elemento maggiore
i
Output
MIN
–2
1
–4
se
Input
M
V( )
MAX
15
10
7
PROGRAMMA
PRINCIPALE
SOTTOPROGRAMMA
MIN - MAX
INIZIO
MIN - MAX
MAX = MAXINT* (–1)
ht
CARICA
©
INIZIO
Es
Flow-chart relativo all’algoritmo risolutivo
MIN - MAX
MIN = MAXINT
I = 1, N
ig
VISUALIZZA
yr
VISUALIZZA
MIN, MAX
C
op
FINE
VERO
V(I) > MAX
FALSO
MAX = V(I)
VERO
V(I) < MIN
MIN = V(I)
FINE
MIN - MAX
FALSO
Note
.
A
Esercizi sull’elaborazione di strutture dati vettoriali (array)
p.
Note
S.
Il sottoprogramma CARICA è lo stesso di quello presentato nell’esercizio n. 144.
Il sottoprogramma VISUALIZZA è lo stesso di quello presentato nell’esercizio n. 145.
Codifica in Turbo Pascal
PROGRAM Eser147;
i
USES WINCRT;
br
VAR
n,i,sw: INTEGER;
v:array[1..100] of REAL;
min,max: REAL;
li
{SOTTOPROGRAMMA CARICA}
PROCEDURE carica;
Es
se
BEGIN
WRITELN('Digita la dimensione del vettore ');
READLN(n);
FOR i:=1 to N DO
BEGIN
WRITELN('Digita l''elemento ',i,' del vettore ');
READLN(v[i]);
END;
END;
{SOTTOPROGRAMMA MIN _ MAX}
PROCEDURE min _ max;
ht
©
BEGIN
max:=maxint;
max:=max*(-1);
min:=MAXINT;
FOR i:=1 to N DO
BEGIN
IF v[i] > max THEN max:=v[i];
IF v[i] < min THEN min:=v[i];
END;
END;
BEGIN
END;
ig
{SOTTOPROGRAMMA VISUALIZZA}
PROCEDURE visualizza;
FOR i:=1 to N DO
WRITELN(v[i]:8:1);
{PROGRAMMA PRINCIPALE}
yr
BEGIN
op
CLRSCR;
WRITE('Esercizio 147 - Programma di calcolo del minimo e massimo in un vettore.');
WRITELN(' ');
carica;
min _ max;
visualizza;
WRITELN('Il maggiore è ',max:8:1);
WRITELN('Il minore è ',min:8:1);
END.
C
END.
.
A
Esercizio n. 147
Interfaccia
p.
Implementazione in Visual Basic
se
li
br
i
S.
Note sull’interfaccia:
Tipo
Form
CommandButton
Label
ht
Label
©
CommandButton
Textbox
ig
MAX
Label
Textbox
yr
MIN
op
CommandButton
C
Proprietà
Name
Name
Caption
TabIndex
Name
Caption
TabIndex
Name
Caption
Name
Caption
Name
Text
Locked
Name
Caption
Name
Text
Locked
Name
Caption
TabIndex
Name
Caption
TabIndex
Es
Rif.
CommandButton
Valore
Form_Es147
Cmd_Carvet
Caricamento Vettore
2
Cmd_MaxMin
Visualizzazione vettore, Maggiore e Minore
3
lblvo
lblmax
Maggiore:
txtmax
True
lblmin
Minore:
txtmin
True
CmdReset
Reset dati
6
CmdUscita
Uscita
7
.
A
Esercizi sull’elaborazione di strutture dati vettoriali (array)
p.
Codice:
S.
Private Sub Form_Load()
CmdReset.Enabled = False
Cmd_Carvet.Enabled = True
Cmd_Media.Enabled = False
End Sub
Es
li
se
Private Sub Cmd_MaxMin_Click()
Visual_Vettore n, v(), Strv
Max_Min_Vettore n, v(), max, min
Cmd_MaxMin.Enabled = False
lblvo.Caption = "Vettore: " & Strv
lblvo.Visible = True
txtmax.Text = CStr(max)
lblmax.Visible = True
txtmax.Visible = True
txtmin.Text = CStr(min)
lblmin.Visible = True
txtmin.Visible = True
CmdReset.Enabled = True
Cmd_MaxMin.Enabled = False
End Sub
br
i
Private Sub Cmd_Carvet_Click()
Carica_Vettore n, v()
Cmd_Carvet.Enabled = False
Cmd_Media.Enabled = True
End Sub
op
yr
ig
ht
©
Private Sub CmdReset_Click()
lblvo.Visible = False
lblvo.Caption = ""
Strv = ""
lblmax.Visible = False
txtmax.Text = ""
txtmax.Visible = False
lblmin.Visible = False
txtmin.Text = ""
txtmin.Visible = False
CmdReset.Enabled = False
Cmd_Carvet.Enabled = True
For i = 1 To n
v(i) = 0
Next i
End Sub
C
Private Sub CmdUscita_Click()
End
End Sub
.
A
Esercizio n. 147
p.
Modulo Vettore
li
br
i
S.
Dim i As Byte
Dim max, min As Integer
Dim Strv As String
Public Sub Carica_Vettore(n As Byte, v() As Integer)
Do
n = Val(InputBox("Digita la dimensione del vettore (max: 50) ",_
"Digitazione Dimensione Vettore"))
Loop Until n > 0 And n <= 50
ReDim v(1 To n)
For i = 1 To n
v(i) = Val(InputBox("Inserisci il " & CStr(i) & " °elemento",_
"Digitazione Elemento Vettore"))
Next i
End Sub
se
Public Sub Visual_Vettore(n As Byte, v() As Integer, Strv As String)
For i = 1 To n
Strv = Strv & v(i) & "; "
Next i
End Sub
©
Es
Public Sub Max_Min_Vettore(n As Byte, v() As Integer, max As Integer, _
min As Integer)
max = -32768
min = 32767
For i = 1 To n
If v(i) > max Then max = v(i)
If v(i) < min Then min = v(i)
Next i
End Sub
ht
Note al codice
Il programma in Visual Basic, conformemente al flow chart presentato, utilizza subroutine contenute
nel modulo vettore ed in particolare:
C
op
yr
ig
• Carica_vettore
• Visual_vettore
• Max_Min_vettore
Caricamento del vettore in memoria centrale
Visualizzazione del vettore nella stringa Strv
Determinazione del maggiore e del minore elemento del vettore