Εργαστήριο 1 - Εισαγωγή

Προθεσμία τελικής παράδοσης: Κυριακή 8/3, 23:59.

Καλώς ήρθατε στο πρώτο εργαστήριο του μαθήματος Δομές Δεδομένων και Τεχνικές Προγραμματισμού! Για οποιαδήποτε απορία προκύψει κατα την διάρκεια του εργαστηρίου, επικοινωνήστε με τον υπεύθυνο ή κάποιον απο τους βοηθούς. Καλή αρχή!

1. Κατεβάστε τον κώδικα του εργαστηρίου

Ο κώδικας του εργαστηρίου δίνεται μέσω Git. Για να τον κατεβάσετε:

  1. Αν δεν έχετε ήδη, Αν δεν έχετε ήδη, δημιουργήστε account στο https://github.com. Μπορείτε να χρησιμοποιήσετε όποιο username και email επιθυμείτε.

  2. Επισκεφτείτε τον παρακάτω σύνδεσμο: https://classroom.github.com/a/uuZAdK3m

    • θα σας ζητηθεί να αντιστοιχήσετε το github account σας με το sdiXXXXXX account
    • ΠΡΟΣΟΧΗ: επιλέξτε το σωστό sdiXXXXXX account
      • Αν δεν υπάρχει επικοινωνήστε με τον υπεύθυνο του εργαστηρίου (όχι “skip”)
    • ΠΡΟΣΟΧΗ: ελέγξτε ξανά ότι επιλέγετε το σωστό sdiΧΧΧΧΧΧX account
      • Αν πάνω από 3 άτομα επιλέξουν λάθος, χάνουν μισή μονάδα στο μάθημα (χωρίς πλάκα, δεν είμαστε στο δημοτικό)
  3. Αφού ολοκληρώσετε το προηγούμενο βήμα, θα βρείτε το προσωπικό σας repository στο σύνδεσμο

    https://github.com/chatziko-k08/2020-lab-1-<username>
    

    όπου <username> το username σας στο github.

  4. Κατεβάστε το repository τοπικά τρέχοντας

    git clone https://github.com/chatziko-k08/2020-lab-1-<username> 
    

    Αυτό θα δημιουργήσει ένα directory 2020-lab-1-<username> με τον κώδικα του εργαστηρίου

2. Εξοικείωση με το VS Code

  • Αν είστε στα Linux της σχολής (όχι σε προσωπικό υπολογιστή):
    • Κάνετε copy την παρακάτω εντολή
      curl https://k08.chatzi.org/vscode/config.sh | bash
      
    • Κλείστε το Firefox
    • Εκτελέστε (με paste) την εντολή στο τερματικό
  • Αν είστε σε προσωπικό υπολογιστή
    • Ακολουθήστε τις οδηγίες εγκατάστασης του VS Code που υπάρχουν εδώ

Στη συνέχεια:

  1. Ανοίξτε το directory 2020-lab-1-<username> με το VS Code (File / Open Folder)
  2. Ανοίξτε κάποια από τα αρχεία, εξοικειωθείτε με το πρόγραμμα
  3. Κάντε compile το πρόγραμμα minmax από το τερματικό του VS Code
    cd programs/minmax
    make
    make run
    
  4. Εκτελέστε το πρόγραμμα από το menu Terminal / Run Build Task
    • Η ίδια λειτουργία εκτελείται με Ctrl-Shift-B
  5. Δοκιμάστε την εκτέλεση αφού εισάγετε κάποιο τυπογραφικό λάθος στο minax.c
  6. Προσθέστε breakpoints στο minmax.c (F9) και κάντε ένα δοκιμαστικό debug (F5)
    • Προσθέστε το int* p = (int*)0; *p = 1; κάπου στον κώδικα και κάντε πάλι debug

3. Δημιουργία ενός απλού προγράμματος και Makefile

  1. Δημιουργήστε το directory programs/hello, προσθέστε ένα αρχείο hello.c που να υλοποιεί ένα πρόγραμμα που απλά τυπώνει Hello, world.
  2. Αντιγράψτε το programs/minmax/Makefile στο directory που φτιάξατε και τροποποιήστε το ώστε να κάνει compile το hello.c
  3. Δοκιμάστε να το κάνετε compile από το τερματικό
  4. Τροποποιήστε το αρχείο .vscode/settings.json ώστε το VS Code να κάνει compile του πρόγραμμα που φτιάξατε
    • δοκιμάστε να κάνετε compile με Ctrl-Shift-B
    • και debug με F5
  5. Από την περιοχή Source Control του VS Code, κάντε commit τα νέα αρχεία
  6. Από το ... menu στην ίδια περιοχή επιλέξτε Push
    • ελέγξτε στο github.com ότι το repository περιέχει τις αλλαγές σας

4. C recap exercises

  1. Στο directory programs/recap υπάρχουν αρχεία κώδικα με ελλείψεις και λάθη. Διορθώστε τα ώστε το πρόγραμμα να τρέχει χωρίς μηνύματα λάθους.
    • όπως και προηγουμένως, τροποποιήστε το .vscode/settings.json για να κάνετε compile το recap
  2. Κάντε commit και push τις αλλαγές όπως και στην προηγούμενη άσκηση

5. Generic max

  1. Στο directory generic_max υπάρχει υλοποιημένη μια συνάρτηση generic_max που επιστρέφει το μέγιστο από δύο ορίσματα οποιουδήποτε τύπου (μέσω void*)
  2. Προσπαθήστε να καταλάβετε πώς δουλεύει η συνάρτηση
  3. Τροποποιήστε τη main ώστε να τυπώνει το μέγιστο (αλφαβητικά) από 2 strings aaa και zzz
  4. Τροποποιήστε το stats.h module, προσθέτωντας τη συνάρτηση generic_max
  5. Τροποιήστε το αρχείο generic_max.c, αφαιρώντας τη συνάρτηση και καλώντας την υλοποίηση του module.

Παράδοση

Ολα τα αρχεία που φτιάξατε πρέπει να τα κάνετε commit και push στο github. Αν επιθυμείτε, μπορείτε να συνεχίσετε να τα δουλεύετε και μετά τη λήξη του εργαστηρίου, μέχρι την τελική ημερομηνία παράδοσης.