Realizza l'intestazione commentata per un ipotetico sottoprogramma risolutivo per ognuno dei seguenti problemi

  1. Calcolare perimetro e area di un triangolo equilatero
Procedure P_e_A(LATO: Real; Var PERIMETRO, AREA: Real);

Un parametro in ingresso (LATO) reale, due parametri in uscita (PERIMETRO, AREA) reali.

  1. Calcolare la distanza ASCII tra due caratteri
Function D_ASCII(Ch1, Ch2: Char): Integer;

Due caratteri IN, un risultato intero...

  1. Individuare il minimo, il massimo e la media tra tre numeri reali
Procedure M_M_M(X1, X2, X3: Real; Var Min, Max, Med: Real);

Tre reali IN, tre reali OUT...

  1. Disegnare un cerchio
Procedure CERCHIO(XC, YC, RAGGIO: Real);

Le coordinate del centro e la misura del raggio IN...

  1. Ordinare i valori di 5 variabili intere
    Procedure ORDINA5(Var X1, X2, X3, X4, X5: Real);

    Cinque reali IN/OUT...

Dato il seguente codice, commentalo riga per riga

Function XXX(A, B: Longint): Longint; {Funzione intera con 2 parametri IN interi}
Var R: Longint;                       {Variabile locale intera}
Begin                                 {Inizio codice sottoprogramma}
   Repeat                             {Istruzione di controllo di ciclo}
      R:=A Mod B;                     {Assegna a R il resto della divisione intera tra A e B}
      A:=B;                           {Assegna il valore di B a A}
      B:=R;                           {Assegna il valore di R a B}
   Until(R = 0);                      {Finisce se R è uguale a 0}
   XXX:=A;                            {La funzione assume il valore di A}
End;                                  {Fine codice sottoprogramma}

e fai due esempi numerici significativi del suo funzionamento

RABXXX
104
242
020
2
RABXXX
1014
101410
4104
242
020
2

Progetta e realizza un sottoprogramma in linguaggio TP6 che calcoli il prodotto tra due valori interi, immaginando di possedere solamente le operazioni di addizione e sottrazione

Analisi, esempio, algoritmo: seguendo il metodo già studiato per la somma iterativa possiamo pensare di svolgere l'operazione nel modo seguente: siano A e B i parametri in ingresso, incrementiamo RISPOSTA con il valore di A e sottraiamo 1 al valore di B finché B non assume il valore 0 (RISPOSTA=A+A+...+A, B volte)

RISPABPROD
0103
10102
20101
30100
30

(Ipotesi: B>=0)

Function PRODOTTO(A, B: Longint): Longint;
Var RISPOSTA: Longint;
Begin
   RISPOSTA:=0;
   while(B > 0) do
      Begin
         RISPOSTA:=RISPOSTA+A;
         B:=B-1;
      End;
   PRODOTTO:=RISPOSTA;
End;

- ApPuNtIdIuNiNfOrMaTiCo