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

Σχετικά έγγραφα
Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός HY: Γλώσσα Προγραμματισμού C

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

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

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

Συναρτήσεις διαχείρισης αλφαριθμητικών

Εισαγωγή στην Tcl. Τί είναι η Tcl;

Θέματα Προγραμματισμού Η/Υ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΥ ΕΡΓΑΣΤΗΡΙΟ 9. ΑΣΚΗΣΕΙΣ (με ενδεικτική λύση)

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

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

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

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

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

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Υπολογισμός - Εντολές Επανάληψης

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Συναρτήσεις και διαδικασίες

Πληροφορική ΙΙ Θεματική Ενότητα 8

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

Οντοκεντρικός Προγραμματισμός

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

ΣΥΝΑΡΤΗΣΕΙΣ. Η σύνταξη μιας συνάρτησης σ ένα κελί έχει την γενική μορφή: =όνομα_συνάρτησης(όρισμα1; όρισμα2;.)

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

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

Συναρτήσεις στη Visual Basic 6.0

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

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Συναρτήσεις. Εισαγωγή

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 8: Συναρτήσεις. Κ.

Παραδείγματα με συναρτήσεις στη C

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Προγραμματισμό για ΗΜΥ

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

Εισαγωγή στον δομημένο προγραμματισμό

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Οι συναρτήσεις στη γλώσσα C

int abs( int x ), επιστρέφει την απόλυτη τιμή του ακεραίου x Πχ abs( 11) ισούται με 11, abs(34) ισούται με 34 double fb( fabs( double x ), επιστρέφει

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

Transcript:

Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas Γλώσσα Προγραμματισμού C Εισήγηση #7 Συναρτήσεις, Αναδρομή, Συναρτήσεις Χρόνου, Τυχαίοι Αριθμοί. Ηλίας Κ. Σάββας Εισήγηση #7 2 Συναρτήσεις Μία συνάρτηση είναι ένα σύνολο προτάσεων (εντολών) το οποίο καλείται με το όνομά της για να διεκπεραιώσει μία συγκεκριμένη εργασία. Η C έχει πολλές βιβλιοθήκες που περιέχουν συναρτήσεις (μερικές τις έχουμε ήδη χρησιμοποιήσει) όπως οι: stdio.h: printf(), scanf(), gets(), puts(), math.h: pow(), sqrt(), sin(), cos(), tan(), string.h: strlen(), strcpy(), strcmp(), Ηλίας Κ. Σάββας Εισήγηση #7 3 1

Συναρτήσεις: Παράδειγμα int add(int x, int y) int result; result = x + y; return result; ή int add(int x, int y) return x+y; Χρήση συνάρτησης a= add(4, 5); p = 5; a = add(3, p); p = 4; q = 5; a = add(p,q); printf( \n%d, add(1,2)); Ηλίας Κ. Σάββας Εισήγηση #7 4 Παράδειγμα Προγράμματος με Συνάρτηση float multiply(float, float); float x=3.0, y=5.6, result; Δήλωση της συνάρτησης FUNCTION PROTOTYPE result = multiply(x, y); printf("\n\n %.2f x %.2f = %.2f\n\n", x, y, result); /* Functions */ float multiply(float a, float b) float c; c = a * b; return c; Κλήση της συνάρτηση για να πολλαπλασιάσει δύο floats Ορισμός της συνάρτησης Όνομα Συνάρτησης 1) a, b: παράμετροι, 2) c: τοπική μεταβλητή, 3) Επιστροφή (return) αποτελέσματος. Ηλίας Κ. Σάββας Εισήγηση #7 5 Γιατί Είναι Χρήσιμες οι Συναρτήσεις? Η πραγματική δύναμη μίας γλώσσας προγραμματισμού παρατηρείται στην δυνατότητα να μας επιτρέπει να γράφουμε δικές μας συναρτήσεις επιπλέον στις ήδη υπάρχουσες στις βιβλιοθήκες της, Όσο τα προγράμματα γίνονται πιο περίπλοκα, είναι αδύνατο να τα γράφουμε χωρίς την χρήση συναρτήσεων: Για να επιλυθεί ένα πολύπλοκο πρόβλημα είναι αναγκαίο να το διασπούμε σε μικρότερα κομμάτια (decomposition) τα οποία να είναι πιο εύκολα διαχειρίσιμα. Οι συναρτήσεις μας επιτρέπουν να το πραγματοποιούμε. Ηλίας Κ. Σάββας Εισήγηση #7 6 2

Συναρτήσεις int minimum(int a, int b) if (a<b) return a; return b; int ο τύπος της επιστρεφόμενης τιμής minimum το όνομα της συνάρτησης (int a, int b) δέχεται 2 ακεραίους, a, b οι παράμετροι της συνάρτησης (formal arguments) return τερματίζει την συνάρτηση και επιστρέφει στο κυρίως πρόγραμμα μία τιμή Κλήση Συνάρτησης: x = minimum(3,4); ή x = minimum(p,3) ή x = minimum(p,q) αλλά p, και q έχουν ήδη πάρει τιμή πριν χρησιμοποιηθούν p, q : actual arguments Ηλίας Κ. Σάββας Εισήγηση #7 7 Η Πρόταση return Γενική μορφή: return τιμή ή μεταβλητή ή αριθμητική παράσταση ; Παραδείγματα: return 5; Επιστρέφει μία σταθερή τιμή, return v; Επιστρέφει την τιμή της μεταβλητής v, return 2*v-4; Επιστρέφει το αποτέλεσμα, return ; Δεν επιστρέφει τίποτα, απλά τερματίζει την συνάρτηση. Ηλίας Κ. Σάββας Εισήγηση #7 8 Άλλη μία Συνάρτηση void print_name(void) printf( \n****************** ); printf( \nόνομα, Επίθετο ); printf( \n******************\n ); Δεν υπάρχει τίποτα να επιστραφεί? void Δεν υπάρχουν παράμετροι? Void Κλήση Συνάρτησης? print_name(); Ηλίας Κ. Σάββας Εισήγηση #7 9 3

Γρήγορος Πίνακας Αναφοράς Σύνταξης Πρότυπο συνάρτησης (δήλωση) - Function prototype Ορισμός Συνάρτησης Σύνταξη Τύπος όνομα_συνάρτησης(τύπος παραμέτρου1, τύπος παρ2,, τύπος παρn); ή void Τύπος όνομα_συνάρτησης(τύπος παράμετρος1, τύπος παρ2,, τύπος παρn) τοπικές μεταβλητές; προτάσεις; return τιμή ή μεταβλητή ή αριθμητική παράσταση; Κλήση Συνάρτησης μεταβλητή = όνομα_συνάρτησης(παρ1, παρ2,, παρn); ή όνομα_συνάρτησης (..) ΕΑΝ ΕΊΝΑΙ void Παραδείγματ float average(float, float, float); void print_stars(int n); void print_stars(int n) int i; for (i=0; i<n; i++) printf( * ); R = average(x, y, z); print_stars(10); Ηλίας Κ. Σάββας Εισήγηση #7 10 Τι Είναι Λάθος? void max(a, b); int a, b; if (a>b) return a; return b; void test(int) int I; for (i=1; i<=n; i++) putchar( * ); float min() int a, b; if (a<b) return a; return b; Ηλίας Κ. Σάββας Εισήγηση #7 11 Τι Είναι Λάθος? int max(int a, int b) if (a>b) return a; return b; void test(int N) int i; for (i=1; i<=n; i++) putchar( * ); float min(float a, float b) if (a<b) return a; return b; Ηλίας Κ. Σάββας Εισήγηση #7 12 4

Άσκηση Γράψτε μία συνάρτηση η οποία ελέγχει εάν κάποιος ακέραιος ανήκει σε δεδομένο διάστημα τιμών. int range(int val, int low, int high) if (val>=low && val<=high) return 1; Ηλίας Κ. Σάββας Εισήγηση #7 13 Άσκηση 1 Γράψτε ένα πρόγραμμα το οποίο να μετατρέπει ώρες, λεπτά και δευτερόλεπτα σε δευτερόλεπτα (με χρήση συνάρτησης). Ηλίας Κ. Σάββας Εισήγηση #7 14 Πρόγραμμα 1 int convert_secs(int, int, int); int hours, minutes, seconds; int total_seconds; printf("\nεισαγωγή ωρών, λεπτών και δευτερολέπτων: "); scanf("%d%d%d", &hours, &minutes, &seconds); total_seconds = convert_secs(hours, minutes, seconds); printf("\n\nδευτερόλεπτα = %d\n\n\n", total_seconds); /* Συνάρτηση μετατροπής */ int convert_secs(int h, int m, int s) int t; t = h*60*60 + m*60 + s; return t; Ηλίας Κ. Σάββας Εισήγηση #7 15 5

Άσκηση 2 Να γραφεί ένα πρόγραμμα με χρήση συνάρτησης το οποίο να βρίσκει τον μικρότερο αριθμό μεταξύ 3 δεδομένων ακεραίων. Ηλίας Κ. Σάββας Εισήγηση #7 16 Πρόγραμμα 2 int minimum(int, int, int); int m, a, b, c; printf("\nεισαγωγή 3 ακεραίων : "); scanf("%d%d%d", &a, &b, &c); m = minimum(a, b, c); printf("\n\nο μικρότερος είναι ο %d\n\n", m); /* Συνάρτηση */ int minimum(int x, int y, int z) int temp; temp = x; if (temp > y) temp = y; if (temp > z) temp = z; return temp; Ηλίας Κ. Σάββας Εισήγηση #7 17 Άσκηση 3 Γράψτε ένα πρόγραμμα το οποίο μα υπολογίζει και εκτυπώνει τον Ν-στο όρο της ακολουθίας Fibonacci (με χρήση συνάρτησης) η οποία ορίζεται: F k =F k-1 +F k-2. Οι δύο πρώτοι όροι είναι 1 και 1. Στην συνέχεια, ο κάθε επόμενος όρος είναι το άθροισμα των δύο προηγουμένων του. Για παράδειγμα, εάν n=6, ο 6ος όρος είναι το 8 (1, 1, 1+1=2, 1+2=3, 2+3=5, 3+5=8). Ηλίας Κ. Σάββας Εισήγηση #7 18 6

Πρόγραμμα 3a int fibonacci(int); int N, f; printf("\nεισαγωγή του N : "); scanf("%d", &N); f = fibonacci(n); printf("\n\n%dος όρος = %d\n\n", N, f); /* Ακολουθία Fibonacci - version 1 */ int fibonacci(int n) int a=1, b=1, c=1, i; for (i=3; i<=n; i++) c = a + b; a = b; b = c; return c; Ηλίας Κ. Σάββας Εισήγηση #7 19 Πρόγραμμα 3b - Αναδρομή int fibonacci(int); int N, f; printf("\nεισαγωγή του N : "); scanf("%d", &N); f = fibonacci(n); printf("\n\n%dος όρος = %d\n\n", N, f); /* Ακολουθία Fibonacci - version 2 */ int fibonacci(int n) if (n<3) return 1; return fibonacci(n-1) + fibonacci(n-2); Ηλίας Κ. Σάββας Εισήγηση #7 20 Αναδρομή Μία συνάρτηση είναι αναδρομική όταν καλεί τον εαυτό της. ΠΡΟΣΟΧΗ στην συνθήκη τερματισμού η οποία συνήθως είναι και η αρχή της f N 1, N 1, N 2 f N f N 2, 1 N 2 1, N 0 N! συνάρτησης, N ( N 1)!, N 0 Ηλίας Κ. Σάββας Εισήγηση #7 21 7

1, N 0 N! N ( N 1)!, N 0 int paragontiko ( int N) if (N==0) return 1; return N * paragontiko(n-1); Ηλίας Κ. Σάββας Εισήγηση #7 22 Μαθηματικές Συναρτήσεις (math.h) Συνάρτηση pow(x,y) sqrt(x) abs(x) exp(x) cos(x) sin(x) tan(x) Περιγραφή Δύναμη x y Τετραγωνική ρίζα του x Απόλυτη τιμή του x Υπολογίζει το e x Συνημίτονο γωνίας x σε ακτίνια (radians) Ημίτονο γωνίας x σε ακτίνια Εφαπτόμενη γωνίας x σε ακτίνια.... Ηλίας Κ. Σάββας Εισήγηση #7 23 Τριγωνομετρικές Συναρτήσεις Να γραφεί πρόγραμμα το οποί να εκτυπώνει ένα πίνακα ημιτόνων και συνημίτονων γωνιών από 0 μέχρι 360 μοίρες. Μετατροπή: Μοίρες D σε ακτίνια R R=(3.14159*D)/180 Ηλίας Κ. Σάββας Εισήγηση #7 24 8

Πρόγραμμα #include <math.h> #define Pi 3.14159 int angle; float radians, s, c; printf("\nγωνία\tημ\tσυν"); for (angle=0; angle<=360; angle++) radians = (angle*pi)/360; s = sin(radians); c = cos(radians); printf("\n%5d \t%.2f \t%.2f", angle, s, c); Ηλίας Κ. Σάββας Εισήγηση #7 25 Συναρτήσεις Χρόνου (time.h) Συνάρτηση t=time(null); ctime(&t) Περιγραφή #include <time.h> time_t t; t=time(null); printf("\nη τρέχουσα ημερ/νία. και ώρα είναι:"); printf("\n\n %s\n\n", ctime(&t)); Επιστρέφει στο t την τρέχουσα ώρα (μετρούμενη σε δευτερόλεπτα από τα μεσάνυχτα της 1 Ιανουαρίου του 1970, GMT) Μετατρέπει την ώρα t που επιστράφηκε από την time() σε μία συμβολοσειρά με την τρέχουσα ημερομηνία και ώρα Η τρέχουσα ημερ/νία. και ώρα είναι: Fri Nov 18 11:33:56 2011 Ηλίας Κ. Σάββας Εισήγηση #7 26 Μέτρηση Χρόνου σε Πρόγραμμα #include <time.h> Χρόνος σε δευτερόλεπτα = 19 time_t t1, t2; int i; t1=time(null); for (i=0; i<=100000; i++) printf("\n%d", i); t2= time(null); printf("\n\nχρόνος σε δευτερόλεπτα = %d\n", t2-t1); Ηλίας Κ. Σάββας Εισήγηση #7 27 9

Συναρτήσεις Παραγωγής Τυχαίων Αριθμών (stdlib.h) Συνάρτηση Περιγραφή rand() srand(s) Επιστρέφει μια ψευδο-τυχαία ακέραιη τιμή. Κάθε φορά που εκτελείται το πρόγραμμα εμφανίζει την ίδια ακολουθία ακεραίων αριθμών εκτός και εάν αρχικοποιήσουμε διαφορετικά την παράμετρο της συνάρτησης srand(). Χρήση της συνάρτησης για την διαφοροποίηση της ακολουθίας τυχαίων αριθμών της rand() Τυχαίοι αριθμοί μεταξύ 0 και n: rand() % (n+1) Τυχαίοι αριθμοί μεταξύ a και b: rand() % (b-a+1)+a Ηλίας Κ. Σάββας Εισήγηση #7 28 Παραγωγή 10 τυχαίων αριθμών από 1 μέχρι 6 #include <stdlib.h> #include <time.h> int i, a=1, b=6; srand(time(null)); for (i=1; i<=10; i++) printf("%d\t", rand()%(b-a+1)+a); printf("\n\n"); Ηλίας Κ. Σάββας Εισήγηση #7 29 Συνήθη Προγραμματιστικά Λάθη Οι παράμετροι μίας συνάρτησης πρέπει να συμφωνούν στο πλήθος και τύπο όταν καλούμε την συνάρτηση, Οι παρενθέσεις ( ) χρησιμοποιούνται από τις συναρτήσεις ενώ αγκύλες [ ] από πίνακες για τους δείκτες τους, Δεν υπάρχει ερωτηματικό ; μετά την επικεφαλίδα της συνάρτησης κατά τον ορισμό της αλλά υπάρχει στην δήλωση του προτύπου της, Οι γωνίες στις τριγωνομετρικές (και υπερβολικές) συναρτήσεις) είναι σε ακτίνια, και ΌΧΙ μοίρες. Ηλίας Κ. Σάββας Εισήγηση #7 30 10

Αριθμοί Λόττο Γράψτε ένα πρόγραμμα το οποίο να παράγει 6 αριθμούς του λόττο με χρήση των srand() και rand(). #include <stdlib.h> #include <time.h> int i, a=1, b=49; srand(time(null)); for (i=1; i<=6; i++) printf("%d\t", rand()%(b-a+1)+a); printf("\n\n"); Τι κάνουμε εάν εμφανισθούν όμοιοι αριθμοί??? Ηλίας Κ. Σάββας Εισήγηση #7 31 Αριθμοί Λόττο (βελτιωμένο) Γράψτε ένα πρόγραμμα το οποίο να παράγει 6 αριθμούς του λόττο με χρήση των srand() και rand().. int i, j, R[6], flag, a=1, b=49; srand(time(null)); for (i=0; i<6; i++) R[i] = rand()%(b-a+1)+a; do flag = 0; for (j=0; j<i; j++) if (R[j] == R[i]) R[i] = rand()%(b-a+1)+a; flag = 1; while (flag==1); for (i=0; i<6; i++) printf("%d\t", R[i]);. Ηλίας Κ. Σάββας Εισήγηση #7 32 Τέλος της #7 Εισήγησης Ερωτήσεις??? Χρησιμοποιήστε το email εάν θέλετε να με ρωτήσετε οτιδήποτε: savvas@teilar.gr Σημειώσεις Μαθήματος (και όχι μόνο): http://e-class.teilar.gr/ Ηλίας Κ. Σάββας Εισήγηση #7 33 11