Português

Επαναλήψεις και συναρτήσεις (λειτουργίες)

Η λέξη «for» υποδηλώνει έναν βρόχο, δηλαδή χρησιμοποιείται για την επανάληψη εντολών για έναν συγκεκριμένο αριθμό φορών.

Εδώ, μέσα στο βρόχο, αρχικοποιούμε μία ακέραια μεταβλητή «i». Το «;» δείχνει ότι αυτή η εντολή τελείωσε, οπότε προχοράμε στην επόμενη, που είναι ο περιορισμός. Δηλαδή θέλουμε ο βρόχος να εκτελείται έως ότου το i γίναι ίσο με 5. Η επόμενη εντολή μέσα στις παρενθέσεις του δείχνει πάντα πως αλλάζει η κατάσταση κάθε φορά ολοκληρώνεται μία επανάληψη. Στην συγκεκριμένη περίπτωση, το i αυξάνεται κάτα 1 (++) κάθε φορά, και αφού ξεκινάει η τιμή του από 1, τότε περιμένουμε ο βρόχος να επαναλειφτεί 5 φορές.

Μέσα στα άγκιστρα όμως ορίζουμε τις εντολές που θέλουμε να επαναλειφτούν πολλές φορές. Εδώ μέσω του if, ελέγχουμε αν το υπόλοιπο της πράξης «i / 2» είναι 0 ή όχι, κάνοντας χρήση του «%», δηλαδή της πράξης modulo. Αν το αποτέλεσμα της πράξης είναι πάντα μηδέν, τότε θα εκτυπώνεται στην οθόνη ένα μήνυμα κάθε φορά και συγκεκριμένα αυτά:

1 είναι ζυγός αριθμός

2 είναι ζυγός αριθμός

3 είναι ζυγός αριθμός

4 είναι ζυγός αριθμός

5 είναι ζυγός αριθμός

Όμως δεν είναι 0 πάντα, οπότε δεν εκτυπώνεται το μήνυμα κάθε φορά, άρα θα έχουμε τελικά μόνο τα παρακάτω:

2 είναι ζυγός αριθμός

4 είναι ζυγός αριθμός

Επόμενο βήμα στο μάθημα αυτό είναι να μάθουμε για τα λεγόμενα «functions», τα οποία στα ελληνικά ονομάζονται συναρτήσεις ή λειτουργίες.

Πρόκειται για μία ομάδα εντολών που την «καλούμε» αυτούσια κάθε φορά, δίνοντάς της κάποιες τιμές για κάποιες από τις μεταβλητές τις, αν χρειάζεται. Γενικότερα όμως χρησιμοποιούνται για να αποφεύγουμε να επαναλαμβάνουμε κώδικα πολλές φορές όταν το πρόγραμμά μας πρέπει να εκτελέσει την ίδια (ή μία παρόμοια εκδοχή της) εντολή πολλές φορές.

Έτσι στο παρακάτω:

Η isPositive είναι μία συνάρτηση η οποία καλείται μέσα στην βασική συνάρτηση main, η οποία εκτελείται πάντα με την εκτέλεση του προγράμματος. Οποιαδήποτε άλλη συνάρτηση (συμπεριλαμβανομένης την isPositive) εκτελείται μόνο όταν καλείται η ίδια μέσα στην main ή σε κάποια άλλη συνάρτηση που καλείται μέσα στην main και ούτω καθεξής.

Ειδικότερα, η isPositive δέχεται σαν τιμή μία ακέραια μεταβλητή x. Έπειτα ελέγχει αν η x είναι θετική ή όχι. Ανάλογα με αυτό που βρίσκει, στέλνει διαφορετικό μήνυμα πίσω, μέσω της return, δηλαδή στέλνει 1 για x θετικά και 0 για x μη θετικά (0 ή αρνητικά).

Στην main τώρα, αρχικοποιείται μία μεταβλητή number, που είναι ίση με 3. Μέσα στην if εντολή, καλείται η σύναρτηση με x = number = 3 και το if ελέγχει αν η τιμή που γυρνά η συνάρτηση είναι 1 ή 0, δηλαδή αληθής ή ψευδής. Αν είναι αληθής, δηλαδή η τιμή που γυρνάει η isPositive είναι διάφορη του 0 (1),  δηλαδή  x > 0, δηλαδή number > 0, δηλαδή 3 > 0, το οποίο ισχύει, τότε εκτυπώνεται στην οθόνη το παρακάτω μήνυμα:

Ο αριθμός είναι θετικός.

Αν όμως η τιμή είναι ψευδής, δηλαδή η isPositive γυρνάει την τιμή 0, δηλαδή το x είναι μη θετικό, δηλαδή το number είναι μη θετικό, οπότε το number είναι ή 0 ή κάτι αρνητικό, τότε θα είχαμε το παρακάτω μήνυμα που βρίσκεται μέσα στο else:

Ο αριθμός δεν είναι θετικός.

Μεταβλητές και Λήψη Αποφάσεων με If και Else

Οι μεταβλητές στον προγραμματισμό είναι πολύ σημαντικές και χρησιμοποιούνται για την αποθήκευση τιμών που μπορούν να εφαρμοστούν μέσα στο πρόγραμμα.

Στο παραπάνω πρόγραμμα, η μεταβλητή «x» αποθηκεύει έναν ακέραιο αριθμό (int) που μπορούμε να χρησιμοποιήσουμε έπειτα όσες φορές επιθυμούμε. Όσο για την εντολή εκτύπωσης (printf), η μεταβλητή γράφεται μέσα στις παρενθέσεις τις εντολής, αλλά μετά και έξω από τα εισαγωγικά της συμβολοσειράς. Η θέση του στο μύνημα ορίζεται με το σύμβολο «%», το οποίο ακολουθείται από το «d», το οποίο αντικαθίσταται στο τελικό μήνυμα από έναν ακέραιο αριθμό, σαν το x. Το «\n» αφήνει μία σειρά κενή μετά το μήνυμα, η οποία δεν θα χρησιμοποιηθεί από επόμενα μηνύματα.

Οπότε, στο τέλος δεν θα εκτυπωθεί στην οθόνη το μήνυμα:

Η τιμή του x είναι: %d\n

Αλλά το:

Η τιμή του x είναι: 10

Και θα αφήσει μία μία σειρά κενή.

Τώρα, με τις δομές επιλογής «if» και «else» μπορούμε να εκτελούμε διαφορετικό κομμάτι κώδικα ανάλογα με την συνθήκη που θέλουμε.

Στον παραπάνω κώδικα ισχύει ότι αν (if) η τιμή της μεταβλητής x είναι μεγαλύτερη του 0 (x > 0), τότε θα εκτυπωθεί το μήνυμα που ακολουθεί, το οποίο είναι μέσα στα άγκιστρα. Αν όμως δεν ισχύει αυτή η συνθήκε, τότε (else) θα εκτελεστεί το άλλο κομμάτι κώδικα.

Αφού το x = -5, τότε θα εκτυπωθεί το:

Μη θετικός αριθμός

Αν όμως το x ήταν ίσο με 5 (x = 5), τότε θα εκτυπωνόταν το εξής:

Θετικός αριθμός

Σε κάθε περίπτωση θα αφεθεί μία σειρά κενή ύστερα από κάθε εκτύπωση.

Η δομή ενός προγράμματος C και το πρώτο μας μήνυμα

Κάθε πρόγραμμα στην C ξεκινά από τη συνάρτηση «main», η οποία αποτελεί το σημείο εισόδου του προγράμματος και καλείται με την εντολή «int main(){ ... }». Μέσα στα άγκιστρα γράφεται ο κύριος κώδικας του προγράμματος. Για να λειτουργήσει όμως αυτή η εντολή, θα πρέπει να εισάγουμε πρώτα την βιβλιοθήκη «stdio», η οποία παρέχει έτοιμη την υλοποίηση των εντολών που χρειαζόμαστε και καλείται μέσω της «#include <stdio.h>».

Συνολικά έχουμε: 

Όπου η εντολή «return 0» δηλώνει ότι το πρόγραμμα ολοκληρώθηκε σωστά και επιστρέφει τον έλεγχο στο λειτουργικό σύστημα.

Τώρα, αφού γνωρίσαμε την βασική δομή του προγραμμάτος, μπορούμε να εμφανίσουμε ένα μήνυμα στην οθόνη ως εξής:

Η «printf» επιτρέπει στο πρόγραμμα να επικοινωνεί με τον χρήστη εμφανίζοντας κείμενο στην οθόνη του. Συγκεκριμένα, το μήνυμα που εμφανίζεται στην οθόνη είναι το:

Hello, world!

Δηλαδή χωρίς τα εισαγωγικά, τα οποία όμως δεν μπορούν να παραληφθούν από τον κώδικα, αφού υποδηλώνουν ότι το σύνολο των γραμμάτων ενδιάμεσά τους πρόκειται για συμβολοσειρά (string). Προκύπτει έτσι ότι αν αντικατασταθεί το «Hello, world!» με ένα άλλο μήνυμα της επιλογής μας, τότε όταν ξανατρέξει το πρόγραμμα θα εμφανιστεί το καινούριο μας μήνυμα.