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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 9 Ο. Διαχείριση αλφαριθμητικών και πράξεις σε επίπεδο bit ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΙΝΑΤΚΑΣ Ι.

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

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

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

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

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

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

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

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

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

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

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

Συµβολοσειρές - Strings

Συμβολοσειρές Ορίσματα στη main()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

char name[5]; /* define a string of characters */

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Συμβολοσειρές, Δείκτες και Παραδείγματα (Κεφάλαιο 13, KNK-2ED)

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 6: Πίνακες αλφαριθμητικά

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

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

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

Διάλεξη 7: Συμβολοσειρές, Δείκτες και Παραδείγματα

Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων. 19. Αλφαριθμητικά II. Ιωάννθσ Κατάκθσ. ΕΠΛ 032: Προγραμματιςμόσ Μεκόδων Επίλυςθσ Προβλθμάτων

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

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

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

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

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

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

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

ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ. Παράδειγμα 1 Δήλωση και αρχικοποίηση μονοδιάστατου πίνακα [5] με χρήση δομής επανάληψης με συνθήκη στην είσοδο και μετρητή.

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

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

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

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

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

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

Τύποι Δεδομένων Είσοδος/Έξοδος

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

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

Προγραμματισμός II. Δυναμική διαχείριση μνήμης

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

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

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

Ενδεικτική περιγραφή μαθήματος

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

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

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

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

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

Εισαγωγή στους Δείκτες (Pointers)

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

Η Γλώσσα Προγραμματισμού C (Μέρος 3 - Συναρτήσεις, Πίνακες και Δείκτες) Εισαγωγή στις Συναρτήσεις

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

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

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

Πρόλογος. if (παράσταση) εντολή1 else εντολή2. Από εδώ και πέρα θα αναφέρεται ως K&R.

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ.

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

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

B. Ενσωμάτωση Ιθαγενών Μεθόδων

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

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

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

Αναζήτηση και ταξινόμηση

Transcript:

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

Τα αλφαριθμητικά ως πίνακες Ένα αλφαριθμητικό (string) αναπαρίσταται εσωτερικά ως ένας πίνακας χαρακτήρων που τερματίζεται από τον ειδικό χαρακτήρα NULL ('\0') 1000 1001 1002 1003 1004 1005 Hello H e l l o \0

Τα αλφαριθμητικά ως πίνακες (συνέχ). Το παραπάνω δημιουργείται με τις εξής εντολές: char carray[6]; carray[0] = 'H'; carray[1] = 'e'; carray[2] = 'l'; carray[3] = 'l'; carray[4] = 'o'; carray[5] = '\0';

Τα αλφαριθμητικά ως πίνακες (συνέχ.) Το ίδιο αποτέλεσμα έχουν και οι εντολές char carray[] = Hellο ; char carray[6] = "Hello"; char carray[] = {'H','e','l','l','o','\0'}; char carray[6] = {'H','e','l','l','o','\0'};

Τα αλφαριθμητικά ως πίνακες (συνέχ.) Για την προσπέλαση κάθε χαρακτήρα ενός αλφαριθμητικού: int i; char s[] = Hello, John ; for (i=0; s[i]!= '\0';i++) { } κάνε κάτι με το στοιχείο s[i]

Παράδειγμα: Η συνάρτηση FindFirstVowel Με χρήση αφηρημένων αλφαριθμητικών (βιβλιοθήκη strlib) int FindFirstVowel(string word) { } int i; for (i=0; i<stringlength(word); i++) { } if (IsVowel(IthChar(word,i)) return (i); return (-1);

Παράδειγμα: Η συνάρτηση FindFirstVowel Με χρήση πινάκων int FindFirstVowel(char word[]) { } int i; for (i=0; word[i]!= '\0'; i++) { } if (IsVowel(word[i])) return (i); return (-1);

Παράδειγμα: Η συνάρτηση FindFirstVowel Με χρήση δεικτών int FindFirstVowel(char * word) { } char *cp; for (cp = word; *cp!= '\0' ; cp++) { } if (IsVowel(*cp) return (cp - word); return (-1);

Τα αλφαριθμητικά ως αφηρημένος τύπος Η δήλωση char *s; είναι ισοδύναμη με την string s; Στη βιβλιοθήκη genlib.h υπάρχει ο ακόλουθος ορισμός typedef char *string;

Δείκτες και μεταβλητές πίνακα για αλφαριθμητικά Το παρακάτω τμήμα κώδικα είναι έγκυρο char *carray; carray = A fool on the hill ; Το παρακάτω τμήμα κώδικα δεν θα μεταγλωττιστεί char carray[32]; carray = Another Green World ; Θα προκύψει ένα μήνυμα σφάλματος στη μεταγλώττιση της μορφής Lvalue required...

Η βιβλιοθήκη strlib.h (ANSI C) strcpy(dst, src) strncpy(dst, src, n) strcat(dist, src) strncat(dist, src,n) strlen(s) strcmp(s1,s2) strchr(s,ch) strrchr(s, ch) strstr(strpattern,string)

Η συνάρτηση strcpy strcpy(char dst[], char src[]) Αντιγράφει τη συμβολοσειρά src στην συμβολοσειρά dst. Παράδειγμα char buffer[128]; strcpy(buffer, Elearnor Rigby );

Μια υλοποίηση της strcpy void strcpy(char dst[], char src[]) { int i; for (i = 0; src[i]!= '\0'; i++) { dst[i] = src[i]; } dst[i] = '\0'; }

Μια παραδοσιακή υλοποίηση της strcpy void strcpy(char *dst, char *src) { } while (*dst++ = *src++);

Υπερχείλιση Με τη χρήση της strcpy είναι δυνατόν να συμβεί υπερχείλιση περιοχής προσωρινής αποθήκευσης (buffer overflow) char carray[6]; strcpy(carray, This is a long string );

Η συνάρτηση strcat strcat (char dest[], char src[]) Αντιγράφει τη συμβολοσειρά dest στο τέλος της συμβολοσειράς src Παράδειγμα char name[128]; strcpy(name, John ); strcat(name, ); strcat(name, Lennon );

Η συνάρτηση strncat strncat (char dest[], char src[], int n) Αντιγράφει n το πολύ χαρακτήρες της συμβολοσειράς dest στο τέλος της συμβολοσειράς src Παράδειγμα char name[128]; strcpy(name, John ); strcat(name, ); strncat(name, Lennon, 3); /* John Len */

Συναρτήσεις αναζήτησης char * strchr(char s[], char ch) Επιστρέφει έναν δείκτη προς τη θέση σε ένα αλφαριθμητικό όπου βρέθηκε ο χαρακτήρας ch char * strrchr(char s[], char ch) Ίδια λειτουργία με την strchr ξεκινώντας από το τέλος του αλφαριθμητικού char * strstr(char s1, char s2[]) Αναζητά την πρώτη εμφάνιση της συμβολοσειράς s2 στην s1.

Εφαρμογή 1 Να φτιαχτεί συνάρτηση η οποία δέχεται ως είσοδο μια συμβολοσειρά και επιστρέφει τη θέση του μεγαλύτερου στη σειρά χαρακτήρα της συμβολοσειράς, σύμφωνα με τη διάταξη των χαρακτήρων 'a', 'b',...,'x','y',z', 'A', 'B',..., 'Χ', 'Υ', 'Ζ',... Παράδειγμα για τη συμβολοσειρά another επιστρέφεται το 3, η θέση του 't'.

Εφαρμογή 2 (Άσκηση 1 σελ 600). Να φτιαχτεί μια συνάρτηση η οποία δέχεται ως όρισμα ένα αλφαριθμητικό ως πίνακα χαρακτήρων και επιστρέφει το μέγεθος του αλφαριθμητικού. Πρόκειται για εναλλακτική υλοποίηση της strlen. Να γίνει με for και με while

Η βιβλιοθήκη ctype (επιλογή) isalnum,isalpha Ελέγχει αν ένας χαρακτήρας είναι αλφαριθμητικός (A-Z, a-z, 0-9). Επιστρέφει 1 σε περίπτωση αν ο χαρακτήρας είναι αλφαριθμητικός και 0 αλλιώς isdigit Ελέγχει αν ένας χαρακτήρας είναι ψηφίο (0-9) islower Ελέγχει αν ένας χαρακτήρας είναι μικρό (λατινικό) γράμμα (a-z). isupper Ελέγχει αν ένας χαρακτήρας είναι κεφαλαίο (λατινικό) γράμμα (A-Z).

Ένα σύνθετο παράδειγμα Πρόγραμμα invert.c σελ. 594. Πρόγραμμα αντιστροφής ενός ονόματος. Παράδείγματα: Δίνοντας το όνομα Andreas F. Papasalouros παίρνουμε το Papasalouros, Andreas F. Δίνοντας Steve Miller παίρνουμε Miller, Steve