1. CRySoL
  2. Untitled project
  3. PensarEnC++

Commits

David Villa Alises  committed 7f6de3e

revisando

  • Participants
  • Parent commits 35029bd
  • Branches PensarEnC++

Comments (0)

Files changed (3)

File DEPENDS

View file
  • Ignore whitespace
-xsltproc
-highlight
-dblatex
-tofrodos
-aspell-es
-texlive-lang-cyrillic
-#latex-ucs
-#ldp-docbook-xsl
+deb:xsltproc
+deb:highlight
+deb:dblatex
+deb:tofrodos
+deb:aspell-es
+deb:texlive-lang-cyrillic
+#deb:latex-ucs
+#deb:ldp-docbook-xsl

File V1-C13.xml

View file
  • Ignore whitespace
   xmlns:xi="http://www.w3.org/2001/XInclude"
   id="C13">
 
+  <!-- Dynamic Object Creation -->
   <title>Creación dinámica de objetos</title>
 
   <!--
   -->
   <highlights>
     <para>
-      A veces se conoce la cantidad exacta exacta, el tipo y duración de la vida de los
-      objetos en un programa, pero no siempre es así.
+      A veces se conoce exactamente la cantidad, el tipo y el ciclo de vida de los objetos
+      de un programa, pero no siempre es así.
     </para>
   </highlights>
 
   -->
   <para>
     ¿Cuántos aviones tendrá que supervisar un sistema de control de tráfico aéreo?
-    ¿Cuántas formas o figuras se usarán en un sistema CAD? ¿Cuántos nodos habrá en una
-    red?
+    ¿Cuántas figuras usará un sistema CAD? ¿Cuántos nodos habrá en una red?
   </para>
 
   <!--
   allocate storage from the heap (also called the free store) at runtime.
   -->
   <para>
-    Para resolver un problema general de programación, es esencial poder crear y destruir
+    Para resolver un problema general de programación es esencial poder crear y destruir
     objetos en tiempo de ejecución. Por supuesto, C proporciona las funciones de
-    asignación dinámica de memoria <function>malloc()</function> y sus variantes, y
-    <function>free()</function>, que permiten obtener y liberar bloques en el espacio de
-    memoria del <emphasis>montículo</emphasis> (también llamado <emphasis>espacio
-    libre</emphasis><footnote>
+    asignación dinámica de memoria <function>malloc()</function> y
+    <function>free()</function> (y sus variantes), que permiten obtener y liberar bloques
+    de espacio de memoria del <emphasis>montículo</emphasis> (también llamado
+    <emphasis>almacenamiento libre</emphasis><footnote>
       <para>
-	N.T. espacio de almacenamiento libre (<foreignphrase>free store</foreignphrase>)
+	N.T. <foreignphrase>free store</foreignphrase>
       </para>
-    </footnote> mientras se ejecuta el programa.
+    </footnote> en tiempo de ejecución.
   </para>
 
   <!--
   might:
   -->
   <para>
-    Este método sin embargo, no funcionará en C++. El constructor no le permite manipular
-    la dirección de memoria a inicializar, y con motivo. De permitirse, sería posible:
+    Sin embargo, este método no funcionará en C++. El constructor no le permite manipular
+    la dirección de memoria a inicializar, y por una buena razón. De permitirlo, sería
+    posible:
   </para>
 
   <!--
   3. Hand it the wrong-sized object
   -->
   <orderedlist numeration="arabic">
-
     <listitem>
       <para>
-		Olvidar la llamada al constructor. Con lo cual no sería posible garantizar la
-		inicialización de los objetos en C++.
+	Olvidar la llamada al constructor. Con lo cual no sería posible garantizar la
+	inicialización de los objetos en C++.
       </para>
     </listitem>
-
     <listitem>
       <para>
-		Usar accidentalmente un objeto que aún no ha sido inicializado, esperando que todo
-		vaya bien.
+	Usar accidentalmente un objeto que aún no ha sido inicializado, esperando que todo
+	vaya bien.
       </para>
     </listitem>
-
     <listitem>
       <para>
-		Manipular un objeto de tamaño incorrecto.
+	Manipular un objeto de tamaño incorrecto.
       </para>
     </listitem>
-
   </orderedlist>
 
 
     programa estaría expuesto a cometer esos mismos errores. Una gran parte de los
     problemas de programación tienen su origen en la inicialización incorrecta de objetos,
     lo que hace especialmente importante garantizar la llamada a los constructores para
-    los objetos que han de ser creados en el montículo.
+    los objetos que se crean en el montículo.
   </para>
 
   <!--
     creación dinámica de objetos?
   </para>
 
- <!--
+  <!--
   The answer is by bringing dynamic object creation into the core of the language. malloc
   ( ) and free( ) are library functions, and thus outside the control of the compiler.
   However, if you have an operator to perform the combined act of dynamic storage
   destructors will be called for all objects.
   -->
   <para>
-    La respuesta está en integrar en el lenguaje mismo la creación dinámica de
-    objetos. <function>malloc()</function> y <function> free()</function> son funciones de
+    La respuesta pasa por integrar en el lenguaje mismo la creación dinámica de
+    objetos. <function>malloc()</function> y <function>free()</function> son funciones de
     biblioteca y por tanto, están fuera del control del compilador. Si se dispone de un
     <emphasis>operador</emphasis> que lleve a cabo el acto combinado de la asignación
     dinámica de memoria y la inicialización, y de otro operador que realice el acto
   safely creating objects on the heap.
   -->
   <para>
-    En este capítulo verá cómo se resuelve de modo elegante este problema con los
+    En este capítulo aprenderá cómo se resuelve de modo elegante este problema con los
     operadores <kw>new</kw> y <kw>delete</kw> de C++.
   </para>
 
     -->
     <orderedlist numeration="arabic">
       <listitem>
-		<para>Asignación de memoria para el objeto.</para>
+	<para>Asignación de memoria para el objeto.</para>
       </listitem>
       <listitem>
-		<para>Llamada al constructor. </para>
+	<para>Llamada al constructor.</para>
       </listitem>
     </orderedlist>
 
     <!--
     By now you should believe that step two always happens. C++ enforces it because
-    uninitialized objects are a major source of program bugs. It doesn’t matter where or how
-    the object is created – the constructor is always called.
+    uninitialized objects are a major source of program bugs. It doesn’t matter where or
+    how the object is created – the constructor is always called.
     -->
     <para>
       Aceptemos por ahora que este segundo paso ocurre <emphasis>siempre</emphasis>. C++
     </para>
 
     <!--
-    1. Storage can be allocated before the program begins, in the static storage area. This
-    storage exists for the life of the program.
-    2. Storage can be created on the stack whenever a particular execution point is reached
-    (an opening brace). That storage is released automatically at the complementary
-    execution point (the closing brace). These stack-allocation operations are built
-    into the instruction set of the processor and are very efficient. However, you have
-    to know exactly how many variables you need when you’re writing the program so the
-    compiler can generate the right code.
+    1. Storage can be allocated before the program begins, in the static storage
+    area. This storage exists for the life of the program.
+
+    2. Storage can be created on the stack whenever a particular execution point is
+    reached (an opening brace). That storage is released automatically at the
+    complementary execution point (the closing brace). These stack-allocation operations
+    are built into the instruction set of the processor and are very efficient. However,
+    you have to know exactly how many variables you need when you’re writing the program
+    so the compiler can generate the right code.
+
     3. Storage can be allocated from a pool of memory called the heap (also known as the
     free store). This is called dynamic memory allocation. To allocate this memory, a
     function is called at runtime; this means you can decide at any time that you want
     <orderedlist numeration="arabic">
 
       <listitem>
-		<para>
-		  Asignación de memoria en la zona de almacenamiento estático, que tiene lugar
-		  durante la carga del programa.  El espacio de memoria asignado al objeto existe
-		  hasta que el programa termina.
-		</para>
+	<para>
+	  Asignación de memoria en la zona de almacenamiento estático, que tiene lugar
+	  durante la carga del programa.  El espacio de memoria asignado al objeto existe
+	  hasta que el programa termine.
+	</para>
       </listitem>
       <listitem>
-		<para>
-		  Asignación de memoria en la pila, cuando se alcanza algún punto determinado
-		  durante la ejecución del programa (la llave de apertura de un bloque). La
-		  memoria asignada se vuelve a liberar de forma automática en cuanto se alcanza el
-		  punto de ejecución complementario (la llave de cierre de un bloque). Las
-		  operaciones de manipulación de la pila forman parte del conjunto de
-		  instrucciones del procesador y son muy eficientes. Por otra parte, es necesario
-		  saber cuantas variables se necesitan mientras se escribe el programa de modo que
-		  el copilador pueda generar el código correspondiente.
-		</para>
+	<para>
+	  Asignación de memoria en la pila, cuando se alcanza algún punto determinado
+	  durante la ejecución del programa (la llave de apertura de un bloque). La
+	  memoria asignada se vuelve a liberar de forma automática en cuanto se alcanza el
+	  punto de ejecución complementario (la llave de cierre de un bloque). Las
+	  operaciones de manipulación de la pila forman parte del conjunto de
+	  instrucciones del procesador y son muy eficientes. Por otra parte, es necesario
+	  saber cuantas variables se necesitan mientras se escribe el programa de modo que
+	  el copilador pueda generar el código correspondiente.
+	</para>
       </listitem>
       <listitem>
-		<para>
-		  Asignación dinámica, en una zona de memoria libre llamada montículo
-		  (<foreignphrase>heap</foreignphrase> o <foreignphrase>free
-		  store</foreignphrase>). Se reserva espacio para un objeto en esta zona mediante
-		  la llamada a una función durante la ejecución del programa; esto significa que
-		  se puede decidir en cualquier momento que se necesita cierta cantidad de
-		  memoria. Esto conlleva la responsabilidad de determinar el momento en que ha de
-		  liberarse la memoria, lo que implica determinar el tiempo de vida de la misma
-		  que, por tanto, ya no está bajo control de las reglas de ámbito.
+	<para>
+	  Asignación dinámica, en una zona de memoria libre llamada montículo
+	  (<foreignphrase>heap</foreignphrase> o <foreignphrase>free
+	  store</foreignphrase>). Se reserva espacio para un objeto en esta zona mediante
+	  la llamada a una función durante la ejecución del programa; esto significa que
+	  se puede decidir en cualquier momento que se necesita cierta cantidad de
+	  memoria. Esto conlleva la responsabilidad de determinar el momento en que ha de
+	  liberarse la memoria, lo que implica determinar el tiempo de vida de la misma
+	  que, por tanto, ya no está bajo control de las reglas de ámbito.
 	</para>
       </listitem>
     </orderedlist>
     <!--
     Often these three regions are placed in a single contiguous piece of physical memory:
     the static area, the stack, and the heap (in an order determined by the compiler
-    writer). However, there are no rules. The stack may be in a special place, and the heap
-    may be implemented by making calls for chunks of memory from the operating system. As a
-    programmer, these things are normally shielded from you, so all you need to think about
-    is that the memory is there when you call for it.
+    writer). However, there are no rules. The stack may be in a special place, and the
+    heap may be implemented by making calls for chunks of memory from the operating
+    system. As a programmer, these things are normally shielded from you, so all you need
+    to think about is that the memory is there when you call for it.
     -->
     <para>
       A menudo, las tres regiones de memoria referidas se disponen en una zona contigua de
       <title>Asignación dinámica en C</title>
 
       <!--
-      To allocate memory dynamically at runtime, C provides functions in its standard library:
-      malloc( ) and its variants calloc( ) and realloc( ) to produce memory from the heap, and
-      free( ) to release the memory back to the heap. These functions are pragmatic but
-      primitive and require understanding and care on the part of the programmer. To create an
-      instance of a class on the heap using C’s dynamic memory functions, you’d have to do
-      something like this:
+      To allocate memory dynamically at runtime, C provides functions in its standard
+      library:  malloc( ) and its variants calloc( ) and realloc( ) to produce memory from
+      the heap, and free( ) to release the memory back to the heap. These functions are
+      pragmatic but primitive and require understanding and care on the part of the
+      programmer. To create an instance of a class on the heap using C’s dynamic memory
+      functions, you’d have to do something like this:
       -->
       <para>
-		C proporciona las funciones de su biblioteca estándar
-		<function>malloc()</function> y sus variantes <function>calloc()</function> y
-		<function>realloc()</function> para asignar, y <function>free()</function> para
-		liberar bloques de memoria dinámicamente en tiempo de ejecución. Estas funciones
-		son pragmáticas pero rudimentarias por lo que requieren comprensión y un cuidadoso
-		manejo por parte del programador. El listado que sigue es un ejemplo que ilustra
-		el modo de crear una instancia de una clase con estas funciones de C:
+	C proporciona las funciones de su biblioteca estándar
+	<function>malloc()</function> y sus variantes <function>calloc()</function> y
+	<function>realloc()</function> para asignar, y <function>free()</function> para
+	liberar bloques de memoria dinámicamente en tiempo de ejecución. Estas funciones
+	son pragmáticas, pero rudimentarias, por lo que requieren comprensión y un
+	cuidadoso manejo por parte del programador. El listado que sigue es un ejemplo que
+	ilustra el modo de crear una instancia de una clase con estas funciones de C:
       </para>
 
+<!-- REVISANDO AQUI -->
 
 //: V1C13:MallocClass.cpp
 
 
 
 <!-- Local Variables: -->
-<!--  coding: utf-8 -->
+<!-- coding: utf-8 -->
 <!-- fill-column: 90 -->
-<!--  mode: flyspell -->
-<!--  ispell-local-dictionary: "castellano8" -->
+<!-- mode: flyspell -->
+<!-- ispell-local-dictionary: "castellano8" -->
 <!-- End: -->

File V2-C02.xml

View file
  • Ignore whitespace
   Editor:              Emacs 21/PSGML
   Traduccin original:
   Formateado DocBook:
+  Revisión:            David Villa Alises
 -->
 
 <!-- original en:
   <title>Programación defensiva</title>
 
   <!--
-  Writing software may be an elusive goal for developers,
-  but a few defensive techniques, routinely applied, can go a long way
-  toward improving the quality of your code.
+      Writing “perfect software” may be an elusive Holy Grail for developers, but a few
+      defensive techniques, routinely applied, can go a long way toward narrowing the gap
+      between code and ideal.
   -->
-  <para>
-    Escribir software puede ser un objetivo difícil para
-    desarrolladores, pero unas pocas técnicas defensivas, aplicadas
-    rutinariamente, pueden dirigir a un largo camino hacia la mejora
-    de la calidad de su código.
-  </para>
+  <highlights>
+    <para>
+      Escribir <quote>código perfecto</quote> puede ser un Santo Grial para los
+      desarrolladores, pero con unas pocas técnicas defensivas, aplicadas con asiduidad,
+      pueden llevar por un largo camino para reducir la distancia entre el código y lo
+      ideal.
+    </para>
+  </highlights>
 
   <!-- Although the complexity of typical production software
   guarantees that testers will always have a job, we hope you still