Πρότυπο:Κώδικας

Από Βικιβιβλία
Πήδηση στην πλοήγηση Πήδηση στην αναζήτηση

Πρότυπα Κώδικα[επεξεργασία]

Ο σκοπός αυτής της σειράς προτύπων είναι η διευκόλυνση της ανάγνωσης παραδειγμάτων κώδικα σε βιβλία για τον προγραμματισμό στα Βικιβιβλία. Κἀθε πρότυπο έχει μια ετικέτα <div><nowiki> με έγχρωμο περίγραμμα και έγχρωμο φόντο, και δεύτερη <nowiki><div><nowiki> με έγχρωμο περίγραμμα και άσπρο φόντο. Μέσα στην πρώτη <nowiki><div><nowiki> υπάρχει χώρος για σχόλιο ή συμβουλή, και η δεύτερη περιέχει χώρο για τον κώδικα. Τα πρότυπα παίρνουν (τουλάχιστον) δύο παραμέτρους: το σχόλιο, και τον κώδικα τον ίδιο. Λόγω του τρόπου λειτουργίας του parser του MediaWiki, πρέπει ο χρήστης να βάλει τις ετικέτες <nowiki><pre> και </pre> στην αρχή και στο τέλος του κώδικα. .

Σημειώσεις[επεξεργασία]

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

Κατάλογος προτύπων κώδικα[επεξεργασία]

  • Πρότυπο:Κώδικας:Βασικό - Βασικό: δείχνει κώδικα/σύνταξη χωρίς άλλες λειτουργίες (μπλε)
  • Πρότυπο:Κώδικας:Έγκυρος - Έγκυρο: δείχνει έγκυρη κώδικα/σύνταη (πράσινο) με πράσινο εικονίδιο checkmark
  • Πρότυπο:Κώδικας:Σφάλμα - Σφάλμα: δείχνει λανθασμένο κώδικα/σύνταξη (κόκκινο) με κόκκινο εικονίδιο x-mark
  • Πρότυπο:Κώδικας:Εναλλ - Εναλλ (Εναλλακτικό): δείχνει δύο δείγματα κώδικα με «ή» ή «και» ως σύνδεσμο (μπλε), θέλει 2 επιπλέον παραμέτρους, το σύδεσμο και το δεύτερο δείγμα κώδικα
  • Πρότυπο:Κώδικας:ΕναλλΤριπλο - Παρόμοια αλλά δείχνει τρείς επιλογές
  • Πρότυπο:Κώδικας:Έξοδος - Έξοδος: δείχνει κώδικα και έξοδο που παράγεται από τον κώδικα (μπλε) - θέλει 1 επιπλέον παράμετρο, την έξοδο
  • Πρότυπο:Κώδικας:Διερμηνευμένο - Διερμηνευμένο: δείχνει δείγμα μιας διερμηνευμένης γλώσσας από συνέδρια σε τερματικό (μπλε), θέλει από 2 έως 6 παραμέτρους, δείτε τα παραδείγματα παρακάτω
  • Πρότυπο:Κώδικας:PHPHTML - PHP και HTML: δείχνει κώδικα PHP/σύνταξη, την αντίστοιχη έξοδο από την PHP, και βασική εμφάνιση στην HTML (μπλε), θέλει 2 επιπλέον παραμέτρους, την έξοδο σε κανονική μορφή και την έξοδο σε μορφή HTML
  • Πρότυπο:Κώδικας:Συμβουλή - Συμβουλή: δείχνει χρήσιμη συμβουλή για σύνταξη κώδικα με κώδικα/σύνταξη (κίτρινο), με κίτρινο εικονίδιο αστεράκι
  • Πρότυπο:Κώδικας:Διάφορα - Διάφορα: δείχνει άλλο παράδειγμα με κώδικα εκτός από τα παραπάνω (γκρίζο)
  • Πρότυπο:Κώδικας:Διάφορα2 - Διάφορα: δείχνει άλλο παράδειγμα με κώδικα εκτός από τα παραπάνω (άσπρο)
  • Πρότυπο:Κώδικας:Transclude - Transclude: για την transclusion ενός προτύπου κώδικα, με εμφάνιση όμορφου τίτλου (δείτε παρακάτω)

Παραδείγματα χρήσης τωνπροτύπων[επεξεργασία]

Κώδικας:Βασικό[επεξεργασία]

Αυτό το κουτάκι μπορεί να χρησιμοποιηθεί για να εμφανίσει κώδικα ή απλά για να επισημάνει κάποιο κείμενο με μπλε περίγραμμα.
Πίτα
  1. Κεράσια
  2. Μήλα
  3. Ροδάκινα
$array_pita = {Κεράσια, Μήλα, Ροδάκινα};
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Βασικό
|Αυτό το κουτάκι μπορεί να χρησιμοποιηθεί για να εμφανίσει κώδικα ή απλά για να επισημάνει κάποιο κείμενο με μπλε περίγραμμα.
|Πίτα
#Κεράσια
#Μήλα
#Ροδάκινα
<source lang="perl">$array_pita = {Κεράσια, Μήλα, Ροδάκινα};</source>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Έγκυρο[επεξεργασία]

Crystal Clear action apply.png Ο ακόλουθος κώδικας είναι έγκυρος:
$έγκυρο δείγμα κώδικα;
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Έγκυρο
|Ο ακόλουθος κώδικας είναι έγκυρος:
|<pre>$έγκυρο δείγμα κώδικα;</pre>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Σφάλμα[επεξεργασία]

Crystal Clear action button cancel.png Ο ακόλουθος κώδικας έχει σφάλμα:
$αυτή η γραμμή δεν τελειώνει με ερωτηματικό
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Σφάλμα
|Ο ακόλουθος κώδικας έχει σφάλμα:
|<pre>αυτή η γραμμή δεν τελειώνει με ερωτηματικό$</pre>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Εναλλ[επεξεργασία]

Μπορείτε να χρησιμοποιείτε είτε το "echo" είτε το "print" για να γράψετε κείμενο στην οθόνη/σε αρχείο.
echo "Καλημέρα, Κόσμε.";

και / η / οχι / κλπ.

print "Καλημέρα, Κόσμε.";
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Εναλλ
|Μπορείτε να χρησιμοποιείτε είτε το "echo" είτε το "print" για να γράψετε κείμενο στην οθόνη/σε αρχείο.
|<pre>echo "Καλημέρα, Κόσμε.";</pre>
|και / η / οχι / κλπ.
|<pre>print "Καλημέρα, Κόσμε.";</pre>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Έξοδος[επεξεργασία]

Σε αυτό το παράδειγμα, θα δείτε τον κώδικα και την έξοδο που παράγεται από αυτόν.

Crystal Clear app terminal.png Κώδικας:

print "Καλημέρα, Κόσμε.";

Crystal Clear app kscreensaver.png Έξοδος:

Καλημέρα, Κόσμε.
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Έξοδος
|Σε αυτό το παράδειγμα, θα δείτε τον κώδικα και την έξοδο που παράγεται από αυτόν.
|<pre>print "Καλημέρα, Κόσμε.";</pre>
|<pre>Καλημέρα, Κόσμε.</pre>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Διερμηνευμένο[επεξεργασία]

Αυτό το πρότυπο είναι κάπως πολύπλοκο. Ο κώδικας που παρουσιάζεται με αυτό το πρότυπο προσδιορίζεται για διερμηνέα και όχι μεταγλωττιστή. Αναμένεται ότι ο χρήστης θα κάνει αντιγραφή-επικόλληση του κειμένου κατευθείαν σε κονσόλα. Θέλουμε να φαίνεται η προτροπή αλλά όχι να αντιγράφεται. Για να πετύχει αυτό, ο χρήστης πρέπει να προσθέσει μερικές εντολές της CSS, όπως περιγράφεται παρακάτω.

Αυτό το πρότυπο μπορεί να χρησιμοποιείται για διάφορες μορφές, όπως πχ. βασική είσοδο ή είσοδο με έξοδο, με τη χρήση διάφορων παραμέτρων.

Παράμετροι με όνομα[επεξεργασία]

Ότανα το πρότυπο καλείται με 4 παραμέτρους χωρίς όνομα, η έξοδος μοιάζει κάπως με αυτήν από το Πρότυπο:Κώδικας:Έξοδος

Η πρώτη παράμετρος είναι η αρχική εξήγηση. Ολόκληρο το κουτάκι συμπεριλαμβάνεται σε μια div με class "code".

Crystal Clear app terminal.png Input:

Η δεύτερη παράμετρος είναι το κείμενο που γράφεται στο διερμηνευτή. Συμπεριλαμβάνεται σε μια div με class "input". Κανονικά τα περιεχόμενα θα έπρεπε να περικλείεται σε μία ή περισσότερες ετικέτες <pre> </pre> ή <source> </source>, έτσι
cd /bin #a comment
ls

Crystal Clear app kscreensaver.png Result:

Η τρίτη παράμετρος είναι η έξοδος. Θα έπρεπε να περικλείεται σε ετικέτες <pre> </pre> γιατί μάλλον δεν θέλετε να χρησιμοποιείτε την εντολή <source>, (η συντακτική επισήμανση της εξόδου θα ήταν ανόητη), δηλαδή
>cd /bin
>ls
bash            df              ln              rm
cat             echo            ls              rmdir
chmod           ed              mkdir           sh
cp              expr            mv              sleep
csh             hostname        ps              stty
date            kill            pwd             sync
dd              ksh             rcp             tcsh

Η τέταρτη παράμετρος είναι η συνέχεια της εξήγησης.

Η κυρίως χρήση αυτού του προτύπου είναι η παραγωγή κειμένου για είσοδο σε διερμηνευτή, με χαρακτήρα-προτροπή που παράγεται αυτόματα από το στοιχείο :before της CSS. Όταν ο χρήστης κάνει αντιγραφή-επικόλληση, ο χαρακτήρας δεν αντιγράφεται στους περισσότερους φυλλομετρητές.


Όταν το πρότυπο καλείται με τρεις παραμέτρους χωρίς όνομα, το κουτάκι με το αποτέλεσμα εξαφανίζεται, όπως και η (άχρηστη πια) κεφαλίδα "Είσοδος".

This is a script in Python. If you wish to format Python scripts differently from other scripts, add the following to your user CSS file
.code * pre.source-python:before, .code .source-python pre:before {content: "\003E \003E \003E \0020";}
hello = "Hello, World!"
print hello #does what it says
See?


Όμως σε μερικές περιπτώσεις μπορεί να θέλετε κουτάκια για είσοδο και αποτέλεσμα χωρίς τελική εξήγηση. If so, just use a blank 4th argument

You might want to provide a Python-specific prompt in the output too. If so, just call <pre> with the appropriate class

Crystal Clear app terminal.png Input:

hello = "Hello, World!"
print hello #does what it says

Crystal Clear app kscreensaver.png Result:

hello = "Hello, World!"
print hello #does what it says
Hello, World!


Τώρα γίνεται πιο απλό με δύο παραμέτρους χωρίς όνομα:

Δεν υπάρχει κείμενο μετά από τον κώδικα.
cd /bin
ls


Με μία παράμετρο χωρίς όνομα

Δεν υπάρχει κείμενο πριν από τον κώδικα. Η πρώτη παράμετρος είναι οι εντολές
cd /bin
ls


Παράμετροι με όνομα[επεξεργασία]

Υπάρχουν δύο παράμετροι με όνομα: "title", "lang".

The effect of the "title" argument should be obvious:

A simple example with 2 unnamed arguments and a "title" argument set to "Title example".
Παράδειγμα τίτλου
cd /bin
ls


The named argument "lang" is a shortcut, so that you don't need to put the class="source-python" or equivalent in every <pre> tag.

An example with all 6 possible arguments. The "lang" argument adds another class to the input div, called source-"lang"
Κάποιος τίτλος

Crystal Clear app terminal.png Input:

hello = "Καλημέρα, Κόσμε!" #syntax highlighted
print hello #not syntax highlighted

Crystal Clear app kscreensaver.png Result:

hello = "Καλημέρα, Κοσμε!"
print hello #does what it says
much easier, if you don't want to use <source>.


Wiki Code[επεξεργασία]

The code for all the above codeboxes is

Called with 4 unnamed arguments, the output generated looks something like Template:Code:Output
{{Code:Interpreted
|The 1st argument is for the initial explanation. The entire box is contained in a div of class "code".
|The 2nd argument is the text typed into the interpreter. It is contained in a div of class "input". Normally the contents should be enclosed in one or more <pre> </pre> or <source> </source> tags, like so
<source lang="bash">cd /bin #a comment</source><pre>ls</pre>
|The 3rd argument is the output. This should be in <pre> </pre> tags: you probably don't want to use <source>, because syntax-highlighting the output would be silly e.g.
<pre>>cd /bin</pre>
<pre>>ls
bash            df              ln              rm
cat             echo            ls              rmdir
chmod           ed              mkdir           sh
cp              expr            mv              sleep
csh             hostname        ps              stty
date            kill            pwd             sync
dd              ksh             rcp             tcsh
</pre>
|and the 4th argument is the continuation of the explanation. 
The main use of this template is to produce input text with an auto-generated prompt character, using the :before pseudo-element available in [[CSS]]. This has one major advantage, and another possible benefit
*When copying and pasting the text, the prompt character is not copied in most browsers. This allows the user to copy the text and paste it in to the interpreter verbatim, without removing the prompt
*The prompt character is user-defined, so can be set to the user's personal prompt character, if desired. This is of dubious benefit.
To see this in action, you need to add something like the following to your [[Help:User style |user CSS]] file (usually located at [[Special:Mypage/monobook.css]])<pre>.code .input pre{padding:0; border: none;}
.code .input pre:before {content: "\003E \0020";}</pre>
This will put a " >" prompt in front of each <pre> tag in the input box.
}}

Called with three unnamed arguments, the Results box vanishes, as does the (now unneeded) "Input" heading
{{Κώδικας:Διερμηνευμένο
|This is a script in Python. If you wish to format Python scripts differently from other scripts, add the following to your user CSS file<pre>.code .input pre.source-python:before, .code .source-python pre:before {content: "\003E \003E \003E \0020";}</pre>
|<source lang="python">hello = "Hello, World!"</source>
<source lang="python">print hello #does what it says</source>
|See?
}}

Όμως σε μερικές περιπτώσεις μπορεί να θέλετε κουτάκια για είσοδο και αποτέλεσμα χωρίς τελική εξήγηση.  If so, just use a blank 4th argument
{{Κώδικας:Διερμηνευμένο
|You might want to provide a Python-specific prompt in the output too. If so, just call <pre> with the appropriate class
|<source lang="python">hello = "Hello, World!"</source>
<source lang="python">print hello #does what it says</source>
|<pre class="source-python">hello = "Hello, World!"</pre>
<pre class="source-python">print hello #does what it says
Hello, World!</pre>
|
}}

Now it gets simpler. With two unnamed arguments: 
{{Κώδικας:Διερμηνευμένο
|There is no "after" text.
|<pre>cd /bin</pre><pre>ls</pre>
}}

With one unnamed argument
{{Code:Interpreted
|there is no before text. The first argument is the code<pre>cd /bin</pre><pre>ls</pre>
}}

There are 2 named arguments: "title" and "lang". The effect of the "title" argument should be obvious:
{{Code:Interpreted
|title=Title example
|A simple example with 2 unnamed arguments and a "title" argument set to "Title example".
|<pre>cd /bin</pre><pre>ls</pre>
}}

The named argument "lang" is a shortcut, so that you don't need to put the class="source-python" or equivalent in every <pre> tag. 
{{Code:Interpreted
|A simple example with 3 unnamed arguments and a "lang" argument. The "lang" argument adds another class to the input div, called source-"lang"
|<pre>hello = "Hello, World!"</pre>
<pre>print hello #does what it says</pre>
|much easier, if you don't want to use <source>.
|code=python
}}

Κώδικας:PHPHTML[επεξεργασία]

Αυτό το παράδειγμα δείχνει τη διαφορά ανάμεσα σε κώδικα PHP, έξοδο PHP, και έξοδο σε μορφή HTML.

Crystal128-terminal.svg PHP κώδικας:

<?php
  $eksodos = "Καλημέρα, Κόσμε.";
  print '<html><body>\n';
  print '$eksodos\n';
  print '</body></html>';
?>

Crystal Clear app kscreensaver.svg PHP έξοδος:

<html><body>
Καλημέρα, Κόσμε.
</body></html>

Crystal128-html.svg HTML εμφάνιση:

Καλημερα, Κόσμε.
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Λώδικας:PHPHTML
|Αυτό το παράδειγμα δείχνει τη διαφορά ανάμεσα σε κώδικα PHP, έξοδο PHP, και έξοδο σε μορφή HTML.
|<pre><?php
  $eksodos = "Καλημέρα, Κόσμε.";
  print '<html><body>\n';
  print '$eksodos\n';
  print '</body></html>';
?></pre>
|<pre><html><body>
Καλημέρα, Κόσμε.
</body></html></pre>
|<pre>Καλημέρα, Κόσμε.</pre>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Συμβουλή[επεξεργασία]

Crystal Clear action bookmark.png Άμα δεν βάζεις σχόλια στον κώδικά σου, θα σε κυνηγάνε οι εννέα δαίμονες της κόλασης του spaghetticode.
//Αυτή η μεταβλητή ελέγχει την επανάληψη.
$epanalipsi_metav1;
Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικας.


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Συμβουλή
|Άμα δεν βάζεις σχόλια στον κώδικά σου, θα σε κυνηγάνε οι εννέα δαίμονες της κόλασης του spaghetticode. 
|<pre>//Αυτή η μεταβλητή ελέγχει την επανάληψη.
$epanalipsi_metav1;</pre>
|Μπορεί η εξήγηση να συνεχίζεται μετά από το δείγμα κώδικα.
}}

Κώδικας:Διάφορα[επεξεργασία]

Πρέπει να προσθέσετε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων.
$sexy = nai;
$eksupnos = nai;


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Διάφορα
|Πρέπει να προσθέσετε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων.
|<pre>$sexy = nai;
$eksupnos = nai;</pre>
}}

Κώδικας:Διάφορα2[επεξεργασία]

Πρέπει να προσθέσετε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων.
$sexy = nai;
$eksupnos = nai;


Ο κώδικας για το παραπάνω κουτάκι κώδικα έχει ως εξής:

{{Κώδικας:Διάφορα2
|Πρέπει να προσθέσετε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεων.
|<pre>$sexy = nai;
$eksupnos = nai;</pre>
}}

Κώδικας:Transclude[επεξεργασία]

Με αυτό το πρότυπο μπορείτε να εμφανίσετε ένα συγκεκριμένο πρότυπο η μία σελίδα μέσω transclusion, έτσι:

Το άρθρο αυτό χρειάζεται επέκταση. Βοηθήστε τα Βικιβιβλία επεκτείνοντάς το!