Εισαγωγή στο.νετ Framework και στη C#

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Εισαγωγή στο.νετ Framework και στη C#"

Transcript

1 Εισαγωγή στο.νετ Framework και στη C# Δημήτρης Ηλίας Γκανάτσιος Υπεύθυνος ακαδημαϊκών προγραμμάτων, Microsoft Hellas twitter.com/dgkanatsios facebook.com/dgkanatsios Version: , 11/3/2010

2 Περιεχόμενα Τμήμα 1: Επισκόπηση του.net Framework Τμήμα 2: C#, μέρος 1: Basic Language Constructs Types Statements Structures Classes Τμήμα 3: C#, μέρος 2 Delegates Events C# 3.0 και 4.0 Τμήμα 4: Base Class Library

3 Τμήμα 1: Επισκόπηση του.net Framework Τι είναι το.νετ Common Language Runtime, Base Class Library Διαδικασία εκτέλεσης, Common Language Infrastructure

4 Τι είναι το.νετ Framework; Πλατφόρμα στην οποία μπορούμε να δημιουργήσουμε κάθε είδους εφαρμογές Περιλαμβάνει μηχανισμούς και βιβλιοθήκες: Common language runtime (CLR) Class libraries (BCL ή FCL) Runtime Compiler (Jitter) Virtual Execution System (VES)

5 .NET Framework overview

6 Εκδόσεις του.νετ SP NET 1.0.NET 1.1.NET 2.0.NET CLR 1.0 CLR 1.1 CLR 2.0 CLR 4

7 Το.NET Framework σε σχέση με το λειτουργικό

8 Τεχνικές σχεδίασης του.νετ Διαλειτουργικότητα (Interoperability) Common Language Runtime Language Independence Base Class Library Simplified Deployment Security Portability

9 Common Language Infrastructure Το σύνολο της υποδομής του.νετ Framework Αποτελείται από The Common Type System (CTS) Σύνολο τύπων και λειτουργιών που είναι κοινοί σε όλες τις CTSσυμβατές γλώσσες Metadata Πληροφορίες για τους τύπους και τη δομή του εκτελέσιμου αρχείου ή της βιβλιοθήκης Common Language Specification (CLS) Βασικοί κανόνες οι οποίοι θα πρέπει να τηρούνται από οποιαδήποτε γλώσσα κάνει target το CLI (ώστε να είναι.νετ συμβατή) Virtual Execution System (VES) Το VES φορτώνει και εκτελεί CLI-συμβατά προγράμματα και βιβλιοθήκες. Είναι ανοικτό πρότυπο (ECMA-335 και ISO/IEC 23271) Από Ιούλιο 2009: C# και CLI υπό Community Promise

10 Common Type System Στόχοι: Να υπάρχει ένα framework που υποστηρίζει cross-language integration, type safety και εκτέλεση κώδικα με υψηλή απόδοση Η παροχή ενός αντικειμενοστρεφούς μοντέλου, που υποστηρίζει την πλήρη υλοποίηση από διάφορες γλώσσες προγραμματισμού Ο προσδιορισμός κανόνων που πρέπει να ακολουθούν οι γλώσσες προγραμματισμού, ώστε να είναι interoperable

11 Common Language Specification Οι CLS κανόνες προσδιορίζουν ένα υποσύνολο του CTS Όλοι οι κανόνες του CTS εφαρμόζονται και στο CLS, εκτός αν υπάρχει κάποιος «αυστηρότερος» στο CLS Το CLS βοηθάει στο language interoperability με το να προσδιορίζει χαρακτηριστικά που είναι κοινά σε κάθε γλώσσα που κάνει target το CLR Example: UInt32 δεν είναι CLSCompliant C# case sensitive, Visual Basic όχι

12 Γλώσσες που υποστηρίζουν το πρότυπο

13 Common Language Runtime Just-in-time Compilation Memory management Garbage collection Thread management Exception handling Security Type safety

14 Διαδικασία Εκτέλεσης

15 Application Domain Ένα application domain για το CLR είναι κάτι παρεμφερές με το ό,τι είναι μία διεργασία (process) για το λειτουργικό σύστημα Χρησιμοποιείται για να απομονώσει τις εφαρμογές που εκτελούνται Ώστε η μία να μην επηρεάζει και να εκτελείται ανεξάρτητα από την άλλη

16 Συλλογή απορριμμάτων 1/2 Ο προγραμματιστής δημιουργεί νέα αντικείμενα και πίνακες Τα πάντα δημιουργούνται και η μνήμη δεσμεύεται με ένα ειδικό keyword. Το περιβάλλον εκτέλεσης του.net παρακολουθεί αυτόματα τη χρήση μνήμης Ο Garbage Collector αφαιρεί αυτόματα τα αχρησιμοποίητα αντικείμενα Πιο αποτελεσματική διαχείριση μνήμης Ευκολία στη χρήση και μηδενικές διαρροές

17 Συλλογή απορριμάτων 2/2 A B C D E F Τα B,D βγαίνουνε out of scope, με το F να «κρέμεται» από το B Κλήση της GC.Collect() NextObjectPointer A C E NextObjectPointer

18 Τι μπορούμε να προγραμματίσουμε; Εφαρμογές κονσόλας Εφαρμογές για Windows (διεπαφή χρήστη σε Windows Forms) Εφαρμογές για Windows με το Windows Presentation Foundation (WPF) ASP.NET εφαρμογές που εκτελούνται σε Web Servers Web services Windows services Service-oriented applications using Windows Communication Foundation (WCF) Workflow-enabled applications using Windows Workflow Foundation (WF) Silverlight Applications Mobile Applications (Compact Framework) Embedded Applications (Micro Framework) Office Applications (VSTO) SharePoint Applications XBOX 360 Games, PC Games, Zune Games (XNA) Windows 7 (με το Windows 7 API Code Pack) συμπεριλαμβάνεται Sensor και Location Platform Visual Studio Tools for Office Microsoft Dynamics CRM Οτιδήποτε έχει API σε.νετ!

19 Τι βιβλιοθήκες μπορούμε να χρησιμοποιήσουμε; Base Class Library (BCL) Χιλιάδες έτοιμες κλάσεις για το προγράμματά μας Προσβάσιμες σε κάθε σύστημα που έχει εγκατεστημένο το.net Framework Διαθέσιμες από εύκολα αναγνωρίσιμους χώρους ονομάτων, π.χ. System.Data.SqlClient.SqlConnection System.Windows.Forms.Form System.Net.Sockets.TcpClient System.Xml.XmlReader Χιλιάδες code samples και open source projects που παρέχονται δωρεάν στο διαδίκτυο code.msdn.microsoft.com blogs.msdn.com weblogs.asp.net

20

21 Ωφέλη του.net Framework Many languages, One Intermediate Language, Many platforms Αποχαιρετήστε τα memory leaks (Garbage Collector) Optimization per CPU / platform Ένα περιβάλλον προγραμματισμού για πολλών ειδών εφαρμογές Ιδανικό μοντέλο ασφάλειας Deployment

22 Γιατί C#? Μια component-oriented γλώσσα Επαναχρησιμοποιήσιμες βιβλιοθήκες Εγγενής υποστήριξη για Namespaces Versioning Attribute-driven ανάπτυξη Η δύναμη της C/C++ με την ευκολία της Visual Basic Ελάχιστη καμπύλη εκμάθησης για όλους Πιο σαφής από την C++ Πιο δομημένη από τη Visual Basic Περισσότερες δυνατότητες από τη Java Δυνατότητες functional programming (όπως η Haskell, η Scheme κ.λ.π.) Δυνατότητες dynamic programming (έκδοση 4)

23 Τμήμα 2: C# - The Language

24 Μορφή και Δομή Δεν υπάρχουν header files Μεταγλώττιση υπό συνθήκη αλλά όχι macros Μεταγλώττιση σε.net assembly (είτε.exe είτε.dll) Μόνο object oriented κώδικα Main() entry point του προγράμματος (μόνο για εκτελέσιμα αρχεία)

25 Hello World public class HelloWorld { public static void Main() { System.Console.WriteLine("Hello World!");

26 Visual Studio IDE (Integrated Development Environment) Γλώσσες: C++, C#, F#, Visual Basic κ.α. Δωρεάν πρόσβαση Για φοιτητές: MSDNAA Για startups: Για web agencies: Express editions: Web Platform Installer:

27 Σύστημα τύπων Εγγενής πρόσβασή στο σύστημα τύπων του.net Βασικές έννοιες: Τα πάντα είναι objects Τα πάντα κληρονομούν το System.Object Ξεκάθαρη διάκριση ανάμεσα στους τύπους τιμής και αναφοράς Με τιμή: απλοί τύποι, enums, structs Με αναφορά: Interfaces, Κλάσεις, Πίνακες

28 Απλοί Τύποι Τύποι Ακεραίων byte, sbyte (8bit), short, ushort (16bit) int, uint (32bit), long, ulong (64bit) Τύποι κινητής υποδιαστολής (IEEE) float (ακρίβεια 7 ψηφίων) double (ακρίβεια ψηφίων) Exact Numeric Type decimal (28 σημαντικά ψηφία) Τύποι Χαρακτήρων char (ένας χαρακτήρας) string (πλούσια λειτουργικότητα, τύπος αναφοράς) Τύποι Boolean bool (ξεχωριστός τύπος, διαφορετικός από τον int)

29 Value Types και Reference Types Κατά κανόνα, τα value types είναι οι απλοί τύποι (int, double, byte κ.λ.π.) και οι δομές (struct) Το System.String ενώ είναι reference type, το χρησιμοποιούμε σαν value type Reference types είναι οι υπόλοιποι τύποι (όλες οι κλάσεις, events, delegates κ.λ.π.) Αποθήκευση στη μνήμη του προγράμματος τα value types (όταν δηλώνονται μέσα σε μια μέθοδο) αποθηκεύονται στη στοίβα (stack) τα reference types (μαζί με τα value types τα οποία μπορεί να περιέχουν) αποθηκεύονται στο σωρό (heap)

30 Πέρασμα μεταβλητών σε μεθόδους Πέρασμα τιμών χωρίς keyword (κατ αξία) μη διατηρήσιμη αλλαγή τιμής Πέρασμα τιμών με το ref keyword (κατ αναφορά) επιτρέπεται αλλαγή τιμής Πέρασμα τιμών με το out keyword (output) επιβάλλεται ανάθεση τιμής

31 Δηλώσεις (Statements) Έλεγχος ροής και επαναλήψεις if (<bool expr>) {... else {... ; switch(<var>) { case <const>:...; ; while (<bool expr>) {... ; for (<init>;<bool test>;<modify>) {... ; do {... while (<bool expr>);

32 Απαριθμητοί Τύποι (Enums) Χρησιμοποιούνται στοιχεία με όνομα αντί για αριθμητικές επιλογές Ισχυρός τύπος, όχι αυτόματη μετατροπή σε int Καλύτερο το "Color.Blue" από μια αριθμητική έκφραση Πιο κατανοητό, ευκολότερη συντήρηση Εξίσου ελαφρύ με το απλό int (αν δεν δηλωθεί άλλος τύπος στο enum) Παράδειγμα: enum Color { Red, Green, Blue, Yellow ;

33 Πίνακες (Arrays) Zero based, type bound Βασίζονται στην.net κλαση System.Array Δηλώνονται με τύπο και μορφή, αλλά χωρίς όρια int[] SingleDim; int[,] TwoDim; int [][] Jagged; Δημιουργούνται με χρήση του new με όρια ή initializers SingleDim = new int[20]; TwoDim = new int[,]{{1,2,3,{4,5,6; Jagged = new int[1][]; Jagged[0] = new int[]{1,2,3;

34 Τελεστές (Operators) Σαν τη C: Λογικοί/Συνθήκης: && ^ Αριθμητικοί: * / + - % << >> Σχεσιακοί: ==!= < > >= <= Όχι ακριβώς σαν τη C: Για bool: & και είναι λογικοί με πλήρη απαρίθμηση Για ακεραίους: & και υλοποιούν δυαδικό AND/OR Καθόλου σαν τη C: is as typeof Ελέγχει τον run-time τύπο Μετατρέπει μια τιμή σε άλλο τύπο Ανακτά τον run-time τύπο

35 Είναι value Types Structures Ιδανικά για μικρούς τύπους δεδομένων Μπορούν να περιέχουν μεθόδους Τα fields μπορεί να είναι public, private ή internal Δεν μπορούν να κάνουν inherit κλάση Μπορούν να κάνουν implement interface struct MyStruct { public int i; private string s; public void WriteToConsole() { Console.WriteLine("I am a struct");

36 Κλάσεις Υλοποίηση κώδικα και δεδομένων Αναπαριστά μια σημασιολογική ενότητα Μπορεί να υλοποιεί interfaces Μπορεί να κληρονομεί από μία βασική κλάση (base class) Οι κλάσεις περιέχουν: Πεδία (Fields): μεταβλητές μελών Ιδιότητες (Properties): τιμές στις οποίες γίνεται πρόσβαση με ζευγάρια μεθόδων get/set Μέθοδοι (Methods): λειτουργικότητα για το αντικείμενο ή την κλάση Άλλα: events, indexers, delegates public class Person : IPersonAge { private int YOB; public Person() { public int YearOfBirth { get { return YOB; set { YOB = value; public int GetAgeToday() { return Today()- YearOfBirth ;

37 Ιδιότητες (Properties) Ευκολία υλοποίησης μεθόδων Χρησιμοποιούμε properties για: Υλοποίηση read-only μελών (παραλείποντας το set) Επικύρωση κατά την ανάθεση Παράγωγες ή σύνθετες τιμές Έκθεση τιμών στα interfaces Παράδειγμα: string Name { get { return name; set { name = value;

38 Χώροι Ονομάτων (Namespaces) Κάθε ορισμός πρέπει να περιέχεται σε ένα namespace Αποφεύγεται η σύγκρουση ονομάτων Καλύτερη οργάνωση Οι βιβλιοθήκες γίνονται ευκολότερες στην κατανόηση Μπορούν να εμφωλιάζονται Ομάδες κλάσεων και τύπων κατά χρησιμότητα Δηλώνονται με τη λέξη-κλειδί namespace Συντόμευση για χρήση σε κώδικα, με using

39 Iteration με χρήση της foreach List<string> stringlist = new List<string>(); stringlist.add("one"); stringlist.add("two"); stringlist.add("three"); stringlist.add("four"); //stringlist.add(5); won t compile, as 5 is not a string foreach(string s in stringlist) if(s.contains("e")) Console.WriteLine(s); Χρησιμοποιείται σε arrays και collections. Προσοχή: Μέσα από την foreach, ΔΕΝ πειράζουμε την collection (π.χ. Δεν κάνουμε κάποιο add ή remove, καθώς έτσι «σπάει» ο Enumerator)

40 Κληρονομικότητα Πολυμορφισμός 1 Η C# υποστηρίζει κληρονομικότητα Κάθε κλάση μπορεί να κληρονομήσει χαρακτηριστικά μόνο μίας κλάσης Πολλαπλή κληρονομικότητα δεν υποστηρίζεται (παρά μόνο (κάπως) με τα Interfaces) Χρήση των λέξεων abstract, sealed, virtual, new

41 Κληρονομικότητα Πολυμορφισμός 2 class Parent { public void A(){...; public virtual void B(){...; class Child : Parent { public new void A(){...; //A() not declared as virtual on Parent public override void B(){...; //B() declared as virtual on Parent public static void Main() { Child c = new Child(); c.a(); // Child::A() c.b(); // Child::B() Parent p = c as Parent; p.a(); // Parent::A() p.b(); // Child::B()

42 Προστασία Πρόσβασης Υιοθετεί το μοντέλο της C++ public Όλοι μπορούν να καλέσουν ή να έχουν πρόσβαση protected Μόνο τα μέλη έχουν πρόσβαση private Μόνο τα μέλη και μόνο αυτής της κλάσης Αλλά και το επεκτείνει Modifiers για κλάσεις sealed Δεν μπορεί να χρησιμοποιηθεί σαν βασική κλάση internal Public πρόσβαση μόνο μέσα στην assembly protected internal Protected στην assembly (σημαίνει protected OR internal) abstract δεν μπορεί να γίνει instantiate, αλλά μπορεί μόνο να κληρονομηθεί

43 Abstract classes - Interfaces Abstract classes : υποχρεωτικά κληρονομούνται Μπορούν να έχουν υλοποιήσεις μεθόδων, ή σκέτες δηλώσεις Μπορούν να έχουν fields Αν θέλουμε μια κλάση να *μην* μπορεί να κληρονομηθεί, τότε τη χαρακτηρίζουμε ως sealed Interfaces: Συμβόλαια δήλωσης σημασιολογίας μεταξύ δύο μερών Μπορούν να γίνουν implement από structures ή classes Δεν έχουν υλοποιήσεις μεθόδων, αλλά μόνο δηλώσεις Μπορούν να έχουν δηλώσεις από properties Παράδειγμα: interface IPersonAge { int YearOfBirth {get; set; int GetAgeToday();

44 Οι λέξεις is και as is: έλεγχος για τον τύπο ενός αντικειμένου if(objectinstance is MyClass) as: αποτρέπει InvalidCastException από μη επιτρεπτό cast αντί π.χ. για (MyClass)objectInstance το οποίο μπορεί να επιφέρει Exception, χρησιμοποιούμε το objectinstance2 = objectinstance as MyClass Αν το cast είναι επιτρεπτό, επιστρέφει objectinstance Ειδάλλως, επιστρέφει null

45 Η λέξη static Όταν χαρακτηρίσουμε ένα property ή μεταβλητή μιας κλάσης με τη λέξη static, τότε η τιμή της είναι η ίδια για κάθε instance της κλάσης Όταν χαρακτηρίσουμε μια κλάση με τη λέξη static, τότε δεν μπορούμε να δημιουργήσουμε instance αυτής της κλάσης Χρήσιμο για καταστάσεις που χρειαζόμαστε ένα και μόνο instance μιας κλάσης Οι static κλάσεις έχουνε αποκλειστικά static μέλη

46 Generics Παρόμοια με τα templates της C++ Επιτρέπουν type safety Εύκολος τρόπος για πιο «γενικά» αντικείμενα Π.χ. εκτύπωση των αντικειμένων ενός πίνακα void Print<T>(T[] myarray) { foreach(t myobject in myarray) Console.WriteLine(myObject.ToString()); Περισσότερα για generics:

47 Iterators Εισήχθησαν στην C# 2.0 Είναι μία μέθοδος, get accessor που επιτρέπει την χρήση επανάληψης (for, foreach, while, do while) στην κλάση ή το struct χωρίς να χρειάζεται να υλοποιηθεί το interface IEnumerable Αποτελείται από ένα κομμάτι κώδικα που «επιστρέφει» ταξινομημένη σειρά τιμών ίδιου τύπου Χρησιμοποιεί το yield return

48 public class SampleCollection { public int[] items = new int[5] { 5, 4, 7, 9, 3 ; Παράδειγμα public IEnumerable><int> BuildCollection() { for (int i = 0; i < items.length; i++) //το πρόγραμμα θα γυρίσει εδώ μετά την { //εκτέλεση της yield yield return items[i]; class MainClass { static void Main() { SampleCollection col = new SampleCollection(); foreach (int i in col.buildcollection()) { Console.WriteLine(i);

49 Nullable Types Με την χρήση των nullable types, μπορούμε να καταχωρήσουμε την τιμή null σε κάποιον value type Π.χ. int? x; //ίδιο με το Nullable<int> x; x = null; Μπορούμε να ελέγξουμε για ύπαρξη τιμής με το if(x.hasvalue) Μπορούμε να πάρουμε την τιμή (αφού ελέγξουμε για HasValue) με int y = x.value; Χρήσιμα όταν περιμένουμε είτε «κανονική», είτε null τιμή από κάπου (π.χ. βάση δεδομένων με nullable πεδίο)

50 Αντιπρόσωποι (Delegates) Κάτι σαν τους δείκτες σε συναρτήσεις (C/C++) Ισχυροί τύποι, όχι σύγχυση στο type-casting ή σφάλματα. Η δήλωση δημιουργεί μια typed method signature: delegate void Clicked(Element e, Point p); Ο πραγματικός αντιπρόσωπος είναι ένα στιγμιότυπο αυτού του τύπου Clicked MyClickHandler = new Clicked(obj.OnButtonClick); Το όρισμα περνιέται στον constructor του αντιπροσώπου: Αναφορά στο στιγμιότυπο του αντικειμένου και στη μέθοδο. Η μέθοδος πρέπει να έχει την ίδια ακριβώς υπογραφή void OnButtonClick(Element e, Point p) {... ;

51 Συμβάντα (Events) Μοντέλο συμβάντων ενσωματωμένο στη γλώσσα Όλη η διαχείριση γίνεται από τη C# Τα events δηλώνονται με έναν τύπο delegate Η δήλωση δημιουργεί μια πηγή συμβάντος για να γίνει bind event Clicked OnClicked; Τα event sinks γίνονται bind στην πηγή του συμβάντος με delegates Clicked MyClickHandler = new Clicked(obj.OnButtonClick); Προσθήκη handler: btnaction.onclicked += MyClickHandler; Απαλοιφή handler: btnaction.onclicked -= MyClickHandler; Η πηγή του συμβάντος πυροδοτεί events με μια απλή κλήση if(onclicked!= null) OnClicked(this,PointerLocation);

52 Χειρισμός Εξαιρέσεων Παρόμοιος με τη C++ Μοντέλο SEH (Structured Exception Handling) Διαβάζεται ως εξής: try να τρέξεις αυτό τον κώδικα αν προκύψει σφάλμα, catch ό,τι μπορείς να χειριστείς......finally άφησε με να τελειώσω το cleanup με το χέρι Παράδειγμα: try { //... run code catch(someexception e) { //... handle finally { //...end gracefully

53 Partial Classes Partial classes: Η υλοποίηση μιας κλάσης μπορεί να σπάσει σε πολλά αρχεία Βοηθάει στην ανάπτυξη λογισμικού από ομάδες προγραμματιστών Χρησιμοποιούμε τη λέξη partial στον ορισμό της κλάσης Βοηθάει στο διαχωρισμό κώδικα διαφορετικής χρηστικότητας Παράδειγμα: Σε μια Windows Forms εφαρμογή, έστω ότι δημιουργούμε μια καινούρια Form, ονόματι MyForm. Τότε: Ο κώδικας που δημιουργείται από τον Visual Studio designer της φόρμας (με drag-drop κ.λ.π.) τοποθετείται στο αρχείο MyForm.Designer.cs Ο κώδικας που γράφουμε εμείς τοποθετείται στο MyForm.cs

54 Anonymous methods Anonymous methods : in-line κατασκευή μιας συνάρτησης η οποία προορίζεται για χρήση μέσω delegate Ελάττωση του απαιτούμενου κώδικα για «μικρές» συναρτήσεις

55 Τμήμα 3: C# 3.0

56 Η μεγαλύτερη καινοτομία της C# 3.0 Μεγαλύτερη καινοτομία: επερωτήσεις στα δεδομένα, οτιδήποτε είδους var query = from p in employees where p.salary > 33000m orderby p.name, p.startdate descending select p.name;

57 Anonymous types Σαν ένας κανονικός τύπος που ζει στο CLR var v = new { Amount = 108, Message = "Hello" ;

58 Extension methods Επιτρέπεται να προστεθούν μέθοδοι σε υπάρχοντες τύπους χωρίς να δημιουργούμε έναν νέο derived τύπο Καλούνται πολύ εύκολα (just static methods underneath) Method chaining

59 Παράδειγμα string x = "some string value"; string y = Utility.Reverse(x); string x = "some string value"; string y = x.reverse(); public static class Utility { public static string Reverse(this string input) { char[] chars = input.tochararray(); Array.Reverse(chars); return new String(chars);

60 Lambda expressions Σαν anonymous method αλλά μικρότερο Χρησιμοποιεί τον lambda operator => που διαβάζεται goes to δηλαδή «συνεπάγεται» Αριστερά έχουμε παραμέτρους εισόδου και δεξιά την έκφραση ή το κομμάτι κώδικα. Shorthands Parameter type inference Brace removal (single expression/statement) Bracket removal (single parameter) Expression Trees

61 Παράδειγμα int[] source = new[] { 3, 8, 4, 6, 1, 7, 9, 2, 4, 8 ; foreach (int i in source.where(x => x > 5)) Console.WriteLine(i);

62 Παράδειγμα (C# 1.0) // Δήλωση delegate public delegate int ChangeInt(int x); // Μία μέθοδος στην οποία μπορεί να δείξει η από πάνω μεταβλητή static public int DoubleIt(int x) { return x * 2; // Δημιουργία στιγμιοτύπου ChangeInt mydelegate = new ChangeInt(DelegateSample.DoubleIt); Console.WriteLine("{0", mydelegate(5));

63 Παράδειγμα (C# 2.0) ChangeInt mydelegate = new ChangeInt( delegate(int x) { return x * 2; ); Console.WriteLine("{0", mydelegate(5));

64 Παράδειγμα (C# 3.0) ChangeInt mydelegate = x => x * 2; Console.WriteLine("{0", mydelegate(5));

65 LINQ Χαρακτηριστικά Δυνατότητα επερωτήσεων μέσα στη γλώσσα Περιέχει Standard Query Operations Select Where Join Take/Skip Group By Providers

66 dynamic keyword optional parameters C# 4.0

67 Τμήμα 4: Base Class Libraries

68 Dictionaries Τα Dictionaries είναι δομές δεδομένων που αποθηκεύουν ζευγάρια key/values σε θέσεις που λέγονται KeyValuePair. Το κυριότερο πλεονέκτημα των Dictionaries είναι ότι η αναζήτηση είναι πολύ γρήγορη γιατί η «σκληρή» δουλειά γίνεται κατά τη φάση της αποθήκευσης. Στην ουσία, ένα μοναδικό κλειδί αποκτάται για την αποθήκευση των τιμών στα KeyValuePair. Ένας συνηθισμένος κώδικας που χρησιμοποιεί Dictionaries περιλαμβάνει: Dictionary<string, string> adict = new Dictionary<string, string>(); adict.add("sunday", "Dimitris"); adict["monday"] = "Gkanatsios"; // (key,value) pair foreach (KeyValuePair<string, string> entry in adict) Console.Write("Key={0, Value={1\n", entry.key, entry.value); // adict ]=value;

69 Arrays Υπάρχουν δύο τύποι arrays στο.net: Array είναι μια class που προέρχεται κατεθευθείαν από το System.Object. Αυτή η class μπορεί να χρησιμοποιηθεί για να υλοποιήσετε στατικές (συγκεκριμένου μεγέθους) arrays για την αποθήκευση πρωτόγονων τύπων. Ένα element (στοιχείο) είναι μια τιμή μέσα στην Array. Το length είναι ο συνολικός αριθμός των elements μέσα στο array. Το rank του Array είναι ο αριθμός των διαστάσεων του. Το κάτω όριο μιας διάστασης ενός Array είναι ο πρώτος αριθμοδείκτης εκείνης της διάστασης του Array. Μια πολυδιάστατη Array μπορεί να έχει διαφορετικά όρια για κάθε διάσταση. Τα Type objects παρέχουν πληροφορίες για την δήλωση των array type. Τα Array objects με τον ίδιο Array type μοιράζονται το ίδιο Type object. Το Array έχει 6 ιδιότητες (IsFixedSize, IsReadOnly, IsSynchronized, Length, Rank, SyncRoot), 22 μεθόδους ( BinarySearch, Clear, Copy, Equals, GetValue, GetLength, IndexOf, Initialize, Reverse, SetValue, Sort, ToString, Finalize κ.α.). Η class επίσης εφαρμόζει διάφορες μεθόδους της IList, που περιλαμβάνουν τα ( Add, Clear, Contains, IndexOf, Insert, Remove, RemoveAt ).

70 ArrayList H ArrayList είναι μια class που προέρχεται από το System.Collections. Αυτή η class δεν έχει καμία σχέση με τη class System.Object.Array. Η δήλωση της class είναι: public class ArrayList : IList, ICollection, IEnumerable, ICloneable Το κείμενο δείχνει τις εξής ιδιότητες της class: ArrayList alist = new ArrayList (); alist.add ("John"); alist.add ("Paul"); alist.add ("George"); Για την ανάκτηση ενός αντικειμένου από την ArrayList, χρησιμοποιήστε μια αριθμοδότηση βασισμένη στο 0: int i = (int) list[0]; Για την ανάθεση ενός αντικειμένου στην ArrayList, κάνουμε το εξής: list[0] = 999; Η ιδιότητα Count αποκαλύπτει πόσα αντικείμενα περιέχει μια ArrayList. for (int i=0; i<list.count; i++) Console.WriteLine ( list[i] ); Μπορείτε να ανατρέξετε την ArrayList με το foreach: foreach (int i in list) Console.WriteLine (i);

71 List<T> Generic μορφή του ArrayList List<int> list = new List<int>(); for (int i = 0; i < 100; i++) list.add(i * 2); list.add("string"); //compilation error

72 Regular Expressions Το RegEx είναι μια class προερχόμενη από το name space System.Text.RegularExpressions. Τα RegEx αντικείμενα μπορούν να χρησιμοποιηθούν για: Να χωριστούν strings σε substrings, χρησιμοποιώντας τα RegExps για να αναγνωριστούν τα διαχωριστικά. Να ψάξετε για substrings μέσα στα strings, χρησιμοποιώντας τις RegEx εκφράσεις για να αναζητήσετε σχέδια (patterns). Να κάνετε λειτουργίες Αναζήτησης-Αντικατάστασης χρησιμοποιώντας το RegEx για να αναγνωρίσετε αυτά που πρέπει να αντικατασταθούν στο κείμενο. Ανάλυση αρχείων HTML. Όταν δημιουργούνται RegEx objects, η έκφραση που περιγράφει το pattern χρησιμοποιείται ως ένα όρισμα στο constructor: using System.Text.RegularExpressions; Regex regex = new Regex ("[a-z]"); Regex regex = new Regex ("[a-z]", RegexOptions.IgnoreCase); Regex regex = new Regex string[] parts = regex.split foreach (string part in parts) Console.WriteLine (part); Οποιοδήποτε μικρό γράμμα της αλφαβήτας c: inetpub wwwroot wintellect Επιστρέφει τα substrings μέσα στο string διαχωρισμένα από το όρισμα μέσα στο RegExp

73 Χρήση του RegEx, μέρος 2 Για την ανάλυση ενός αρχείου html, με, π.χ., <b>every</b>good<h3>boy</h3>does<b>fine</b> Regex regex = new Regex ("<[^>]*>"); string[] parts = regex.split ("<b>every</b>good<h3>boy</h3>does<b>fine</b>"); foreach (string part in parts) Console.WriteLine (part); Αυτός ο κώδικας παράγει: Every good boy does fine (μια λέξη ανά γραμμή). Παρατηρήστε ότι <[^>]*> σημαίνει: οτιδήποτε ξεκινά με < ακολουθόμενο από οποιουσδήποτε χαρακτήρες εκτός από το >, ακολουθόμενο από το >. To Regex περιλαμβάνει 3 μεθόδους για αναζήτηση substrings μέσα σε strings: Match, Matches, και IsMatch. Με αυτά, είναι αρκετά εύκολο να γράψει κανείς grep-like. Το πρόγραμμα μπορεί να χρησιμοποιηθεί για να κάνει οποιαδήποτε greps, όπως π.χ. NetGrep index.html <a[^>]*> Η παραπάνω εντολή θα εμφάνιζε τις γραμμές μέσα στις οποίες εμφανίζεται το <a> στο αρχείο index.html. Παρόμοια, η εντολή NetGrep file1.txt \d{2, Θα εμφάνιζε τις γραμμές που περιλαμβάνουν ακέραιους αριθμούς με δύο ή περισσότερα ψηφία μέσα στο file1.txt, κ.τ.λ.

74 Χρήση του RegEx, μέρος 3 using System; using System.IO; using System.Text.RegularExpressions; class MyApp { static void Main (string[] args) { if (args.length < 2) { Console.WriteLine ("Syntax: NETGREP filename expression"); return; StreamReader reader = null; int linenum = 1; try { // Initialize a Regex object with the regular expression // entered on the command line Regex regex = Regex (args[1], RegexOptions.IgnoreCase); // Iterate through the file a line at a time and display all lines that contain a pattern matching the regular expression reader = new StreamReader (args[0]); for (string line = reader.readline (); line!= null; line = reader.readline (), linenum++) { if (regex.ismatch (line)) Console.WriteLine ("{0:D5: {1", linenum, line); catch (Exception e) { Console.WriteLine (e.message); finally { if (reader!= null) reader.close ();

75 Internet Classes Αυτές οι classes υπάρχουν στο name space System.Net. Υπάρχουν 36 classes, 5 interfaces, ένα delegate, και 4 enumerations. Οι πιο σημαντικές classes είναι: Cookie, CookieCollection, Dns, HttpWebRequest, HttpWebResponse, HttpVersion, HttpWebRequest, HttpWebResponse, IPAddress, IPEndPoint, IPHostEntry, NetworkCredential, ProtocolViolationException, SocketAddress, WebClient, WebException, WebPermission, WebProxy, WebRequest, WebResponse και άλλα. Ο επόμενος κώδικας δείχνει μόνο πως να χρησιμοποιήσετε το WebRequest και WebResponse στο LinkList.cs, που παίρνει ένα URL ως όρισμα. Η εφαρμογή πάει στο URL και εμφανίζει τις γραμμές που περιλαμβάνουν αναφορές σε άλλα websites, π.χ. Υπερσυνδέσμους. Ο κώδικας είναι αρκετά απλός.

76 System.Net.Mail Είναι αρκετά εύκολο να στείλετε από ένα.net Framework πρόγραμμα (αρκεί να έχετε τις σωστές άδειες). Το System.Net.Mail παρέχει ένα managed interface για το SMTP. Οι κυριότερες classes είναι: 1. MailMessage, που αναπαριστά τα μηνύματα s; 2. MailAttachment, που αναπαριστά τα συννημένα αρχεία; 3. SmtpClient, που χειρίζεται την υπηρεσία μηνυμάτων SMTP του συστήματος. Αυτά είναι τα βήματα για να σταλθούν s με το System.Web.Mail: MailMessage message = new MailMessage(); message.from = new message.to.add(new message.subject = "test subject"; message.body = "test body..."; SmtpClient cl = new SmtpClient(); cl.host = "mail.gkanatsios.com"; cl.send(message);

77 Data Access Πληθώρα από τεχνολογίες Βάσεων Δεδομένων (ODBC, DAO, RDO, ADO, και OLEDB). Συνέπραξαν στην πορεία προς το ADO.NET, το οποίο εφαρμόζεται στο System.Data namespace. Το ADO.NET έχει δύο βασικούς τύπους classes, αυτούς που είναι βελτιστοποιημένοι για τον Microsoft SQL Server και όλους τους άλλους που περιλαμβάνονται στο OleDB, το οποίο δεν είναι γρήγορο αλλά είναι πιο γενικό. Οι base classes είναι: Connection (OleDbConnection, SqlConnection) Command (SqlCommand and OleDbCommand) DataReader (OleDbDataReader, SqlDataReader) DataSet DataAdapter (SqlDataAdapter, OleDbDataAdapter) Exception (SqlException, OleDbException

78 Data Readers, παράδειγμα SqlConnection connection = new SqlConnection("server=localhost;uid=sa;pwd=;database=pubs"); connection.open(); SqlCommand command = new SqlCommand("select * from titles", connection); SqlDataReader reader = command.executereader(); while (reader.read()) connection.close(); Console.WriteLine(reader.GetString(1)); Για απλότητα, ο παραπάνω κώδικας δε διαχειρίζεται τυχόν σφάλματα.

79 Data Readers, μέρος 2 SqlConnection connection = new SqlConnection("server=localhost;uid=sa;pwd=;database=pubs"); try { catch (SqlException e) { finally { connection.open(); SqlCommand command = new SqlCommand("select * from titles", connection); SqlDataReader reader = command.executereader(); while (reader.read()) Console.WriteLine(reader.GetString(1)); Console.WriteLine(e.Message); connection.close(); Παρόμοιος κώδικας μπορεί να χρησιμοποιηθεί για οποιοδήποτε άλλον OleDb data provider, απλά αντικαθιστώντας τους SQL types με τους αντίστοιχους OleDB types.

80 Updating Data Όπως το όνομα υπονοεί, οι Data Readers μπορούν μόνο να πάρουν δεδομένα από μια πηγή δεδομένων. Αν χρειάζονται λειτουργίες εγγραφής, τότε χρειάζεται ένα command object. SqlConnection connection = new SqlConnection("server=localhost;uid=sa;pwd=;database=pubs"); try { connection.open(); string sqlcmd = "insert into titles (title_id, title, type, pub_id, price, advance, royalty, ytd_sales, notes, pubdate) values ('BU1001', 'Programming Microsoft.NET', 'Business', '1389', NULL, NULL, NULL, NULL, 'Learn to program Microsoft.NET', 'Jan ')"; SqlCommand command = new SqlCommand(sqlcmd, connection); command.executenonquery(); catch (SqlException e) { Console.WriteLine(e.Message); finally { connection.close();

81 DataSets και DataAdapters Το DataSet είναι η αναπαράσταση μιας βάσης δεδομένων αποθηκευμένη στη μνήμη και μπορεί να περιέχει πολλαπλούς πίνακες δεδομένων με constraints και relationships. Τα DataSets χρησιμοποιούνται μαζί με τους DataAdapters για τη διευκόλυνση της πρόσβασης ανάγνωσης/γραφής στις βάσεις δεδομένων. SqlDataAdapter adapter = new SqlDataAdapter("select * from titles","server=localhost;uid=sa;pwd=;database=pubs"); DataSet ds = new DataSet(); adapter.fill(ds); foreach (DataRow row in ds.tables[0].rows) Console.WriteLine(row[1]); Παρατηρήστε τη χρήση του foreach, η οποία σημαίνει ότι το DataSet έχει collections από στήλες και γραμμές.

82 LINQ To SQL Το Linq To SQL είναι ένας εξελιγμένος O/R Mapper που μας επιτρέπει εύκολη πρόσβαση σε δεδομένα από SQL Server. Το Visual Studio ενσωματώνει έναν εύχρηστο designer.

83 Παράδειγμα using (NorthwindDataContext context = new NorthwindDataContext()) { var customers = from c in context.customers where(c.contactname.contains( textboxcustomername.text.trim()) && c.companyname.contains(textboxcompanyname.text.trim())) select c; gridviewcustomers.datasource = customers; gridviewcustomers.databind();

84 LINQ To XML Με το LINQ To XML μπορούμε εύκολα να επεξεργαστούμε αρχεία XML Ακόμα και HTML, αν είναι valid! Ενώ υπάρχει στο.νετ δυνατότητα για χρήση XML DOM αλλά και το XQuery, το LINQ To XML είναι πιο φιλικό στον προγραμματιστή

85 Ένα αρχείο XML <?xml version="1.0" encoding="utf-8"?> <Tutorials> <Tutorial> <Author>The Reddest</Author> <Title> Creating an XP Style WPF Button with Silverlight </Title> <Date>2/20/2008</Date> </Tutorial> <Tutorial> <Author>The Fattest</Author> <Title> Flex And Yahoo Maps </Title> <Date>2/12/2007</Date> </Tutorial> <Tutorial> <Author>The Tallest</Author> <Title> WPF Tutorial - Creating A Custom Panel Control </Title> <Date>2/18/2008</Date> </Tutorial> </Tutorials>

86 Parsing με LINQ To XML XDocument xmldoc = XDocument.Load("TestFile.xml"); var tutorials = from tutorial in xmldoc.descendants("tutorial") select new { Author = tutorial.element("author").value, Title = tutorial.element("title").value, Date = tutorial.element("date").value, ;

87 Reflection Οι Managed εφαρμογές αναπτύσσονται σε assemblies που περιέχουν πολλαπλά αρχεία και μπορούν να περιέχουν πολλαπλά modules με managed ή unmanaged κώδικα. Τα managed modules περιέχουν metadata (~ επιπλέον, συνήθως περιγραφικές, πληροφορίες) που περιγράφουν το περιεχόμενο τους και τις δομές δεδομένων μέσα σε κάτι που καλείται «manifest». Αυτές οι πληροφορίες μπορούν να ανακτηθούν χρησιμοποιώντας το ILDASM, ή μέσω των classes που εφαρμόζονται μέσα στο System.Reflection namespace. Στο.ΝΕΤ, reflection σημαίνει έλεγχος του metadata για την ανάκτηση πληροφοριών για ένα assembly, ένα module ή ένα type. Το Visual Studio, π.χ., χρησιμοποιεί το reflection για την ανάκτηση Intellisense Data.

88 Assemblies, Modules και Types Υπάρχουν τρία σχετικά namespaces: System.Reflection.Assembly System.Reflection.Module System.Type Το πρόγραμμα asminfo.cs που ακολουθεί, δείχνει πως το Reflection χρησιμοποιείται για την ανάκτηση πληροφοριών για ένα αρχείο file.dll. Παρατηρήστε τη χρήση των ακόλουθων τύπων: Assembly AssemblyName Version Module[ ] Type[ ] AssemblyName[ ]

89 asminfo.cs class MyApp { static void Main (string[] args) { if (args.length == 0) { Console.WriteLine ("Error: Missing file name"); return; try { Assembly a = Assembly.LoadFrom (args[0]); AssemblyName an = a.getname (); byte[] bytes = an.getpublickeytoken (); if (bytes == null) Console.WriteLine ("Naming: Weak"); else Console.WriteLine ("Naming: Strong"); Version ver = an.version; Console.WriteLine ("Version: {0.{1.{2.{3", ver.major, ver.minor, ver.build, ver.revision); Console.WriteLine ("\nmodules"); Module[] modules = a.getmodules (); foreach (Module module in modules) Console.WriteLine (" " + module.name); Console.WriteLine ("\nexported Types"); Type[] types = a.getexportedtypes (); foreach (Type type in types) Console.WriteLine (" " + type.name); Console.WriteLine ("\nreferenced Assemblies"); AssemblyName[] names = a.getreferencedassemblies (); foreach (AssemblyName name in names) Console.WriteLine (" " + name.name); catch (Exception e) { Console.WriteLine (e.message); Εφαρμοσμένα ως collections

90 Χρήση pointers από C# Η C# μας επιτρέπει να γράψουμε "unsafe" κώδικα. Ο Unsafe κώδικας δεν τρέχει κάτω από το memory management του Common Language Runtime (CLR). Οι Pointers είναι σαν τα references στη C# (MyObject x = new MyObject()). Η κύρια διαφορά είναι ότι ο δείκτης μπορεί να δείξει οπουδήποτε στη μνήμη Για να μεταγλωτιστεί unsafe κώδικας, πρέπει να γίνει χρήση της επιλογής /unsafe στον compiler.

91 Παράδειγμα unsafe { int* fib = stackalloc int[100]; int* p = fib; *p++ = *p++ = 1; for (int i = 2; i < 100; ++i, ++p) *p = p[-1] + p[-2]; for (int i = 0; i < 10; ++i) Console.WriteLine(fib[i]);

92 Attributes Μπορούμε να φανταστούμε τις attributes ως τρόπους να διακοσμήσουμε ή να καθορίσουμε λεπτομέρειες γύρω από μια δήλωση στον κώδικα μας. Για παράδειγμα, τα access modifiers μιας class (public, protected, private) είναι attributes. Οι attributes του SDK μπορούν να βρεθούν χρησιμοποιώντας το namespace System.Reflection.{AssemblyConfigurationName, AssemblyCultureName,. Η C# μας δίνει την δυνατότητα να ορίσουμε attributes στο επίπεδο του assembly, module, class, struct, interface, enum, delegate, method, parameter, field, property (indexer, getter, setter), event (field, property, add, remove). Αυτό είναι δυνατόν γιατί υπάρχουν τρεις classes των attributes: AttributeUsage, Conditional, and Obsolete.

93 Attributes, μέρος 2 Οι Attributes είναι δηλώσεις κώδικα που προστίθενται για να προσδιορίσουν ή να ανακτήσουν πληροφορίες για metadata. Αν χρησιμοποιηθούν έξυπνα, οι δηλώσεις attribute μπορούν να αποδειχτούν ένα εξαιρετικό εργαλείο για τον ομαδικό προγραμματισμό και για τη διαχείριση των εκδόσεων (version control). Μια attribute εφαρμόζεται στο κομμάτι κώδικα που βρίσκεται αμέσως μετά από τη δήλωση της: using System.Diagnostics; [Conditional ("DEBUG")] public void DoStuff () {... Αυτό καλείται «δώσιμο μιας attribute σε μια μέθοδο». Αν ο κώδικας γίνει compiled χωρίς ένα DEBUG σύμβολο, ένα token τοποθετείται στο metadata για να υποδηλώσει ότι το DoStuff δε θα κληθεί. Αν κάποιος άλλος κώδικας καλέσει το DoStuff σε release mode, η κλήση θα αγνοηθεί. Το DoStuff θα εκτελεστεί μόνο αν το module του γίνει compiled σε DEBUG mode.

94 Χρήση Attributes για Version Control [AttributeUsage (AttributeTargets.All, AllowMultiple=true)] class CodeRevisionAttribute : Attribute { public string Author; public string Date; public string Comment; public CodeRevisionAttribute (string Author, string Date) { this.author = Author; this.date = Date; Ο compiler προσθέτει την Attribute Ο κώδικας μπορεί να χρησιμοποιηθεί ως εξής: [CodeRevision ("billg", " ")] [CodeRevision ("steveb", " ", Comment="Fixed Bill's bugs")] struct Point { public int x; public int y; public int z;

95 Χρήση Attributes για Version Control, μέρος 2 MemberInfo info = typeof (Point); object[] attributes = info.getcustomattributes (false); if (attributes.length > 0) { Console.WriteLine ("Code revisions for Point struct"); foreach (CodeRevisionAttribute attribute in attributes) { Console.WriteLine ("\nauthor: {0", attribute.author); Console.WriteLine ("Date: {0", attribute.date); if (attribute.comment!= null) Console.WriteLine ("Comment: {0", attribute.comment); Πληροφορίες από τη Attribute Code revisions for Point struct Author: billg Date: Author: steveb Date: Comment: Fixed Bill's bugs

96 Late Binding Το Dynamic Loading (δυναμική φόρτωση) αναφέρεται στη διαδικασία εισαγωγής modules (τυπικά από.dll αρχεία) όταν χρειάζονται. Τα Plug-ins είναι ένα καλό παράδειγμα του dynamic loading. Το Dynamic Loading πραγματοποιείται χρησιμοποιώντας μια τεχνική που λέγεται Late Binding, που ουσιαστικά γίνεται με την αναβολή της ανάθεσης των τύπων (type assignment) ενός καινούργιου object μέχρι να χρειαστούν πληροφορίες για τους τύπους (για να πάρουμε τα μέλη τους, το μέγεθος τους, κ.τ.λ.). Το Reflection κάνει το Late Binding για το Dynamic Loading δυνατόν.

97 Threading Μπορούμε να χρησιμοποιήσουμε το namespace System.Threading για τη δημιουργία πολυνηματικών εφαρμογών Χρειάζεται ένας delegate ThreadStart ή ParameterizedThreadStart (αν θέλουμε παραμέτρους) Δημιουργία αντικειμένου Thread, με τον αντίστοιχο delegate στον constructor Εκκίνηση του thread, με την threadinstance.start()

98 Παράδειγμα static void Main(string[] args) { for (int i = 0; i < 10; i++) { Thread t = new Thread(WriteToConsole); Console.WriteLine("In parent thread, managed thread id = {0 and child thread id = {1", Thread.CurrentThread.ManagedThreadId, t.managedthreadid); t.start(); Console.ReadLine(); readonly static Random random = new Random(DateTime.Now.Millisecond); static void WriteToConsole() { Thread.Sleep(random.Next(500,3000)); Console.WriteLine("In child thread, Time is {0 and ThreadID is {1",DateTime.Now.ToLongTimeString(), Thread.CurrentThread.ManagedThreadId);

99 Output

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0

Εισαγωγή στη C# και. Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας. το.net 4.0 Εισαγωγή στη C# και Σημειώσεις Σεμιναρίου Επιμέλεια: Βασίλης Κόλιας το.net 4.0 2 Π ί ν α κ α ς Π ε ρ ι ε χ ο μ έ ν ω ν Πίνακας Περιεχομένων... 1 1. Εισαγωγή... 11 1.1. Γλώσσες και γλώσσες προγραμματισμού...

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Δηζαγσγή ζην.νδτ Framework θαη ζηε C#

Δηζαγσγή ζην.νδτ Framework θαη ζηε C# Δηζαγσγή ζην.νδτ Framework θαη ζηε C# Μέζνδνη Αλάπηπμεο θαη Αξρηηεθηνληθέο Σπζηεκάησλ ΠΜΣ Πιεξνθνξηαθά Σπζηήκαηα, ΟΠΑ Τξίηε, 12 Ιαλνπαξίνπ 2010 Άγγεινο Μπηκπνύδεο BSc, MSc PhD Candidate, University of

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 5: Κλάσεις και Αντικείμενα. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 5: Κλάσεις και Αντικείμενα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Κλάσεις και Αντικείμενα - Κατασκευή, Πρόσβαση Αντικειμένων - Διαχείριση Μνήμης, Garbage

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

Διαβάστε περισσότερα

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

Διαβάστε περισσότερα

Σι θα δούμε σε αυτό το μάθημα;

Σι θα δούμε σε αυτό το μάθημα; Σι θα δούμε σε αυτό το μάθημα; Γήισζε, αξρηθνπνίεζε θαη ρξήζε κεηαβιεηώλ πηλάθσλ (arrays) Γήισζε, αξρηθνπνίεζε θαη ρξήζε κεηαβιεηώλ ζπιινγώλ (collections) Σι είναι ένας πίνακας (array) Έλαο πίλαθαο είλαη

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

(Διαφάνειες Νίκου Βιδάκη)

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

Διαβάστε περισσότερα

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

Διαβάστε περισσότερα

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

Διαβάστε περισσότερα

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

.NET. Εισαγωγή σε:.net Framework C# ASP.NET. Συνοπτική παρουσίαση MS Visual Studio

.NET. Εισαγωγή σε:.net Framework C# ASP.NET. Συνοπτική παρουσίαση MS Visual Studio .NET Εισαγωγή σε:.net Framework C# ASP.NET Συνοπτική παρουσίαση MS Visual Studio Microsoft.NET Παρουσίαση του.νετ Framework Σι είναι το.net Framework Πλατφόρμα στην οποία μπορούμε να δημιουργήσουμε κάθε

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

Διαβάστε περισσότερα

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA

ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)

Διαβάστε περισσότερα

Εισαγωγή στη C# και το.net 4.0

Εισαγωγή στη C# και το.net 4.0 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΡΓΑΣΤΗΡΙΟ ΤΕΧΝΟΛΟΓΙΑΣ ΠΟΛΥΜΕΣΩΝ Εισαγωγή στη C# και το.net 4.0 Σημειώσεις Σεμιναρίου Ενότητα 3 Κλάσεις και αντικείμενα Πεδία Μέθοδοι Επιμέλεια: Βασίλης Κόλιας 1.0.0 Πίνακας

Διαβάστε περισσότερα

C# (Sharp) ΤΕΙ Λάρισας. Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών. βιβλίο μελέτης εργαστηρίου. προγραμματισμός ΙΙ. έκδοση 1.0.

C# (Sharp) ΤΕΙ Λάρισας. Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών. βιβλίο μελέτης εργαστηρίου. προγραμματισμός ΙΙ. έκδοση 1.0. ΤΕΙ Λάρισας Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπικοινωνιών προγραμματισμός ΙΙ C# (Sharp) βιβλίο μελέτης εργαστηρίου έκδοση 1.0.1 Νεβράντζας Βάιος-Γερμανός Λάρισα Φεβρουάριος 2011 σελίδα 2 από 39 Ευρετήριο

Διαβάστε περισσότερα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

Διαβάστε περισσότερα

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ. Python & NLTK: Εισαγωγή ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ Python & NLTK: Εισαγωγή Εισαγωγή Γιατί Python? Παρουσίαση NLTK Πηγές και χρήσιμα εργαλεία Φροντιστήριο σε Python Στο φροντιστήριο: Εισαγωγή στην Python Ζητήματα προγραμματισμού για

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13

Περιεχόμενα ΜΕΡΟΣ ΠΡΩΤΟ. Πρόλογος... 13 Περιεχόμενα Πρόλογος... 13 ΜΕΡΟΣ ΠΡΩΤΟ Κεφ. 1 Περί προγραμματισμού και γλωσσών προγραμματισμού Προγράμματα και Λειτουργικά Συστήματα... 17 Γλώσσες προγραμματισμού και εργαλεία ανάπτυξης προγραμμάτων...

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

Παράλληλη Επεξεργασία

Παράλληλη Επεξεργασία Παράλληλη Επεξεργασία Φροντιστήριο: Εισαγωγή στο OpenMP Εργαστήριο Πληροφοριακών Συστημάτων Υψηλής Επίδοσης Parallel and Distributed Systems Group Τι είναι το OpenMP Πρότυπο Επέκταση στη C/C++ και τη Fortran

Διαβάστε περισσότερα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Εργαστήριο #10 (Ε10) 1

Εργαστήριο #10 (Ε10) 1 Εργαστήριο #10 Από τα προηγούμενα εργαστήρια......θα χρειαστείτε ορισμένες από τις οδηγίες μορφοποίησης CSS (ανατρέξτε στις εκφωνήσεις του 8 ου και 9 ου εργαστηρίου).! Οδηγίες Στη δυναμική δημιουργία ιστοσελίδων

Διαβάστε περισσότερα

ΤΛΟΠΟΙΗΗ STANDALONE ΕΦΑΡΜΟΓΗ ΚΡΑΣΗΕΩΝ ΔΩΜΑΣΙΩΝ ΞΕΝΟΔΟΧΕΙΟΤ ΜΕ C-SHARP ΚΑΙ SQL-SERVER

ΤΛΟΠΟΙΗΗ STANDALONE ΕΦΑΡΜΟΓΗ ΚΡΑΣΗΕΩΝ ΔΩΜΑΣΙΩΝ ΞΕΝΟΔΟΧΕΙΟΤ ΜΕ C-SHARP ΚΑΙ SQL-SERVER ΑΣΕΙ ΘΕΑΛΙΑ ΧΟΛΗ ΣΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Σμήμα Μηχανικών Πληροφορικής ΣΕ ΤΛΟΠΟΙΗΗ STANDALONE ΕΦΑΡΜΟΓΗ ΚΡΑΣΗΕΩΝ ΔΩΜΑΣΙΩΝ ΞΕΝΟΔΟΧΕΙΟΤ ΜΕ C-SHARP ΚΑΙ SQL-SERVER ΠΣΤΧΙΑΚΗ ΕΡΓΑΙΑ Μήτςη Αθηνά (ΑΜ: 1532) Επιβλζπων:

Διαβάστε περισσότερα

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

Διαβάστε περισσότερα

4 Συλλογές Αντικειμένων

4 Συλλογές Αντικειμένων 4 Συλλογές Αντικειμένων Πώς χειριζόμαστε αντικείμενα σε ομάδες με επανάληψη Η Απαίτηση Συλλογών Αντικειμένων Πολλές εφαρμογές χρειάζονται πλήθος αντικειμένων: Κατάλογος βιβλίων Φοιτητολόγιο Πελατολόγιο

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων Σχεσιακές Βάσεις Δεδομένων Τα δεδομένα μας οργανώνονται σε ένα ή περισσότερους πίνακες: σε στήλες και σειρές Κάθε πίνακας έχει ένα όνομα και αποτελείται

Διαβάστε περισσότερα

PowerShell Εαρινό Εξάμηνο 2014-2015

PowerShell Εαρινό Εξάμηνο 2014-2015 PowerShell Εαρινό Εξάμηνο 2014-2015 Ανδρέας Καστανάς Μιχάλης Σαματάς Παναγιώτης Αχιλλέως Ιάκωβος Στυλιανού Λίγα λόγια για την Microsoft PowerShell Η PowerShell αποτελείται από ένα κέλυφος γραμμής εντολών

Διαβάστε περισσότερα

Έκδοση Εγγράφου: 1.2- Ημερομηνία Τελευταίας Ενημέρωσης: 21 Ιανουαρίου 2014- Upload zip αρχείων-

Έκδοση Εγγράφου: 1.2- Ημερομηνία Τελευταίας Ενημέρωσης: 21 Ιανουαρίου 2014- Upload zip αρχείων- Έκδοση Εγγράφου: 1.2- Ημερομηνία Τελευταίας Ενημέρωσης: 21 Ιανουαρίου 2014- Upload zip αρχείων- Στοιχεία Σύνδεσης Η κλήση του REST Service για το upload zip αρχείων προϋποθέτει 1. Έκδοση ψευδοκωδικών-token

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον

Διαβάστε περισσότερα

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

Διαβάστε περισσότερα

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου Μεγάλο παράδειγμα Θέλουμε να δημιουργήσουμε ένα λογισμικό για ένα τμήμα πανεπιστημίου. Το τμήμα έχει 4

Διαβάστε περισσότερα

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java

ΑΝΑΚΕΦΑΛΑΙΩΣΗ. Τα βασικά για την γλώσσα Java JAVA, NETBEANS ΑΝΑΚΕΦΑΛΑΙΩΣΗ Τα βασικά για την γλώσσα Java Java portability Το μεγαλύτερο πλεονέκτημα της Java είναι η μεταφερσιμότητα: ο κώδικας μπορεί να τρέξει πάνω σε οποιαδήποτε πλατφόρμα. Write-Once-Run-Anywhere

Διαβάστε περισσότερα

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010

Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Πληροφορική & Τηλεπικοινωνίες K18 - Υλοποίηση Συστηµάτων Βάσεων εδοµένων Εαρινό Εξάµηνο 2009 2010 Καθηγητής. Γουνόπουλος Άσκηση 1 Σκοπός της εργασίας αυτής είναι η κατανόηση της εσωτερικής λειτουργίας

Διαβάστε περισσότερα

Μεταφραστής (Compiler)

Μεταφραστής (Compiler) Windows Καθαρισµος οθονης cls Unix clear Τελεστες ανακατευθυνσης > > >> >> < < Εντολες σε αρχεια * * (wild card) del Α rm Α ιαγραφη type Α cat Α Εµφανιση copy Α Β cp Α Β Αντιγραφη ren Α Β mv Α Β Αλλαγη

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 6: Αφαιρετικότητα, Βιβλιοθήκες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Αφαιρετικότητα -Βιβλιοθήκες (packages) Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής Προγραμματισμός

Διαβάστε περισσότερα

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ. e-library

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ. e-library ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΟΛΥΜΕΣΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: «Διαδυκτιακή Εφαρμογή Ηλεκτρονική Δανειστική Βιβλιοθήκη.» Εισηγητής: Ιωάννης Παχουλάκης

Διαβάστε περισσότερα

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

Διαβάστε περισσότερα

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 2ο Aντώνης Σπυρόπουλος v2_061015 Οροι που

Διαβάστε περισσότερα

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και αντικείμενα στην Java Strings Πίνακες ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και αντικείμενα στην Java Strings Πίνακες ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά

Διαβάστε περισσότερα

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

Διαβάστε περισσότερα

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

Διαβάστε περισσότερα

Ανάπτυξη Plugins για το AgentSheets

Ανάπτυξη Plugins για το AgentSheets Ανάπτυξη Plugins για το AgentSheets Thought Amplifier AgentSheets Ανάπτυξη Plugins AgentSheets 2.5 Συγγραφείς Τεκµηρίωσης: Alexander Repenning και Ronald Sudomo Εξελληνισµός Τεκµηρίωσης: Λίνος Βίγκλας,

Διαβάστε περισσότερα

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Πολλαπλά Αρχεία Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πολλαπλά Αρχεία Όταν γράφουμε μεγάλα προγράμματα θέλουμε να έχουμε ανεξάρτητα κομμάτια κώδικα

Διαβάστε περισσότερα

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο

Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Τετάρτη, 30 Οκτωβρίου 2013 Στοιχεία Προγραμματισμού Σε Γραφικό Περιβάλλον Φύλλο εργασίας 1 ο Λύστε στο Visual Basic Express 2010 τις παρακάτω ασκήσεις: 1. Να δημιουργήσετε ένα νέο Project του είδους Console

Διαβάστε περισσότερα

Εισαγωγή στον Προγ/μό Η/Υ

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string 12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει

Διαβάστε περισσότερα

Microsoft Visual Studio 2005. Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas

Microsoft Visual Studio 2005. Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas Microsoft Visual Studio 2005 καισυνδροµέςmsdn Γιώργος Καµαρινός Developer Programs Marketing Manager Microsoft Hellas PΗrΣogress ηµερινή Rep ort Παρ ουσίαση Τι είναι το.net De? veloper Roadma Τα p νέα

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Βιβλιογραφία "C Προγραμματισμός", Deitel & Deitel, Πέμπτη Έκδοση, Εκδόσεις

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

Διαβάστε περισσότερα

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

Διαβάστε περισσότερα

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Θέμα 1 Θέμα 2 Θέμα 3 Θέμα 4 Θέμα

Διαβάστε περισσότερα

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο

Runtime Checking (1/3) Runtime Checking (2/3) Runtime Checking (3/3) ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο Runtime Checking (1/3) Η γλώσσα alpha είναι μια dynamic typing γλώσσα (ο τύπος μιας μεταβλητής αλλάζει ακολουθώντας τον τύπο της τιμής που κάθε φορά αποθηκεύεται

Διαβάστε περισσότερα

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές) Βρείτε τα λάθη Στο πρόγραμμα στην επόμενη διαφάνεια υπάρχουν διάφορα λάθη Ποια είναι? public abstract

Διαβάστε περισσότερα

ΜICROSOFT VISUAL STUDIO 2008. Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging. Εισαγωγή

ΜICROSOFT VISUAL STUDIO 2008. Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging. Εισαγωγή ΜICROSOFT VISUAL STUDIO 2008 Eργ 1: Ανάπτυξη απλής εφαρµογής: Solutions, Projects, GUI, Events, Debugging Εισαγωγή Visual Basic 2008 Eργαλείο ανάπτυξης εντυπωσιακών εφαρµογών στα Windows, στο Web, φορητά

Διαβάστε περισσότερα

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2 Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.

Διαβάστε περισσότερα

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

Διαβάστε περισσότερα

8ο Πανελλήνιο Συμποσιο Ωκεανογραφίας & Αλιείας 637

8ο Πανελλήνιο Συμποσιο Ωκεανογραφίας & Αλιείας 637 8ο Πανελλήνιο Συμποσιο Ωκεανογραφίας & Αλιείας 637 Υλοποιηση νεων τεχνολογιων (Web GIS, Application Servers) για τη δυναμικη προσβαση μεσω διαδικτυου στη βαση δεδομενων του Ελληνικου Εθνικου Κεντρου Ωκεανογραφικων

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στην FORTRAN Δρ. Ιωάννης Λυχναρόπουλος 2014-2015 Fortran FORmula TRANslation: (Μία από τις πρώτες γλώσσες τρίτης γενιάς) Εκδόσεις FORTRAN (1957) FORTRAN II (1958) FORTRAN III

Διαβάστε περισσότερα

Εξελιγμένη διαχείριση της πλατφόρμας από τους Χρήστες:

Εξελιγμένη διαχείριση της πλατφόρμας από τους Χρήστες: Η Microsoft εξέδωσε τη νέα έκδοση του Microsoft Dynamics CRM, λίγο πριν τις επόμενες εκδόσεις όπως απεικονίζονται στο παρακάτω Microsoft Dynamics roadmap 2015. Η νέα έκδοση ή διαφορετικά το CRM 2015 έρχεται

Διαβάστε περισσότερα

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 2 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών

Διαβάστε περισσότερα

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών

CORBA. Αρχιτεκτονική και 3-tier 3. εφαρµογές. Β. Φλώρος. Μαρτάκος. Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών CORBA Αρχιτεκτονική και 3-tier 3 εφαρµογές Β. Φλώρος. Μαρτάκος Συνεργάτης ερευνητής Επικ. Καθηγητής Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστιακό Πανεπιστήµιο Αθηνών Τι Είναι; CORBA =

Διαβάστε περισσότερα

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από

Διαβάστε περισσότερα

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

Διαβάστε περισσότερα

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

Διαβάστε περισσότερα

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω

Διαβάστε περισσότερα

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

Διαβάστε περισσότερα

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr

Διαβάστε περισσότερα

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming) Πληροφορίες Μαθήματος Διαλέξεις Δευτέρα, Πέμπτη 10:30-12:00 Κτήριο ΘΕΕ01, Αίθουσα 202 Εργαστήριο Τετάρτη 10:30-12:00, Κτήριο ΘΕΕ01,

Διαβάστε περισσότερα

Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time,

Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time, Συνέχεια του αντικειμενoστραφούς προγραμματισμού Επέκταση των κλάσεων σε Visual Components (Window Controls) Κατασκευή του Interface στο Design Time, και καθορισμός πολλών παραμέτρων των αντικειμένων (properties).

Διαβάστε περισσότερα

SIMATIC MANAGER SIMATIC MANAGER

SIMATIC MANAGER SIMATIC MANAGER 1 Προγραμματισμός του PLC. 1. Γενικά Μια προσεκτική ματιά σε μια εγκατάσταση που θέλουμε να αυτοματοποιήσουμε, μας δείχνει ότι αυτή αποτελείται από επιμέρους τμήματα τα οποία είναι συνδεδεμένα μεταξύ τους

Διαβάστε περισσότερα

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Εισαγωγή. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Μεταγλωττιστές Εισαγωγή Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Βιβλιογραφία Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers:

Διαβάστε περισσότερα