ΗΥ - 150 Προγραμματισμός

12
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Εντολές Ελέγχου Ροής

description

ΗΥ - 150 Προγραμματισμός. Εντολές Ελέγχου Ροής. Σειριακή εκτέλεση εντολών. Όλα τα π ρογράμματα « γράφονται » χρησιμο π οιώντας 3 είδη εντολών : Σειριακές εντολές ( sequential – built in C) Εντολές α π όφασης ( if, if/else, switch) Εντολές ε π ανάληψης ( for, while, do/while). - PowerPoint PPT Presentation

Transcript of ΗΥ - 150 Προγραμματισμός

Page 1: ΗΥ - 150 Προγραμματισμός

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης

ΗΥ-150Προγραμματισμός

Εντολές Ελέγχου Ροής

Page 2: ΗΥ - 150 Προγραμματισμός

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης2

Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών:– Σειριακές εντολές (sequential – built in C)– Εντολές απόφασης (if, if/else, switch)– Εντολές επανάληψης ( for, while, do/while)

Page 3: ΗΥ - 150 Προγραμματισμός

ΗΥ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

Page 4: ΗΥ - 150 Προγραμματισμός

ΗΥ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;

}

Page 5: ΗΥ - 150 Προγραμματισμός

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης5

Εντολές υπό Συνθήκη - switch

switch (έκφραση){

case σταθερή_παράσταση_1 : statements; break;

case σταθερή_παράσταση_2 : statements;break;

default : statements;}

Το default είναι προαιρετικό και εκτελείτε αν καμία παράσταση δεν βρεθεί ίση με την έκφραση

Αν ένα break λείπει τότε συνεχίζεται η εκτέλεση των εντολών

Page 6: ΗΥ - 150 Προγραμματισμός

ΗΥ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;

}

Page 7: ΗΥ - 150 Προγραμματισμός

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης7

Παραστάσεις υπό Συνθήκη - ?

if ( x > y)

{

x = a;

}

else

{

x = b;

}

x = (x>y) ? a : b;

Page 8: ΗΥ - 150 Προγραμματισμός

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης8

Τυπικά Λάθη if(x=5) αντί για if(x==5)

Ξεχάσατε το break σε εντολή switch

Ξεχάσατε {, }

Λάθος στις προτεραιότητες: ( )

Λύση: Μορφοποίηση και χρήση σχολίων

Page 9: ΗΥ - 150 Προγραμματισμός

ΗΥ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;}

Page 10: ΗΥ - 150 Προγραμματισμός

ΗΥ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”

Page 11: ΗΥ - 150 Προγραμματισμός

ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης11

Γενική Δομή Προγράμματος Λίστα από συναρτήσεις - main()

Τύπος-επιστρεφόμενης-τιμής όνομα(λίστα-παραμέτρων){

δηλώσεις μεταβλητώνλίστα εντολών

}

/*Επιστρέφει το μέγιστο μεταξύ των x, y*/int max(int x,int y){

int z = x; /*δηλώσεις μεταβλητών - αρχικοποίηση*/

if (y > x) /*λίστα εντολών*/{

z = y;}

return z;}

Page 12: ΗΥ - 150 Προγραμματισμός

ΗΥ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;}

}