Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 3a7b4dfc766af1222d90c7f03a0844e6 > files > 6293

lilypond-doc-2.11.57-1mdv2009.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- header_tag -->
<html lang="es">
<head>
<title>Tutorial de Scheme - GNU LilyPond Learning Manual</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="description" content="GNU LilyPond Learning Manual">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.es.html#Top">
<link rel="prev" href="Templates.es.html#Templates" title="Plantillas">
<link rel="next" href="GNU-Free-Documentation-License.es.html#GNU-Free-Documentation-License" title="Licencia de documentación libre de GNU">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1999--2007 por los autores

_The translation of the following copyright notice is provided
for courtesy to non-English speakers, but only the notice in English
legally counts._

_La traducción de la siguiente nota de copyright se ofrece como
cortesía para las personas de habla no inglesa, pero únicamente la
nota en inglés tiene validez legal._

     Se otorga permiso para copiar, distribuir y/o modificar este
     documento bajo los términos de la Licencia de Documentación
     Libre de GNU, versión 1.1 o cualquier versión posterior
     publicada por la Free Software Foundation; sin ninguna de las
     secciones invariantes.  Se incluye una copia de esta licencia
     dentro de la sección titulada ``Licencia de Documentación Libre
     de GNU''.
     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections.  A copy of the license is
     included in the section entitled ``GNU Free Documentation
     License''.
   -->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
hr { border:0; height:1; color: #000000; background-color: #000000; }
/* hr {
  border:  none;
  height: 1px;
  color: #666666;
  background-color: #666666;
}
body {
  border-left: 1px solid #666666;
  border-right: 1px solid #666666;
  color: #332d28;
  margin-right: auto;
  margin-left: auto;
  width: 60em;
  list-style-type: square;
  font-family: Arial,Helvetica,sans-serif;
  padding-right: 1em;
  padding-left: 1em;
}
a {
  border-bottom: 1px dashed #344242;
  text-decoration: none;
  color: #344242;
}
a:link {
  text-decoration: none;
}
a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
a:active {
  border-bottom: 1px solid #00cccc;
  color: #00cccc;
}
a:hover {
  border-bottom: 1px solid #1d7b85;
  color: #1d7b85;
}
blockquote {
  border: 1px solid #cccccc;
  padding: 3px;
  width: 40em;
}
.node {
  border-left: 1px solid #666666;
  margin: -0.5em 0px 1em;
  padding: 2px 1px 0px;
  font-style: italic;
}
.node a {
  border:  none;
  text-decoration: underline;
  font-style: normal;
  font-weight: bold;
}
.verbatim {
  font-family: "Courier New",Courier,monospace;
}
.unnumberedsubsubsec {
  font-size: large;
  color: #1d7b85;
}
.subsubheading {
  font-size: large;
  color: #3b220d;
}
.contents {
  border: 1px dashed #339999;
  margin: 3px 2em;
  list-style-type: square;
  padding-right: 1em;
  width: 40em;
  background-color: #fcfff9;
}
.contents a {
  border-bottom: 1px dashed #423d34;
  text-decoration: none;
  color: #423d34;
}
.contents a:visited {
  border-bottom: 1px dashed #666666;
  color: #666666;
}
.contents a:active {
  border-bottom: 1px solid #f0d86d;
  color: #f0d86d;
}
.contents a:hover {
  border-bottom: 1px solid #3b220d;
  color: #3b220d;
}
.menu {
  border-left: 1px dashed #339999;
  margin: 3px 2em 1em;
  list-style-type: square;
  padding-left: 1.4em;
  width: 40em;
}
.unnumbered {
}
h2 {
  font-size: x-large;
  color: #1d7b85;
}
*/
--></style>
</head>
<BODY BGCOLOR=WHITE TEXT=BLACK>

<div class="node">
<p>
<a name="Scheme-tutorial"></a>
Siguiente:&nbsp;<a rel="next" accesskey="n" href="GNU-Free-Documentation-License.es.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
Anterior:&nbsp;<a rel="previous" accesskey="p" href="Templates.es.html#Templates">Plantillas</a>,
Arriba:&nbsp;<a rel="up" accesskey="u" href="index.es.html#Top">Inicio</a>
<hr>
</div>

<h2 class="appendix">Apéndice B Tutorial de Scheme</h2>

<p><a name="index-g_t_0023-427"></a><a name="index-g_t_0023-428"></a>
<a name="index-Scheme-429"></a><a name="index-GUILE-430"></a><a name="index-Scheme_002c-c_00c3_00b3digo-en-l_00c3_00adnea-431"></a><a name="index-acceder-a-Scheme-432"></a><a name="index-evaluar-Scheme-433"></a><a name="index-LISP-434"></a>
LilyPond utiliza el lenguaje de programación Scheme, tanto como parte
de la sintaxis del código de entrada, como para servir de mecanismo
interno que une los módulos del programa entre sí.  Esta sección es
una panorámica muy breve sobre cómo introducir datos en Scheme.  Si
quiere saber más sobre Scheme, consulte
<a href="http://www.schemers.org">http://www.schemers.org</a>.

   <p>Lo más básico de un lenguaje son los datos: números, cadenas de
caracteres, listas, etc.  He aquí una lista de los tipos de datos que
son de relevancia respecto de la entrada de LilyPond.

     <dl>
<dt>Booleanos<dd>Los valores Booleanos son Verdadero y Falso.  Verdadero en Scheme es <code>#t</code>
y Falso es <code>#f</code>. 
<a name="index-g_t_0023_0023t-435"></a><a name="index-g_t_0023_0023t-436"></a>
<a name="index-g_t_0023_0023f-437"></a><a name="index-g_t_0023_0023f-438"></a>

     <br><dt>Números<dd>Los números se escriben de la forma normal, <code>1</code> es el número
(entero) uno, mientras que <code>-1.5</code> es un número en coma flotante
(un número no entero).

     <br><dt>Cadenas<dd>Las cadenas se encierran entre comillas:

     <pre class="example">     "esto es una cadena"
</pre>
     <p>Las cadenas pueden abarcar varias líneas:

     <pre class="example">     "esto
     es
     una cadena"
</pre>
     <p>También se pueden añadir comillas y saltos de línea con las llamadas
secuencias de escape.  La cadena <code>a dijo "b"</code> se escribe como

     <pre class="example">     "a dijo \"b\""
</pre>
     <p>Los saltos de línea t las barras invertidas se escapan mediante
<code>\n</code> y <code>\\</code> respectivamente. 
</dl>

   <p>En un archivo de música, los fragmentos de código de Scheme se
escriben con el signo de almohadilla <code>#</code>.  Así, los ejemplos
anteriores traducidos a LilyPond son:

<pre class="example">##t ##f
#1 #-1.5
#"esto es una cadena"
#"esto
es
una cadena"
</pre>
   <p>Durante el resto de esta sección, supondremos que los datos se
introducen en un archivo de música, por lo que añadiremos almohadillas
<code>#</code> en todas partes.

   <p>Scheme se puede usar para hacer cálculos.  Utiliza sintaxis
<em>prefija</em>.  Sumar 1 y&nbsp;2 se escribe como <code>(+ 1 2)</code> y no
como el tradicional 1+2.

<pre class="lisp">#(+ 1 2)
   #3
</pre>
   <p>La flecha  muestra que el resultado de evaluar <code>(+ 1 2)</code>
es&nbsp;<code>3</code>.  Los cálculos se pueden anidar; el resultado de una
función se puede usar para otro cálculo.

<pre class="lisp">#(+ 1 (* 3 4))
   #(+ 1 12)
   #13
</pre>
   <p>Estos cálculos son ejemplos de evaluaciones; una expresión como
<code>(* 3 4)</code> se sustituye por su valor <code>12</code>.  Algo similar
ocurre con las variables.  Después de haber definido una variable

<pre class="example">doce = #12
</pre>
   <p class="noindent">las variables se pueden usar también dentro de las expresiones, aquí

<pre class="example">veintiCuatro = #(* 2 doce)
</pre>
   <p class="noindent">el número 24 se almacena dentro de la variable <code>veintiCuatro</code>. 
La misma asignación se puede hacer también completamente en Scheme,

<pre class="example">#(define veintiCuatro (* 2 doce))
</pre>
   <p>El <em>nombre</em> de una variable también es una expresión, similar a
un número o una cadena.  Se introduce como

<pre class="example">#'veintiCuatro
</pre>
   <p><a name="index-g_t_0023_0027symbol-439"></a><a name="index-g_t_0023_0027symbol-440"></a>
<a name="index-comillas-en-Scheme-441"></a>
El apóstrofe <code>'</code> evita que el intérprete de Scheme sustituya
<code>veintiCuatro</code> por <code>24</code>.  En vez de esto, obtenemos el
nombre <code>veintiCuatro</code>.

   <p>Esta sintaxis se usará con mucha frecuencia, pues muchos de los trucos
de presentación consisten en asignar valores (de Scheme) a variables
internas, por ejemplo

<pre class="example">\override Stem #'thickness = #2.6
</pre>
   <p>Esta instrucción ajusta el aspecto de las plicas.  El valor <code>2.6</code>
se pone dentro de la variable <code>thickness</code> de un objeto
<code>Stem</code>.  <code>thickness</code> se mide a partir del grosor de las
líneas del pentagrama, y así estas plicas serán <code>2.6</code> veces el
grosor de las líneas del pentagrama.  Esto hace que las plicas sean
casi el doble de gruesas de lo normal.  Para distinguir entre las
variables que se definen en los archivos de entrada (como
<code>veintiCuatro</code> en el ejemplo anterior) y las variables de los
objetos internos, llamaremos a las últimas &lsquo;propiedades&rsquo; y a las
primeras &lsquo;variables.&rsquo;  Así, el objeto plica tiene una propiedad
<code>thickness</code> (grosor), mientras que <code>veintiCuatro</code> es una
variable.

   <p><a name="index-propiedades-frente-a-variables-442"></a><a name="index-variables-frente-a-propiedades-443"></a>
Los desplazamientos bidimensionales (coordenadas X e Y) así como los
tamaños de los objetos (intervalos con un punto izquierdo y otro
derecho) se introducen como <code>parejas</code>.  Una pareja<a rel="footnote" href="#fn-1" name="fnd-1"><sup>1</sup></a>  se
introduce como <code>(primero . segundo)</code> y, como los símbolos, se deben
preceder de un apóstrofe:

<pre class="example">\override TextScript #'extra-offset = #'(1 . 2)
</pre>
   <p>Esto asigna la pareja (1, 2) a la propiedad <code>extra-offset</code> del
objeto TextScript.  Estos números se miden en espacios de pentagrama,
y así esta instrucción mueve el objeto un espacio de pentagrama a la
derecha, y dos espacios hacia arriba.

   <p>Los dos elementos de una pareja pueden ser valores arbitrarios, por
ejemplo

<pre class="example">#'(1 . 2)
#'(#t . #f)
#'("bla-bla" . 3.14159265)
</pre>
   <p>Una lista se escribe encerrando sus elementos entre paréntesis, y
añadiendo un apóstrofe.  Por ejemplo,

<pre class="example">#'(1 2 3)
#'(1 2 "cadena" #f)
</pre>
   <p>Todo el tiempo hemos estado usando listas.  Un cálculo, como <code>(+
1 2)</code> también es una lista (que contiene el símbolo <code>+</code> y los
números 1 y&nbsp;2).  Normalmente, las listas se interpretan como
cálculos, y el intérprete de Scheme sustituye el resultado del
cálculo.  Para escribir una lista, detenemos la evaluación.  Esto se
hace precediendo la lista por un apóstrofe <code>'</code>.  Así, para los
cálculos no usamos ningún apóstrofe.

   <p>Dentro de una lista o pareja precedida de apóstrofe, no hay necesidad
de escribir ningún apóstrofe más.  Lo siguiente es una pareja de
símbolos, una lista de símbolos y una lista de listas respectivamente:

<pre class="example">#'(stem . head)
#'(staff clef key-signature)
#'((1) (2))
</pre>
   <ul class="menu">
<li><a accesskey="1" href="Tweaking-with-Scheme.es.html#Tweaking-with-Scheme">Trucos con Scheme</a>
</ul>

   <div class="footnote">
<hr>
<h4>Notas al pie</h4><p class="footnote"><small>[<a name="fn-1" href="#fnd-1">1</a>]</small> En la
terminología de Scheme, la pareja se llama <code>cons</code>, y sus dos
elementos se llaman <code>car</code> y <code>cdr</code> respectivamente.</p>

   <hr></div>

   <!-- footer_tag --><div class="node">
<p>
Siguiente:&nbsp;<a rel="next" accesskey="n" href="GNU-Free-Documentation-License.es.html#GNU-Free-Documentation-License">GNU Free Documentation License</a>,
Anterior:&nbsp;<a rel="previous" accesskey="p" href="Templates.es.html#Templates">Plantillas</a>,
Arriba:&nbsp;<a rel="up" accesskey="u" href="index.es.html#Top">Inicio</a>
</div>

<div style="background-color: #e8ffe8; padding: 2; border: #c0ffc0 1px solid;">
<p>
<font size="-1">
Esta página corresponde a LilyPond-2.11.57 (rama de desarrollo).
<br>
<address>
Informe de los fallos a través de la lista en español <a href="http://es.groups.yahoo.com/group/lilypond-es/">lilypond-es</a>, o en inglés a través de <a href="http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs">http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs</a>. </address>
<br>
Se agradecen las <a href="http://lilypond.org/web/devel/participating/documentation-adding">sugerencias para la documentación</a>.
</font>
</p>
</div>


<P>
 Otros idiomas: <a href="Scheme-tutorial.html">English</a>, <a href="Scheme-tutorial.de.html">deutsch</a>.
 <BR>
 
</P>
</BODY></html>