Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες

Σχετικά έγγραφα
Διαδικαστικός Προγραμματισμός

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

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

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

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

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

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

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

Μεταβλητές τύπου χαρακτήρα

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

Διάλεξη 5η: Εντολές Επανάληψης

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

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

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

2.1. Εντολές Σχόλια Τύποι Δεδομένων

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

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

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

Αλφαριθμητικά, πίνακες και δείκτες

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

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

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

ΘΕΜΑ : ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 22/1/ :11 Όνομα: Λεκάκης Κωνσταντίνος καθ. Τεχνολογίας

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

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

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

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

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

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Δεδομένα, Τύποι και Τιμές

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

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

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

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

Προγραμματισμός Υπολογιστών με C++

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

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

Συστήματα αρίθμησης. = α n-1 *b n-1 + a n-2 *b n-2 + +a 1 b 1 + a 0 όπου τα 0 a i b-1

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

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

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

Επεξεργασία κειμένου και συμβολοσειρών σε C

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

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

Αριθμητικά Συστήματα Η ανάγκη του ανθρώπου για μετρήσεις οδήγησε αρχικά στην επινόηση των αριθμών Κατόπιν, στην επινόηση συμβόλων για τη παράσταση

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

Αντικειμενοστρεφής Προγραμματισμός

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Υπολογισμός - Εντολές Ελέγχου

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

Transcript:

Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες

Παραγωγή τυχαίων αριθμών: Η συνάρτηση rand Η συνάρτηση rand() ανήκει στη βιβλιοθήκη stdlib της C. int rand(void); Για την χρήση της σε ένα πρόγραμμα εισάγουμε την οδηγία #include <stdlib.h> H rand() επιστρέφει έναν τυχαίο αριθμό μεταξύ 0 και RAND_MAX όπου RAND_MAX είναι μια σταθερή που εξαρτάται από το υπολογιστικό σύστημα 2

Παράδειγμα: Σελ. 320 του βιβλίου #include <stdio.h> #include <stdlib.h> #include "genlib.h" #define NTrials 10 /* Ένα πρόγραμμα που κάνει 10 ρίψεις ενός κέρματος */ main() { int i; } for (i = 0; i < NTrials; i++) { if (rand() <= RAND_MAX / 2) { printf("heads\n"); } else { printf("tails\n"); } } 3

Απαριθμητοί τύποι Τύποι δεδομένων που παίρνουν τιμές από ένα απαριθμητό (πεπερασμένο) σύνολο τιμών Παραδείγματα Οι ημέρες της εβδομάδας Κυριακή, Δευτέρα,..., Σάββατο Τα 4 σημεία του ορίζοντα Ανατολή, Δύση, Βορράς, Νότος. 4

Αναπαράσταση απαριθμητών τύπων ως ακεραίων Με χρήση της οδηγίας #define #define Sunday 0 #define Monday 1 #define Tuesday 2 #define Wednesday 3 #define Thursday 4 #define Friday 5 #define Saturday 6 5

Ορισμός νέων απαριθμητών τύπων Η λέξη κλειδί typedef Ορίζει νέους σύνθετους τύπους δεδομένων. Ορισμός απαριθμητών τύπων με την typedef enum typedef enum { λίστα στοιχείων } όνομα τύπου; 6

Παράδειγμα ορισμού απαριθμητού τύπου typedef enum { Sunday, Monday, Tuesday, Wednsday, Thursday, Friday, Saturday } weekdayt; Με την παραπάνω εντολή, οι σταθερές Sunday,..., Saturday αναπαρίστανται εσωτερικά ως διαδοχικοί ακέραιοι, ξεκινώντας από το 0. 7

Παράδειγμα ορισμού απαριθμητού τύπου (συνέχ.) Αν θέλουμε η αρίθμηση να ξεκινάει, π.χ. από το 1 γράφουμε typedef enum { Sunday = 1, Monday, Tuesday, Wednsday, Thursday, Friday, Saturday } weekdayt; Τώρα, η ανάθεση γίνεται ως εξής: Sunday = 1, Monday = 2,..., Saturday = 7. 8

Πράξεις με απαριθμητούς τύπους Οι απαριθμητοί παίρνουν σταθερές τιμές οι οποίες παριστάνονται από ακεραίους. Συμπεριφέρονται ως ακέραιοι. Είναι δυνατή η εκτέλεση πράξεων ακεραίων με απαριθμητούς τύπους: weekdayt wday; wday = Sunday; wday = wday + 1; wday = wday % 7; 9

Βαθμωτοί τύποι Οι απαριθμητοί τύποι περιλαμβάνονται στους βαθμωτούς τύπους της C. Οι βαθμωτοί τύποι χρησιμοποιούνται όπως οι ακέραιοι. 10

Παράδειγμα Χρήση τύπου enum με την εντολή switch typedef enum {North, East, South, West} directiont; /* H synarthsh directiont epistrefei thn anti8eth kateythynsh apo ayth toy orismatos ths */ directiont OppositeDirection(directionT dir) { } switch (dir) { } case North: return (South); case South: return (North); case East: return (West); case West: return (East); default: printf( Akyrh katey8ynsh\n ); 11

Χαρακτήρες Ο τύπος char Ο κώδικας ASCII Κωδικοποίηση χαρακτήρων με αριθμούς 7 δυαδικών ψηφίων. (Από 0 έως 127). Σήμερα υφίστανται νεώτεροι κώδικες χαρακτήρων (Unicode standard) υφίστανται Είναι δυνατόν να περιλαμβάνουν τους χαρακτήρες κάθε αλφαβήτου χρησιμοποιώντας έως και 32 bit για την κωδικοποίηση Παραδείγματα: ο χαρακτήρας 'Α' (αγγλικό) αναπαρίσταται στον κώδικα ASCII με τον αριθμό 65μ ο 'Β' με τον 66, ο 'a' με τον αριθμό 97, κλπ. 12

Πίνακας κωδικών ASCII (στο δεκαεξαδικό) 13

Σταθερές ειδικοί χαρακτήρες Σταθερές χαρακτήρων: Περικλείονται από τα σημάδια ' και '. Παράδείγματα: 'Α', 'c', '+','2' Δύο είδη χαρακτήρων: Εκτυπώσιμοι χαρακτήρες (όπως οι παραπάνω) Ειδικοί χαρακτήρες οι οποίοι εκτελούν συγκεκριμένες ενέργειες. Παραδείγματα: Χαρακτήρας αλλαγής γραμμής '\n', οριζόντιος στηλοθέτης (tab) '\t', κ.λπ. 14

Παράσταση ειδικών χαρακτήρων της C H δήλωση ειδικών χαρακτήρων στα προγράμματα γίνεται με το συνδυασμό \ [χαρακτήρας] o οποίος ονομάζεται χαρακτήρας διαφυγής (escape character). Παραδείγματα φαίνονται στον διπλανό πίνακα 15

Χαρακτήρες και αλφαριθμητικές σταθερές Μια αλφαριθμητική σταθερά είναι μια ακολουθία από χαρακτήρων, εκτυπώσιμων και ειδικών. Παράδειγμα: My name is \ John\ \n Στο παράδειγμα η αλφαριθμητική σταθερά αποτελείται από τους παρακάτω χαρακτήρες: 'M' 'y' ' ' 'n' 'a' 'm' 'e' ' ' 'i' 's' ' ' '\ ' 'J' 'o' 'h' 'n' '\ ' '\n' 16

Αριθμητική χαρακτήρων Οι χαρακτήρες αναπαρίστανται ως ακέραιοι και τους επεξεργαζόμαστε ως ακεραίους. Έτσι επιτρέπονται οι εξής πράξεις Πρόσθεση ακεραίου σε χαρακτήρα Αφαίρεση ακεραίου από χαρακτήρα Αφαίρεση χαρακτήρα από χαρακτήρα Σύγκριση δύο χαρακτήρων μεταξύ τους. 17

Πρόσθεση και αφαίρεση ακεραίου σε χαρακτήρα main() { } char c,nc; c = 'A'; c ++; /* Το c παίρνει την τιμή 'B' */ nc = '5'; nc -= 5; /*Το nc παίρνει την τιμή '0'(όχι 0!) */ 18

Αφαίρεση χαρακτήρα από χαρακτήρα main() { } char c1,c2, dc; c1 = 'A'; c2 = 'a'; dc = c2 - c1; /* To c1 έχει την τιμή '5'*/ 19

Σύγκριση δύο χαρακτήρων μεταξύ τους main() { char ch; /*...Ανάθεση τιμής στο c... */ if (ch >='0' && ch <= '9') printf( O %c paristanei arithmo\n,ch); else if (ch >='A' && ch <= 'Z') printf( O %c paristanei kefalaio\n,ch); else if (ch >='a' && ch <= 'z') printf( O %c paristanei mikro gramma\n,ch); else... 20

Η βιβλιοθήκη ctype Απαιτείται η οδηγία #include <ctype.h> Περιλαμβάνει τις συναρτήσεις islower(ch) isupper(ch) isalpha(ch) isdigit(ch) ispunct(ch) isspace(c) 21

Οι χαρακτήρες είναι δυνατόν να χρησιμοποιηθούν με την εντολή switch /*Είναι ο χαρακτήρας φωνήεν;*/ bool IsVowel(char ch) { } switch (tolower (ch)) { } case 'a': case 'e': case 'i': case 'o': case 'u': return (TRUE); default: return (FALSE); 22

Είσοδος χαρακτήρων και αλφαριθμητικών Είσοδος χαρακτήρων: Η συνάρτηση getchar της βιβλιοθήκης stdio Είσοδος συμβολοσειρών: Η συνάρτηση GetLine της βιβλιοθήκης simpio. 23

strlib: Μια βιβλιοθήκη χειρισμού συμβολοσειρών Η C δεν έχει ειδικό τύπο για τα αλφαριθμητικά. Χειρίζεται τα αλφαριθμητικά ως πίνακες χαρακτήρων (βλ. επόμενα μαθήματα). Η βιβλιοθήκη strlib του βιβλίου παρέχει έναν τύπο string, ο οποίος δεν είναι βασικός τύπος της C παρέχει ένα σύνολο συναρτήσεων για το χειρισμό αλφαριθμητικών. 24

Εύρεση του μήκους αλφαριθμητικού. Η συνάρτηση StringLength H συνάρτηση int StringLength(string s) υπολογίζει και επιστρέφει το μήκος του αλφαριθμητικού s. Για παράδειγμα η StringLength( Hello\n ) επιστρέφει 6. main() { string str; printf( Enter a string: ); } str = GetLine(); printf( The length is %d.\n, StringLength(str)); 25

Επιλογή χαρακτήρων Η συνάρτηση char char IthChar(string s, int i) επιστρέφει τον i-οστό χαρακτήρα της συμβολοσειράς s ξεκινώντας από το στοιχείο στη θέση 0. Η παρακάτω συνάρτηση επιστρέφει τον τελευταίο χαρακτήρα μιας συμβολοσειράς. char LastChar(string str) { return (IthChar(str, StringLength(str) 1)); } 26

Συνένωση αλφαριθμητικών Η συνάρτηση string Concat(string s1, string s2) επιστρέφει το μια συμβολοσειρά που προκύπτει από τη συνένωση των s1 και s2. string ConcatNCopies(int n, string str) { string result; int i; } result = ; for (i=0;i < n;i++) { result = Concat(result,str); } return result; 27

Άλλες συναρτήσεις Εξαγωγή τμημάτων αλφαριθμητικού string SubString(string str, int start, int end) Σύγκριση δύο αλφαριθμητικών bool StringCompare(string s1, string s2) Αναζήτηση στο εσωτερικό αλφαριθμητικού int FindChar(char ch, string text, int start) int FindString(string str, string text, int start) Μετατροπή πεζών-κεφαλαίων string ConvertToUpperCase(String str) string ConvertToLowerCase(String str) 28

Ασκήσεις Αντιστροφή αλφαριθμητικού Έλεγχος παλίνδρομου (ΑΝΝΑ, BOB) 29

Δείτε: Κεφάλαιο 9 του βιβλίου 30