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

Πέμπτη, 24 Οκτωβρίου 2024 - 12:23 μ.μ.
- από τον χρήστη Θραμπουλίδης Κλεάνθης

Εισαγωγή

Στην ΕΑ-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)

Θραμπουλίδης Κλεάνθης
Πέμπτη, 24 Οκτωβρίου 2024 - 12:50 μ.μ.
- από τον χρήστη Θραμπουλίδης Κλεάνθης
"This is an excerpt from a fourth-week laboratory assignment for a programming course. The assignment, "Εργαστήριο 4ης εβδομάδας", focuses on introducing concepts related to input and output, strings, control flow, and arrays, which build upon previous weeks' learnings. Students are instructed to develop programs that demonstrate their understanding of these concepts. The assignment is divided into three distinct tasks: "BasicInputOutput", "StringHandling", and "MinAndMax". The first task focuses on basic input and output operations using C's standard library functions. "StringHandling" explores string manipulation techniques, including storing strings in arrays and using standard library functions. Finally, "MinAndMax" challenges students to design programs that identify the minimum and maximum values within a sequence of numbers, progressively introducing code modularity through the creation of functions." NotebookLM