Έλεγχος ροής δεδομένων (ΜΑΘΗΜΑ 4)

...ασύγχρονα μαθήματα γλώσσας PHP

Έλεγχος ροής δεδομένων (ΜΑΘΗΜΑ 4)

Δημοσίευσηαπό M.Jackson » 14 Ιουν 2011, 18:11

Ακόμα ένα αναπόσπαστο κομμάτι του προγραμματισμού είναι ο έλεγχος ροής δεδομένων. Με αυτή τη μέθοδο κάνουμε τα προγράμματα μας γενικά. Τι θέλω να πω με το γενικά; Αυτό που θέλω να πω είναι ότι η έξοδος/το αποτέλεσμα του προγράμματος μας θα το επιστρέφει ανάλογα με την είσοδο.
ΑΝ ο χρήστης δώσει τον αριθμό 1 ΤΟΤΕ να επιστρέφει Δευτέρα
ΑΝ ο χρήστης δώσει τον αριθμό 2 ΤΟΤΕ να επιστρέφει Τρίτη.

Να ενημερώσω, ένα από τα χαρακτηριστικά ενός καλού αλγόριθμου είναι να είναι γενικός!

IF...THEN (ΑΝ...ΤΟΤΕ)
Μια από τις πιο συχνές δομές στον προγραμματισμό. Στην PHP η δομή αυτή είναι απλή, αρκετά απλή.

Δομή
Κώδικας: Επιλογή όλων
if (συνθήκη)
{
εντολές...
}


Παράδειγμα
Κώδικας: Επιλογή όλων
<?php

$x=1;
$y=0;

if ($x>$y)
{
  die ("Είμαι μέσα στο IF!!");
}

?>


IF...THEN...ELSE

Πίο πάνω είδαμε πώς ελέγχουμε μια συνθήκη αν είναι αληθής, στον προγραμματισμό χρειαζόμαστε και το ενδεχόμενο να είναι ψευδής. Απλά με την λέξη ELSE μπορούμε να εκτελέσουμε εντολές όταν η συνθήκη είναι ψευδής.

Κώδικας: Επιλογή όλων
if (συνθήκη)
  εντολή/ες αν η συνθήκη είναι αληθής;
else
  εντολή/ες αν η συνθήκη είναι ψευδής;


Παράδειγμα
Κώδικας: Επιλογή όλων
<?php

$x = 5;
$y = 1;

If ($x>$y)
{
die ("x is biger than y!");
}
else
{
die("x is smaller than y!");
}

?>


TIP&TRICK: Αν εκτελούμε μία εντολή κάτω από το if ή το else μπορούμε να το γράψουμε δίπλα παρά από κάτω, έτσι εξοικονομούμε χώρο.
π.χ
Κώδικας: Επιλογή όλων
If($x>$y) die("Hey");


TIP&TRICK 2: Επίσης τα {} μπορούμε να τα αγνοήσουμε εαν έχουμε μόνο μια εντολή, διαφορετικά τα βάζουμε.
π.χ
Κώδικας: Επιλογή όλων
if ($x=$y)
    echo("True");
else
    echo("False");


Κώδικας: Επιλογή όλων
if($x=$y)
{
echo("Hello");
echo("World");
}
else
   die("False");


IF...ELSEIF..ELSE
Ωραία ελέγξαμε αν η συνθήκη είναι αληθής, και αν δεν είναι. Αν όμως έχουμε περισσότερες από μια συνθήκες; Μπορούμε να φτιάξουμε δυο ξεχωριστά if αλλά έχουμε και κάτι πιο απλό.

Κώδικας: Επιλογή όλων
if (συνθήκη)
  κώδικας αν η συνθήκη είναι αληθής;
elseif (συνθήκη)
  κώδικας αν η συνθήκη είναι αληθής;
else
  κώδικας αν η συνθήκες πιο πάνω ήταν όλες ψευδής;


παράδειγμα
Κώδικας: Επιλογή όλων
<?php
$var = 5;
$another_var = 1;

$example = $var.$another_var;

if ($var==$another_var) echo "EQUAL";
elseif ($example==(52-1))
{
     echo("TRUE, 51");
     echo("I Love PHP");
}
else die("Nothing...");
?>


Switch Case
Ωραία η If αλλά ρε παιδί μου έχω ένα πρόβλημα με 10δες συνθήκες πιάστηκε το χέρι μου άσε που μπορεί να έκανα κάπου λάθος με τόσες συνθήκες! Πάρε την Switch :)

Με την switch επιλέγουμε μια συγκεκριμένη μεταβλητή και με ένα πολλή πιο μικρο κώδικα μπορούμε να ελέγξουμε διάφορες συνθήκες.

Κώδικας: Επιλογή όλων
switch (n)
{
case συνθήκη1:
  κώδικας αν η συνθήκη1 ισχύει;
  break;
case συνθήκη2:
  κώδικας αν η συνθήκη1 ισχύει;
  break;
default:
  κώδικας αν η συνθήκες πιο πάνω δεν ήταν αληθής;
}


παράδειγμα

Κώδικας: Επιλογή όλων
<?php
$χ = 100;

switch ($x)
{
case 10:
  echo "Number 10";
  break;
case 2:
  echo "Number 20";
  break;
case 3:
  echo "Number 30";
  break;
default:
  echo "No number between 40 and 100";
}
?>


Το break είναι μια εντολή που σταματά οποιαδήποτε βρόχο/συνθήκη. Αρά θα ήταν πιο έξυπνο να το χρησιμοποιούμε στην Switch έτσι ώστε να μην χρειάζεται η γλώσσα να ελέγχει άσκοπα τις άλλες συνθήκες σπαταλώντας έτσι πόρους, από τη στιγμή που η συνθήκη βρέθηκε και οι εντολές εκτελέστηκαν.
Τελευταία επεξεργασία από M.Jackson και 04 Σεπ 2013, 13:38, έχει επεξεργασθεί 1 φορά/ες συνολικά
Linux: Καλό ~ Προγραμματισμός: Java, Python, Visual Basic, PHP ~ Αγγλικά:Άριστα

Laptop: Macbook Pro Retina Display (Mac OS X 10.8.5, Virtual Machine: Windows 7 & Debian)
Netbook: Xubuntu 13.04
Tablet: ASUS Nexus 7

Spoiler: show
Netbook: HP Mini 110
Laptop: 2.4GHz Quad-core Intel Core i7, 8GB 1600MHz DDR3L SDRAM, 256GB SSD
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Τοποθεσία: Κύπρος
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό linuxs » 14 Ιουν 2011, 19:07

just like C...κάτι μάθαμε και τώρα! ;) thx επίσης το die είναι λίγο άκυρο όνομα...
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό clepto » 14 Ιουν 2011, 19:22

linuxs έγραψε:το die είναι λίγο άκυρο όνομα...
:lol: :lol: :lol: :lol:
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό maenolis » 14 Ιουν 2011, 19:59

Die εκτός από την έννοια του θανάτου έχει και την έννοια του βάφω. Οι φίλοι μας οι αγγλόφωνοι λένε i will die my hair (όχι paint!!)
άρα print ~ die.
1 Γνώσεις → Linux: Αρχάριος ┃ Προγραμματισμός: c,c++,sql,html,css ┃ Αγγλικά: Μέτριος
2 Λειτουργικό →Dual boot Ubuntu 12.04 64-bit (en_US.UTF-8) & Windows 7 Professional 64-bit
3 Προδιαγραφές → Intel® Core™ i3-2330M CPU @ 2.20GHz × 4 ‖ RAM 7.7 Gb
4 Κάρτες γραφικών: Intel® HD3000
5 Σκληρός Δίσκος: → OCZ Vertex4 Sata III 128Gb
Άβαταρ μέλους
maenolis
punkTUX
punkTUX
 
Δημοσιεύσεις: 261
Εγγραφή: 12 Μάιος 2011, 09:56
Τοποθεσία: Ν.Κόσμος
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό linuxs » 14 Ιουν 2011, 22:35

maenolis έγραψε:Die εκτός από την έννοια του θανάτου έχει και την έννοια του βάφω. Οι φίλοι μας οι αγγλόφωνοι λένε i will die my hair (όχι paint!!)
άρα print ~ die.

χαχαχαχα...τώρα κάπως καλύτερα! ;) Δεν το είχα στο μυαλό μου κάπως έτσι!΄)
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό Garrus » 24 Αύγ 2011, 18:22

Κώδικας: Επιλογή όλων
Die εκτός από την έννοια του θανάτου έχει και την έννοια του βάφω. Οι φίλοι μας οι αγγλόφωνοι λένε i will die my hair (όχι paint!!)

Μονο που το βαφω ειναι dye και οχι die :P
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό migf1 » 24 Αύγ 2011, 18:42

die σημαίνει και ζάρι :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό M.Jackson » 24 Αύγ 2011, 19:02

dice ειναι το ζαρι :)
Linux: Καλό ~ Προγραμματισμός: Java, Python, Visual Basic, PHP ~ Αγγλικά:Άριστα

Laptop: Macbook Pro Retina Display (Mac OS X 10.8.5, Virtual Machine: Windows 7 & Debian)
Netbook: Xubuntu 13.04
Tablet: ASUS Nexus 7

Spoiler: show
Netbook: HP Mini 110
Laptop: 2.4GHz Quad-core Intel Core i7, 8GB 1600MHz DDR3L SDRAM, 256GB SSD
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Τοποθεσία: Κύπρος
Εκτύπωση

Re: Μαθήματα PHP - ΜΑΘΗΜΑ 4 - Έλεγχος ροής δεδομένων

Δημοσίευσηαπό migf1 » 24 Αύγ 2011, 19:20

M.Jackson έγραψε:dice ειναι το ζαρι :)

dice είναι τα ζάρια
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Μαθήματα PHP