Εισαγωγή στον Προγραμματισμό - Ακ. έτος 2024-25 (CEID_22Υ103)
[ΕΑ-4] Εργαστήριο 4ης εβδομάδας (Αντικείμενο) [Updated]
Εισαγωγή
Στην ΕΑ-4 θα αξιοποιήσετε:
Α) έννοιες που ήδη χρησιμοποιήσατε σε προηγούμενες ΕΑς, (αυτό προϋποθέτει την επιτυχή ολοκλήρωση των προηγούμενων ΕΑ), και,
Β) νέες έννοιες που παρουσιάστηκαν στη διάλεξη και το Φροντιστήριο της 4ης εβδομάδας (αυτό προϋποθέτει την προσεκτική παρακολούθηση διάλεξης και Φροντιστηρίου και μελέτη του αντίστοιχου υλικού στο eclass). Οι νέες έννοιες έχουν να κάνουν με Αλφαριθμητικά, Είσοδο-Έξοδο, Προτάσεις Ελέγχου Ροής Προγράμματος και Πίνακες. Στο I2P_Week4Agenda.pdf θα βρείτε ότι χρειάζεται για την ΕΑ-4
Η ΕΑ-4 βασίζεται στις Ασκήσεις 1 και 2 του κεφαλαίου 11 του βιβλίου “Διαδικαστικός Προγραμματισμό C ” και αποτελείται από τις παρακάτω δράσεις:
Δράσεις
[Δ1] – BasicInputOutput (Βασική Είσοδος/Έξοδος)
Αναπτύξτε ένα πρόγραμμα με όνομα BasicInputOutput σύμφωνα με το οποίο το σύστημα θα εκτελεί τις υπολογιστικές διεργασίες που περιγράφουν τα 1-4 της Άσκησης 1 (Κεφάλαιο 11) και θα εμφανίζει τα αποτελέσματα στην βασική έξοδο. Αξιοποιήστε την συνάρτηση getInt() που έχουμε ήδη ορίσει σε προηγούμενες ΕΑς.
Οδηγίες εκτέλεσης
Η άσκηση 1 είναι απλή και σας δίνει πολλές οδηγίες για την εκτέλεση της. Παρουσιάζει και αξιοποιεί συναρτήσεις της βασικής βιβλιοθήκης που υποστηρίζουν:
α) βασικές λειτουργίες εισόδου/εξόδου (C stdio Functions <stdio.h>), και,
β) βασικές λειτουργίες μαθηματικών (C Math Functions <math.h> ) όπως υπολογισμό λογαρίθμου και δύναμης.
Εισάγει τη σημασία της πρότασης προ-επεξεργαστή #include και τα αρχεία επικεφαλίδας (header files).
[Δ2] – StringHandling (Διαχείριση Αλφαριθμητικού)
Η δράση βασίζεται στην Άσκηση 2a (κεφάλαιο 11). Η Άσκηση είναι απλή και σας δίνει πολλές οδηγίες για την εκτέλεση της. Αξιοποιεί:
- τον τύπο του χαρακτήρα και τον τρόπο διαχείρισης αλφαριθμητικού,
- πίνακες και το ότι το όνομα του πίνακα είναι η διεύθυνση της μνήμης που έχει δεσμευθεί για το πρώτο στοιχείο του πίνακα, και
- το αρχείο επικεφαλίδας <string.h> που περιέχει τις δηλώσεις των συναρτήσεων (function prototypes) της βασικής βιβλιοθήκης (C string Functions) που υλοποιούν διεργασίες πάνω σε αλφαριθμητικά (strings).
Θα αναπτύξετε δύο εκδόσεις.
Α. StringHandlingV1
Αναπτύξτε ένα πρόγραμμα με όνομα StringHandling σύμφωνα με το οποίο το σύστημα θα εμφανίζει στην βασική έξοδο τα οριζόμενα από τα α – ε της Άσκησης 2a (κεφάλαιο 11).
Β. StringHandlingV2 και η συνάρτηση getString()
B.1) getStringV1()
Χρησιμοποιήστε ως βάση την έκδοση του προγράμματος StringHandling που αναπτύξατε παραπάνω, δηλαδή το StringHandlingV1, για να αναπτύξετε μια 2η έκδοση (StringHandlingV2) η οποία θα επιτρέπει στον χρήστη να αποδώσει τιμή στο αλφαριθμητικό name.
Στην έκδοση αυτή θα ορίσετε και χρησιμοποιήστε τη συνάρτηση getString() για ανάγνωση aλφαριθμητικού από την βασική είσοδο. Έχουμε ήδη ορίσει και χρησιμοποιήσει ανάλογες συναρτήσεις, getInt() και getFloat(), για είσοδο ακεραίου και κινητής υποδιαστολής απλής ακρίβειας αντίστοιχα από την βασική είσοδο.
Για να ορίσετε τα ορίσματα που πρέπει να δεχθεί η συνάρτηση getString λάβετε υπόψιν σας ότι η scanf, την οποία θα χρησιμοποιήσει για να διαβάσει το αλφαριθμητικό, θέλει τη διεύθυνση της θέσης μνήμης στην οποία θα το αποθηκεύσει. Εσείς ήδη έχετε τη διεύθυνση αυτή. Είναι το όνομα της μεταβλητής name. Δεν χρησιμοποιείτε δείκτες στην φάση αυτή. Τους δείκτες θα δούμε αργότερα.
Εξετάστε τη συμπεριφορά του συστήματος για την περίπτωση που ο χρήστης δώσει περισσότερους χαρακτήρες από αυτούς που έχουν δεσμευθεί από την μεταβλητή. Αιτιολογήστε τη συμπεριφορά αυτή.
B.2) getStringV2()
Δώστε μια 2η έκδοση της getString, την getStringV2() η οποία θα αντιμετωπίζει το πρόβλημα που δημιουργείται με την 1η έκδοση της getString στην περίπτωση που ο χρήστης δώσει περισσότερους χαρακτήρες από όσους μπορεί να αποθηκεύσει η αντίστοιχη μεταβλητή. Αξιοποιήστε την συνάρτηση της βασικής βιβλιοθήκης getchar() για να διαβάζετε έναν-έναν τους χαρακτήρες του αλφαριθμητικού. Ελέγξτε τον αριθμό των επαναλήψεων λαμβάνοντας υπόψη το μέγεθος του αλφαριθμητικού και το ότι η getchar επιστρέφει τον χαρακτήρα ΄\n’ όταν ο χρήστης πατήσει το ENTER.
Γ. Για να εξοικειωθείτε με τα αλφαριθμητικά, αναπτύξτε μια 3η έκδοση του προγράμματος StringHandling η οποία θα αξιοποιεί μερικές από τις συναρτήσεις της string.h. Ξεκινήστε από τις: strlen(), strcat(), strcmp(), strcpy(), strncat(), strncpy()
[Δ3] – MinAndMax (Μέγιστο και ελάχιστο σε Ακολουθία αριθμών)
Αναπτύξτε ένα πρόγραμμα σύμφωνα με το οποίο το σύστημα θα δέχεται από την βασική είσοδο του μία ακολουθία από n αριθμούς και θα εμφανίζει τον αριθμό με την μικρότερη τιμή καθώς και αυτόν με την μεγαλύτερη. Θα δώσετε 3 εκδόσεις:
V1: Στην 1η έκδοση το σύστημα θα επεξεργάζεται κάθε αριθμό της ακολουθίας πριν εισαχθεί ο επόμενος.
V2: Στην 2η έκδοση το σύστημα θα δέχεται πρώτα όλους τους αριθμούς και στη συνέχεια θα τους επεξεργάζεται.
V3: Στην 3η έκδοση θα αξιοποιήσετε αφαιρετικότητα στις διεργασίες ορίζοντας κατάλληλες συναρτήσεις, αν δεν το έχετε ήδη κάνει στις εκδόσεις 1 και 2.
Σχόλια (1)