περιγραφή | διαλέξεις | projects | εργαστήρια | βιβλιογραφία
άσκηση 1
άσκηση 1a: the saddle point
δημιουργήστε έναν πίνακα n επί n ο οποίος θα περιέχει τυχαίους αριθμούς από το 1 ως το 100. Γράψτε ένα πρόγραμμα που να βρίσκει το στοιχείο που είναι ελάχιστο στη γραμμή του και μέγιστο στη στήλη του
άσκηση 1b: εξαιρέσεις
δημιουργήστε πρόγραμμα που διαβάζει δύο αριθμούς από ένα αρχείο και τους διαιρεί. Χειριστείτε τις αδύνατες καταστάσεις στις οποίες μπορεί να περιέλθει το πρόγραμμά σας με χρήση του μηχανικσμού των εξααιρέσεων
άσκηση 1c: rain drop estimator
φανταστείτε ένα τετράγωνο με μήκος πλευράς 2. Μέσα σε αυτό το τετράγωνο, υπάρχει ένας τέλειος κύκλος με ακτίνα 1. Το εμβαδόν του τετραγώνου είναι 2 x 2 = 4. Το εμβαδόν του κύκλου είναι 1 x π x r^2 = π. Αν "πέσουν σαν βροχή" τυχαία σημεία πάνω στο τετράγωνο, η αναλογία των σημείων που προσγειώνονται μέσα στον κύκλο προς το σύνολο των σημείων θα πρέπει να είναι ανάλογη με την αναλογία των εμβαδών τους δηλαδή: σημεία εντός του κύκλου / σημεία εντός του τετραγώνου εκτός του κύκλου = π / 4. Γράψτε ένα πρόγραμμα Java που χρησιμοποιεί έναν βρόχο for για να δημιουργήσει 1.000.000 τυχαίες συντεταγμένες (x, y) που να ανήκουν στο διάστημα [-1, 1]. Για κάθε σημείο, ελέγξτε αν βρίσκεται μέσα στον κύκλο χρησιμοποιώντας το Πυθαγόρειο Θεώρημα: x^2 + y^2 ≤ 1. Μετρήστε πόσα σημεία βρίσκονται εντός του κύκλου και τυπώστε το αποτέλεσμα. Συγκρίνετέ το με τη θεωρητική τιμή.
...
άσκηση 2
άσκηση 2a: input / output with streams
...
άσκηση 2b: network communications
...
άσκηση 2c: arrays, matrices, vectors, collections
...
άσκηση 2d: reacting to events from the mouse
...
εμφάνιση / απόκρυψη κώδικα
mport javax.swing.*;
import java.awt.event.*;
public class ClickDetector extends JFrame implements MouseListener {
public ClickDetector() {
this.setTitle("Mouse Click Detector");
this.setSize(400, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.addMouseListener(this);
this.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse Clicked at: (" + e.getX() + ", " + e.getY() + ")");
}
@Override public void mousePressed(MouseEvent e) {
System.out.println("Mouse Pressed");
}
@Override public void mouseReleased(MouseEvent e) {
System.out.println("Mouse Released");
}
@Override public void mouseEntered(MouseEvent e) { }
@Override public void mouseExited(MouseEvent e) { }
public static void main(String[] args) {
new ClickDetector();
}
}
άσκηση 3
τα βήματα της δημιουργίας μιας εφαρμογής JavaFX
- δημιουργία διεπαφής χρήστη (UI) με χρήση SceneBuilder
- συγγραφή κλάσης Java η οποία είναι ικανή να φορτώσει τη διεπαφή με χρήση της κλάσης FXMLLoader
- compilation και execution σύμφωνα με τις επίσημες οδηγίες από την επίσημη σελίδα της JavaFx, https://openjfx.io/
- υλοποίηση διαδράσεων
- δήλωση της κλάσης η οποία εκτελεί των κώδικα στο attribute με όνομα "controller" του κορυφαίου component στον κώδικα fxml
- για κάθε στοιχείο διάδρασης (πχ κουμπί) συμπληρώνουμε το αναγνωριστικό (id/όνομα) στο πεδίο fxid
- για κάθε στοιχείο διάδρασης (πχ κουμπί) συμπληρώνουμε τη μέθοδο της κλάσης μας η οποία θα εκτελεί τη διάδαραση που παράγουν τα στοιχεία στο πεδίο onAction
- στην κλάση μας δηλώνουμε κάθε στοιχείο διάδρασης με τον σωστό τύπο και με όνομα ίδο με το fxid που έχει δηλωθεί στην fxml
- στην κλάση μας κάνουμε annotate κάθε μεταβλητή και μέθοδο που ορίζεται στην fxml με @FXML
εμφάνιση / απόκρυψη κώδικα
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.control.*;
import javafx.fxml.*;
import java.io.IOException;
public class AppController extends Application {
@FXML
private Button btn1;
@Override
public void start(Stage primaryStage) {
try {
// 1. Load the FXML file
// Assuming "scene.fxml" is in the same package as this class
Parent root = FXMLLoader.load(getClass().getResource("complex_application.fxml"));
// 2. Set up the Scene
Scene scene = new Scene(root, 600, 400);
// 3. Configure and show the Stage
primaryStage.setTitle("JavaFX FXML Loader");
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
System.err.println("Could not load FXML file. Check the file path.");
}
}
public static void main(String[] args) {
launch(args);
}
}
άσκηση 4
ρύθμιση fxml και χειρισμός γεγονότων
- δήλωση κλάσης controller: στη βιβλιοθήκη (library) του builder
- δήλωση αναγνωριστικών γραφικών στοιχείων:
- επιλογή στοιχείου, επιλογή code, εισαγωγή fx:id
- δήλωση του στοιχείου με τον σωστό τύπο ως μεταβλητή κλάσης και με όνομα που να ταιριάζει ακριβώς με το fx:id
- αρχικοποίηση στοιχείων στον controller: μέθοδος void initialize()
- χειρισμός γεγονότων
- στις επιλογές κώδικα ονοματίζουμε μια από τις μεθόδους που δημιουργούν γεγονότα
- στον controller δηλώνουμε μέθοδο void [δηλωμένο όνομα](Εvent ActionEvent)
άσκηση 5
πως χρησιμοποιούμε βάσεις δεδομένων με την java
- εγκαθιστούμε τον mysql server (official release, LAMPP or XAMPP)
- ρυθμίζουμε έναν χρήστη στον mysql server (προαιρετικό)
- δημιουργούμε βάση δεδομένων και πίνακες
- εισάγουμε δεδομένα στη βάση δεδομένων
- κατεβάζουμε τον jdbc driver της mysql, απομονώνουμε το αρχείο jar που περιέχει τον εκτελέσιμο κώδικα του driver
- χρησιμοποιούμε κατάλληλο κώδικα java από το πακέτο java.sql ο οποίος δημιουργεί αντικείμενο σύνδεσης προς τη βάση, δημιουργεί statements, τα εκτελεί, κα ανακτά resultsets
- κάνουμε compile με χρήση της εντολής java -cp .:mysq-connector-j-[version].jar [ClassName].java
- εκτελούμε αναλόγως
πως δημιουργούμε χρήστες
- create user 'stelios'@'localhost' identified by '1234'
- grant all privileges on *.* to 'ilias'@'localhost';
- flush privileges;
πως δημιουργούμε βάσεις και πίνακες
- create database mytest;
- create table users (id int primary key, name varchar(255), email varchar(255), isadmin int(1));
...
εμφάνιση / απόκρυψη κώδικα
import java.sql.*;
public class Test{
public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/fxml_example", "kalohr", "1234");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from users");
while (resultSet.next()) {
int isAdmin = resultSet.getInt("isAdmin");
String username = resultSet.getString("username").trim();
System.out.println("user: " + username + " isAdmin: " + isAdmin);
}
resultSet.close();
statement.close();
connection.close();
}catch(Exception e){
System.out.println(e.toString());
}
}
}
άσκηση 6
...
άσκηση 7
...
σελίδα πιστοποίησης