27
Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 Εργαστήριο 3 Εντολές Επιλογής Γιώργος Λαμπρινίδης

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η πρέπει να είναι ακέραια. Υπολογίζεται

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Η-ΥΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Εργαστήριο3ΕντολέςΕπιλογήςΓιώργοςΛαμπρινίδης

Page 2: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

ΑσκησειςΕργατηρίου2

30/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2

Page 3: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

/* File: pososto.c */

#include <stdio.h>

main()

{double timi, pososto, teliki;

printf("Dwse tin Arxikh Timh tou proiontos\n");

scanf("%lf", &timi);

printf("Dwse to pososto ekptwsis %\n");

scanf("%lf", &pososto);

teliki = timi + (timi*pososto)/100;

printf("H teliki timi einai %lf",teliki);

getchar();

getchar();

}

Page 4: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 4

/* File: antallagi.c */

#include <stdio.h>

main()

{double a, b, interchange;

printf("Dwse ton Atirhmo A\n");

scanf("%lf", &a);

printf("Dwse ton arithmo B\n");

scanf("%lf", &b);

interchange=a;

a=b;

b=interchange;

printf("A = %lf kai B = %lf",a,b);

getchar();

getchar();

}

Page 5: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 5

* File: moriako_baros.c */

#include <stdio.h>

main()

{int c, h, o, n, MW;

printf("Ypologismos Moriakou Barous Enwsh me Xhmiko Typo CxHyOzNw");

printf("Dwse ton Arirhmo Atomwn C\n");

scanf("%d", &c);

printf("Dwse ton Arithmo Atomwn H\n");

scanf("%d", &h);

printf("Dwse ton Atirhmo Atomwn O\n");

scanf("%d", &o);

printf("Dwse ton Arithmo Atomwn N\n");

scanf("%d", &n);

MW=c*12+h*1+o*16+n*14;

printf("To Moriako Baros tiw Enwseis C%dH%dO%dN%d einai %d\n",c,h,o,n,MW);

getchar();

getchar();

}

Page 6: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

ΕντολέςΕπιλογής

l  Σεκάθεγλώσσαπρογραμματισμούυπάρχουνεντολέςπουεπηρεάζουντηροήελέγχουσταπρογράμματα

l  Οικυριότερεςείναιοιif,switch,while,forl  Στιςεντολέςαυτέςείναιπολύσυχνήηχρήσηενόςμπλοκ

εντολών.Έναμπλοκεντολώναποτελείταιαπόεντολέςπουείναικλεισμένεςμέσασεάγκιστρα({και}).Ανσεέναμπλοκεντολώνπεριέχεταιμιαμόνοεντολή,αυτήδενείναιαπαραίτητοναπερικλείεταιμέσασεάγκιστρα

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

6

Page 7: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif

l  Ηεντολήεπιλογήςifείναι:if(<παράσταση>)<μπλοκεπιλογών1>επόμενηεπιλογήl  Ανη<παράσταση>είναιαληθής(έχειτιμήδιάφορηαπότο

μηδέν),θαεκτελεστείτο<μπλοκεντολών1>καιμετάηεπόμενηεντολή

l  Ανη<παράσταση>είναιψευδήςδεθαεκτελεστείτο<μπλοκεντολών1>αλλάθαεκτελεστείαπευθείαςηεπόμενηεντολή

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

7

Page 8: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Λογικόδιάγραμματηςεντολήςεπιλογήςif

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

8

Page 9: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–else

l  Ησύνταξητηςεντολήςif–elseείναι:if(<παράσταση>)<μπλοκεντολων1>else<μπλοκεντολών2>l  Ανη<παράσταση>είναιαληθής(έχειτιμήδιάφορηαπότομηδεν),θαεκτελεσθείτο<μπλοκεντολών1>,αλλιώςτο<μπλοκεντολών2>

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

9

Page 10: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Λογικόδιάγραμματηςεντολήςif–else

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

10

Page 11: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–else

l  Όπωςείδαμε,τοτμήμααπότοelseκαιμετάείναιπροαιρετικό.Ηπροαιρετικότητατουelseμπορείναπροκαλέσειπροβλήματαστηναναγνωσιμότηταπρογραμμάτωνμεεμφωλευμένεςεντολέςif,ανδενυπάρχεισαφήςομαδοποίησημεάγκιστρα,Ανδενυπάρχουνάγκιστραπουναεπιβάλλουνσυγκεκριμένηδομήκάθεelseαντιστοιχείστηναμέσωςπροηγούμενηifπουδενέχειelse Η

- Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

11

Page 12: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–elseΠαράδειγμα1l  Ηενέργεια«ανx>0,τότεy=y–x»σεCγράφεται

if(x>0)y=y–x;

l  Ηενέργεια«ανb2–4ac≥0,τότεd=b2–4ac»σεCγράφεται if(b*b–4*a*c>=0) d=b*b–4*a*c;

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

12

Page 13: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–elseΠιοσύνθετεςέννοιες(1)l  Τιακριβώςσημαίνειτοπαρακάτω;if(n>0)if(a>b)z=a;elsez=b;l  Προσοχή!Ομεταγλωττιστήςδενασχολείταιμετηστοίχιση.

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

13

Page 14: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–elseΠιοσύνθετεςέννοιες(2)l  Τιακριβώςσημαίνειτοπαρακάτω; if(n>0){ if(a>b) z=a; else z=b;}

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

14

Page 15: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–elseΠιοσύνθετεςέννοιες(3)l  Ανθέλαμετοelseνααντιστοιχείστοπρώτοif,έπρεπενατο

γράψουμεέτσι: if(n>0){ if(a>b) z=a; } else z=b;

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

15

Page 16: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςif–elseΈναπιοσύνθετοπαράδειγμαl  If(x>0){sign=1;prinj(“Numberisposiqve\n”);}elseif(x<0){sign=-1;prinj(“Numberisnegaqve\n”);}else{sign=0;prinj(“Numberiszero\n”);}

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

16

Page 17: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

ΕυρεσηΗμερομηνίαςΠασχα/*File:easter.c*/#include<stdio.h>main(){intyear,a,b,c,d,e;prinj("DwseqnxroniapoytheleistoPasxa:");scanf("%d",&year);a=year%19;b=year%4;/*GaussmethodforEasterdatecomputaqon*/c=year%7;d=(19*a+15)%30;e=(2*b+4*c+6*d+6)%7;prinj("ToPasxathXronia%deinai:",year);if(d+e+4>30)prinj("May%d\n",d+e-26);elseprinj("April%d\n",d+e+4);getchar();getchar();}

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

17

Page 18: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Πρόβλημα

l  ΓράψτεέναπρόγραμμασεCπουναδιαβάζειδύοπραγματικούςαριθμούςαπότοπληκτρολόγιο,ναβρίσκειποιοςαπότουςδύοείναιμεγαλύτερος,καινατονεκτυπώνειστηνοθόνη.Στησυνέχειανακάνετετοίδιογιατρειςαριθμούς.

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

18

Page 19: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςswitch(1)

l  Ησύνταξηεπιλογήςswitchείναι:switch(<παράσταση>){

case<σταθερά1>: <εντολές1> case<σταθέρα2>: <εντολές2>…………………………... default:

<εντολές>}

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

19

Page 20: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςswitch(2)

l  Η<παράσταση>πρέπειναείναιακέραια.Υπολογίζεταιητιμήτης.l  Κάθε<σταθεράi>πρέπειναείναιακέραιασταθεράκαιδενπρέπειναυπάρχουνδύοcaseμετηνίδιασταθερά

l  Ανητιμήπουέχειη<παράσταση>ισούταιμεκάποια<σταθεράi>,τότεοέλεγχοςμεταφέρεταιστις<εντολέςi>.Ανόχι,οέλεγχοςμεταφέρεταιστις<εντολές>(μετάτοdefault)

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

20

Page 21: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολεςεπιλογήςswitch(3)

l  Οι<εντολέςi>(και<εντολές>)δενείναιαπαραίτητονασυνιστούνμπλοκεντολών,δηλαδήναείναικλεισμένεςμέσασε{και}

l  Ηπερίπτωσηdefaultείναιπροαιρετική.Ανδενυπάρχεικαιδενταιριάζεικαμίαcase,oέλεγχοςμεταφέρεταιμετάτηνεντολήswitch

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

21

Page 22: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ηεντολήεπιλογήςswitch–Χρήσητουbreakl  Μετάτηνεκτέλεσητωνεντολώνσεμιαcase,οέλεγχος

μεταφέρεταιστιςεντολέςτηςεπόμενηςcase,εκτόςαντελευταίαεντολήτηςπροηγούμενηςcaseείναιηbreak

l  Ηbreakέχειωςαποτέλεσμαοέλεγχοςτουπρογράμματοςναμεταφερθείστοτέλοςτηςswitch–case.Δηλαδή,δενεκτελείταικαμίαεντολήεντόςτουswitch–caseπουακολουθείτοbreakπουκαλείται

l  Ηbreakχρησιμοποιείταιευρύτερακαιόχιμόνοεντόςτηςswitch–case Η

- Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

22

Page 23: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

ΗεντολήεπιλογήςswitchΠαράδειγμαl  switch(x){case1:prinj(“one\n”);break;case2:case3:prinj(“twoorthree\n”);break;case4:prinj(“four\n”);break;default:prinj(“other\n”);break;}

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

23

Page 24: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Πρόβλημα

l  ΓράψτεέναπρόγραμμασεCπουναδιαβάζειαπότοπληκτρολόγιοένανακέραιοαριθμόμετιμέςαπότο1εώςτο7.Στησυνέχεια,χρησιμοποιώνταςτηδομήswitch–caseναεκτυπώνειστηνοθόνητηνημέραπουαντιστοιχείστοναριθμόπουδόθηκε.(π.χ.γιαείσοδο1ναεκτυπώνειΔευτέρα,γιαείσοδο7ναεκτυπώνειΚυριακή).Σεπερίπτωσηπουοχρήστηςεισήγαγεαριθμόπουδενανήκειστοδιάστημα1εώς7ναεκτυπώνεισχετικόμήνυμαλάθους.

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

24

Page 25: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Λύση(1)•  #include<stdio.h>•  intmain(){•  •  /*Declarevariables*/•  intday;•  •  /*Getdayoftheweek*/•  prinj("Enteradayoftheweekasanumber(acceptablevaluesarefrom1to7):\n");•  scanf("%d",&day);•  •  /*Finddayoftheweek*/•  switch(day)•  {•  case1:•  prinj("ThedayisMONDAY.\n");•  break;•  case2:•  prinj("ThedayisTUESDAY.\n");•  break;

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

25

Page 26: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Λύση(2)•  case3:•  prinj("ThedayisWEDNESDAY.\n");•  break;•  case4:•  prinj("ThedayisTHURSDAY.\n");•  break;•  case5:•  prinj("ThedayisFRIDAY.\n");•  break;•  case6:•  prinj("ThedayisSATURDAY.\n");•  break;•  case7:•  prinj("ThedayisSUNDAY.\n");•  break;•  default:•  prinj("YougaveWRONGINPUT!.\n");•  break;•  }•  getchar()•  }

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

26

Page 27: Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ · Η εντολή επιλογής switch (2) l Η  πρέπει να είναι ακέραια. Υπολογίζεται

Ασκήσεις

1.  Ναδιαβαστούνδύοακέραιοιαριθμοίκαιναυπολογισθείηαπόλυτητιμήτηςδιαφοράςτους.

2.  Ναδιαβαστούνοισυντελεστέςα,βκαιγενόςτριωνύμουκαιναυπολογιστούνοιρίζεςτου.

3.  Ναδιαβαστούντρειςαριθμοίκαιναταξινομηθούνκατάφθίνουσασειρά.

4.  ΝαδιαβαστείέναςλατινικόςχαρακτήραςκαιναεμφανιστείοχαρακτήραςαυτόςσεUpperCase(κεφαλαία)ανείναιφωνήεν.Σεδιαφορετικήπερίπτωσηναεμφανιστείτομήνυμα“Characterisnotavowel”(Ταφωνήενταείναιοιχαρακτήρεςa,e,I,o,u,y).Ναλυθείμετηνεντολήswitch

Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

27