Πανεπιστημιο Κρητης
Τμημα Επιστημης και Τεχνολογιας Υλικων

Ηλεκτρονικοί Υπολογιστές 1 (ETY114)

Εργαστήριο 1

Ασκήσεις

  1. Το παρακάτω πρόγραμμα Fortran 95 υπολογίζει και τυπώνει στην οθόνη το άθροισμα δύο ακεραίων αριθμών που διαβάζει από το πληκτρολόγιο. Γράψτε το (όχι με copy-paste!) στο αρχείο "athroisi.f90", μεταγλωττίστε το και εκτελέστε το:
    
    PROGRAM athroisi
    IMPLICIT NONE
    
    INTEGER :: a, b     
    INTEGER :: c        
    
    PRINT *, "Dose dyo akeraious"
    READ *, a,b      
    
    c = a + b
    
    PRINT *, "To athroisma tous einai: "
    PRINT *, c       
    
    END PROGRAM athroisi
    
  2. Αντιγράψτε το αρχείο με τον κώδικα της προηγούμενης άσκησης σε άλλο, με όνομα της επιλογής σας. Τροποποιήστε το νέο αρχείο ώστε να υπολογίζει το πηλίκο και το υπόλοιπο της διαίρεσης δύο ακέραιων αριθμών που θα διαβάζει από το πληκτρολόγιο.

    Απάντηση: Κώδικας

  3. Τρεις ακέραιοι αριθμοί a, b, c που ικανοποιούν τη σχέση a²+b²=c² αποτελούν μία Πυθαγόρεια τριάδα.

    Μπορούμε να παραγάγουμε μια τέτοια τριάδα από δύο οποιουσδήποτε ακέραιους m,n με m > n, σχηματίζοντας τους αριθμούς a=m²-n², b=2mn, c=m²+n².

    Γράψτε ένα πρόγραμμα που θα διαβάζει δύο ακεραίους m,n, και θα τυπώνει την αντίστοιχη Πυθαγόρεια τριάδα (τα a,b,c).

    Απάντηση: Κώδικας

  4. Να γραφεί κώδικας ο οποίος θα δέχεται έναν τριψήφιο ακέραιο αριθμό και θα εμφανίζει το άθροισμα των ψηφίων του.

    Υπόδειξη: βρείτε το πηλίκο και το υπόλοιπο της διαίρεσης ενός τριψήφιου αριθμού με το 10. Τι παρατηρείτε;

    Απάντηση: Κώδικας

  5. Να γραφεί κώδικας ο οποίος θα δέχεται ένα χρονικό διάστημα σε δευτερόλεπτα και θα εμφανίζει τις μέρες, τις ώρες, τα λεπτά και τα υπόλοιπα δευτερόλεπτα στα οποία αντιστοιχεί.

    Για παράδειγμα: εάν δώσουμε ως είσοδο 200000, θα πρέπει να εμφανιστεί στην οθόνη το μήνυμα:

    2 days, 7 hours, 33 min & 20 seconds

    Απάντηση: Κώδικας

  6. Γράψτε κώδικα που
    1. να διαβάζει τιμές σε δύο ακέραιες μεταβλητές,
    2. να εναλλάσσει τις τιμές αυτών των μεταβλητών,
    3. να τυπώνει στην οθόνη τις νέες τους τιμές.
    Επομένως, συμπληρώστε τον κώδικα
    
    PROGRAM swap
    
      IMPLICIT NONE
      INTEGER :: a, b     
    
      READ *, a,b
    
      ........
    
      PRINT *, a,b
    END PROGRAM swap
    

    Υπόδειξη: η προφανής λύση a=b; b=a δεν είναι σωστή (γιατί;). Τι πρέπει να κάνουμε για να τη διορθώσουμε;

    Απάντηση: Κώδικας

  7. Ρομπότ με σταθερό μήκος βήματος καταφθάνει στον πλανήτη Άρη, για να περισυλλέξει πετρώματα. Κάθε βήμα του είναι 80 cm. Το ρομπότ διαθέτει μετρητή βημάτων. Διένυσε στον Άρη μία ευθεία από σημείο Α σε σημείο Β και ο μετρητής βημάτων καταμέτρησε Ν βήματα.

    Να γραφεί πρόγραμμα που:

    • να διαβάζει τον αριθμό Ν των βημάτων του ρομπότ,
    • να υπολογίζει και να τυπώνει την απόσταση ΑΒ που διανύθηκε σε cm,
    • να αναλύει και να τυπώνει αυτή την απόσταση σε km, m και cm.

    Για παράδειγμα αν τα βήματα είναι 1261 τότε να τυπώνει: απόσταση 100880 cm ή 1 km, 8 m, 80 cm.

    Απάντηση: Κώδικας

  8. Γράψτε κώδικα στον οποίο θα δηλώνετε μεταβλητές κατάλληλου τύπου και θα εκχωρείτε σε αυτές τους αριθμούς 10-2, 3/2, 2.3167895443. Τυπώστε τις τιμές των μεταβλητών. Είναι αυτές που αναμένετε;

    Απάντηση: Κώδικας

  9. Γράψτε κώδικα που να υπολογίζει τις παρακάτω εκφράσεις και να τυπώνει τις τιμές τους, αφού διαβάσει από τον χρήστη τους πραγματικούς αριθμούς x,y,z:
    1. d = x2+y2+z2
    2. d = x2/y + z
    3. d = 2.45(x+1.5) + 3.1(y+0.4) + 5.2 - z/2
    4. d = (12.8x + 5y) / (11.3 y + 4z)
    5. d = x2/3+y2/3+z2/3
    Αν δώσετε x=1.5, y=2.5, z=3.5 οι εκφράσεις πρέπει να έχουν τις τιμές: 20.75, 4.4, 19.79, 0.75029585798816578, 5.4576045924538645.

    Απάντηση: Κώδικας