[ΕΑ-5] Εργαστήριο 5ης και 6ης εβδομάδας (Αντικείμενο)

Τετάρτη, 30 Οκτωβρίου 2024 - 1:50 μ.μ.
- από τον χρήστη Θραμπουλίδης Κλεάνθης

Εισαγωγή

Στην ΕΑ-5 θα δουλέψετε:

Α) σε εκδόσεις των προγραμμάτων MinAndMax και StringHandling της ΕΑ-4, και,

Β) σε δύο (2) νέες Ασκήσεις οι οποίες βασίζονται στις Ασκήσεις 3 και 4 αντίστοιχα του κεφαλαίου 11 του βιβλίου “Διαδικαστικός Προγραμματισμό C ”.

Στην ΕΑ-5 θα αξιοποιήσετε:

Α) έννοιες που ήδη χρησιμοποιήσατε σε προηγούμενες ΕΑς, (αυτό προϋποθέτει την επιτυχή ολοκλήρωση των προηγούμενων ΕΑ), και,

Β) νέες έννοιες που παρουσιάστηκαν στη διάλεξη και το Φροντιστήριο της 5ης και 6ης εβδομάδας (αυτό προϋποθέτει την προσεκτική παρακολούθηση διάλεξης και Φροντιστηρίου και μελέτη του αντίστοιχου υλικού στο eclass).

 Νέες έννοιες

Οι νέες έννοιες έχουν να κάνουν με:

  1. Δόμηση προγράμματος, και
  2. Βιβλιοθήκες Τρίτου κατασκευαστή.

Θα δούμε πως δομούμε τον κώδικα προγράμματος του οποίου η λειτουργικότητα προσφέρεται στον χρήστη μέσα από ένα μενού επιλογής από το οποίο ο χρήστης επιλέγει την λειτουργία που θα εκτελέσει το σύστημα. Θα αξιοποιήσουμε συναρτήσεις για την υλοποίηση της κάθε λειτουργίας που το σύστημα προσφέρει στον χρήστη. Στόχος της άσκησης είναι και η περαιτέρω εξοικείωση με Προτάσεις Ελέγχου Ροής Προγράμματος και Πίνακες.

Προσέξτε τη δόμηση και τη σωστή στοίχιση του πηγαίου κώδικα. Το αρχείο programStructure.pdf καταγράφει τη σωστή δόμηση και στοίχιση του πηγαίου κώδικα.

Στην επιλογή Σύνδεσμοι της ιστοσελίδας του μαθήματος στο eclass στην κατηγορία Βασικά στοιχεία της Γλώσσας  C θα βρείτε ότι σας χρειάζεται από την γλώσσα C για το μάθημα Εισαγωγή στον Προγραμματισμό.

Δράσεις

Η ΕΑ-5 αποτελείται από τις παρακάτω 4 δράσεις:

 [Δ1] – StringHandling (Διαχείριση Αλφαριθμητικού)

Θα ολοκληρώσετε (αν δεν το έχετε ήδη κάνει) την 2η έκδοση της Δράσης [Δ2] της ΕΑ-4 με τις δύο εκδόσεις της getString, δηλαδή τις getStringV1(), getStringV2().

Την έκδοση αυτή δουλέψαμε μαζί στην διάλεξη της Τετάρτης 30/10. Αξιοποιήστε τον πηγαίο κώδικα (AddressBookWithGetStringBasedOnGetChar.pdf) όχι για copy-paste αλλά για να ξεπεράσετε τις τυχόν δυσκολίες που θα συναντήσετε στην συγγραφή του κώδικα. Η έκδοση που δουλέψαμε δεν είναι η τελική καθώς το τέλος του χρόνου διέκοψε την διαδικασία συγγραφής της.

 [Δ2] – MinAndMax  (Μέγιστο και ελάχιστο σε Ακολουθία αριθμών)

Η Δράση αποτελεί συνέχεια της Δράσης [Δ3] της ΕΑ-4.

Α. Θα ολοκληρώσετε μια 3η έκδοση με αξιοποίηση αφαιρετικότητας. Μία τέτοια έκδοση αναπτύξαμε μαζί βήμα προς βήμα στην διάλεξη της Τετάρτης 30/10.  Δώσαμε την αφαιρετική αναπαράσταση του προγράμματος, την λεκτική περιγραφή και στη συνέχεια κάναμε την μετατροπή σε πηγαίο κώδικα (minAndMaxV3Modularity.jpg).

Σε ένα επόμενο βήμα αναπτύξαμε (εφαρμόζοντας αυξητική ανάπτυξη) ενδεικτικό πηγαίο κώδικα στο DevCpp (V3 στο MinAndMaxV3andV4LectureTime.pdf).

Β. Θα ολοκληρώσετε την 4η έκδοση, για την οποία δώσαμε λεκτική περιγραφή και ενδεικτικό πηγαίο κώδικα στην διάλεξη της Τετάρτης 30/10 (V4 στο MinAndMaxV3andV4LectureTime.pdf).  

Η έκδοση αυτή χρησιμοποιεί την συνάρτηση sortIntArrayInc() της βιβλιοθήκης τρίτου κατασκευαστή I2P η οποία σας δίνεται με την μορφή ενός αρχείου επικεφαλίδας (i2p.h) και ενός αρχείου βιβλιοθήκη (libi2p.dll). Τα δύο αυτά αρχεία θα βρείτε στο libi2p.rar.

Η δήλωση της συνάρτησης sortIntArrayInc(), την οποία μπορείτε να δείτε και στο αρχείο  είναι η παρακάτω:

void sortIntArrayInc(int ar[],int numOfElements);

Οδηγίες χρήσης της βιβλιοθήκης I2P

Οδηγίες χρήσης της της βιβλιοθήκης I2P θα βρείτε στο i2pLibraryV4part.pdf

Μπορείτε να χρησιμοποιήσετε και τις συναρτήσεις getInt() και getArrayOfInts() των οποίων οι δηλώσεις είναι οι παρακάτω:

int getArrayOfInts(int ar[],int maxItems);

int getInt(char message[]);

 [Δ3] – Τέσσερις Πράξεις (Menu)

Αναπτύξτε ένα πρόγραμμα με όνομα Menu σύμφωνα με το οποίο το σύστημα θα εκτελεί τις υπολογιστικές διεργασίες που περιγράφει η Άσκηση 3 (Κεφάλαιο 11). 

Η άσκηση ως λειτουργικότητα είναι πολύ απλή αλλά εισάγει τη δόμηση του προγράμματος με βάση ένα μενού επιλογής που δίνει τη δυνατότητα στον χρήστη να επιλέξει τη διεργασία που αυτός επιθυμεί να εκτελέσει η μηχανή. Αποτελεί καλή εξάσκηση για τις προτάσεις ελέγχου ροής και τη διαδικασία ανάπτυξης με την incremental development τεχνική. Αγνοήστε την Άσκηση 3β (παράγραφος 11.3.3)

Οδηγίες Εκτέλεσης

  1. [MenuV1] Ως πρώτο βήμα μετατρέψτε τη λεκτική περιγραφή που δώσαμε (I2P_WeekAgenda_6.pdf διαφάνεια 28) και ελέγξτε τη λειτουργικότητα της main(). Μετά από τη δική σας προσπάθεια μπορείτε να δείτε πως πρέπει να έχει διαμορφωθεί ο κώδικας της πρώτης σας έκδοσης (EA-5_Menu-V1_SkeletonCode.pdf). Αποφύγετε όσο μπορείτε το copy-paste.
  2. [MenuV2] Αφού ολοκληρώσατε τον έλεγχο της λειτουργίας της main προχωρήστε στον ορισμό των συναρτήσεων και τον έλεγχο της λειτουργίας του προγράμματος σας.
  3. [MenuV3] Μετατρέψτε τις συναρτήσεις add(), sub(), mul() κ.λ.π. σε επαναχρησιμοποίησιμες.
  4. Προσθέστε δικές σας λειτουργίες πάνω στους 2 αριθμούς.

 [Δ4]Διαχείριση Λέξεων (WordsHandling)

Αναπτύξτε ένα πρόγραμμα με όνομα WordsHandling το οποίο θα υλοποιεί τις  λειτουργίες: α) Εισαγωγή λέξης, β) Εμφάνιση της λίστας των λέξεων, γ) αναζήτηση λέξης στην λίστα των λέξων δ) ταξινόμηση των λέξεων καθώς και τις λειτουργίες στατιστικών λέξεων και χαρακτήρα όπως περιγράφονται στα 5 και 6 της Άσκησης 4Μελετήστε προσεκτικά και σε βάθος τις οδηγίες που σας δίνει η ‘Άσκηση 4 Κεφάλαιο 11.

Οδηγίες Εκτέλεσης

1. [WordsHandlingV1] Εργασθείτε όπως στην MenuV1 και ελέγξτε τη λειτουργικότητα της main(). Θα πρέπει να είστε σε θέση να γράψετε τον σκελετό κώδικα χωρίς βοήθεια. Προσπαθήστε το. Μετά από τη δική σας προσπάθεια μπορείτε να δείτε πως πρέπει να έχει διαμορφωθεί ο κώδικας της πρώτης σας έκδοσης (EA-5_WordsHandlingV1-SkeletonCode.pdf). Αποφύγετε όσο μπορείτε το copy-paste.

2. [WordsHandlingV2] Προχωρήστε, εφαρμόζοντας αυξητική ανάπτυξη, στον ορισμό  του σώματος των συναρτήσεων που υλοποιούν τις βασικές λειτουργίες. Για την ταξινόμηση χρησιμοποιήστε την συνάρτηση sortStringArrayInc της i2p η οποία έχει την παρακάτω δήλωση:

void sortStringArrayInc(char base[],int numOfElements, int strWidth);

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

 

Σχόλια (3)

Θραμπουλίδης Κλεάνθης
Πέμπτη, 31 Οκτωβρίου 2024 - 9:17 π.μ.
- από τον χρήστη Θραμπουλίδης Κλεάνθης
[Δ1] – getStringV2(): Δώστε την λεκτική περιγραφή της. Θα σας βοηθήσει στην διαμόρφωση του πηγαίου κώδικα της.
Θραμπουλίδης Κλεάνθης
Τρίτη, 5 Νοεμβρίου 2024 - 5:22 μ.μ.
- από τον χρήστη Θραμπουλίδης Κλεάνθης
"This document provides instructions for the fifth and sixth week's lab assignment (EA-5) for the "Introduction to Programming" course. The lab focuses on building upon concepts introduced in the previous week's assignment (EA-4). Students are required to complete two new exercises based on Exercises 3 and 4 from Chapter 11 of the textbook "Procedural Programming in C," focusing on structuring program code and using third-party libraries. Specifically, EA-5 involves building a program with a menu-driven interface, utilising functions for different operations, and incorporating features like string handling and sorting arrays using a third-party library called I2P. The document also provides detailed instructions for completing four main tasks (Δ1-Δ4), including using the I2P library, and provides skeleton code examples to guide students." by NotebookLM
Θραμπουλίδης Κλεάνθης
Πέμπτη, 7 Νοεμβρίου 2024 - 11:10 π.μ.
- από τον χρήστη Θραμπουλίδης Κλεάνθης
Προσεκτική μελέτη των δράσεων μας δίνει τα παρακάτω: [Δ3] Η πρώτη επιλογή θα δίνει τη δυνατότητα στον χρήστη να εισάγει 2 αριθμούς (“…να δίνει τη δυνατότητα στον χρήστη να εισάγει 2 αριθμούς…”). Οι υπόλοιπες επιλογές θα του επιτρέπουν να εκτελεί πάνω σε αυτούς πράξεις (πρόσθεση, αφαίρεση, κλπ) και να παίρνει το αποτέλεσμα. [Δ4] Η πρώτη επιλογή θα δίνει τη δυνατότητα στον χρήστη να εισάγει λέξη (“…το οποίο θα υλοποιεί τις λειτουργίες: α) Εισαγωγή λέξης,…”). Η τρίτη επιλογή (γ) θα δίνει τη δυνατότητα στον χρήστη να αναζητήσει λέξη στην λίστα των λέξεων. Αν υλοποιήσετε αυτό σε επόμενη φάση και προαιρετικά υλοποιήστε τη λειτουργικότητα που περιγράφει η επιλογή 7 της άσκησης 4.