37
3/2/2000 epl-131 1 Ανασκόπηση της C (+μέθοδος ανάλυσης) • Μοντελα Προγραμματισμου • Ιστορια • Δομη και Στοιχεια C προγραμματος • Συνταξη και Σημμασιολογια • Αναλυση συμπεριφορας με Trace Table

Ανασκόπηση της C (+μέθοδος ανάλυσης )

  • Upload
    avel

  • View
    55

  • Download
    0

Embed Size (px)

DESCRIPTION

Ανασκόπηση της C (+μέθοδος ανάλυσης ). Μοντελα Προγραμματισμου Ιστορια Δομη και Στοιχεια C προγραμματος Συνταξη και Σημμασιολογια Αναλυση συμπεριφορας με Trace Table. Μοντέλα Προγραμματισμού. Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2 - PowerPoint PPT Presentation

Citation preview

Page 1: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 1

Ανασκόπηση της C (+μέθοδος ανάλυσης)

• Μοντελα Προγραμματισμου

• Ιστορια

• Δομη και Στοιχεια C προγραμματος

• Συνταξη και Σημμασιολογια

• Αναλυση συμπεριφορας με Trace Table

Page 2: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 2

Μοντέλα Προγραμματισμού

– Διαδικασιακό ή Προστακτικό – εντολή/ διαδικασία, π.χ. C, Pascal, Modula-2

– Αντικειμενοστρεφές αντικείμενο/ενδοπερίβλημα-κληρονομικότητα, π.χ. C++, Smalltalk, Java

– Συναρτησιακό – συνάρτηση/αποτίμηση εκφράσεων, π.χ. Miranda, ML

– Λογικό – σχέση/μηχανισμός συνεπαγωγής, π.χ. Prolog

Page 3: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 3

Προστακτικές έναντι Δηλωτικές Γλώσσες• Δηλωτικές γλώσσες έχουν υψηλότερη

αφαιρετικότητα. Δεν υπάρχει η έννοια της αποθήκευσης σε σχέση με αυτές τις γλώσσες και επομένως του τελεστή ανάθεσης τιμών (assignment operator).

• Θα χρησιμοποιησουμε C (διαδικασιακη)

Page 4: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 4

Διαδικασιακό Μοντέλο

Κεντρική έννοια η εντολή ή προσταγή Η έννοια της διαδικασίας παρέχει το βασικό

μηχανισμό για αφαιρετικότητα Η ροή ελέγχου (control flow) είναι

ακολουθιακής μορφής Υπάρχει η έννοια της αποθήκευσης

Μεταβλητές έχουν διεύθυνση (χώρο μνήμης), τύπο και τιμή π.χ. int x = 123456;

Page 5: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 5

Ιστορία C

• Αναπτυχθηκε αρχες 1970– Kernighan and Ritchie “The C Programming

Language”, 1978

• Για Systems: OS και μεταγλωτιστες– πολυ πιο ευρειας χρησης σημερα

• Προτυπο ANSI C (1988)

Page 6: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 6

Παράδειγμα Πρόγραμμα

/* paradeigma programma */#include <stdio.h>

voidmain(){

printf(“First C Program\n”);}

Eξαγωγη Προγραμματος:

First C Program>

Page 7: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 7

Σημασιολογια (semantics)

#include <stdio.h>/* paradeigma programma */

voidmain(){

}printf(“First C Program\n”);

Σχολια

Οδηγιες προς προεπεξεργαστηγια συμπεριληψη βιβλιοθηκης

Ορισμος συναρτησης mainκαθε προγραμμα εχει main

Εντοληκαλει συναρτησηβιβλιοθηκης για εξαγωγη - παραμετροςακολουθια χαρακτηρων

Αγκυλες περιεχουν (σωμα)εντολες της συναρτησης main

Page 8: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 8

/* programma poy ypologizei athroisma * dyo akeraiwn arithmwn */#include <stdio.h>

voidmain(){

int numbera, numberb; /* inputs*/int sum;

printf(“Enter two numbers: “);scanf(“%d%d”,&numbera, &numberb);

sum = numbera + numberb;

printf(“The sum of %d and %d is %d\n”,numbera, numberb, sum);

}

Page 9: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 9

Εξαγωγη

Enter two numbers: 34 -12

The sum of 34 and -12 is 22

> fooEnter two numbers: 3 0

The sum of 3 and 0 is 3>

Page 10: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 10

/* programma poy ypologizei athroisma * dyo akeraiwn arithmwn */

#include <stdio.h>

voidmain(){

}

int numbera, numberb; /* inputs*/int sum;

printf(“Enter two numbers: ”);scanf(“%d%d”,&numbera, &numberb);

sum = numbera + numberb;

printf(“The sum of %d and %d is %d\n”,numbera, numberb, sum);

Συναρτηση main

Δηλωσεις: ακεραιες μεταβλητες

Βιβλιοθηκη για Ι/Ο

Εντολες με συναρτησεις stdioΕισοδος δεδομενωνμεταβλητες επονται αποτον τελεστη διευθυνσης &

Σχολια

Εντολη με συναρτηση stdioΕξαγωγη δεδομενων

εντολη+ τελεστης (operator) προσθεσηςδυαδικος τελεστης: δυο τελεσταιους (operands)= τελεστης αναθεσης

Page 11: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 11

Γενικες Παρατηρησεις

• Kατανοητα ;)

• Και τα δυο εχουν main

• ολες οι εντολες και δηλωσεις τελειωνουν με ;• χρηση συναρτησεων stdio (printf, scanf)

– printf εκτυπωνει• \n κινει τον δρομεα (cursor) στην επομενη γραμμη

– scanf διαβαζει απο τον χρηστη• & παιρνει διευθυνση μεταβλητης, * παιρνει τιμη

Page 12: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 12

Δομή προγραμματος C

/* σχολια */

/* οδηγιες στον προεπεξεργαστη */

/* δηλωσεις σταθερων, μεταβλητων*/

/* ορισμος συναρτησεων */

/* ορισμος συναρτησης main */

Page 13: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 13

Δομή προγραμματος C (συν.)

• Το προγραμμα μπορει να αποτελειται απο ενα ή περισσοτερα αρχεια

• C ειναι διαδικασιακη γλωσσα– συναρτησεις (functions)– μεταβλητες (variables)

Page 14: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 14

Σχόλια

• Συνταξη: ξεκινουν με /* και τελειωνουν με */

• Καμμια σημασια αλλα πολυ σημαντικο μερος ενος προγραμματος (τεκμηριωση)

/* auto einai ena syntaktika ortho sxolio*/

/* kai auto * einai * syntaktika * ortho */

Page 15: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 15

Σχολια (συν.)

/* auto * ti* einai */

/***********auto??? ***************/

/* lathos sxolio */ giati */

*/ einai lathos??? /*

Page 16: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 16

#include

• Οδηγια στον προεπεξεργαστη για ενσωματωση βιβλιοθηκων

• Μία βιβλιοθήκη (library ή header file) είναι μία συλλογή χρήσιμων συναρτήσεων και σταθερων

• Συνταξη: #include <header file>πχ: #include <stdio.h>

Page 17: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 17

#include (συν.)

• Ενσωματωση επιτρεπει την χρηση συναρτησεων και σταθερων μιας βιβλιοθηκης – πχ η βιβλιοθήκη stdio περιέχει, ανάμεσα σε άλλα,

τις συναρτήσεις printf, για εκτύπωση πληροφοριών, και scanf, για εισδοχή πληροφοριών

• Αλλες διαταγες στον προεξεργαστη:– define, ifdef, if, else, endif, undef

Page 18: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 18

Ονοματα στην C

• Για σταθερες, μεταβλητες, συναρτησεις

• Η C ειναι CASE SENSITIVE, κεφαλαια και μικρα γραμματα ειναι διαφορετικα– foo και FOO ειναι δυο διαφορετικα ονοματα

• Χρησιμοποιαται αυτοεπεξηγηματικα ονοματα

• Ονοματα δεν πρεπει να χρησιμοποιουν δεσμευμενες λεξεις

Page 19: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 19

Δευμεσμένες Λέξεις(Reserved Words)

• Λεξεις με ειδικη σημμασια για την C. Δεν πρεπει να οριζονται ξανα σαν ονοματα

autobreakcasecharconstcontinuedefaultdo

doubleelseenumexternfloatforgotoif

intlongregisterreturnshortsignedsizeofstatic

structswitchtypedefunionunsignedvoidvolatilewhile

Page 20: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 20

Συνταξη Ονοματος

ονομα

_

L

N

L: letters a-z A-ZN: numbers 0-9_ : underscore

πχ metavliti rectangle_area _index_123 1variable %super^ se tria meroi

L

_

Page 21: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 21

Σημμασια Μεταβλητής

• Αποθηκευση και αναγνωση τιμων

• Καθε μεταβλητη εχει: – τυπο

• βασικοι: int, char, float, double

• μεγεθος: 4Β, 1Β, 4Β, 8Β (καθε κυψελιδα 1 Byte)

– (συμβολικο) ονομα • το ονομα αντιστοιχει σε συγκεκριμενη διευθυνση στην

μνημη

– τιμη

Εξαρταται αποτο λειτουργικοσυστημα

Page 22: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 22

Σημασια Μεταβλητηςτυπος ονομα

(διευθυνση)τιμη

0……...…

………...

int count;

137279

count = 137;

count = count + 142;

foo(&count); Διευθυνση του count

98760060

τυπος διευθυνσης ονομαζεται δεικτης (pointer) πχint *deikths;

Page 23: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 23

Σημασια Μεταβλητης (συν.)

• Πρεπει να δηλωνεται πριν χρησιμοποιηθει

• Εαν βρισκεται στα αριστερα τελεστη αναθεσης = η τιμη του αποτελεσματος της εκφρασης (expression) στα δεξια του = αποθηκευεται στην διευθυνση της μεταβλητης Αλλιως χρησιμοποιειται η τιμη της μεταβλητης

Page 24: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 24

Δηλωση Μεταβλητης (variable)

Δηλωσημεταβλητηςμε βασικοτυπο

float

char

int

double

ονομα,

;

char letter;int count, sum;float area, double volume;int index; cost; double charge; float angle, income;

Page 25: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 25

Δηλωση Σταθερας (constant)

Δηλωσησταθερας ονομα#define τιμη

#define PI 3.1453#define YES 1#define NO 1#define TRUE 1#define PISQUARE PI*PI#define ERROR_SPACE_MESSAGE “error:run out of space”

Page 26: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 26

Σημασια Σταθερας

• Σταθερες εχουν:– τιμη– ονομα οχι ομως διευθυνση– μεταγλωτιστης αντικαθιστα το ονομα με την τιμη

• Διευκολυνει:– τροποποιησεις– διαβασμα ενος προγραμματος (PI ή 3.1453)

Page 27: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 27

Τύποι Δεδομένων

• Ένας τύπος δεδομένων είναι ένα σύνολο τιμών και ένα σύνολο λειτουργιών (πράξεων) που μπορούν να εφαρμοστούν σε αυτές τις τιμές– βασικοι (char , int , float, double)– συνθετοι (arrays, unions, structs)

Page 28: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 28

char (χαρακτηρας)

• Αναπαριστά ατομικούς χαρακτήρες – A-Z, a-z, 0-9, !@#$%^&, ειδικά σύμβολα \n, κτλ

• Μεγεθος 1 byte. Ποσες μοναδικες τιμες?

• Κυριολεκτικές τιμές εσωκλείονται σε αποστρόφους, π.χ. Α, a, 9, , , *, \n, \, κτλ

• Οι απόστροφοι δεν χρειάζονται όταν εισάγονται χαρακτήρες

Page 29: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 29

int (ακέραιος)

• Αναπαριστά ακεραίους αριθμούς

• Μεγεθος 4 bytes, πεδίο τιμών -231-1.. +231-1

• Παραδείγματα κυριολεκτικών τιμών: -2189456 0 50 +24562 –3245 13576313

• Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασμός (*), διαίρεση (/), υπόλοιπο (%), κτλ

Page 30: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 30

float (κινητης υποδιαστολης μονης ακριβειας)

• Αναπαριστά τους πραγματικούς αριθμούς

• Μεγεθος: 4 bytes, 1x1037,1x10-37

• Πράξεις: πρόσθεση (+), αφαίρεση (-), πολλαπλασιασμός (*), διαίρεση (/)

• Σημειογραφία για κυριολεκτικές τιμές:• 1.258 106 = 1258000.0 = 1.258e6 = 1.258E6

• 8.9 x 10-4 = 0.00089 = 8.9e-4 = 8.9e-4 = .00089

Page 31: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 31

double (κινητης υποδιαστολης διπλης ακριβειας)

• Ιδιος τυπος με float αλλα με μεγαλυτερη ακριβεια

• Μεγεθος 8 bytes

Page 32: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 32

Συναρτήσεις (functions)

• Καθε C προγραμμα αποτελειται απο μια ή περισοτερες συναρτησεις

• Καθε προγραμμα εχει μια συναρτηση main

• Εκτελεσης ξεκινα απο την συναρτηση main

• Συναρτησεις καλουνται (called) και επιστρεφουν (return)

• Οταν καλουνται παιρνουν παραμετρους

Page 33: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 33

Συνταξη<τυπος επιστροφης> <Ονομα_Συναρτησης>(<λιστα παραμετρων>){ /* αρχη της συναρτησης */

/* δηλωσεις μεταβλητων */

/* εντολες */

return <εκφραση>;

} /* τελος της συναρτησης */

Page 34: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 34

Συναρτήσεις (συν.)

intdisplay(){

printf(“First C Program\n”);

return(0);}

Συναρτηση δεν παιρνει παραμετρους

Επιστρεφει την τιμη 00 ειναι int

Page 35: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 35

Συναρτήσεις (συν.)

intcompute_sum(int a, int b){

int sum;

sum = a + b;

return sum;}

Συναρτηση παιρνει δυο παραμετρους

Επιστρεφει την τιμη sumπου ειναι int

Page 36: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 36

#include <stdio.h>int compute_sum(int a, int b){

int sum;sum = a + b;return sum;

}void main(){

int numbera, numberb; /* inputs*/int sum;

printf(“Enter two numbers: “);scanf(“%d%d”,&numbera, &numberb);

sum = compute_sum(numbera, numberb);

printf(“The sum of %d and %d is %d\n”,numbera, numberb, sum);

}

Page 37: Ανασκόπηση της  C  (+μέθοδος ανάλυσης )

3/2/2000 epl-131 37

1η Ασκηση

• Αλλαξτε το προγραμμα που υπολογιζει εμβαδο κυκλου να υπολογιζει ογκο ενος κυλινδρου.

• Ημερ. Παραδ. 15/2