Skip to the content.

1.5 Τα Πρώτα μας Βήματα

© Γιάννης Κωστάρας


< >

Μαθησιακοί στόχοι

Σε αυτήν την ενότητα θα μάθουμε:

Από τι αποτελείται μια γλώσσα προγραμματισμού

Σ’ αυτό το μάθημα θα κάνουμε τα πρώτα μας βήματα στη γλώσσα προγραμματισμού Java.

Ένα πρόγραμμα Java μοιάζει με μια ιστορία που λέμε στον Η/Υ για να την εκτελέσει. Κάθε πρόταση (δηλ. εντολή) τερματίζεται με την αγγλική άνω τελεία, δηλ. το ελληνικό ερωτηματικό (;).

Η γλώσσα Java αποτελείται από: λέξεις-κλειδιά (keywords), μεταβλητές (variables ή identifiers), σταθερές (constants ή literals), τελεστές (operators) και σημεία στίξης (punctuators).

Οι λέξεις-κλειδιά (keywords) είναι δεσμευμένες λέξεις που αποτελούν τις εντολές της γλώσσας (π.χ. int, String, for, public, try).

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

Οι σταθερές (constants ή literals) είναι επίσης θέσεις μνήμης που αποθηκεύουν δεδομένα που δεν μπορούν να μεταβληθούν κατά την εκτέλεση του προγράμματος.

Οι τελεστές (operators) είναι διάφορες πράξεις που υποστηρίζει η γλώσσα (π.χ. +, %, ++, && <=) και χρησιμοποιούνται σε εκφράσεις.

Τα σημεία στίξης (punctuators) είναι χαρακτήρες που έχουν ειδικό νόημα για τον μεταγλωττιστή (π.χ. ; , . { }).

Το πρώτο μας πρόγραμμα

Σε αυτήν και την επόμενη εβδομάδα θα δουλέψουμε με το JShell. Αν έχετε εγκαταστήσει το JDK και έχετε θέσει σωστά το PATH στο Λ.Σ. σας όπως περιγράψαμε στο προηγούμενο μάθημα, τότε δώστε την εντολή jshell σε ένα παράθυρο DOS στα Windows είτε σε ένα κέλυφος του Linux/MacOS (είτε στα online):

$ jshell
|  Welcome to JShell -- Version 17
|  For an introduction type: /help intro

jshell> System.out.println("Hello world!")
Hello world!

Η εντολή System.out.println μας επιτρέπει να εμφανίσουμε κάτι στην μονάδα εξόδου (δηλ. την οθόνη μας), αυτό που περιέχεται μέσα στα εισαγωγικά ("), το οποίο ονομάζεται όρισμα (argument). Πώς μπορείτε να εμφανίσετε το μήνυμα: Γειά σου κόσμε!;

Στο JShell φυσικά δεν χρειάζεται να δώσετε την εντολή System.out.println για να εμφανίσετε κάτι στην έξοδο, αλλά σε ένα πραγματικό πρόγραμμα, όπως θα δούμε στα μαθήματα των επόμενων εβδομάδων, η εντολή αυτή είναι απαραίτητη.

Το “Hello world!”, όπως θα μάθουμε και σε επόμενο μάθημα, ονομάζεται συμβολοσειρά ή αλφαριθμητικό ή String. Μπορούμε να συγχωνεύσουμε δυο ή περισσότερες συμβολοσειρές με τον τελεστή +. Π.χ.

jshell> System.out.println("Hello" + "world!")
Helloworld!

Μάλλον ξεχάσαμε κάποιο κενό.

jshell> System.out.println("Hello " + "world!")
Hello world!

Η εντολή println προσθέτει μια αλλαγή γραμμής στο τέλος της συμβολοσειράς.

jshell> System.out.println("Hello"); System.out.println("world!");
Hello
world!

Παρατηρήστε ότι εφόσον παραθέτουμε δυο εντολές στην ίδια γραμμή, πρέπει να τις διαχωρίσουμε με το ;. Υπάρχει όμως και η εντολή print που δεν προσθέτει αλλαγή γραμμής:

jshell> System.out.print("Hello"); System.out.println(" world!");
Hello world!

Τι θα συμβεί αν ξεχάσουμε τα εισαγωγικά;

jshell> System.out.println(Hello);
|  Error:
|  cannot find symbol
|    symbol:   variable Hello
|  System.out.println(Hello);
|    

Βλέπουμε ότι εμφανίζεται ένα λάθος (error) με το μήνυμα ότι δεν μπορεί να βρει το Hello. Υπάρχουν δυο κατηγορίες λαθών:

Τι άλλο όμως μπορούμε να κάνουμε με τη γλώσσα; Αριθμητικές πράξεις φυσικά. Πρόσθεση (+), αφαίρεση (-), πολλ/σμό (*), διαίρεση (/), υπόλοιπο διαίρεσης (%). Παρατηρήστε ότι δεν χρειάζονται τα εισαγωγικά, καθώς δουλεύουμε με αριθμούς κι όχι με αλφαριθμητικά.

jshell> System.out.println(3 + 4);
7

jshell> System.out.println(3 - 4);
-1

jshell> System.out.println(3 * 4);
12

jshell> System.out.println(7 / 3);
2

jshell> System.out.println(7 % 3);
1

jshell> System.out.println(1 / 0);
|  Exception java.lang.ArithmeticException: / by zero
|        at (#9:1)

Στο τελευταίο παράδειγμα βλέπουμε ένα λογικό λάθος ή λάθος εκτέλεσης, τη διαίρεση με το μηδέν. Θα καταλάβουμε καλύτερα τη διαφορά των δυο αυτών τύπων λαθών όταν θα αρχίσουμε να γράφουμε πραγματικά προγράμματα στη Java.

Αν θέλουμε να εμφανίσουμε και την ίδια την πράξη εκτός από το αποτέλεσμα;

jshell> System.out.println("3 + 4 = " + 3 + 4);
3 + 4 = 34

Χμ! Όχι ακριβώς αυτό που θα περιμέναμε. Επειδή το όρισμα που περνάμε στην System.out.println() ξεκινά με συμβολοσειρά, θεωρεί ότι όλο το όρισμα είναι συμβολοσειρά, με αποτέλεσμα να μετατρέπει τους αριθμούς σε συμβολοσειρές οπότε η τελεστής της πρόσθεσης (+) μετατρέπεται σε τελεστή συγχώνευσης αλφαριθμητικών. Τι μπορούμε να κάνουμε σ’ αυτήν την περίπτωση; Υπάρχουν διάφοροι τρόποι, κάποιους από τους οποίους γνωρίζετε ήδη:

jshell> System.out.print("3 + 4 = "); System.out.println(3 + 4);
3 + 4 = 7

jshell> System.out.println("3 + 4 = " + (3 + 4));
3 + 4 = 7

Σχόλια

Η Java υποστηρίζει τριών ειδών σχόλια.

Σχόλιο μιας γραμμής:

int radius;          // Αυτό είναι ένα σχόλιο μιας γραμμής

Σχόλιο πολλαπλών γραμμών:

/* 
 * Αυτό είναι ένα σχόλιο
 * πολλαπλών γραμμών.
 */
int radius;          

Σχόλιο τεκμηρίωσης (Javadoc):

/** 
 * Αυτό είναι ένα σχόλιο
 * τεκμηρίωσης κώδικα (Javadoc).
 */
int radius;          

Τα σχόλια Javadoc σας επιτρέπουν να τεκμηριώνετε τον κώδικά σας και να παράγετε τη διεπαφή των κλάσεών σας (Application Program Interface - API) σε μορφή HTML. Π.χ. εδώ βλέπετε το API των κλάσεων του JDK 17. Θα μάθουμε πώς να γράφουμε τα δικά μας σχόλια Javadoc σε επόμενο μάθημα.

Ασκήσεις

  1. Να γραφτεί ένα πρόγραμμα που να εκτυπώνει το παρακάτω σχήμα της τρίλιζας:

+---+---+---+ 
|   |   |   |
+---+---+---+ 
|   |   |   | 
+---+---+---+
|   |   |   | 
+---+---+---+

2) Να γραφτεί ένα πρόγραμμα που να εκτυπώνει τα παρακάτω σχήματα:


     *                  *
    ***                ***
   *****              *****
  *******            *******
 *********          ********* 
    ***              *******  
    ***               ***** 
 *********             ***
                        *


< >