Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Η-ΥΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1
Εργαστήριο3ΕντολέςΕπιλογήςΓιώργοςΛαμπρινίδης
ΑσκησειςΕργατηρίου2
30/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2
/* 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();
}
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 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();
}
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 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();
}
ΕντολέςΕπιλογής
l Σεκάθεγλώσσαπρογραμματισμούυπάρχουνεντολέςπουεπηρεάζουντηροήελέγχουσταπρογράμματα
l Οικυριότερεςείναιοιif,switch,while,forl Στιςεντολέςαυτέςείναιπολύσυχνήηχρήσηενόςμπλοκ
εντολών.Έναμπλοκεντολώναποτελείταιαπόεντολέςπουείναικλεισμένεςμέσασεάγκιστρα({και}).Ανσεέναμπλοκεντολώνπεριέχεταιμιαμόνοεντολή,αυτήδενείναιαπαραίτητοναπερικλείεταιμέσασεάγκιστρα
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
6
Ηεντολήεπιλογήςif
l Ηεντολήεπιλογήςifείναι:if(<παράσταση>)<μπλοκεπιλογών1>επόμενηεπιλογήl Ανη<παράσταση>είναιαληθής(έχειτιμήδιάφορηαπότο
μηδέν),θαεκτελεστείτο<μπλοκεντολών1>καιμετάηεπόμενηεντολή
l Ανη<παράσταση>είναιψευδήςδεθαεκτελεστείτο<μπλοκεντολών1>αλλάθαεκτελεστείαπευθείαςηεπόμενηεντολή
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
7
Λογικόδιάγραμματηςεντολήςεπιλογήςif
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
8
Ηεντολήεπιλογήςif–else
l Ησύνταξητηςεντολήςif–elseείναι:if(<παράσταση>)<μπλοκεντολων1>else<μπλοκεντολών2>l Ανη<παράσταση>είναιαληθής(έχειτιμήδιάφορηαπότομηδεν),θαεκτελεσθείτο<μπλοκεντολών1>,αλλιώςτο<μπλοκεντολών2>
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
9
Λογικόδιάγραμματηςεντολήςif–else
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
10
Ηεντολήεπιλογήςif–else
l Όπωςείδαμε,τοτμήμααπότοelseκαιμετάείναιπροαιρετικό.Ηπροαιρετικότητατουelseμπορείναπροκαλέσειπροβλήματαστηναναγνωσιμότηταπρογραμμάτωνμεεμφωλευμένεςεντολέςif,ανδενυπάρχεισαφήςομαδοποίησημεάγκιστρα,Ανδενυπάρχουνάγκιστραπουναεπιβάλλουνσυγκεκριμένηδομήκάθεelseαντιστοιχείστηναμέσωςπροηγούμενηifπουδενέχειelse Η
- Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
11
Ηεντολήεπιλογής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
Ηεντολήεπιλογήςif–elseΠιοσύνθετεςέννοιες(1)l Τιακριβώςσημαίνειτοπαρακάτω;if(n>0)if(a>b)z=a;elsez=b;l Προσοχή!Ομεταγλωττιστήςδενασχολείταιμετηστοίχιση.
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
13
Ηεντολήεπιλογήςif–elseΠιοσύνθετεςέννοιες(2)l Τιακριβώςσημαίνειτοπαρακάτω; if(n>0){ if(a>b) z=a; else z=b;}
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
14
Ηεντολήεπιλογήςif–elseΠιοσύνθετεςέννοιες(3)l Ανθέλαμετοelseνααντιστοιχείστοπρώτοif,έπρεπενατο
γράψουμεέτσι: if(n>0){ if(a>b) z=a; } else z=b;
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
15
Ηεντολήεπιλογής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
ΕυρεσηΗμερομηνίαςΠασχα/*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
Πρόβλημα
l ΓράψτεέναπρόγραμμασεCπουναδιαβάζειδύοπραγματικούςαριθμούςαπότοπληκτρολόγιο,ναβρίσκειποιοςαπότουςδύοείναιμεγαλύτερος,καινατονεκτυπώνειστηνοθόνη.Στησυνέχειανακάνετετοίδιογιατρειςαριθμούς.
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
18
Ηεντολήεπιλογήςswitch(1)
l Ησύνταξηεπιλογήςswitchείναι:switch(<παράσταση>){
case<σταθερά1>: <εντολές1> case<σταθέρα2>: <εντολές2>…………………………... default:
<εντολές>}
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
19
Ηεντολήεπιλογήςswitch(2)
l Η<παράσταση>πρέπειναείναιακέραια.Υπολογίζεταιητιμήτης.l Κάθε<σταθεράi>πρέπειναείναιακέραιασταθεράκαιδενπρέπειναυπάρχουνδύοcaseμετηνίδιασταθερά
l Ανητιμήπουέχειη<παράσταση>ισούταιμεκάποια<σταθεράi>,τότεοέλεγχοςμεταφέρεταιστις<εντολέςi>.Ανόχι,οέλεγχοςμεταφέρεταιστις<εντολές>(μετάτοdefault)
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
20
Ηεντολεςεπιλογήςswitch(3)
l Οι<εντολέςi>(και<εντολές>)δενείναιαπαραίτητονασυνιστούνμπλοκεντολών,δηλαδήναείναικλεισμένεςμέσασε{και}
l Ηπερίπτωσηdefaultείναιπροαιρετική.Ανδενυπάρχεικαιδενταιριάζεικαμίαcase,oέλεγχοςμεταφέρεταιμετάτηνεντολήswitch
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
21
Ηεντολήεπιλογήςswitch–Χρήσητουbreakl Μετάτηνεκτέλεσητωνεντολώνσεμιαcase,οέλεγχος
μεταφέρεταιστιςεντολέςτηςεπόμενηςcase,εκτόςαντελευταίαεντολήτηςπροηγούμενηςcaseείναιηbreak
l Ηbreakέχειωςαποτέλεσμαοέλεγχοςτουπρογράμματοςναμεταφερθείστοτέλοςτηςswitch–case.Δηλαδή,δενεκτελείταικαμίαεντολήεντόςτουswitch–caseπουακολουθείτοbreakπουκαλείται
l Ηbreakχρησιμοποιείταιευρύτερακαιόχιμόνοεντόςτηςswitch–case Η
- Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
22
Ηεντολήεπιλογής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
Πρόβλημα
l ΓράψτεέναπρόγραμμασεCπουναδιαβάζειαπότοπληκτρολόγιοένανακέραιοαριθμόμετιμέςαπότο1εώςτο7.Στησυνέχεια,χρησιμοποιώνταςτηδομήswitch–caseναεκτυπώνειστηνοθόνητηνημέραπουαντιστοιχείστοναριθμόπουδόθηκε.(π.χ.γιαείσοδο1ναεκτυπώνειΔευτέρα,γιαείσοδο7ναεκτυπώνειΚυριακή).Σεπερίπτωσηπουοχρήστηςεισήγαγεαριθμόπουδενανήκειστοδιάστημα1εώς7ναεκτυπώνεισχετικόμήνυμαλάθους.
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
24
Λύση(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
Λύση(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
Ασκήσεις
1. Ναδιαβαστούνδύοακέραιοιαριθμοίκαιναυπολογισθείηαπόλυτητιμήτηςδιαφοράςτους.
2. Ναδιαβαστούνοισυντελεστέςα,βκαιγενόςτριωνύμουκαιναυπολογιστούνοιρίζεςτου.
3. Ναδιαβαστούντρειςαριθμοίκαιναταξινομηθούνκατάφθίνουσασειρά.
4. ΝαδιαβαστείέναςλατινικόςχαρακτήραςκαιναεμφανιστείοχαρακτήραςαυτόςσεUpperCase(κεφαλαία)ανείναιφωνήεν.Σεδιαφορετικήπερίπτωσηναεμφανιστείτομήνυμα“Characterisnotavowel”(Ταφωνήενταείναιοιχαρακτήρεςa,e,I,o,u,y).Ναλυθείμετηνεντολήswitch
Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
27