ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #1
«Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #1 2 Γενικά Στο Τετράδιο #1 του Εργαστηρίου γίνεται μια αναλυτική περιγραφή της μεθοδολογίας που πρέπει να ακολουθείτε για να λύσετε απλά προβλήματα με χρήση της C. Αυτός ο κύκλος εργαστηρίων στοχεύει στην καλύτερη κατανόηση των βασικών βημάτων που πρέπει να ακολουθούνται κατά την επίλυση ενός προβλήματος, και τα οποία αφορούν τον ορισμό των σταθερών, των μεταβλητών και των τύπων τους, καθώς και τη χρήση των διάφορων τελεστών (αριθμητικών ή λογικών) για την υλοποίηση των πράξεων που απαιτούνται στα διάφορα προβλήματα. Μέσω των δύο παραδειγμάτων που παρατίθενται, αναλύονται τα βασικά στάδια σύνταξης απλών προγραμμάτων σε C (σύμφωνα με τα όσα έχετε μέχρι τώρα διδαχθεί). Τα στάδια αυτά περιλαμβάνουν: 1. Ορισμό του προβλήματος 2. Δηλώσεις σταθερών και μεταβλητών 3. Εισαγωγή δεδομένων από το χρήστη 4. Υπολογισμό της ζητούμενης τιμής (αποτελέσματος) 5. Εμφάνιση των αποτελεσμάτων Ιδιαίτερη προσοχή θα πρέπει να δίνεται κατά την φάση της δήλωσης των μεταβλητών και σταθερών ενός προγράμματος, μιας και λανθασμένη δήλωση μεταβλητής (π.χ. μη συμβατός τύπος δεδομένων) μπορεί να οδηγήσει σε λάθος αποτελέσματα, ακόμα κι αν η λογική του προγράμματος είναι σωστή. Επίσης, μεγάλη βαρύτητα θα πρέπει να δίνεται και στον προσδιορισμό της παράστασης που θα υπολογίζει το αποτέλεσμα του προγράμματός μας, μιας και η χρήση αριθμητικών (ή λογικών) τελεστών μπορεί να φαίνεται σχετικά απλή, αλλά κρύβει συχνά «παγίδες» (π.χ. λάθη που μπορούν να συμβούν λόγω της προτεραιότητας τελεστών στην εκτέλεση των αριθμητικών πράξεων). Στην ιστοσελίδα του μαθήματος, και στο link «Εργασίες Εξαμήνου» (http://www.mech.upatras.gr/~nikos/progr/work.html) θα βρείτε ένα υπόδειγμα αρχικής σελίδας που θα πρέπει να επισυνάπτετε στην άσκηση που παραδίδετε κάθε φορά. Προσοχή: Η άσκηση θα πρέπει να παραδίδεται (μαζί με την αρχική σελίδα) την ημερομηνία που θα ορίζεται από τον διδάσκοντα. Την άσκηση αυτή θα πρέπει να την παραδώσετε στο επόμενο εργαστήριο σας.
«Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #1 3 Πρόβλημα 1 Έχουμε δύο στρεφόμενους άξονες. Ο ένας είναι ο κινητήριος, περιστρέφεται με ταχύτητα N1 =3 rpm και έχει ένα γρανάζι με z1 δόντια (θα δίνεται από το χρήστη). Ο δεύτερος άξονας, είναι ο κινούμενος, έχει ένα γρανάζι με z2 δόντια (θα δίνεται επίσης από το χρήστη) και παίρνει ταχύτητα από τον πρώτο μέσω της σύμπλεξης των δύο γραναζιών. Ζητείται να φτιάξουμε ένα πρόγραμμα που θα υπολογίζει την ταχύτητα n2 του κινούμενου άξονα. Η σχέση υπολογισμού της ταχύτητας του κινούμενου άξονα είναι: n2=n1*(z1/z2) Βήμα 1: Ανάλυση του προβλήματος (πώς θα λύσουμε το πρόβλημα;) Ποια είναι τα δεδομένα που θα εισάγουμε, ποια τα αποτελέσματα που θα υπολογίσουμε; Πώς θα δηλώσουμε τις σταθερές και τις μεταβλητές; (Πίνακας μεταβλητών σταθερών) Φτιάχνουμε ένα πρόχειρο πλάνο για αυτά που θα γράψουμε στον υπολογιστή πρώτα στο χαρτί. Γνωστοί Άγνωστοι Σχέση υπολογισμού N1, z1, z2 n2 n2=n1*(z1/z2) Πίνακας Μεταβλητών & Σταθερών Ονομασία Μεταβλητή / Σταθερά Τύπος Τιμή N1 Σταθερά - 3 n2 Μεταβλητή int ή float n2=n1*(z1/z2) z1 Μεταβλητή int ή float Δίνεται από το χρήστη z2 Μεταβλητή int ή float Δίνεται από το χρήστη Βήμα 2: Γράφουμε τον (πηγαίο) κώδικα στον επεξεργαστή κειμένου που χρησιμοποιούμε (NotePad)
«Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #1 4 Γράφοντας κώδικα σε C 1. Καλούμε τις βιβλιοθήκες με τις συναρτήσεις εισόδου-εξόδου: #include<stdio.h> 2. Δηλώνουμε την σταθερά N1: #define N1 3 3. Δηλώνουμε την main: main() { } 4. Δηλώνουμε τις μεταβλητές n2, z1, z2. Έστω: int n2, z1, z2; 5. Εισάγουμε τις μεταβλητές n2, z1, z2 Τυπώνουμε την ερώτηση που επιθυμούμε για την εισαγωγή της τιμής της πρώτης μεταβλητής (κινητήριος άξονας). Έστω: printf( doste ton arithmo ton dontion tou kinitiriou aksona z1 ); scanf( %d,&z1); Τυπώνουμε την ερώτηση που επιθυμούμε για την εισαγωγή της τιμής της δεύτερης μεταβλητής (κινούμενος άξονας). Έστω: printf( \n doste ton arithmo ton dontion tou kinoumenou aksona z2 ); scanf( %d,&z2); 6. Δίνουμε την σχέση υπολογισμού: n2=n1*(z1/z2); 7. Τυπώνουμε το αποτέλεσμα στη μορφή που θέλουμε. Έστω: printf( \n H taxitita tou kinoymenou aksona einai %d rpm\n,n2); Βήμα 3: Αποθηκεύουμε το πρόγραμμα ως askisi1.c Προσοχή!!! Αποθηκεύουμε στο temp (φάκελος στο C) Αποθηκεύουμε το αρχείο ως τύπου all files
«Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #1 5 Βήμα 4: Ελέγχουμε τα αποτελέσματα Είναι σωστά; Τι μπορεί να είναι λάθος; Προσοχή στη δήλωση των μεταβλητών (ποιόν τύπο δεδομένων να επιλέξω;) Υπάρχουν τα απαραίτητα σχόλια (comments); Βήμα 5: Σε περίπτωση λάθους: Διορθώνουμε τον κώδικα στο Notepad Επαναλαμβάνουμε, ένα προς ένα, όλα τα επόμενα βήματα Προτεινόμενη Λύση /* Προγραμματιστής : Όνομα Επώνυμο, Αριθμός Μητρώου Ημερομηνία συγγραφής : 14/3/2002 Λειτουργία Προγράμματος : Υπολογίζει την ταχύτητα ενός κινούμενου άξονα */ #include <stdio.h> /* Βιβλιοθήκη βασικών συναρτήσεων Εισόδου/Εξόδου */ #define N1 3 /* Δήλωση ταχύτητας κινητήριου άξονα, ως σταθεράς */ main() { float z1,z2,n2; /* Δήλωση Μεταβλητών */ printf("πληκτρολογήστε τον αριθμό δοντιών του κινητήριου άξονα: "); scanf("%f", &z1); printf("\n Πληκτρολογήστε τον αριθμό δοντιών του κινούμενου άξονα: "); scanf("%f", &z2); n2 = N1*(z1/z2); /* Υπολογισμός ταχύτητας κινούμενου άξονα */ } printf(" \n Η ταχύτητα του κινούμενου άξονα είναι %.1f rpm \n", n2); Προσοχή: ένα πρόγραμμα δεν πρέπει να περιλαμβάνει απλά μερικές γραμμές κώδικα. Αντιθέτως, και για διάφορους λόγους συντήρησής του (θα μιλήσουμε αναλυτικά στο μάθημα για τέτοιους λόγους), θα πρέπει να περιέχει και κατάλληλα σχόλια σχετικά με το ποιος το έγραψε, τι λειτουργία επιτελεί (και πως), αλλά και σχόλια για τις δηλώσεις των μεταβλητών, των σταθερών καθώς και για την είσοδο και έξοδο των δεδομένων.
«Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #1 6 Πρόβλημα 2 Ένα ελατήριο στο οποίο βρίσκεται προσαρτημένη μάζα M = 2 kgr βρίσκεται σε απόσταση x από την θέση ισορροπίας του και κινείται με ταχύτητα u. Αν K= 1 N/m η σταθερά του ελατηρίου και οι δυνάμεις τριβής θεωρούνται αμελητέες, να υπολογιστεί η μηχανική ενέργεια Ε του συστήματος μάζαελατήριο. Η σχέση υπολογισμού της μηχανικής ενέργειας για το παραπάνω σύστημα είναι: Ε = ½*(m*u 2 ) + ½ *(k*x 2 ) Σύμφωνα με όσα αναφέρθησαν παραπάνω (Πρόβλημα 1), δημιουργούμε τον πίνακα Μεταβλητών και Σταθερών που θα χρησιμοποιήσουμε στο πρόγραμμά μας. Πίνακας Μεταβλητών & Σταθερών Ονομασία Μεταβλητή / Σταθερά Τύπος Τιμή M Σταθερά - 3 K Σταθερά - 1 u Μεταβλητή int ή float Δίνεται από το χρήστη x Μεταβλητή int ή float Δίνεται από το χρήστη E Μεταβλητή int ή float Ε = ½*(m*u 2 )+ ½*(k*x 2 ) Προσπαθήστε τώρα να συντάξετε το πρόγραμμά σας, υπολογίζοντας την Ε μέσω της παράστασης που δίνεται στην εκφώνηση του προβλήματος. Ακολουθήστε τα βήματα που αναφέρθησαν στο Πρόβλημα 1.