Το πρόβλημα της Αριθμομηχανής (3η έκδοση)

Να γράψετε πρόγραμμα το οποίο να διαβάζει δύο αριθμούς και το είδος της πράξης που θα εκτελέσει (πρόσθεση, αφαίρεση, πολλαπλασιασμό, διαίρεση). Να χρησιμοποιήσετε διαδικασίες (χωρίς παραμέτρους) για την εισαγωγή των δεδομένων, την επιλογή της πράξης, τον υπολογισμό και την εκτύπωση του αποτελέσματος. Να χρησιμοποιήσετε ένα μηχανισμό ελέγχου, ώστε οι διαδικασίες να επαναλαμβάνονται όσες φορές θέλουμε.

(Άσκηση 2 σελίδα 124 από το σχ. βιβλίο του μαθήματος)

program Exer1202;

{ Άσκηση 2 - Σελίδα 124
* Χρήση καθολικών (global) μεταβλητών
* Καθολικές ονομάζονται οι μεταβλητές των οποίων η εμβέλεια (scope)
* καλύπτει ολόκληρο το πρόγραμμα και ισχύουν καθ' όλη τη διάρκεια
* εκτέλεσής του. }

var
  Choice: Integer;
  Num_1, Num_2, Result: Real;

procedure Input;
begin
  Writeln('+--------------------+');
  Writeln('| ~~ΜΕΝΟΥ ΕΠΙΛΟΓΩΝ~~ |');
  Writeln('+--------------------+');
  Writeln('| 1. Πρόσθεση        |');
  Writeln('| 2. Αφαίρεση        |');
  Writeln('| 3. Πολλαπλασιασμός |');
  Writeln('| 4. Διαίρεση        |');
  Writeln('+--------------------+');
  Writeln('| 0. Έξοδος          |');
  Writeln('+--------------------+');
  Write('Δώστε την επιλογή σας (1|2|3|4|0): ');
  Readln(Choice);

  if (Choice >= 1) and (Choice <= 4) then
  begin
    Write('Δώστε τους δύο αριθμούς: ');
    Readln(Num_1, Num_2);
  end;
end; 

procedure Process;
begin
  case Choice of
    1: Result := Num_1 + Num_2;
    2: Result := Num_1 - Num_2;
    3: Result := Num_1 * Num_2;
    4: if Num_2 <> 0 then
         Result := Num_1 / Num_2
       else
         Choice := -1; { Κωδικός λάθους: Διαίρεση με το 0 }
  else
    if Choice <> 0 then
      Choice := -2; { Κωδικός λάθους: Λάθος κωδικός πράξης }
  { else Choice = 0 Κωδικός εξόδου }
  end;
end; 

procedure Output;
begin
  if Choice = 0 then
    Writeln('Bye!')
  else if Choice = -1 then
    Writeln('(!) Δεν μπορώ να κάνω διαίρεση με 0')
  else if Choice = -2 then
    Writeln('(!) Δώσατε λάθος κωδικό πράξης')
  else
    Writeln('Αποτέλεσμα: ', Result:8:2);
end; 

begin
  repeat
    Input;
    Process;
    Output;
  until Choice = 0;
end.
Advertisements

Posted on 10/03/2012, in Γλώσσα Pascal, Δομημένος Προγραμματισμός and tagged , , , , , , , , . Bookmark the permalink. Σχολιάστε.

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s

Αρέσει σε %d bloggers: