ΗΥ - 150 Προγραμματισμός
description
Transcript of ΗΥ - 150 Προγραμματισμός
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης
ΗΥ-150Προγραμματισμός
Εντολές Ελέγχου Ροής
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης2
Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών:– Σειριακές εντολές (sequential – built in C)– Εντολές απόφασης (if, if/else, switch)– Εντολές επανάληψης ( for, while, do/while)
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης3
Εντολές υπό Συνθήκη - ifεντολή <- έκφραση;εντολή <- { σειρά εντολών }
if (έκφραση) εντολή1
if (έκφραση)εντολή1
else εντολή2
if (έκφραση1) εντολή1
else if (έκφραση2) εντολή2
elseεντολή3
//Αν η έκφραση έχει τιμή διάφορη του 0 (!0), //εκτελείται η εντολή 1 αλλιώς η εντολή2
//Αν η έκφραση έχει τιμή διάφορη του 0 (!0), //εκτελείται η εντολή 1
//Αν η έκφραση1 έχει τιμή διάφορη του 0 (!0), //εκτελείται η εντολή 1 //αλλιώς αν η έκφραση2 έχει τιμή διάφορη του 0 //εκτελείται η εντολή 2//αλλιώς εκτελείται η εντολή 3
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης4
Παράδειγμα με switchint main() /*Ypologismos aplwn pra3ewn*/{
char p;float x,y,res;
scanf("%f %c %f",&x,&p,&y);if (p == ‘+’){
res = x+y; }else if (p == ‘-’){
res = x-y;}else if (p == ‘*’){
res = x*y; }else if (p == ‘/’);{
res = x/y; }else{
printf(“La8os eisodos\n”);return -1;
}printf(“%f%c%f = %f\n”,x,c,y,res);return 0;
}
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης5
Εντολές υπό Συνθήκη - switch
switch (έκφραση){
case σταθερή_παράσταση_1 : statements; break;
case σταθερή_παράσταση_2 : statements;break;
default : statements;}
Το default είναι προαιρετικό και εκτελείτε αν καμία παράσταση δεν βρεθεί ίση με την έκφραση
Αν ένα break λείπει τότε συνεχίζεται η εκτέλεση των εντολών
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης6
Παράδειγμα με switch#include <stdio.h>
/*Ypologismos aplwn pra3ewn*/int main() {
char p;float x,y,res;
scanf("%f %c %f",&x,&p,&y);switch (p){
case ‘+’ : res = x+y; break;
case ‘-’ : res = x-y;break;
case ‘*’ : res = x*y; break;
case ‘/’ : res = x/y; break;
default : printf(“La8os eisodos\n”);}
printf(“%f%c%f = %f\n”,x,c,y,res);return 0;
}
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης7
Παραστάσεις υπό Συνθήκη - ?
if ( x > y)
{
x = a;
}
else
{
x = b;
}
x = (x>y) ? a : b;
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης8
Τυπικά Λάθη if(x=5) αντί για if(x==5)
Ξεχάσατε το break σε εντολή switch
Ξεχάσατε {, }
Λάθος στις προτεραιότητες: ( )
Λύση: Μορφοποίηση και χρήση σχολίων
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης9
Μορφοποίηση Σχόλια πριν από συναρτήσεις και τους ορισμούς μεταβλητών Κατάλληλη χρήση tabs, παρενθέσεων και αγκυλών Κατάλληλη ονοματολογία συναρτήσεων - μεταβλητών
/*Epistrefei ton endiameso ari8mo twn a,b,c*/int getMedian(int a,int b, int c){
int median; /*Endiamesos*/
if ((a <= b) && (a >= c)) || ((a >= b) && (a <= c)) {
median = a;}else if ((b <= a) && (b >= c)) || ((b >= a) && (b <= c)) {
median = b;}else{
median = c;}
return median;}
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης10
Define – Const – Include #define <macro> <replacement name>
#define FALSE 0 #define TRUE !FALSE #define N 1000 /*ΠΡΟΣΟΧΗ!! – ΔΕΝ ΜΠΟΡΩ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΩ ΤΟ Ν ΩΣ ΜΕΤΑΒΛΗΤΗ*/
#define Pi 3.14159– Ορίζεται στην αρχή κάθε προγράμματος και μπορεί να χρησιμοποιηθεί σε όλο το πρόγραμμα.
– To Pi θα αντικατασταθεί από τον 3.14159 στο πρώτο βήμα του compilation (preprocessing)
int const a = 1; – ορίζει μια σταθερά – δεν μπορεί να αλλάξει τιμή
#include <file>#include <stdio.h>
#include “file”
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης11
Γενική Δομή Προγράμματος Λίστα από συναρτήσεις - main()
Τύπος-επιστρεφόμενης-τιμής όνομα(λίστα-παραμέτρων){
δηλώσεις μεταβλητώνλίστα εντολών
}
/*Επιστρέφει το μέγιστο μεταξύ των x, y*/int max(int x,int y){
int z = x; /*δηλώσεις μεταβλητών - αρχικοποίηση*/
if (y > x) /*λίστα εντολών*/{
z = y;}
return z;}
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης12
Παράδειγμα/*Author: C. PanagiotakisFunction: Solves a second order polynomial equation. */
#include <stdio.h>#include <math.h>
/*function prototypes*/
float diakrinousa(float,float , float );int printSolution2ba8mou(float a, float b, float c);
int main() {
float a,b,c;
printf(“Dwste 3 pragmatikous ari8mous \n”);scanf(“%f %f %f”,&a,&b,&c);printf("Dw8hke to poluwnumo: %f x^2 + (%f) x + (%f) \n",a,b,c);if (a == 0){
printf(“H e3iswsh einai prwtou ba8mou\n”);}else{
printSolution2ba8mou(a, b, c);}
}
/*Υπολογίζει τη διακρίνουσα */float diakrinousa(float a,float b, float c){
float D = b*b – 4*a*c;
return D;}
/*Εκτυπώνει τις λύσεις */int printSolution2ba8mou(float a, float b, float c){
float D = diakrinousa( a, b, c);float x1,x2;
if (D < 0){
printf(“Den uparxoun pragmatikes luseis.\n”);
return 0;}else if (D == 0){
x1 = -b/(2*a);printf(“Yparxei monadikh lush %f\
n”,x1);return 1;
}else{
x1 = (-b+sqrt(D))/(2*a);x2 = (-b-sqrt(D))/(2*a);
printf(“Yparxoun 2 luseis :%f, %f\n”,x1,x2);
return 2;}
}