ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1



Σχετικά έγγραφα
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Εισαγωγή στον Προγραμματισμό

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στον Προγραμματισμό

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

Διαδικασιακός Προγραμματισμός

Προγραμματισμός Η/Υ (ΤΛ2007 )

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Μεθόδων Επίλυσης Προβλημάτων

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

8. Συνθήκες ελέγχου, λογικοί τελεστές

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

5 &6. Τύποι δεδομένων, τελεστές και

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στη γλώσσα προγραμματισμού C++14

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εισαγωγή στον Προγραμματισμό

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Ανάπτυξη και Σχεδίαση Λογισμικού

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Βασικές Αρχές Προγραμματισμού

Ανάπτυξη και Σχεδίαση Λογισμικού

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Γλώσσα Προγραμματισμού C

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 4 Ο. Δομή επανάληψης Επανάληψη με συνθήκη Ατέρμονη επανάληψη Πίνακας ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

Δομημένος Προγραμματισμός (ΤΛ1006)

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

scanf() scanf() stdin scanf() printf() int float double %lf float

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Εισαγωγή στη γλώσσα προγραμματισμού C++

Η γλώσσα προγραμματισμού C

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Περιεχόμενα. Πρόλογος... 21

Διαδικασιακός Προγραμματισμός

Γλώσσα Προγραμματισμού C

Ανάπτυξη και Σχεδίαση Λογισμικού

Η γλώσσα προγραμματισμού C

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Η γλώσσα προγραμματισμού C

Προγραμματισμός II. Τυχαίοι αριθμοί Διεπαφές

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Ας δούμε λίγο την θεωρία με την οποία ασχοληθήκαμε μέχρι τώρα.

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Προγραμματισμός Ι (ΗΥ120)

ΕΠΛ232: Εργαστήριο 2

Εισαγωγή στον Προγραμματισμό

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6)

Επανάληψη για τις Τελικές εξετάσεις

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

12. Συναρτήσεις (Μέρος ΙI)

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΗΥ-150. Προγραμματισμός

Τμήμα Τεχνολόγων Γεωπόνων - Φλώρινα

ΣΤΟΙΒΕΣ (stacks) Σχήµα: Λειτουργία Στοίβας

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

Η άσκηση μπορεί να γίνει με συνεργασία το πολύ δυο φοιτητών, οι οποίοι θα λάβουν τον ίδιο βαθμό στην εργασία.

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

Δομημένος Προγραμματισμός

Διορθώσεις Συμπληρώσεις επί της επανεκτύπωσης 2003 της 2 ης έκδοσης του βιβλίου «Διαδικαστικός Προγραμματισμός C»

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Προγραμματισμός I (Θ)

Η βασική συνάρτηση προγράμματος main()

Γ ε ν ι κ ό Λ ύ κ ε ι ο Ε λ ε υ θ ε ρ ο ύ π ο λ η ς. Α λ γ ό ρ ι θ μ ο ι

Διαδικασιακός Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι χρειάζεται η εντολή if ; Εντολή if. Παράδειγμα #1. Παράδειγμα #1

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Transcript:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1

Εισαγωγή Οι αριθμητικές πράξεις που εκτελούνται στον υπολογιστή αποτελούν το κυρίως έργο του. Μη ξεχνάμε ότι ου υπολογιστές δημιουργήθηκαν για να επιλύουν σύνθετα επιστημονικά προβλήματα. Στην C διατίθενται οι αριθμητικοί τελεστές +, -, *, /, %, ++, -- με βάση τους οποίους μπορούμε να υλοποιήσουμε αριθμητικούς υπολογισμούς. Ωστόσο στις αριθμητικές παραστάσεις μπορεί να συνυπάρχουν μερικοί από αυτούς τους τελεστές οπότε υπάρχει το ερώτημα με ποια σειρά θα εκτελεστούν. Το αποτέλεσμα της παράστασης εξαρτάται από τη σειρά αυτή. Π.χ. x=30-12/6+6 το αποτέλεσμα θα είναι x=9, x=34 ή x=29. Αν εκτελέσει από αριστερά προς το δεξιά τις πράξεις με τη σειρά που τις βρίσκει θα είχαμε 30-12=18 και στη συνέχεια αυτό το διαιρέσει με το 6 θα είχαμε 3 και θα προσέθετε το 6 οπότετελικάθαείχαμε9. Αν εκτελέσει από δεξιά προς τα αριστερά τις πράξεις με τη σειρά που τις βρίσκει θα είχαμε 6+6=12 στη συνέχεια 12/12 =1 αυτό θα το αφαιρέσει από το 30 και θα καταλήξει x=29. Αντίθετα αν διαιρέσει πρώτα το 12 με το 6 θα είχαμε 2 και θα το αφαιρούσε από το 30 θα απέμενε 28 οπότε προσθέτοντας το 6 θα κατέληγε στο x=34. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 2

Προτεραιότητα αριθμητικών τελεστών Η προτεραιότητα τον αριθμητικών τελεστών είναι αρχικά οι *, /, % και μάλιστα αν οι τελεστές αυτοί εμφανίζονται αριστερά και δεξιά μιας μεταβλητής τότε εκτελείται πρώτα αυτός που βρίσκεται αριστερότερα και μετά ο άλλος. Από άποψη προτεραιότητας ακολουθούν στη συνέχεια οι + και με την ίδια αρχή σε περίπτωση που ενεργούν στην ίδια μεταβλητή. Έτσι το σωστό αποτέλεσμα στην προηγούμενη παράσταση είναι το 34. Είναι πολύ χρήσιμο, γιανααποφεύγονταισφάλματα, αλλά και για να είναι ευανάγνωστο το πρόγραμμα να χρησιμοποιούνται παρενθέσεις ακόμα και εκεί που δεν μπορούν να αποφευχθούν. Όπως στην παράσταση 8*(7-6+5)%(4+3/2)-1. Τι αποτέλεσμα θα λαμβάνατε από αυτή την παράσταση. Είστε βέβαιοι για αυτό που αποφασίσατε; Για να υπολογιστεί ο μέσος όρος βέβαια δυο ακεραίων απαιτούνται σίγουρα παρενθέσεις. Για παράδειγμα ο μέσος όρος του 7 και 8 για να υπολογισθεί πρέπει να γραφεί (7+8)/2 γιατί αλλιώς θα διαιρούσε μόνο τον ένα και στο αποτέλεσμα θα πρόσθετε τον άλλο. Είστε βέβαιοι ότι ακόμα και έτσι θα εμφανίσει το σωστό αποτέλεσμα; Δοκιμάστε το. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 3

Μετατροπή τύπων Στον προγραμματισμό με C μπορούμε να συνδυάζουμε διαφορετικούς τύπου αριθμητικών δεδομένων και ο μεταγλωττιστής εφαρμόζει την αυτόματη μετατροπή τύπου. Αυτό σημαίνει ότι αν προστεθεί ακέραιος με πραγματικό το αποτέλεσμα θα εμφανισθεί αυτόματα ως πραγματικός. Για να γίνει αυτό πρέπει ένας τουλάχιστον όρος της παράστασης να έχει υποδιαστολή. Αλλιώς διατηρεί τον τύπο δεδομένων και στα προηγούμενα παραδείγματα θα εμφανίσει λάθος αποτέλεσμα. Στον μέσο όρο του 7 και 8 θα εμφανίσει 7. Θα αποκόψει το δεκαδικό μέρος του αποτελέσματος. Ενώ αν ο παρονομαστής το 2 γραφόταν ως 2. θα εμφάνιζε σωστά 7.5 Δοκιμάστε το!!! Υπάρχει βέβαια και η δυνατότητα ρητής δήλωσης μετατροπής όπου ο προγραμματιστής δηλώνει τον νέο τύπο δεδομένων που επιθυμεί. Η δήλωση αυτή γίνεται με (float) (double) κ.ο.κ. Για παράδειγμα στο μέσο όρο θα ήταν (n 1 +n 2 +n 3 + n N )/(float) N ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 4

Τυχαίοι αριθμοί Οι τυχαίοι αριθμοί είναι εξαιρετικά χρήσιμοι σε επιστημονικά προγράμματα όπως για παράδειγμα οι προσομοιώσεις αλλά και παιχνίδια του υπολογιστή. Οι τυχαίοι αριθμοί που παράγονται από υπολογιστή λέγονται ψευδοτυχαίοι γιατί δεν δημιουργούνται από τυχαία δραστηριότητα π.χ. κληρωτίδα. Για την παραγωγή τέτοιων αριθμών χρησιμοποιείται η συνάρτηση rand() η οποία κάθε φορά που καλείται επιστρέφει διαφορετικό ακέραιο αριθμό από 0 μέχρι τον RAND_MAX που έχει ορισθεί στο περιβάλλον εργασίας. Η συνάρτηση βρίσκεται στη διασύνδεση stdlib.h η οποία βέβαια πρέπει να δηλωθεί ως. Υπάρχει βέβαια τρόπος να αλλάξουμε όπως επιθυμούμε τα όρια των τυχαίων αριθμών ανάλογα με την περίσταση, στο ζάρι από 1 μέχρι 6, στο ΛΟΤΤΟ από 1 μέχρι 49 και στο νόμισμα κορώνα-γράμματα. Ας δοκιμάσουμε την παραγωγή τυχαίων αριθμών από 1 μέχρι 49. Αυτό μπορεί να γίνει αν το διάστημα από 0 μέχρι τον RAND_MAX το αναγάγουμε από 1 μέχρι 49. Ας μελετήσουμε τα 2 επόμενα παραδείγματα. ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 5

Παραδείγματα τυχαίων αριθμών int i, temp; {printf("ο ΜΕΓΙΣΤΟΣ ΤΥΧΑΙΟΣ ΑΡΙΘΜΟΣ ΕΙΝΑΙ : %d\n", RAND_MAX); printf("το ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΓΕΙ 6 ΤΥΧΑΙΟΥΣ ΑΡΙΘΜΟΥΣ ΤΟΥ ΛΟΤΤΟ \n"); for(i=1;i<7;i++) { temp=temp%49+1; printf("%5d",temp); return 0;} #include <time.h> int i,temp; {srand((int) time(null)); printf("ο ΜΕΓΙΣΤΟΣ ΤΥΧΑΙΟΣ ΑΡΙΘΜΟΣ ΕΙΝΑΙ : %d\n", RAND_MAX); printf("το ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΓΕΙ 6 ΤΥΧΑΙΟΥΣ ΑΡΙΘΜΟΥΣ ΤΟΥ ΛΟΤΤΟ \n"); for(i=1;i<7;i++){ temp=temp%49+1; printf("%5d",temp);} returnσινατκασ 0;} Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 6

Εφαρμογές σε προβλήματα #include <time.h> #include <time.h> #include <math.h> int MKD(int n1, int n2); int protos(int n); {int i,n1,n2,temp; {int i,temp; srand((int) time(null)); srand((int) time(null)); for(i=1;i<=10;i++) { for(i=1;i<=10;i++) { n1=temp%2000+1; temp=temp%12+1; if(protos(temp)>0) printf("ο αριθμός %d δεν είναι n2=temp%2000+1; πρώτος\n",temp); else printf("ο αριθμός %d είναι πρώτος \n",temp);} printf("ο ΜΚΔτων%d και %d είναι o %d\n",n1,n2,mkd(n1,n2));} return 0; return 0;} } int MKD(int n1, int n2) int protos(int n) { { int i, limit; int r=1; if(n<=1) return (1); while(r>0) { if(n==2) return (0); r=n1%n2; if(n%2==0) return (1); if(r==0) break; limit=sqrt(n)+1; n1=n2; for (i=3; i<=limit; i+=2) { if(n%i==0) return (1);} n2=r; } return (0); return (n2); } } ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 7