node33.html 9.97 KB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
original version by:  Nikos Drakos, CBLU, University of Leeds
* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
  Jens Lippmann, Marek Rouchal, Martin Wilck and others 
  Translation to greek : George Nassopoulos-->
<HTML>
<HEAD>
<TITLE>Μερικά παραδείγματα</TITLE>
<META NAME="description" CONTENT="Quelques exemples">
<META NAME="keywords" CONTENT="tutoriel">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">

<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="tutoriel.css">

<LINK REL="next" HREF="node34.html">
<LINK REL="previous" HREF="node32.html">
<LINK REL="up" HREF="node31.html">
<LINK REL="next" HREF="node34.html">
</HEAD>

<BODY >
<!--Navigation Panel-->
<A NAME="tex2html533"
  HREF="node34.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html527"
  HREF="node31.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html521"
  HREF="node32.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html529"
  HREF="node46.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html531"
  HREF="node47.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> επόμενο:</B> <A NAME="tex2html534"
  HREF="node34.html">Στυλ προγραμματισμού </A>
<B> εμφάνιση:</B> <A NAME="tex2html528"
  HREF="node31.html">Προγραμματισμός</A>
<B> προηγούμενο:</B> <A NAME="tex2html522"
  HREF="node32.html">Η γλώσσα</A>
 &nbsp; <B>  <A NAME="tex2html530"
  HREF="node46.html">Πίνακας περιεχομένων</A></B> 
 &nbsp; <B>  <A NAME="tex2html532"
  HREF="node47.html">Ευρετήριο</A></B> 
<BR>
<BR>
<!--End of Navigation Panel-->

<H2><A NAME="SECTION00062000000000000000">
Μερικά παραδείγματα</A>
</H2>
Για να γράψουμε ένα πρόγραμμα, ανοίγουμε τον κειμενογράφο προγράμματος με την 
επιλογή <code>Prg-&gt;Nέο πρόγραμμα</code> του μενού <code>Prg</code>. 
Οι εντολές που βρίσκονατι στα υπομενού του μενού <code>Prg</code> 
 μας επιτρέπουν να εισάγουμε με ευκολία τις δομές  του προγραμματισμού.
Μπορούμε μετά να αποθηκεύσουμε το κείμενο του προγράμματος 
 για να το χρησιμοποιήσουμε στην συνέχεια σε μία άλλη συνεδρία.

<P>
Ακολουθεί ένα πρόγραμμα (που το ονομάζουμε <code>iquorem2</code> 
για να μην το μπερδέψουμε με την αντίστοιχη συνάρτηση  
<code>iquorem</code> στο <TT>Xcas</TT>) 
που δίνει το πηλίκο και το υπόλοιπο της ευκλείδειας 
διαίρεσης δύο ακεραίων χρησιμοποιώντας τις συναρτήσεις  
<code>iquo</code>, που επιστρέφει το πηλίκο, και <code>irem</code>, 
που επιστρέφει το υπόλοιπο.
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1">
<TR><TD ALIGN="CENTER" COLSPAN=2><B>iquorem2</B></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>iquorem2(a,b):={</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code> local q,r;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  if (b!=0) {</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    q:=iquo(a,b);</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    r:=irem(a,b);}</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  else {</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    q:=0;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    r:=a;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  }</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  return [q,r];</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>}</code></TD>
</TR>
</TABLE>
</DIV>
<BR>

Αφού πληκτρολογήσουμε την συνάρτηση <TT>iquorem2</TT> στον κειμενογράφο 
προγράμματος, 
την μεταγλωττίζουμε πατώντας το 
κουμπί <code>OK(F9)</code>. Αφου βεβαιωθούμε πως δεν υπάρχουν συντακτικά 
λάθη
  στον μεταγλωττισμό, αποθηκεύουμε την συνάρτηση με το όνομα 
<code>iquorem2.cxx</code>. Μπορούμε τώρα να χρησιμοποιήσουμε την συνάρτηση 
αυτή
στην συνεδρία μας 
πληκτρολογώντας σε μία γραμμή εντολών 
π.χ. <code>iquorem2(25,15)</code>.
Θα μπορούσαμε επίσης να χρησιμοποιήσουμε  την συνάρτηση αυτή και 
σε μία άλλη συνεδρία 
στο <TT>Xcas</TT> είτε αφού πρώτα την ενεργοποιήσουμε με την 
εντολή <code>read("iquorem2.cxx")</code> είτε ανοίγοντας τον 
κειμενογράφο προγράμματος, φορτώνοντας την συνάρτηση με την επιλογή 
<code>Προγ->Φόρτωση->iquorem2.cxx->ΟΚ</code>
 και μεταγλωττίζοντάς την πατώντας  το 
κουμπί <code>OK(F9)</code>.

<P>
Ακολουθούν δύο προγράμματα υπολογισμού του μέγιστου κοινού διαιρέτη 
δύο ακεραίων:
το πρώτο είναι επαναληπτικό, ενώ το δεύτερο είναι αναδρομικό.
<A NAME="831"></A>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1">
<TR><TD ALIGN="CENTER" COLSPAN=2><B>igcd_επαναληπτικό</B></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>igcd_I(a,b):={</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code> local r;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  while (b!=0) {</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    r:=irem(a,b);</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    a:=b;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>    b:=r;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  }</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>  return a;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>}</code></TD>
</TR>
</TABLE>
</DIV>
<BR>
<A NAME="840"></A>
<DIV ALIGN="CENTER">
<TABLE CELLPADDING=3 BORDER="1">
<TR><TD ALIGN="CENTER" COLSPAN=2><B>igcd_αναδρομικό</B></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>igcd_R(a,b):={</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code> if (b=0) return a;</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code> return igcd_R(b,irem(a,b));</code></TD>
</TR>
<TR><TD ALIGN="LEFT"><code>}</code></TD>
</TR>
</TABLE>
</DIV>

<P>
Πολλές φορές συμβαίνει ένα πρόγραμμα να μην λειτουργεί με την πρώτη 
προσπάθεια. Σε αυτές τις περιπτώσεις, με την <A NAME="1770"></A> εντολή 
<code>debug</code>,  είναι  δυνατόν να  
εκτελέσουμε μία-μία τις εντολές 
του προγράμματος 
 για να 
βρούμε το λάθος (αποσφαλμάτωση).  
<BR>
Παραδείγματος χάρη, στο πρόγραμμα <code>iquorem2</code>,
για να ξεκινήσουμε την αποσφαλμάτωση πληκτρολογούμε
<code>debug(iquorem2(25,15))</code>.
Πατώντας <code>Enter</code> ανοίγει το παράθυρο αποσφαλμάτωσης όπου 
εμφανίζονται αυτόματα οι μεταβλητές <code>a,b</code> μαζί 
με τις αρχικές τους τιμές.  Κατόπιν, πατάμε  το κουπί 
<code>sst F5</code> και οι εντολές εκτελούνται μία-μία δίνοντάς μας  
 την δυνατότητα να παρακολουθούμε 
πως  μεταβάλλονται  οι τιμές των <code>a,b</code>. 
Αν θέλουμε να παρακολουθήσουμε τις μεταβολές και των τοπικών
μεταβλητων <code>q,r</code> χρησιμοποιούμε το κουμπί <code>watch</code> 
για να τις δηλώσουμε όλες μαζί: <code>a,b,q,r</code>.
<HR>
<!--Navigation Panel-->
<A NAME="tex2html533"
  HREF="node34.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
<A NAME="tex2html527"
  HREF="node31.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
<A NAME="tex2html521"
  HREF="node32.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
<A NAME="tex2html529"
  HREF="node46.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
<A NAME="tex2html531"
  HREF="node47.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
<BR>
<B> επόμενο:</B> <A NAME="tex2html534"
  HREF="node34.html">Στυλ προγραμματισμού </A>
<B> εμφάνιση:</B> <A NAME="tex2html528"
  HREF="node31.html">Προγραμματισμός</A>
<B> προηγούμενο:</B> <A NAME="tex2html522"
  HREF="node32.html">Η γλώσσα</A>
 &nbsp; <B>  <A NAME="tex2html530"
  HREF="node46.html">Πίνακας περιεχομένων</A></B> 
 &nbsp; <B>  <A NAME="tex2html532"
  HREF="node47.html">Ευρετήριο</A></B> 
<BR>
<BR>
<!--End of Navigation Panel-->
<ADDRESS>
Βιβλιογραφία του <A HREF="http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html">giac</A> από τους Renee De Graeve, Bernard Parisse και Bernard Ycart
</ADDRESS>
Μετάφραση στα Ελληνικά : Γιώργος Νασόπουλος. Διασκευή : Αλκιβιάδης Γ. Ακρίτας
</BODY>
</HTML>