home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 1 / PC Actual CD 01.iso / f1 / tutorc.arj / TUTOR.DOC < prev    next >
Encoding:
Text File  |  1993-10-07  |  213.8 KB  |  4,795 lines

  1.                         M A N U A L   D E   U S U A R I O
  2.                         =================================
  3.  
  4.  
  5.  
  6.                                     INDICE
  7.                                     ------
  8.  
  9.  
  10.  
  11.              PROLOGO.
  12.  
  13.              1.- INTRODUCCION.
  14.                   1.1.- EL MANUAL.
  15.                   1.2.- ¿A QUIEN VA DIRIGIDO?
  16.                   1.3.- COMO UTILIZAR ESTE MANUAL.
  17.  
  18.              2.- NOTACION UTILIZADA EN ESTE MANUAL.
  19.  
  20.              3.- INSTALACION.
  21.                   3.1.- MATERIAL QUE COMPONE EL PAQUETE.
  22.                   3.2.- REQUERIMIENTOS.
  23.                        3.2.1.- REQUERIMIENTOS HARDWARE.
  24.                        3.2.2.- REQUERIMIENTOS SOFTWARE.
  25.                        3.2.3.- REQUERIMIENTOS DE CONOCIMIENTOS.
  26.                   3.3.- COMO SE INSTALA EL PAQUETE.
  27.                        3.3.1.- INSTALACION AUTOMATICA.
  28.                        3.3.2.- INSTALACION MANUAL.
  29.                   3.4.- FICHEROS QUE COMPONEN EL PAQUETE.
  30.  
  31.              4.- EL PROGRAMA TUTOR.EXE.
  32.                   4.1.- EJECUCION.
  33.                   4.2.- LINEAS DE ESTADO.
  34.                   4.3.- TECLADO.
  35.                   4.4.- RATON.
  36.                   4.5.- VENTANAS DE MENU.
  37.                   4.6.- VENTANAS DE VISUALIZACION.
  38.                   4.7.- VENTANAS DE EDICION.
  39.                   4.8.- AYUDA LOCAL.
  40.                   4.9.- ABANDONAR TUTOR.
  41.                   4.10.- MENU PRINCIPAL.
  42.                   4.11.- INFORMACION GENERAL.
  43.                   4.12.- MENU DE LECCIONES.
  44.                   4.13.- MENU DE TAREAS.
  45.                   4.14.- TEORIA.
  46.                   4.15.- PRUEBAS.
  47.                   4.16.- EJEMPLOS.
  48.                        4.16.1.- EL PROGRAMA EJECUTAR.EXE.
  49.                   4.17.- EJERCICIOS.
  50.                        4.17.1.- TESTS.
  51.                        4.17.2.- PREGUNTAS CON COMPROBACION.
  52.                        4.17.3.- PREGUNTAS SIN COMPROBACION.
  53.                        4.17.4.- PROPUESTAS DE PROGRAMAS.
  54.                   4.18.- ARGUMENTOS.
  55.                        4.18.1.- ARGUMENTO ?.
  56.                        4.18.2.- ARGUMENTO NP.
  57.                        4.18.3.- ARGUMENTO MP.
  58.                        4.18.4.- ARGMENTO L.
  59.                        4.18.5.- ARGUMENTO T.
  60.                        4.18.6.- ARGUMENTO NT.
  61.                        4.18.7.- ARGUMENTO NDV.
  62.                        4.18.8.- ARGUMENTO TC.
  63.                        4.18.9.- ARGUMENTO PT.
  64.                        4.18.10.- ARGUMENTO RR.
  65.                        4.18.11.- ARGUMENTO PI.
  66.                        4.18.12.- ARGUMENTOS P Y X.
  67.                        4.18.13.- ARGUMENTO FMU.
  68.                        4.18.14.- ARGUMENTO PRT.
  69.                   4.19.- EL FICHERO T.BAT.
  70.                   4.20.- EL PROGRAMA PORTUTOR.EXE.
  71.                   4.21.- LOS PROGRAMAS PRTUTC.EXE Y PRTUTCPP.EXE.
  72.  
  73.              5.- FICHEROS DE DATOS.
  74.                   5.1.- FICHEROS CON EXTENSION DAT Y HLP.
  75.                   5.2.- EL PROGRAMA INDEXAR.EXE,
  76.                         EL FICHERO POR LOTES I.BAT, Y
  77.                         EL FICHERO DE DATOS TUTOR.IND.
  78.                   5.3.- FICHEROS DE TEORIA.
  79.                   5.4.- FICHEROS DE EJEMPLOS.
  80.                   5.5.- FICHEROS DE EJERCICIOS.
  81.                   5.6.- FICHERO DE AYUDA.
  82.                   5.7.- FICHERO DE INFORMACION GENERAL.
  83.                   5.8.- EL PROGRAMA COMPILAD.EXE,
  84.                         EL FICHERO POR LOTES C.BAT, Y
  85.                         EL FICHERO DE DATOS TUTOR.CMP.
  86.                   5.9.- FICHERO DE CONFIGURACION.
  87.  
  88.              6.- ERRORES.
  89.                   6.1.- ERRORES EN TUTOR.EXE.
  90.                        6.1.1.- ERRORES EN LOS ARGUMENTOS.
  91.                        6.1.2.- ERRORES TERMINALES.
  92.                             6.1.2.1.- ERROR DE MEMORIA INSUFICIENTE.
  93.                             6.1.2.2.- ERRORES DE LINEAS DE FICHEROS.
  94.                             6.1.2.3.- ERRORES TERMINALES NORMALES.
  95.                        6.1.2.- ERRORES NO TERMINALES.
  96.                        6.1.4.- AVISOS.
  97.                        6.1.5.- ERRORES DE PROGRAMACION.
  98.                   6.2.- ERRORES EN PORTUTOR.EXE.
  99.                   6.3.- ERRORES EN PRTUTC.EXE.
  100.                   6.4.- ERRORES EN PRTUTCPP.EXE.
  101.                   6.5.- ERRORES EN INSTALAR.EXE.
  102.                   6.6.- ERRORES EN INDEXAR.EXE.
  103.                   6.7.- ERRORES EN COMPILAD.EXE.
  104.                   6.8.- ERRORES EN EJECUTAR.EXE.
  105.  
  106.              7.- GLOSARIO DE TERMINOS.
  107.  
  108.              8.- AUTOR DE LA APLICACION.
  109.  
  110.  
  111.  
  112.  
  113.  PROLOGO.
  114.  --------
  115.  
  116.       El lenguaje C ha sido y es uno de los mejores lenguajes de propósito
  117.  general. Ha sido utilizado en todo tipo de aplicaciones: desarrollo de
  118.  procesadores de texto, de compiladores, de sistemas de gestiones de bases
  119.  de datos, sistemas operativos, y un amplio etcétera. El C es un lenguaje
  120.  de nivel medio que se puede utilizar tanto en aplicaciones a bajo nivel
  121.  (obteniendo un código bastante eficiente) como en aplicaciones a alto nivel
  122.  (desarrollando bibliotecas de funciones). En resumen, es un lenguaje poten-
  123.  te, eficiente, flexible, estructurado y portátil. Actualmente este lenguaje
  124.  está siendo desplazado por el lenguaje C++ que se puede considerar como una
  125.  mejora y ampliación del C. El C++ es un lenguaje orientado a objetos y pare-
  126.  ce que el futuro inmediato está orientado hacia la programación orientada a
  127.  objetos (POO o OOP en inglés).
  128.  
  129.       El objetivo de este programa es realizar un tutor de C y C++, es decir,
  130.  explicar todo lo relativo a estos dos lenguajes.
  131.  
  132.       ¿Por qué C++?. Por varias razones: es un lenguaje de propósito general
  133.  bastante potente y relativamente nuevo (al menos en lo que se refiere a un
  134.  uso generalizado por parte de los programadores), es un lenguaje orientado
  135.  a objetos cuya metodología (PPO) está en auge, y es un lenguaje que intenta
  136.  preservar la libertad y el espíritu del C.
  137.  
  138.       ¿Por qué un tutor?. Si bien es cierto que existen multitud de libros
  139.  sobre C y C++, y también existen algunos programas tutores en el mercado,
  140.  todos suelen adolecer de los mismos defectos: o bien contienen muy pocos
  141.  ejercicios o ninguno, o bien los ejercicios son muy rudimentarios, o bien
  142.  los ejercicios no vienen resueltos. Con respecto a los libros, la ventaja
  143.  de este tutor es incuestionable: interactividad con el usuario. Con res-
  144.  pecto a otros tutores, éste pretende ofrecer al usuario una abundante y
  145.  variada colección de ejercicios y programas, todos, excepto las propuestas
  146.  de programas, resueltos.
  147.  
  148.       La primera decisión que se presentó fue elegir una de las tres opciones
  149.  siguientes:
  150.  
  151.       1) Tutor de C++: al ser el C++ un superconjunto del C, también se
  152.  estaría explicando el C aunque subrepticiamente. Esta opción tiene dos
  153.  inconvenientes:
  154.  
  155.       - Para las personas que saben C sería muy tedioso estudiar de nuevo C;
  156.       para ellos sería más fácil ver solamente las nuevas características que
  157.       aporta el C++ al C.
  158.  
  159.       - A las personas que no saben C les resultaría más práctico y más fácil
  160.       aprender primero C y luego C++. De la otra forma, no sabrían distinguir
  161.       cuáles son las características originarias del C y cuáles del C++.
  162.  
  163.       2) Tutor de C++ pero sólo explicando las nuevas características del C++
  164.  con respecto al C: esta opción exige, al usuario del tutor, el conocimiento
  165.  del lenguaje C, con lo cual se está restringiendo el número de usuarios
  166.  potenciales.
  167.  
  168.       3) Tutor compuesto de dos tutores (uno de C y otro de C++): ésta es la
  169.  forma que se ha creído más conveniente ya que solventa los problemas susci-
  170.  tados en los dos puntos anteriores; por lo tanto es la opción que se ha ele-
  171.  gido. Huelga decir que en el tutor correspondiente al C++ sólo se va a estu-
  172.  diar las modificaciones y las nuevas incorporaciones que posee el C++ con
  173.  respecto al lenguaje C. De esta forma la persona que ya conozca el lenguaje
  174.  C, puede omitir el estudio de este lenguaje simplemente con no mirar el tu-
  175.  tor correspondiente al C.
  176.  
  177.       La segunda decisión que apareció fue la elección de una de las opciones
  178.  siguientes:
  179.  
  180.       1) Explicar una versión concreta del C y del C++ (por ejemplo, Turbo
  181.  C++ 1.0): no parece ni muy lógico ni muy deseable que el usuario aprenda
  182.  únicamente un determinado entorno; sería más fructífero, en todo caso,
  183.  aprender el C y el C++ estándar, y a continuación aprender una concreción
  184.  de estos lenguajes.
  185.  
  186.       2) Explicar solamente el ANSI C y el ANSI C++ (Nota: el C tradicional
  187.  de Kernigham y Ritchie está incluido en el ANSI C): todo programa en ANSI C
  188.  se debería poder compilar en cualquier compilador de C. Idem de ídem para el
  189.  ANSI C++. De este modo el usuario puede realizar sus programas en el compi-
  190.  lador que desee.
  191.  
  192.       3) Explicar C y C++ estándar y además también una determinada versión
  193.  de éstos: esta ha sido la alternativa elegida puesto que abarca al punto
  194.  anterior y opcionalmente el usuario puede estudiar una implementación con-
  195.  creta de los compiladores de estos lenguajes. La implementación de C y C++
  196.  seleccionada ha sido las versiones que corresponden a la compañía de Borland
  197.  International, normalmente los nombres de estos compiladores suelen empezar
  198.  por turbo: Turbo C y Turbo C++ (aunque también es muy popular Borland C++)
  199.  en sus diversas versiones.
  200.  
  201.  
  202.  
  203.  1.- INTRODUCCION.
  204.  -----------------
  205.  
  206.       Tutor de C/C++, versión 1.0, es un paquete de software diseñado para
  207.  enseñar los lenguajes C y C++. El aprendizaje de estos lenguajes empezará
  208.  desde cero (el usuario no sabe absolutamente nada de dichos lenguajes) hasta
  209.  estudiar las características más avanzadas de ellos.
  210.  
  211.       Los lenguajes C y C++ explicados corresponden tanto a los propuestos
  212.  por los actuales ANSI como a los correspondientes a las versiones de Borland
  213.  International (normalmente se denominan por Turbo C y Turbo C++).
  214.  
  215.  
  216.  
  217.  1.1.- EL MANUAL.
  218.  ----------------
  219.  
  220.       Este manual describe el paquete de software Tutor C/C++ 1.0, desarro-
  221.  llado por Antonio Lebrón Bocanegra como proyecto fin de carrera en la Facul-
  222.  tad de Informática de Sevilla, y tutelado por Manuel Mejías Risoto.
  223.  
  224.       Este libro tiene dos objetivos principales. El primero es ofrecer una
  225.  guía de referencia que facilite el aprendizaje de los diversos programas que
  226.  forman el paquete. El segundo es que sirva como libro de consulta para cual-
  227.  quier característica del paquete que desee consultar el usuario.
  228.  
  229.  
  230.  
  231.  1.2.- ¿A QUIEN VA DIRIGIDO EL TUTOR?
  232.  ------------------------------------
  233.  
  234.       El tutor está pensando especialmente para programadores aunque los
  235.  usuarios no programadores también pueden utilizarlo.
  236.  
  237.       Dentro del campo de usuarios programadores, aquéllos que no sepan ni
  238.  C ni C++ aprenderán ambos lenguajes si completan todas las lecciones del
  239.  tutor. Para aquellos programadores que ya sepan estos dos lenguajes también
  240.  les puede ser útil examinar el tutor debido a la gran cantidad de ejemplos
  241.  y ejercicios que existen en él, a la vez que en la gran profundidad de los
  242.  temas. Por último, para el grupo de programadores que ya saben C y no saben
  243.  C++, pueden estudiar solamente el tutor de C++ para aprender dicho lenguaje,
  244.  omitiendo el tutor de C.
  245.  
  246.  
  247.  
  248.  1.3.- COMO UTILIZAR ESTE MANUAL.
  249.  --------------------------------
  250.  
  251.       Es muy conveniente que la lectura de este manual se realice practicando
  252.  con el tutor todo lo que aquí se comenta.
  253.  
  254.       Una vez leído todo el manual el usuario sabrá utilizar el tutor así
  255.  como todas las características que posee. A partir de este momento este
  256.  libro será muy útil como guía de consulta.
  257.  
  258.       En el apartado 2 se describe los detalles de notación utilizados en
  259.  este manual de usuario. En el apartado 3 se explica cómo instalar el tutor.
  260.  En el apartado 4 se explica todo lo que hay que saber en relación al progra-
  261.  ma TUTOR.EXE, que es el programa principal del paquete. En el apartado 5 se
  262.  detalla las estructuras de los ficheros de datos y se dice cómo se pueden
  263.  modificar. En el apartado 6 se listan todos los errores de todos los pro-
  264.  gramas que forman el paquete, junto con una breve descripción de cada uno
  265.  de ellos en la que se dice a qué es debido cada error y cómo solucionarlo.
  266.  En el apartado 7 se presenta una lista con la definición de algunos términos
  267.  que aparacen a lo largo de este manual y que pueden resultar desconocidos
  268.  para algunas personas. En el último apartado (el 8) se proporcionan los
  269.  datos personales del autor de esta aplicación.
  270.  
  271.  
  272.  
  273.  2.- NOTACION UTILIZADA EN ESTE MANUAL.
  274.  --------------------------------------
  275.  
  276.       Las expresiones "pulsamos", "presionamos", "escribimos", "elegimos" y
  277.  "situamos" tienen el siguiente significado en este manual:
  278.  
  279.  - pulsamos: indica que hay que pulsar una tecla (o combinación de teclas)
  280.  para ejecutar una acción.
  281.  
  282.  - presionamos: indica que debemos presionar un botón del ratón (o combina-
  283.  ción de botones) para ejecutar una determinada acción.
  284.  
  285.  - escribimos: indica que debemos introducir los caracteres especificados.
  286.  
  287.  - elegimos: indica que debemos escoger una opción de entre varias que se
  288.  ofrecen.
  289.  
  290.  - situamos: indica el lugar en el que hay que situar el cursor de texto.
  291.  
  292.       Los nombres de teclas y nombres de botones del ratón están denotados
  293.  entre los signos < y >. Por ejemplo, <F1> denota la pulsación de la tecla
  294.  <F1>, y <BOTIZQ> denota la presión del botón izquierdo del botón.
  295.  
  296.       Dos teclas separadas por un guión (-) indican que hay que pulsar la
  297.  primera y, sin soltarla, pulsar la segunda. Por ejemplo, <Ctrl-E> indica
  298.  que debemos pulsar simultáneamente las teclas CONTROL y E.
  299.  
  300.       Dos botones distintos del ratón separados por un guión indican que hay
  301.  que presionarlos simultáneamente. Por ejemplo, <BOTIZQ-BOTDER> indica que
  302.  debemos presionar al mismo tiempo los botones izquierdo y derecho del ratón.
  303.  
  304.       Dos botones iguales separados por un guión indican un doble clic, esto
  305.  es, que hay que presionar ese botón dos veces rápidamente. Si el intervalo
  306.  de tiempo entre una presión y otra es mayor de 200 milisegundos (valor por
  307.  defecto, cf. 4.18.10 para cambiarlo) no se considerará como un doble clic
  308.  sino como dos clics simples. Por ejemplo, <BOTDER-BOTDER> es equivalente a
  309.  la pulsación de la tecla <ALT-X>, sin embargo, <BOTDER> <BOTDER> es equiva-
  310.  lente a pulsar dos veces la tecla <ESC>.
  311.  
  312.       Los textos entre comillas que aparecen en este manual reflejan textos
  313.  literales mostrados por los programas que constituyen el paquete.
  314.  
  315.  
  316.  
  317.  3.- INSTALACION.
  318.  ----------------
  319.  
  320.       En este apartado se explica cómo se puede instalar el tutor en el disco
  321.  duro.
  322.  
  323.  
  324.  
  325.  3.1.- MATERIAL QUE COMPONE EL PAQUETE.
  326.  --------------------------------------
  327.  
  328.       Al adquirir el Tutor C/C++ 1.0 disponemos del siguiente material:
  329.  
  330.  - Un disquette de 3,5 pulgadas de alta densidad. Aquellos usuarios que
  331.  no tengan este tipo de unidad de disco en su ordenador podrán tener los
  332.  ficheros que componen el paquete en otros tipos de disquettes, pero en
  333.  tal caso tendrán que realizar una instalación manual (cf 3.3.2).
  334.  
  335.  - Manual de usuario. Este libro no es imprescindible puesto que en el
  336.  fichero TUTOR.DOC se encuentra dicho manual, el cual se puede consultar
  337.  en el ordenador o imprimirlo para leerlo en papel.
  338.  
  339.  
  340.  
  341.  3.2.- REQUERIMIENTOS.
  342.  ---------------------
  343.  
  344.       Existen tres tipos de requerimientos: hardware, software y de cono-
  345.  cimientos.
  346.  
  347.  
  348.  
  349.  3.2.1.- REQUERIMIENTOS HARDWARE.
  350.  --------------------------------
  351.  
  352.       Los requerimientos hardware imprescindibles son:
  353.  
  354.  - Poseer un ordenador personal compatible con IBM PC.
  355.  
  356.  - Poseer un disco duro con al menos 3'5 megabytes libres. El tutor utiliza
  357.  grandes ficheros de datos a los que se accede frecuentemente, lo que hace
  358.  imprescindible la utilización del disco duro para que el programa funcione
  359.  de una forma aceptable.
  360.  
  361.  - Poseer una cantidad mínima de 590 kbytes libres de memoria convencional.
  362.  La memoria convencional está formada por los primeros 640 kbytes de memoria
  363.  RAM. Si se dispone de menos memoria libre, la mayor parte del tutor funcio-
  364.  nará correctamente, sin embargo, habrá situaciones (como al cargar la teoría
  365.  en memoria o al ejecutar los programas ejemplos) en que se produzca un error
  366.  de memoria insuficiente (cf. 6.1.2.1).
  367.  
  368.       Otros requerimientos hardware, no imprescindibles, pero sí convenientes
  369.  son:
  370.  
  371.  - Poseer un ordenador personal 386 o superior. Debido al gran volumen de
  372.  información que se maneja en el tutor, determinadas operaciones, como puede
  373.  ser la lectura de algunos ficheros de datos, se pueden hacer un poco lentas
  374.  en ordenadores modelo XT y AT.
  375.  
  376.  - Poseer una tarjeta de vídeo y un monitor de color. Para hacer más agrada-
  377.  ble el estudio del C y del C++ se ha utilizado una gran variedad de colores,
  378.  sobre todo en las ventanas de teoría; obviamente, en un monitor monocromo no
  379.  se van a ver los colores y la calidad del programa se va a reducir drástica-
  380.  mente.
  381.  
  382.  - Poseer una tarjeta gráfica VGA o superior. Aparte de que la resolución de
  383.  estas tarjetas es bastante superior a otras tarjetas como CGA y EGA, el pro-
  384.  grama de presentación y algunos ejemplos que utilizan gráficos pierden bas-
  385.  tante calidad con tarjetas cuyas resoluciones sean inferiores a la VGA.
  386.  
  387.  - Poseer un ratón. Todas las tareas, excepto la introducción de texto en
  388.  las ventanas de edición, se pueden realizar con el ratón además de con el
  389.  teclado. La utilización del ratón por parte del usuario suele ser más cómoda
  390.  que la del teclado; además tiene una ventaja adicional en las ventanas de
  391.  visualización (cf. 4.6), ya que el desplazamiento del texto visualizado en
  392.  la ventana se hace mucho más rápido con el ratón que con el teclado. El pro-
  393.  grama permite ratones, con sus respectivos controladores de ratones, de dos
  394.  y tres botones.
  395.  
  396.  - Poseer memoria extendida o un mínimo de 256 Kbytes de memoria libre de
  397.  memoria expandida. El programa TUTOR.EXE está diseñado con overlays (cf.
  398.  4.8.12); por defecto, los intercambios se hacen entre disco y memoria con-
  399.  vencional, pero también se pueden hacer tales intercambios tanto entre
  400.  memoria extendida y memoria convencional como entre memoria expandida y me-
  401.  moria convencional, lo cual supone un aumento de la velocidad de ejecución
  402.  del programa; para usar alguna de estas dos memorias hay que especificárselo
  403.  explícitamente al programa mediante los parámetros /x y /p (cf. 4.8.12).
  404.  
  405.  - Poseer una impresora que imprima como mínimo 80 columnas de texto. Concre-
  406.  tamente, hay tres situaciones en el tutor en las que se da la posibilidad de
  407.  imprimir: la teoría (cf. 4.14), los ejemplos (cf. 4.16) y los ejercicios
  408.  (cf. 4.17, 4.17.1, 4.17.2, 4.17.3 y 4.17.4).
  409.  
  410.  
  411.  
  412.  3.2.2.- REQUERIMIENTOS SOFTWARE.
  413.  --------------------------------
  414.  
  415.       El único requerimiento software imprescindible es poseer el sistema
  416.  operativo MS-DOS 3.0 o una versión superior.
  417.  
  418.       Si se va a utilizar el ratón, la memoria extendida o la memoria expan-
  419.  dida, es necesario cargar previamente el controlador para el ratón, para la
  420.  memoria extendida o para la memoria expandida, respectivamente. Existen dos
  421.  versiones principales de estos controladores: como programa directamente
  422.  ejecutable (con extensión .COM o .EXE) y como programa ejecutable al encen-
  423.  der el ordenador (con extensión .SYS y que hay que incluir en el fichero
  424.  CONFIG.SYS).
  425.  
  426.       Aunque no sea imprescindible poseer un compilador de C y C++ sí es
  427.  inexcusable no tenerlo, puesto que no se puede aprender estos dos lenguajes
  428.  cursando el tutor sin hacer programas. El usuario puede utilizar cualquier
  429.  compilador de C y de C++, aunque aprovecharía mejor el tutor si los compi-
  430.  ladores fueran de Borland puesto que además de explicar el ANSI C y el ANSI
  431.  C++ también se explica en el tutor, opcionalmente, Turbo C y Turbo C++ (o
  432.  Borland C++). Todo el paquete que forma este tutor (TUTOR.EXE, ejemplos y
  433.  programas auxiliares) han sido desarrollados utilizando Borland C++ 2.0 de
  434.  Borland International.
  435.  
  436.  
  437.  
  438.  3.2.3.- REQUERIMIENTOS DE CONOCIMIENTOS.
  439.  ----------------------------------------
  440.  
  441.       El tutor presupone que el usuario sabe utilizar un ordenador personal
  442.  y que tiene unos conocimientos mínimos acerca de él (funcionamiento, peri-
  443.  féricos, etc.).
  444.  
  445.       Es importante reseñar que el tutor no enseña a programar sino que en-
  446.  seña los lenguajes C y C++, o dicho de otro modo, enseña a programar en los
  447.  lenguajes C y C++. Esto quiere decir que las nociones generales de progra-
  448.  mación (qué es una variable, qué es un programa, qué es una función o una
  449.  subrutina, etc.) se explican muy someramente. A pesar de lo comentado, un
  450.  usuario novicio en el arte de programar podrá aprender a programar al mismo
  451.  tiempo que aprende el lenguaje C valiéndose de este tutor, aunque, claro
  452.  está, tendrá que esforzarse un poco más que aquél que ya sabe programar en
  453.  algún otro lenguaje (como pueden ser los lenguajes Pascal o BASIC).
  454.  
  455.  
  456.  
  457.  3.3.- COMO SE INSTALA EL PAQUETE.
  458.  ---------------------------------
  459.  
  460.       Existen dos formas de instalar el programa: instalación automática e
  461.  instalación manual. La primera puede ser realizada cuando el usuario tiene
  462.  en su poder el disquette original del programa o una copia de este disquet-
  463.  te. La segunda tendrá que ser usada por el usuario para instalar el programa
  464.  si no dispone del disquette original del tutor.
  465.  
  466.  
  467.  
  468.  3.3.1.- INSTALACION AUTOMATICA.
  469.  -------------------------------
  470.  
  471.       El disquette del programa contiene tres ficheros: INSTALAR.EXE,
  472.  INSTALA.BAT y PAQTUTOR.EXE.
  473.  
  474.       La única condición para poder realizar la instalación automática, es
  475.  decir, utilizando un programa de autoinstalación (INSTALAR.EXE), es que se
  476.  ejecute INSTALAR.EXE estando el fichero PAQTUTOR.EXE en el directorio de
  477.  trabajo. Esta condición se da ejecutando el programa INSTALAR.EXE desde el
  478.  directorio raíz del disquete original del paquete, ya que en el directorio
  479.  raíz de este disquette se encuentran los tres ficheros mencionados.
  480.  
  481.       Si suponemos que el usuario tiene el disquette original, esto es, un
  482.  disquette con los ficheros INSTALAR.EXE, INSTALA.BAT y PAQTUTOR.EXE en el
  483.  directorio raíz, y que ese disquette corresponde a la unidad A del ordenador
  484.  en el cual se va a instalar el tutor, los pasos a seguir para instalar el
  485.  programa en el directorio C:\TUTOR son los siguientes:
  486.  
  487.  1. Escribimos
  488.  
  489.       A:
  490.  
  491.  para cambiar de unidad.
  492.  
  493.  2. Si no nos encontramos en el directorio raíz de la unidad A, escribimos
  494.  
  495.       CD \
  496.  
  497.  para cambiar de directorio.
  498.  
  499.  3. Escribimos
  500.  
  501.       INSTALAR C:\TUTOR
  502.  
  503.  para ejecutar el programa de autoinstalación con la especificación del
  504.  directorio de destino C:\TUTOR como parámetro.
  505.  
  506.       Una vez ejecutados los pasos anteriores nos encontramos en el direc-
  507.  torio C:\TUTOR en el cual están todos los ficheros que componen el paquete,
  508.  aunque no estarán ni los ficheros INSTALAR.EXE, INSTALA.BAT ni el fichero
  509.  PAQTUTOR.EXE, ya que solamente se utilizan en el proceso de instalación. Un
  510.  mensaje nos informa de que podemos acceder al manual de usuario (en caso de
  511.  que no tengamos el libro) desde la opción 1 del menú principal del programa
  512.  TUTOR.EXE.
  513.  
  514.       En el proceso de autoinstalación pueden aparecer los siguientes mensa-
  515.  jes de error:
  516.  
  517.  - "SINTAXIS: instalar directorio". Este mensaje consta en realidad de
  518.  varias líneas más. Aparece cuando el número de argumentos pasados al
  519.  programa INSTALAR.EXE es incorrecto; este programa sólo admite un argu-
  520.  mento: la especificación del directorio en el cual se va a instalar el
  521.  tutor; el nombre del directorio puede contener opcionalmente la letra
  522.  de la unidad y no es obligatorio que empiece por el directorio raíz;
  523.  tampoco es necesario que el directorio exista ya que si no existe el
  524.  programa de instalación lo creará.
  525.  
  526.  - "Fichero PAQTUTOR.EXE no encontrado". Este error ocurre si el fichero
  527.  PAQTUTOR.EXE no está en el directorio de trabajo.
  528.  
  529.  - "No hay suficiente espacio libre en unidad <unidad>:" donde <unidad> es
  530.  la unidad del directorio de destino. El disco en el que se va a instalar el
  531.  programa debe tener aproximadamente 3'5 Mb libres. Si se intenta instalar
  532.  el programa en un disco con menos de 3'5 megabytes libres se emitirá este
  533.  mensaje de error y no se instalará el tutor.
  534.  
  535.  - "No es posible crear el directorio <directorio>" donde <directorio> es el
  536.  directorio en el cual se pretende instalar el programa. Este error acontece
  537.  cuando el directorio de destino no existe y falla el intento de crearlo.
  538.  Algunas causas de fallo pueden ser: disco protegido contra escritura, disco
  539.  lleno, etc. El usuario puede intentar crearlo a mano, es decir, con cual-
  540.  quier programa o comando del sistema operativo que cree directorios, y des-
  541.  pués intentar la instalación, ya que el programa INSTALAR.EXE no intentará
  542.  crear el directorio de destino si éste existe.
  543.  
  544.       Si no ocurre ninguno de los errores anteriores, el programa de insta-
  545.  lación nos va informando de cada operación que está realizando.
  546.  
  547.       Además del fichero ejecutable INSTALAR.EXE, también se suministra el fi-
  548.  chero por lotes INSTALA.BAT que contiene una única línea que es la siguiente:
  549.  
  550.                 instalar c:\tutor
  551.  
  552.  que instala el paquete en el directorio c:\tutor del disco duro.
  553.  
  554.  
  555.  
  556.  3.3.2.- INSTALACION MANUAL.
  557.  ---------------------------
  558.  
  559.       La instalación manual tendrá que ser usada cuando el usuario no posea
  560.  los ficheros de instalación (INSTALAR.EXE, INSTALA.BAT y PAQTUTOR.EXE) que
  561.  se suministran en el disquette original.
  562.  
  563.       Para instalar en este caso el tutor, el usuario ha de copiar manual-
  564.  mente todos los ficheros que lo componen al directorio en el cual desea
  565.  trabajar con el programa. Copiar manualmente los ficheros quiere decir
  566.  copiarlos con cualquier orden del DOS (como COPY o XCOPY) o con cualquier
  567.  programa que copie ficheros de un sitio a otro.
  568.  
  569.  
  570.  
  571.  3.4.- FICHEROS QUE COMPONEN EL PAQUETE.
  572.  ---------------------------------------
  573.  
  574.       Los ficheros de instalación son:
  575.  
  576.  - INSTALAR.EXE: programa de autoinstalación.
  577.  
  578.  - INSTALA.BAT: fichero por lotes que ejecuta INSTALAR.EXE.
  579.  
  580.  - PAQTUTOR.EXE: programa de autoextracción, en él se encuentran todos los
  581.    ficheros que forman el paquete del tutor.
  582.  
  583.       Los ficheros del tutor, y que están comprimidos en PAQTUTOR.EXE, son
  584.  los siguientes:
  585.  
  586.  - TUTOR.EXE: programa principal.
  587.  
  588.  - TUTOR.DOC: fichero de información general, en él se encuentra el manual de
  589.    usuario.
  590.  
  591.  - TUTOR.IND: fichero índice, necesario para acceder de una forma rápida a
  592.    los ficheros de datos.
  593.  
  594.  - TUTOR.HLP: fichero con la ayuda.
  595.  
  596.  - TUTOR.CMP: fichero con el nombre del compilador.
  597.  
  598.  - TUTOR.CFG: fichero de configuración.
  599.  
  600.  - PORTUTOR.EXE: programa que presenta la portada.
  601.  
  602.  - TEOC.DAT: fichero con la teoría del lenguaje C.
  603.  
  604.  - EJERC.DAT: fichero con los ejercicios del lenguaje C.
  605.  
  606.  - EJEMC.DAT: fichero con los ejemplos del lenguaje C.
  607.  
  608.  - PRTUTC.EXE: programas ejemplos ejecutables de C.
  609.  
  610.  - TEOCPP.DAT: fichero con la teoría del lenguaje C++.
  611.  
  612.  - EJERCPP.DAT: fichero con los ejercicios del lenguaje C++.
  613.  
  614.  - EJEMCPP.DAT: fichero con los ejemplos del lenguaje C++.
  615.  
  616.  - PRTUTCPP.EXE: programas ejemplos ejecutables de C++.
  617.  
  618.  - INDEXAR.EXE: programa para indexar los ficheros de datos; cada vez que se
  619.    modifica un ficheros de datos es necesario indexarlo con este programa.
  620.  
  621.  - I.BAT: fichero por lotes que ejecuta INDEXAR.EXE
  622.  
  623.  - COMPILAD.EXE: programa con el cual se introduce el nombre del compilador
  624.    de C o de C++ en el fichero de texto que contiene dicho nombre (TUTOR.CMP).
  625.  
  626.  - C.BAT: fichero por lotes que ejecuta COMPILAD.EXE.
  627.  
  628.  - EJECUTAR.EXE: programa para ejecutar los ejemplos que se encuentran en los
  629.    programas PRTUTC.EXE y PRTUTCPP.EXE.
  630.  
  631.  
  632.  
  633.  4.- EL PROGRAMA TUTOR.EXE.
  634.  --------------------------
  635.  
  636.       El programa TUTOR.EXE forma la columna vertebral de todo el paquete,
  637.  puesto que es el programa principal y el único que es absolutamente impres-
  638.  cindible.
  639.  
  640.  
  641.  4.1.- EJECUCION.
  642.  ----------------
  643.  
  644.       Podemos diferenciar tres formas de entrar en el tutor:
  645.  
  646.  1) Escribiendo
  647.  
  648.       TUTOR
  649.  
  650.  en el directorio en el que está instalado el tutor. Ejecutando el tutor de
  651.  esta manera entramos en él con las opciones modificables (cf. 4.18 para
  652.  saber cuáles son las opciones) por defecto. En primer lugar, el tutor
  653.  presentará la pantalla de presentación, para ello ejecuta el programa
  654.  PORTUTOR.EXE (cf. 4.20). Tras pulsar cualquier tecla en la pantalla de
  655.  presentación regresamos al programa TUTOR.EXE el cual muestra la pantalla
  656.  correspondiente al menú principal (cf. 4.10). Las distintas pantallas que
  657.  constituyen el tutor se explicarán en los apartados siguientes.
  658.  
  659.  2) Escribiendo
  660.  
  661.       TUTOR lista_de_argumentos
  662.  
  663.  donde el número de argumentos es variable; si no hay ningún argumento esta-
  664.  mos en el caso anterior. Cada uno de los argumentos que tiene a su dispo-
  665.  sición el usuario para llamar al tutor están detallados en el apartado 4.18.
  666.  
  667.  3) Escribiendo
  668.  
  669.       T lista_de_argumentos
  670.  
  671.  donde lista_de_argumentos representa 0, 1, ..., 9 argumentos (cf. 4.18). En
  672.  este caso estamos ejecutando el fichero por lotes T.BAT (cf. 4.19) el cual
  673.  ejecuta el programa TUTOR.EXE con una serie de argumentos predefinidos. Esta
  674.  es la forma más aconsejable de ejecutar el tutor, ya que, por ejemplo, el
  675.  fichero T.BAT ejecuta TUTOR.EXE con el argumento NP que hace que no se mues-
  676.  tre la pantalla de presentación; ver la pantalla de presentación cada vez
  677.  que se entra en el tutor podría resultar tedioso. El fichero T.BAT también
  678.  activa el programa TUTOR.EXE con otros argumentos (cf. 4.19).
  679.  
  680.  
  681.  
  682.  4.2.- LINEAS DE ESTADO.
  683.  -----------------------
  684.  
  685.       Las líneas de estado son aquellas líneas de pantalla que nos muestra
  686.  alguna información relativa a la pantalla actual.
  687.  
  688.       Las líneas de estado son dos: línea superior y línea inferior.
  689.  
  690.       La línea superior nos informa en todo momento del lugar del tutor en el
  691.  que nos encontramos. Este mensaje aparece centrado en la primera línea de la
  692.  pantalla. Si, por ejemplo, estamos realizando un ejercicio tipo test de la
  693.  lección 1 del lenguaje C, el mensaje es: "Tutor de C/C++ 1.0 » Lenguaje C »
  694.  Lección 1 » Ejercicios » Test".
  695.  
  696.       La línea inferior nos informa de la mayoría de las teclas que tenemos
  697.  disponibles en cada momento. Las únicas teclas que muchas veces no aparecen
  698.  en la línea inferior y que podemos usarlas en ese momento son las teclas de
  699.  menú, de visualización y de edición, puesto que son muchas teclas y son evi-
  700.  dentes. Todas las demás teclas que tenemos a nuestra disposición en cada
  701.  instante están especificadas en la línea inferior junto con su acción aso-
  702.  ciada. Esta línea tiene un doble objetivo; el primero es, como se acaba de
  703.  comentar, informar de qué teclas podemos utilizar; el segundo objetivo es
  704.  poder activar la acción asociada a cada tecla con el ratón como alternativa
  705.  al teclado (cf. 4.4).
  706.  
  707.  
  708.  
  709.  4.3.- TECLADO.
  710.  --------------
  711.  
  712.       En este apartado vamos a describir algunas teclas que están a nuestra
  713.  disposición prácticamente a lo largo de todo el tutor. En determinados
  714.  momentos estas teclas no estarán disponibles, lo cual se advertirá porque
  715.  no estarán mostradas en la línea inferior. Estas teclas las denominaremos
  716.  teclas general en este manual para no describirlas en la explicación
  717.  pormenorizada de cada proceso del tutor.
  718.  
  719.       Las teclas generales son las siguientes:
  720.  
  721.  - <F1>: Ayuda local. La pulsación de esta tecla provoca que aparezca una
  722.  ventana de visualización (cf. 4.6) en el centro de la pantalla, que conten-
  723.  drá la ayuda relativa al proceso desde el cual se pulsó la tecla <F1>. Si
  724.  pulsamos, por ejemplo, <F1> mientras estudiamos la teoría de una determinada
  725.  lección del lenguaje establecido, se mostrará toda la ayuda existente acerca
  726.  del proceso de teoría.
  727.  
  728.  - <ESC>: Salir del proceso actual; también se puede decir que su significado
  729.  es regresar al punto anterior, exceptuando un caso: cuando se pulsa <ESC>
  730.  mientras se lee un fichero de datos (cf. 5), en cuyo caso lo único que se
  731.  provoca es que se termine la lectura. Pulsar <ESC> en el menú principal es
  732.  equivalente a pulsar <ALT-X> puesto que regresar al punto anterior del menú
  733.  principal significa salirse del tutor.
  734.  
  735.  - <ALT-X>: Abandonar tutor. Pulsando una sola vez esta tecla se produce un
  736.  abandono del tutor con confirmación, pulsándola dos veces consecutivas se
  737.  consigue abandonar el tutor sin confirmación (en realidad, se produce la
  738.  confirmación, pero pulsando rápidamente dos veces la tecla <ALT-X> la salida
  739.  del tutor es inmediata). Tras pulsar <ALT-X> aparece en el centro de la
  740.  pantalla un pequeño menú (cf. 4.5) en el cual se nos pregunta si deseamos
  741.  abandonar realmente el tutor, lo que previene la activación accidental del
  742.  proceso de salida del tutor. Si pulsamos <ESC> en este menú, cancelamos la
  743.  operación y no nos salimos (recordar el significado de regresar al punto
  744.  anterior de la tecla <ESC>).
  745.  
  746.  
  747.  
  748.  4.4.- RATON.
  749.  ------------
  750.  
  751.       Si el usuario posee un ratón y el controlador de ratón está cargado
  752.  podrá realizar prácticamente todas las operaciones con el ratón. Sólo hay
  753.  una cosa que no se puede hacer con el ratón en este programa: la introduc-
  754.  ción de texto en las ventanas de edición, lo cual es bastante lógico, aunque
  755.  sí podemos cambiar la posición del cursor de texto con el ratón en dichas
  756.  ventanas.
  757.  
  758.       La presiones y significados asociados a cada presión que se describen
  759.  a continuación son válidas para todo el programa:
  760.  
  761.  - <BOTIZQ>: la presión del botón izquierdo del ratón tiene el significado de
  762.  "aceptar", pero no con el mismo sentido que la tecla <RETURN> de teclado. El
  763.  efecto que se consigue con la presión de este botón es dependiente de la po-
  764.  sición del cursor del ratón en ese momento. Hay cinco clases de regiones de
  765.  pantalla en los cuales se puede realizar una acción asociada a la presión
  766.  del botón <BOTIZQ> estando el cursor del ratón dentro de esas regiones, a
  767.  saber:
  768.  
  769.       · Estando el cursor del ratón en la línea inferior: si el botón <BOTIZQ>
  770.       es presionado entre la primera y última letra de unos de los mensajes
  771.       de la línea de estado inferior, se activa la acción descrita por ese
  772.       mensaje, es decir, que dicha presión es equivalente a la pulsación de
  773.       la tecla que aparece en el mensaje. Por ejemplo, si el mensaje es "F1
  774.       Ayuda", se puede presionar <BOTIZQ> entre la letra "F" y la letra "a"
  775.       del mensaje para activar la ayuda, es decir, que sería equivalente a la
  776.       pulsación de la tecla <F1> del teclado.
  777.  
  778.       · Estando el cursor del ratón en el interior de una ventana de menú:
  779.       descrito en apartado 4.5.
  780.  
  781.       · Estando el cursor del ratón en el interior de una ventana de visua-
  782.       lización: descrito en apartado 4.6.
  783.  
  784.       · Estando el cursor del ratón en el interior de una ventana de edición:
  785.       descrito en apartado 4.7.
  786.  
  787.       · Cuando en la línea de estado inferior aparece un mensaje del tipo
  788.       "pulsa cualquier tecla o cualquier botón del ratón para ...": en este
  789.       caso, la presión de cualquier botón, esté mostrado u oculto el cursor
  790.       del ratón, es equivalente a la pulsación de cualquier tecla. La acción
  791.       asociada a dicha presión estará aclarada en el mensaje de la línea
  792.       inferior.
  793.  
  794.  
  795.  - <BOTDER>: la presión del botón derecho del ratón es siempre equivalente a
  796.  la pulsación de la tecla <ESC>.
  797.  
  798.  - <BOTCEN>: la presión del botón central del ratón, en caso de que el ratón
  799.  disponga de tres botones y el controlador del ratón trabaje con tres botones,
  800.  es siempre equivalente a la pulsación de la tecla <F1>.
  801.  
  802.  - <BOTDER-BOTDER>: un doble clic con el botón derecho del ratón es siempre
  803.  equivalente a la pulsación de las teclas <ALT-X>.
  804.  
  805.  - <BOTIZQ-BOTDER>: la presión simultánea de los botones izquierdo y derecho
  806.  del ratón es siempre equivalente a pulsar las teclas <ALT-X> dos veces segui-
  807.  das, lo cual produce una salida inmediatamente del tutor (sin confirmación).
  808.  
  809.  
  810.  
  811.  4.5.- VENTANAS DE MENU.
  812.  -----------------------
  813.  
  814.       Un menú es un proceso que muestra varias opciones de entre las cuales
  815.  el usuario ha de elegir una.
  816.  
  817.       Hay dos tipos de menús en este tutor:
  818.  
  819.  - Menús verticales: cada opción empieza en la misma columna de la pantalla
  820.  pero sin embargo cada una se encuentra en una línea distinta.
  821.  
  822.  - Menús horizontales: cada opción se encuentra en la misma línea de la pan-
  823.  talla pero sin embargo cada una empieza en una columna distinta.
  824.  
  825.       Los dos tipos de menús citados se manejan exactamente igual por parte
  826.  del usuario y los dos tienen las mismas teclas de menú.
  827.  
  828.       Las teclas de menú son aquéllas teclas específicas para el proceso de
  829.  menú, o sea, que si estas teclas se utilizan en otro proceso distinto ten-
  830.  drán un significado distinto al que se describe aquí. Estas teclas son las
  831.  siguientes:
  832.  
  833.  - <LEFT> o <UP>: los cursores izquierdo y arriba cambian la opción activa
  834.  del menú a la opción anterior. Si la opción activa actual es la primera,
  835.  estas teclas hacen que la nueva opción activa del menú sea la última.
  836.  
  837.  - <RIGHT> o <DOWN>: los cursores derecho y abajo cambian la opción activa
  838.  del menú a la opción siguiente. Si la opción activa actual es la última,
  839.  estas teclas hacen que la nueva opción activa del menú sea la primera.
  840.  
  841.  - <HOME> o <PGUP>: la tecla de inicio y la tecla de retroceso de página
  842.  (llamada también página arriba) ponen la primera opción del menú como
  843.  opción activa.
  844.  
  845.  - <END> o <PGDN>: la tecla de fin y la tecla de avance de página (llamada
  846.  también página abajo) ponen la última opción del menú como opción activa.
  847.  
  848.  - <RETURN>: la tecla de retorno (llamada también Enter) acepta la opción
  849.  activa actual.
  850.  
  851.  - <ESC>: cancela proceso de menú y vuelve a proceso llamador del menú.
  852.  
  853.  - Letra correspondiente a letra sobreimpresionada en el menú: pone opción
  854.  del menú que contiene esa letra sobreimpresionada como opción activa y
  855.  además la acepta, es decir, que equivale a poner dicha opción como opción
  856.  activa y pulsar <RETURN>.
  857.  
  858.       Todas las teclas de menú descritas son válidas para cualquier menú que
  859.  aparezca en el programa.
  860.  
  861.       En el caso de los menús, la pulsación del botón izquierdo (<BOTIZQ>)
  862.  del ratón mientras el cursor de éste se encuentra en una opción del menú es
  863.  equivalente a la pulsación de la tecla sobreimpresionada de esa opción, es
  864.  decir, activa dicha opción.
  865.  
  866.       Los menús que aparecen en el tutor son: menú principal (cf. 4.10), menú
  867.  de lecciones (cf. 4.12), menú de tareas (cf. 4.13), menú de abandonar tutor
  868.  (cf. 4.9), menú de error (cf. 6.1.3) y menú de los ejercicios tipo test (cf.
  869.  4.17.1).
  870.  
  871.  
  872.  
  873.  4.6.- VENTANAS DE VISUALIZACION.
  874.  --------------------------------
  875.  
  876.       Una ventana de visualización es una ventana de pantalla en cuyo in-
  877.  terior se visualiza un texto que puede desplazarse a través de la ventana.
  878.  Si la ventana no tiene al menos una barra, ya sea horizontal o vertical,
  879.  no se considerará ventana de visualización puesto que el texto no podrá
  880.  desplazarse.
  881.  
  882.       Las teclas de visualización son las teclas que tienen un significado es-
  883.  pecífico para los procesos de visualización. Estas teclas son las siguientes:
  884.  
  885.  - <LEFT>, <RIGHT>, <UP> y <DOWN>: mueven el cursor una posición a la izquier-
  886.  da, a la derecha, hacia arriba y hacia abajo, respectivamente.
  887.  
  888.  - <CTRL-LEFT> y <CTRL-RIGHT>: mueven el cursor 15 posiciones sucesivas a la
  889.  izquierda y derecha respectivamente.
  890.  
  891.  - <PGUP> y <PGDN>: mueven el cursor una página de visualización arriba y
  892.  abajo respectivamente.
  893.  
  894.  - <CTRL-PGUP> y <CTRL-PGDN>: mueven el cursor al principio y al final,
  895.  respectivamente, de la información a visualizar, pero manteniendo la
  896.  misma columna de visualización.
  897.  
  898.  - <HOME> y <END>: mueven el cursor al principio y al final, respectivamente,
  899.  de la información a visualizar, pero visualizando a partir de la primera
  900.  columna de dicha información a visualizar.
  901.  
  902.  - <ALT-C>: pone y quita el modo cursor.
  903.  
  904.  - <CTRL-B>: busca un texto en la ventana de visualización. Se pide la
  905.  introducción del texto y la búsqueda empieza por la primera línea. Si se
  906.  encuentra, la primera línea visualizada contendrá el texto buscado; si
  907.  no se encuentra, se visualizará un mensaje que nos informa de ello.
  908.  
  909.  - <CTRL-R>: repetir búsqueda. No se pide la introducción del texto porque
  910.  ya se introdujo anteriormente. La búsqueda empieza en la línea siguiente a
  911.  la línea en la que se encontró el texto la última vez. Si no se encuentra
  912.  el texto o la última búsqueda no tuvo éxito, se visualizará un mensaje que
  913.  nos informa de ello. Si se encuentra, la primera línea visualizada contendrá
  914.  el texto buscado.
  915.  
  916.  - <CTRL-A>: Búsqueda adelante. Es similar a <CTRL-B> pero con dos diferen-
  917.  cias. La primera es que se solicita la introducción del texto con el texto
  918.  anterior por defecto. La segunda diferencia es que la búsqueda empieza a
  919.  partir de la primera línea visualizada en la ventana, inclusive ésta.
  920.  
  921.  - <ESC>: sale de la visualización.
  922.  
  923.       Si se está en modo cursor, se visualiza el cursor de texto. Si no se
  924.  está en modo cursor, el cursor de texto es invisible. Al crear una ventana
  925.  de visualización se está por defecto en modo no cursor porque es mucho más
  926.  cómodo para visualizar un texto. En modo cursor, mover el cursor una posi-
  927.  ción hacia arriba, significa mover el cursor de texto una línea hacia arri-
  928.  ba; sin embargo, en modo no cursor significa visualizar la línea no visua-
  929.  lizada inmediatamente anterior a la primera línea visualizada del texto.
  930.  
  931.       Cuando se intenta ver más líneas hacia abajo del texto y el texto de la
  932.  ventana no se mueve es que ya está visualizada en la ventana la última línea
  933.  del texto a visualizar.
  934.  
  935.       Las ventanas de visualización tienen una barra vertical y/o una barra
  936.  horizontal en los lados derecho e inferior respectivamente. Si no aparece la
  937.  barra horizontal significa que el texto no se puede desplazar a izquierda y
  938.  derecha en la pantalla. Si no aparece la barra vertical el texto no se podrá
  939.  desplazar hacia abajo y hacia arriba en la ventana de visualización.
  940.  
  941.       Estas barras tienen dos utilidades:
  942.  
  943.  1ª) Nos informan del lugar del texto en el que estamos situados actualmente,
  944.  es decir, lugar del cursor (ya sea real como en modo cursor o virtual como
  945.  en modo no cursor).
  946.  
  947.  2ª) Movernos a través del texto con el ratón. Esto se explica en los
  948.  siguientes párrafos.
  949.  
  950.       En muchas ventanas de visualización también aparecen unos números en la
  951.  esquina superior derecha de la ventana. Hay tres posibles formatos de estos
  952.  números:
  953.  
  954.    1) Cuando sólo hay barra vertical:         l1-l2
  955.    2) Cuando sólo hay barra horizontal:       c1-c2
  956.    3) Cuando hay barra horizontal y vertical: l1-l2:c1-c2
  957.  
  958.  donde l1 y l2 representan, respectivamente, los números de la primera y
  959.  última línea visualizada; y c1 y c2 representan, respectivamente, los
  960.  números de la primera y última columna visualizada.
  961.  
  962.       Presionando el botón izquierdo (<BOTIZQ>) del ratón en algunos sitios
  963.  de la ventana de visualización se obtienen algunas acciones que se discuten
  964.  a continuación. Todo lo que se va a decir del ratón en los puntos siguientes
  965.  es válido para todas las ventanas de visualización.
  966.  
  967.  - Presionar <BOTIZQ> sobre la flecha hacia arriba de la barra vertical es
  968.  equivalente a pulsar <UP>.
  969.  
  970.  - Presionar <BOTIZQ) sobre la flecha hacia abajo de la barra vertical es
  971.  equivalente a pulsar <DOWN>.
  972.  
  973.  - Presionar <BOTIZQ> sobre la flecha izquierda de la barra horizontal es
  974.  equivalente a pulsar <LEFT>.
  975.  
  976.  - Presionar <BOTIZQ> sobre la flecha derecha de la barra horizontal es
  977.  equivalente a pulsar <RIGHT>.
  978.  
  979.  - Presionar <BOTIZQ> en una posición de la barra vertical entre la flecha
  980.  arriba y el cursor de la barra es equivalente a pulsar <PGUP>.
  981.  
  982.  - Presionar <BOTIZQ> en una posición de la barra vertical entre el cursor
  983.  de la barra y la flecha abajo es equivalente a pulsar <PGDN>.
  984.  
  985.  - Presionar <BOTIZQ> en una posición de la barra horizontal entre la flecha
  986.  izquierda y el cursor de la barra es equivalente a pulsar las teclas
  987.  <CTRL-LEFT>.
  988.  
  989.  - Presionar <BOTIZQ> en una posición de la barra horizontal entre el cursor
  990.  de la barra y la flecha derecha es equivalente a pulsar las teclas
  991.  <CTRL-RIGHT>.
  992.  
  993.  - Presionar <BOTIZQ> en una posición interior de la ventana (en una posición
  994.  de texto de visualización) en modo cursor hace que el cursor de texto se
  995.  coloque en el lugar en el que está el cursor del ratón. No se puede situar
  996.  el cursor de texto por debajo de la última línea de texto a visualizar.
  997.  
  998.       Si en cualquiera de las 8 primeras posiciones anteriores, es decir, en
  999.  todas las posiciones anteriores excepto la última, se presiona el botón
  1000.  <BOTIZQ> del ratón sin soltarlo, no se genera el retardo (cf. 4.8.10) y el
  1001.  proceso iterativo es más rápido, aunque en ese caso puede que no se visua-
  1002.  lice eventualmente el cursor del ratón.
  1003.  
  1004.       Las ventanas de visualización que aparecen en el tutor son: ventana de
  1005.  información general o manual de usuario (cf. 4.11), ventana de ayuda (cf.
  1006.  4.8), ventana de teoría (cf. 4.14), ventana de ejemplos (cf. 4.16), ventana
  1007.  de propuestas de programas en ejercicios (cf. 4.17.4).
  1008.  
  1009.  
  1010.  
  1011.  4.7.- VENTANAS DE EDICION.
  1012.  --------------------------
  1013.  
  1014.       El proceso de edición consiste en un editor de una sola línea.
  1015.  
  1016.       Las teclas de edición son aquéllas que tienen un significado específico
  1017.  para el proceso de edición. Estas teclas son las siguientes:
  1018.  
  1019.  - <LEFT> y <RIGHT>: mueven el cursor una posición a la izquierda y a la
  1020.  derecha respectivamente.
  1021.  
  1022.  - <HOME> y <END>: mueven el cursor al principio y al final de la línea de
  1023.  edición respectivamente.
  1024.  
  1025.  - <CTRL-LEFT> y <CTRL-RIGHT>: mueven el cursor al principio de la palabra
  1026.  anterior y posterior, respectivamente, de donde está situado el cursor.
  1027.  
  1028.  - <INS>: pone y quita el modo de inserción.
  1029.  
  1030.  - <DEL>: borra el carácter sobre el que está situado el cursor.
  1031.  
  1032.  - <BACKSPACE>: borra el carácter anterior al que está situado el cursor.
  1033.  
  1034.  - <ESC>: sale de la edición.
  1035.  
  1036.  - <RETURN>: confirma la línea editada.
  1037.  
  1038.  - <CTRL-Y>: borra la línea de edición.
  1039.  
  1040.  - <CTRL-Q> <Y>: borra desde donde está situado el cursor hasta el final de
  1041.  la línea.
  1042.  
  1043.       Una flecha en el lado izquierdo de la ventana de edición indica que hay
  1044.  caracteres que no se ven a la izquierda de la ventana. Una flecha en el lado
  1045.  derecho de la ventana de edición indica que hay caracteres que no se ven a
  1046.  la derecha de la ventana.
  1047.  
  1048.       Con el ratón podemos realizar tres operaciones en la ventana de edición:
  1049.  
  1050.  - Cambiar la posición del cursor de texto al lugar en el que está el cursor
  1051.  del ratón presionando el botón izquierdo de éste.
  1052.  
  1053.  - Ver un carácter a la izquierda presionando el botón izquierdo del ratón
  1054.  sobre la flecha que apunta a la izquierda, cuando ésta aparece, en el borde
  1055.  izquierdo de la ventana. Por consiguiente, desplaza los caracteres visuali-
  1056.  zados un lugar a la derecha.
  1057.  
  1058.  - Ver un carácter a la derecha presionando el botón izquierdo del ratón
  1059.  sobre la flecha que apunta a la derecha, cuando ésta aparece, en el borde
  1060.  derecho de la ventana. Por consiguiente, desplaza los caracteres visuali-
  1061.  zados un lugar a la izquierda.
  1062.  
  1063.       Si en cualquiera de las 2 últimas posiciones citadas se presiona el
  1064.  botón izquierdo del ratón sin soltarlo, no se genera el retardo (cf. 3.18.10)
  1065.  y el proceso iterativo es más rápido, aunque en tal caso puede desaparecer
  1066.  momentáneamente el cursor del ratón.
  1067.  
  1068.       Las ventanas de edición que aparecen en el tutor son: ventana que
  1069.  solicita texto de búsqueda (cf. 4.6), ventana que demanda un nombre de
  1070.  fichero (cf. 4.16) y ventana que pide una respuesta a la pregunta planteada
  1071.  en el tipo de ejercicio de preguntas con comprobación (cf. 4.17.2).
  1072.  
  1073.  
  1074.  
  1075.  4.8.- AYUDA LOCAL.
  1076.  ------------------
  1077.  
  1078.       El proceso de ayuda local puede ser invocado prácticamente desde cual-
  1079.  quier lugar del tutor. Este proceso muestra una ventana de visualización
  1080.  (cf. 4.6) centrada en la pantalla y en cuyo interior se encuentra bastante
  1081.  información acerca del proceso llamador de la ayuda. Por ejemplo, si la
  1082.  ayuda se invoca mientras realizamos un test, la ventana de visualización
  1083.  mostrará toda la información disponible acerca del ejercicio tipo test. El
  1084.  texto de la ayuda se encuentra en el fichero TUTOR.HLP y puede ser modifi-
  1085.  cado por el usuario (cf. 5.6).
  1086.  
  1087.       Si la información local es insuficiente el usuario puede ampliarla
  1088.  consultando la información general (opción 1 del menú principal del programa
  1089.  TUTOR.EXE, cf. 4.11).
  1090.  
  1091.       La ayuda se invoca desde teclado pulsando la tecla <F1> y desde el
  1092.  ratón presionando el botón central (<BOTCEN>) o bien presionando <BOTIZQ>
  1093.  mientras el cursor del ratón se encuentra sobre el mensaje de ayuda local
  1094.  en la línea de estado inferior.
  1095.  
  1096.       Del proceso de ayuda nos salimos pulsando la tecla <ESC> del teclado o
  1097.  presionando el botón <BOTDER> del ratón o bien presionando el botón <BOTIZQ>
  1098.  mientras el cursor del ratón se encuentra sobre el mensaje correspondiente a
  1099.  la tecla <ESC> en la línea inferior.
  1100.  
  1101.  
  1102.  
  1103.  4.9.- ABANDONAR TUTOR.
  1104.  ----------------------
  1105.  
  1106.       El proceso de abandonar tutor es invocado cada vez que queremos salir
  1107.  del tutor.
  1108.  
  1109.       Este proceso es invocado, o bien pulsando la tecla <ALT-X> desde tecla-
  1110.  do, o bien presionando el botón <BOTDER-BOTDER> con el ratón, o bien presio-
  1111.  nando el botón <BOTIZQ> mientras el cursor del ratón se encuentra en el men-
  1112.  saje correspondiente a la tecla <ALT-X> en la línea de estado inferior.
  1113.  
  1114.       El proceso de abandonar tutor visualiza una ventana en cuyo interior se
  1115.  pregunta "¿Desea abandonar el tutor?" y se muestra un menú horizontal (cf.
  1116.  4.5) con dos opciones "Sí" y "No". Si realmente deseamos salir del tutor
  1117.  podemos pulsar la tecla <s> o <S> o <ALT-X> o también la tecla <RETURN>
  1118.  cuando la opción activa sea "Sí". Si no pretendemos salir del tutor podemos
  1119.  pulsar la tecla <n> o <N> o <ESC> o también la tecla <RETURN> cuando la
  1120.  opción activa sea "No".
  1121.  
  1122.       Para salir definitivamente del tutor con el ratón estando activado el
  1123.  proceso de abandonar tutor podemos presionar el botón <BOTDER-BOTDER> o
  1124.  también el botón <BOTIZQ> del ratón cuando el cursor del ratón esté o bien
  1125.  en el interior de la opción "Sí" o bien en el interior del mensaje corres-
  1126.  pondiente a la opción "Sí" en la línea de estado inferior. Si queremos
  1127.  anular la salida del tutor podemos presionar el botón <BOTDER> o también
  1128.  el botón <BOTIZQ> del ratón cuando el cursor del ratón esté o bien en el
  1129.  interior de la opción "No" o bien en el interior del mensaje correspondiente
  1130.  a la opción "No" en la línea de estado inferior.
  1131.  
  1132.       El proceso de abandonar tutor (salida con confirmación) se ha suminis-
  1133.  trado para prevenir la salida por equivocación, esto es, para prevenir la
  1134.  pulsación de la tecla <ALT-X> (o una presión de uno de los botones del ratón
  1135.  equivalente a la pulsación de la tecla <ALT-X>) por error. Sin embargo, se
  1136.  puede salir sin confirmación pulsando dos veces la tecla <ALT-X>. Si se pul-
  1137.  sa rápidamente la tecla <ALT-X> dos veces da la impresión de que la salida
  1138.  es inmediata, aunque en realidad se ha invocado al proceso de abandonar tu-
  1139.  tor. La presión de los botones <BOTIZQ-BOTDER> también proporciona una forma
  1140.  rápida de salir del tutor (sin confirmación).
  1141.  
  1142.  
  1143.  
  1144.  4.10.- MENU PRINCIPAL.
  1145.  ----------------------
  1146.  
  1147.       El menú principal es la primera pantalla del programa TUTOR.EXE ya que
  1148.  si aparece la portada, ésta pertenece al programa PORTUTOR.EXE (cf. 4.20).
  1149.  Esta pantalla está constituida, sin tener en cuenta las líneas de estado,
  1150.  por dos ventanas: una es de menú (cf. 4.5) y la otra muestra el estado
  1151.  actual de un indicador.
  1152.  
  1153.       Las opciones de la ventana de menú son las siguientes:
  1154.  
  1155.  1.- Información general: eligiendo esta opción se visualiza el manual de
  1156.  usuario correspondiente al paquete de programas y ficheros que forman el
  1157.  tutor. Este proceso se describe en el apartado 4.11.
  1158.  
  1159.  2.- Tutor de C: eligiendo esta opción seleccionamos como lenguaje de estudio
  1160.  el C y nos vamos al menú de lecciones (cf. 4.12).
  1161.  
  1162.  3.- Tutor de C++: eligiendo esta opción seleccionamos como lenguaje de
  1163.  estudio el C++ y nos vamos al menú de lecciones (cf. 4.12).
  1164.  
  1165.       El indicador de turbo puede estar activado (puesto a on) o desactivado
  1166.  (puesto a off). Por defecto está activado aunque podemos cambiar el valor
  1167.  por defecto con el argumento nt (cf. 4.18.6). Si este indicador está acti-
  1168.  vado, el usuario también estudiará Turbo C y Turbo C++ (o Borland C++)
  1169.  además del ANSI C y el ANSI C++; si, por el contrario, el indicador de turbo
  1170.  está desactivado, entonces el tutor no le mostrará al usuario ninguna infor-
  1171.  mación relativa a los lenguajes C y C++ de Borland International. El indica-
  1172.  dor de turbo puede ser puesto a on y a off pulsando la tecla <ALT-T> o pre-
  1173.  sionando el botón <BOTIZQ> mientras el cursor del ratón está o bien en el
  1174.  interior de la ventana en la que aparece el estado actual de dicho indicador
  1175.  o bien en el interior del mensaje correspondiente a la tecla <ALT-T> en la
  1176.  línea de estado inferior.
  1177.  
  1178.       El usuario puede eludir el menú principal la primera vez que se accede
  1179.  a él con el argumento mp (cf. 4.18.3).
  1180.  
  1181.  
  1182.  
  1183.  4.11.- INFORMACION GENERAL.
  1184.  ---------------------------
  1185.  
  1186.       El proceso de información general es invocado desde el menú principal
  1187.  eligiendo la opción 1 de este menú. Este proceso consiste en mostrar una
  1188.  ventana de visualización (cf. 4.6) en cuyo interior se visualiza el fichero
  1189.  TUTOR.DOC (cf. 5.7). Este fichero contiene el manual de usuario del paquete
  1190.  del Tutor de C/C++ 1.0.
  1191.  
  1192.       Los motivos de incluir el manual de usuario en uno de los ficheros
  1193.  que constituyen el paquete, además de suministrarlo como libro, son los
  1194.  siguientes:
  1195.  
  1196.  - El usuario no necesita el libro. Si una persona copia el programa no nece-
  1197.  sita fotocopiar el manual pues puede imprimir el fichero TUTOR.DOC. El fiche-
  1198.  ro TUTOR.DOC es un fichero de texto ASCII y se puede imprimir con cualquier
  1199.  programa u orden del sistema operativo que imprima ficheros de texto ASCII.
  1200.  
  1201.  - En el fichero TUTOR.DOC pueden localizarse determinadas informaciones de
  1202.  una forma más rápida que en el libro, puesto que en él se pueden realizar
  1203.  búsquedas selectivas de texto con cualquier programa que disponga de facili-
  1204.  dades de búsqueda en ficheros. Todas las ventanas de visualización del tutor
  1205.  ofrecen utilidades de búsqueda a través de las teclas <CTRL-B>, <CTRL-R> y
  1206.  <CTRL-A> (cf. 4.6). Por ejemplo, si estamos en el proceso de información ge-
  1207.  neral y queremos saber qué hace la tecla <CTRL-A>, pulsamos la tecla <CTRL-B>
  1208.  (o sus correspondientes presiones de botones del ratón en la línea de estado
  1209.  inferior), escribimos "CTRL-A" o "<CTRL-A>", y a continuación pulsamos
  1210.  <RETURN>. Si no se encuentra el texto introducido en el fichero TUTOR.DOC se
  1211.  visualiza una ventana con el mensaje "Texto no encontrado.". Si no aparece
  1212.  dicha ventana quiere decir que el texto ha sido encontrado y éste está en la
  1213.  primera línea visualizada. Pulsando sucesivamente <CTRL-R> vamos repitiendo
  1214.  la búsqueda del texto introducido.
  1215.  
  1216.       A este proceso se puede acceder directamente desde el sistema operativo
  1217.  ejecutando el programa de la siguiente forma (cf. 4.18.3):
  1218.  
  1219.       TUTOR MP 1
  1220.  
  1221.  
  1222.  
  1223.  4.12.- MENU DE LECCIONES.
  1224.  -------------------------
  1225.  
  1226.       En este menú aparecen todas las lecciones de que consta el tutor de C o
  1227.  de C++ según lenguaje elegido, por lo tanto, es diferente para el C y para
  1228.  el C++.
  1229.  
  1230.       Cada una de las opciones del menú presenta el título de esa lección. En
  1231.  la ventana de información (ventana que hay entre la ventana de menú y la
  1232.  línea inferior) se expone un pequeño resumen del contenido de esa lección.
  1233.  
  1234.       Las lecciones de C son:
  1235.  
  1236.  - Lección  1: Introducción al lenguaje C.
  1237.       Introducción al lenguaje, orígenes, características, uso y tres
  1238.       programas.
  1239.  
  1240.  - Lección  2: Tipos, operadores y expresiones.
  1241.       Datos, tipos, operadores, expresiones, declaraciones, inicializaciones.
  1242.  
  1243.  - Lección  3: Sentencias de control de programa.
  1244.       Sentencias de control: if, switch, while, for, do, break, continue,
  1245.       goto.
  1246.  
  1247.  - Lección  4: Algunas funciones del lenguaje C.
  1248.       Funciones de control de programa, funciones de E/S y funciones de
  1249.       consola.
  1250.  
  1251.  - Lección  5: Variables y funciones.
  1252.       Declaración y definición de las variables y funciones. Tipos de
  1253.       variables.
  1254.  
  1255.  - Lección  6: Arrays.
  1256.       Declaración, utilización e inicialización de arrays.
  1257.  
  1258.  - Lección  7: Punteros.
  1259.       Declaración, utilización e inicialización de punteros.
  1260.  
  1261.  - Lección  8: Tipos compuestos de datos.
  1262.       Estructuras, campos de bits, uniones, enumeraciones y definición de
  1263.       tipos.
  1264.  
  1265.  - Lección  9: Entrada y Salida (E/S). Ficheros.
  1266.       Flujos y ficheros. Estructura FILE. Librerías <stdio.h> y <io.h>.
  1267.  
  1268.  - Lección 10: La biblioteca de C. (Parte I)
  1269.       Ficheros que se estudian: limits.h, stddef.h, ctype.h, string.h, mem.h,
  1270.       math.h, conio.h, graphics.h.
  1271.  
  1272.  - Lección 11: La biblioteca de C. (Parte II)
  1273.       Ficheros que se estudian: setjmp.h, signal.h, alloc.h, process.h,
  1274.       dir.h, dos.h, bios.h. También se estudia la palabra clave interrupt
  1275.       de Turbo C.
  1276.  
  1277.  - Lección 12: La biblioteca de C. (Parte III)
  1278.       Ficheros que se estudian: stdlib.h, time.h, locale.h, sys\timeb.h,
  1279.       sys\stat.h, values.h, float.h. También se estudia la palabra clave
  1280.       asm de Turbo C.
  1281.  
  1282.       Las lecciones de C++ son:
  1283.  
  1284.  - Lección 1: Introducción al C++.
  1285.       Idea general y origen del lenguaje C++. Programación orientada a
  1286.       objetos (OOP). Características principales de la OOP: encapsulación,
  1287.       herencia y polimorfismo. Forma de implementar las  clases en C++.
  1288.  
  1289.  - Lección 2: C++ como una mejora del C.
  1290.       Nuevas características de C++ no orientadas a objeto.
  1291.  
  1292.  - Lección 3: Clases.
  1293.       El tipo compuesto struct. Visibilidad de los miembros de un objeto
  1294.       (private y public). Tipos compuestos struct y class. Declaración de
  1295.       funciones miembros. Operador de resolución de ámbito (::). Miembro
  1296.       static. Clases anidadas. Estructuras y uniones (struct y union).
  1297.       Punteros a miembros (::*, .* y ->*). Precedencia de operadores.
  1298.  
  1299.  - Lección 4: Constructores y destructores.
  1300.       Concepto de constructor y destructor. Constructores y destructores de
  1301.       objetos estáticos. Almacenamiento libre. Vectores de objetos de clase.
  1302.       Objetos como miembros. Autorreferencia (el puntero this). Funciones
  1303.       miembros constantes. Funciones miembros volátiles.
  1304.  
  1305.  - Lección 5: Conversiones y sobrecarga de operadores.
  1306.       Conversiones tradicionales. Conversiones de TAD's. Algoritmo de se-
  1307.       lección de función sobrecargada. Especificador friend. Sobrecarga de
  1308.       operadores. Objetos grandes. Asignación e inicialización. Ejemplo de
  1309.       sobrecarga de algunos operadores.
  1310.  
  1311.  - Lección 6: Herencia simple.
  1312.       Clases derivadas. Modificadores de acceso public, private y protected.
  1313.       Punteros a clases derivadas. Funciones virtuales. Funciones puras.
  1314.       Clases abstractas. Jerarquía de clases.
  1315.  
  1316.  - Lección 7: Herencia múltiple.
  1317.       Forma general de declarar una clase. Jerarquía circular. Ambigüedad en
  1318.       los miembros. Herencia virtual (clases virtuales). Orden de llamada a
  1319.       los constructores y los destructores. Destructores virtuales. Orden de
  1320.       ejecución de un programa en Turbo C++. Algunos ejemplos curiosos.
  1321.  
  1322.  - Lección 8: Flujos. Entrada/Salida.
  1323.       Jerarquía de clases de E/S. Ficheros de cabecera: iostream.h, fstream.h
  1324.       y strstream.h. Clases definidas en iostream.h: streambuf, ios, istream,
  1325.       ostream, iostream, istream_withassign y ostream_withassign. Clases
  1326.       definidas en fstream.h: filebuf, fstreambase, ifstream, ofstream y
  1327.       fstream. Clases definidas en strstream.h: strstreambuf, strstreambase,
  1328.       istrstream, ostrstream y strstream. Clases bcd y complex.
  1329.  
  1330.       La elección de opción de este menú la primera vez que se accede a él se
  1331.  puede hacer de forma automática con el argumento lección (también se puede
  1332.  escribir de forma abreviada: l) desde la línea de órdenes del sistema opera-
  1333.  tivo (cf. 4.18.4). Por ejemplo, si se llama al programa TUTOR.EXE de la forma
  1334.  
  1335.       TUTOR NP MP 3 L 2
  1336.  
  1337.  la primera pantalla que ve el usuario es la pantalla del menú de tareas con
  1338.  la lección 2 del lenguaje C++ seleccionada.
  1339.  
  1340.  
  1341.       En la siguiente tabla se muestra el número de ventanas de teoría que
  1342.  forman cada lección de los lenguajes C y C++.
  1343.  
  1344.                   Lenguaje   Lección   Número de ventanas
  1345.                   --------   -------   ------------------
  1346.                      C          1              27
  1347.                      C          2              37
  1348.                      C          3              43
  1349.                      C          4              22
  1350.                      C          5              29
  1351.                      C          6              26
  1352.                      C          7              31
  1353.                      C          8              30
  1354.                      C          9              15
  1355.                      C         10              19
  1356.                      C         11              22
  1357.                      C         12              17
  1358.                      Total lenguaje C:        318
  1359.                      C++        1              16
  1360.                      C++        2              30
  1361.                      C++        3              35
  1362.                      C++        4              28
  1363.                      C++        5              38
  1364.                      C++        6              37
  1365.                      C++        7              13
  1366.                      C++        8              33
  1367.                      Total lenguaje C++:      230
  1368.                      Total lenguajes C y C++: 548
  1369.  
  1370.       Como se ve en esta tabla, el número de ventanas conteniendo teoría en
  1371.  las lecciones de los lenguajes C y C++ es de ¡548!. Algunas de ellas llegan
  1372.  a tener más de 1500 líneas de texto.
  1373.  
  1374.  
  1375.       La tabla que se muestra a continuación refleja el número de programas
  1376.  completos (en C y en C++) compilados, ejecutados y probados que aparecen en
  1377.  el tutor:
  1378.  
  1379.  
  1380.        Lenguaje Lección En teoría En pruebas En ejemplos En ejercicios
  1381.        -------- ------- --------- ---------- ----------- -------------
  1382.            C       1        6         1           2            1
  1383.            C       2        9         1           2            0
  1384.            C       3        4         1          10            1
  1385.            C       4        9         1           6            0
  1386.            C       5       21         1           7            1
  1387.            C       6        5         1          10            0
  1388.            C       7       20         1           3            0
  1389.            C       8        6         1           3            0
  1390.            C       9       24         1           7            1
  1391.            C      10       43         1           6            0
  1392.            C      11       39         1           3            0
  1393.            C      12       55         1           3            0
  1394.  
  1395.        SubTotal Progr. C  241        12          62            4
  1396.  
  1397.            C++     1        0         1           1            0
  1398.            C++     2        6         1           1            8
  1399.            C++     3        9         1           2            3
  1400.            C++     4       13         1           4            2
  1401.            C++     5       10         1           7            0
  1402.            C++     6       13         1           1            0
  1403.            C++     7        5         1           1            0
  1404.            C++     8       21         1           3            0
  1405.  
  1406.        SubTotal Progr. C++ 77         8          20           13
  1407.  
  1408.        Total programas C:   319
  1409.        Total programas C++: 118
  1410.  
  1411.        Total programas:     437
  1412.  
  1413.       Como se ve en la tabla anterior, hay un total de ¡437! programas
  1414.  completos en C y C++.
  1415.  
  1416.  
  1417.       La siguiente tabla refleja el número de ejercicios que contiene el
  1418.  tutor para cada una de las lecciones de los lenguajes C y C++.
  1419.  
  1420.                 Lenguaje   Lección   Número de ejercicios
  1421.                 --------   -------   --------------------
  1422.                    C          1               8
  1423.                    C          2              19
  1424.                    C          3              21
  1425.                    C          4              24
  1426.                    C          5              43
  1427.                    C          6              33
  1428.                    C          7              27
  1429.                    C          8              23
  1430.                    C          9              27
  1431.                    C         10              12
  1432.                    C         11              12
  1433.                    C         12               9
  1434.                    Total lenguaje C:        258
  1435.                    C++        1               9
  1436.                    C++        2              26
  1437.                    C++        3              17
  1438.                    C++        4              13
  1439.                    C++        5              26
  1440.                    C++        6              27
  1441.                    C++        7              14
  1442.                    C++        8              18
  1443.                    Total lenguaje C++:      150
  1444.                    Total lenguajes C y C++: 408
  1445.  
  1446.       En la tabla anterior se puede observar que en todo el tutor se le
  1447.  proponen al usuario ¡408! ejercicios, todos ellos resueltos (excepto las
  1448.  propuestas de programas, ya que hay múltiples formas de desarrollar un
  1449.  programa).
  1450.  
  1451.  
  1452.  
  1453.  4.13.- MENU DE TAREAS.
  1454.  ----------------------
  1455.  
  1456.       En el menú de tareas nos encontramos todas las tareas posibles que
  1457.  podemos realizar con la lección y lenguaje elegidos.
  1458.  
  1459.       Las tareas son:
  1460.  
  1461.  - Lección completa: Estudia lección completa, este proceso consiste simple-
  1462.  mente en llamar de forma secuencial y consecutiva a los procesos de teoría,
  1463.  pruebas, ejemplos y ejercicios.
  1464.  
  1465.  - Teoría: Estudia teoría de una lección. La teoría consiste en una sucesión
  1466.  de ventanas con la información adecuada en su interior. El proceso de teoría
  1467.  se describe en el apartado 4.14.
  1468.  
  1469.  - Pruebas: No está implementado todavía. Será una especie de debugger donde
  1470.  se puede ver cómo se ejecuta un programa paso a paso y cómo van variando los
  1471.  valores de sus variables. El proceso de pruebas se describe en el apartado
  1472.  4.14.
  1473.  
  1474.  - Ejemplos: Consiste en una sucesión de ventanas de visualización contenien-
  1475.  do cada una de ellas un programa completo de C o C++, según lenguaje selec-
  1476.  cionado, los cuales los podemos ejecutar, copiarlos a un fichero e imprimir-
  1477.  los, aparte de verlos con la ventana de visualización para ver cómo están
  1478.  implementados. El proceso de ejemplos se describe en el apartado 4.16.
  1479.  
  1480.  - Ejercicios: Proceso en el cual se propone al usuario una serie de ejerci-
  1481.  cios. Hay cuatro tipos de ejercicios: tests (cf. 4.17.1), preguntas con
  1482.  comprobación (cf. 4.17.2), preguntas sin comprobación (cf. 4.17.3) y pro-
  1483.  puestas de programas (cf. 4.14.4). El proceso de ejercicios se describe en
  1484.  el apartado 4.17.
  1485.  
  1486.       La elección de la opción de este menú la primera vez que se accede a él
  1487.  se puede hacer de forma automática con el argumento tarea (también se puede
  1488.  escribir de forma abreviada: t) desde la línea de órdenes del sistema opera-
  1489.  tivo (cf. 4.18.5). Por ejemplo, si se llama al tutor de la forma:
  1490.  
  1491.    TUTOR NP MP 3 L 3 T 2
  1492.  
  1493.  se entra directamente a la teoría de la lección 3 del lenguaje C++.
  1494.  
  1495.       Hay otro argumento particularmente interesante con respecto a las
  1496.  tareas: tc (tarea circular, cf. 4.18.8). Cuando una tarea es circular, la
  1497.  ventana anterior a la primera ventana es la última ventana, y viceversa, la
  1498.  ventana siguiente a la última ventana es la primera ventana. Si, por el con-
  1499.  trario, la tarea es lineal, el intento de ir a la ventana anterior de la
  1500.  primera ventana o el intento de ir a la ventana siguiente de la última ven-
  1501.  tana es equivalente a la pulsación de la tecla <ESC>, esto es, se abandona
  1502.  la tarea en la que estamos.
  1503.  
  1504.  
  1505.  
  1506.  4.14.- TEORIA.
  1507.  --------------
  1508.  
  1509.       El proceso de teoría consiste en una serie de ventanas conteniendo cada
  1510.  una de ellas en su interior el texto de teoría y por los cuales se mueve el
  1511.  usuario libremente.
  1512.  
  1513.       Hay dos tipos de ventanas según la barra vertical:
  1514.  
  1515.  - Ventanas sin barra vertical: se ve todo el texto que contiene sin tener
  1516.  que desplazarlo. Nota: a veces hay que verlo completo tras pulsar una o
  1517.  varias veces una tecla, pero nunca se desplaza hacia arriba y abajo como
  1518.  en las ventanas con barra vertical.
  1519.  
  1520.  - Ventanas con barra vertical: sólo se ve en la ventana una parte del texto
  1521.  que contiene, para ver el resto tenemos que desplazarlo hacia arriba y hacia
  1522.  abajo con las teclas de visualización o con el botón izquierdo del ratón.
  1523.  Las teclas y botones del ratón relacionados con las ventanas de visualiza-
  1524.  ción están explicados en el apartado 4.6.
  1525.  
  1526.       Tras visualizar cada ventana, el programa espera la pulsación de una
  1527.  tecla por parte del usuario.
  1528.  
  1529.       A menudo se producen borrados de pantalla de teoría cuando se acumulan
  1530.  muchas ventanas en la pantalla.
  1531.  
  1532.       Podemos hacer otra clasificación de ventanas según su contenido:
  1533.  
  1534.  - Ventanas de control: estas ventanas están formadas por la primera y última,
  1535.  que indican el principio y el final de la teoría de esa lección, y por las
  1536.  ventanas de partición, que indican el principio y el final de la teoría que
  1537.  se encuentra en memoria.
  1538.  
  1539.  - Ventanas de teoría: estas ventanas contienen en su interior texto de
  1540.  teoría relativa a la lección del lenguaje seleccionado.
  1541.  
  1542.       El argumento pt (partir teoría, cf. 4.18.9) es muy interesante en el
  1543.  proceso de teoría porque debido al gran volumen de información que se maneja
  1544.  en este proceso, en el momento de leer la lección del fichero de datos y
  1545.  cargarla en memoria puede suceder, con algunas lecciones especialmente lar-
  1546.  gas, que se produzca el error de memoria insuficiente (cf. 6.1.2.1). En este
  1547.  caso debemos llamar al programa utilizando este argumento. El significado de
  1548.  pt es partir teoría. Por defecto, las lecciones de teoría se cargan comple-
  1549.  tamente en memoria. Si se especifica este argumento, algunas lecciones de
  1550.  teoría se cargan en memoria en dos partes: cuando carga una, se descarga la
  1551.  otra. De este modo, con la opción pt, y en las lecciones partibles (que sue-
  1552.  len ser las que ocupan mucha memoria) siempre se encuentra una parte en me-
  1553.  moria y otra parte en disco, concretamente en el fichero de datos de teoría
  1554.  (cf. 5.3).
  1555.  
  1556.       Las teclas disponibles en el proceso de teoría son las siguientes:
  1557.  
  1558.  - <F4>: Imprime en la impresora la teoría que hay cargada en memoria. Si
  1559.  sólo hay una parte de la lección cargada en memoria, hay que tener en cuen-
  1560.  ta, que si se pulsa <F4> se imprime sólo la teoría que está en memoria; así
  1561.  que en este caso se debe pulsar <F4> para cada parte cargada en memoria si
  1562.  se desea imprimir la lección completa. La impresión se puede interrumpir
  1563.  pulsando <ESC>.
  1564.  
  1565.  - Teclas generales (cf. 4.3). Con respecto a la tecla <ESC> en este caso hay
  1566.  que hacer un pequeño comentario. Si el proceso de teoría lo activó el proce-
  1567.  so de lección completa, la pulsación de la tecla <ESC> hará que el proceso
  1568.  continúe en las pruebas. Si por el contrario, el proceso de teoría lo activó
  1569.  el usuario  directamente desde el menú de tareas, al pulsar éste la tecla
  1570.  <ESC>, el programa volverá el menú de tareas.
  1571.  
  1572.  - Teclas de visualización (cf. 4.6). Recordar que las teclas <LEFT>,
  1573.  <RIGHT>, <CTRL-LEFT> Y <CTRL-RIGHT> sólo se usan en las ventanas de
  1574.  visualización cuando éstas tienen barra horizontal, y en el proceso
  1575.  de teoría no hay ninguna ventana de visualización con barra horizontal.
  1576.  
  1577.  - <LEFT>: Vuelve a la ventana anterior. Si estamos en la primera ventana
  1578.  y las tareas no son circulares, la pulsación de esta tecla es equivalente
  1579.  a la pulsación de la tecla <ESC>.
  1580.  
  1581.  - <RIGHT>: vamos al punto siguiente. El punto siguiente puede ser o bien
  1582.  la ventana siguiente o bien visualizar otro trozo de texto en la ventana
  1583.  actual, ya que en algunas ventanas el texto se visualiza por partes. Si
  1584.  estamos en la última ventana y las tareas no son circulares y además el
  1585.  punto siguiente tiene el significado de ventana siguiente, entonces la
  1586.  pulsación de esta tecla es equivalente a la pulsación de la tecla <ESC>.
  1587.  
  1588.  - <RETURN>: la pulsación de esta tecla sólo tiene efecto en las ventanas de
  1589.  partición. Cuando tenemos en memoria la primera parte de una lección, la
  1590.  última ventana de la lección no es aquélla que pone "Final de la teoría de
  1591.  la lección N" sino la que pone "Pulsa ENTER para cargar la PRIMERA PARTE de
  1592.  la teoría de la lección N". Una cosa similar ocurre cuando tenemos cargada
  1593.  la segunda parte de la lección, en este caso, la primera ventana no es la
  1594.  que pone "Principio de la teoría de la lección N" sino la que pone "Pulsa
  1595.  ENTER para cargar la SEGUNDA PARTE de la teoría de la lección N". Como es
  1596.  evidente, para cargar la otra parte de la lección debemos pulsar ENTER (la
  1597.  tecla <RETURN>) como nos indica el mensaje de estas ventanas. Podemos hacer
  1598.  lo mismo con el ratón, pulsando el botón izquierdo (<BOTIZQ>) en el interior
  1599.  de estas ventanas de partición. Cuando cargamos la primera parte de una lec-
  1600.  ción, la primera ventana que aparece en pantalla es la que dice "Principio
  1601.  de la teoría de la lección N", pero cuando cargamos la segunda parte, la
  1602.  primera ventana que aparece en pantalla es la primera ventana con texto de
  1603.  teoría y no la primera ventana real que es la que pone "Pulsa ENTER para
  1604.  cargar la PRIMERA PARTE de la teoría de la lección N". Después de todo lo
  1605.  que se ha dicho en este párrafo puede parecer que es muy complicado todo
  1606.  esto, pero en realidad, incluso sin esta ayuda, cualquier usuario sabe lo
  1607.  que hacer en cada momento puesto que la línea inferior siempre nos informa
  1608.  de todas las teclas disponibles y las propias ventanas de control nos dicen
  1609.  lo que debemos hacer.
  1610.  
  1611.  
  1612.  
  1613.  4.15.- PRUEBAS.
  1614.  ---------------
  1615.  
  1616.       El proceso de pruebas tiene la intención de enseñarle al usuario cómo
  1617.  se ejecuta un programa línea a línea y cómo van cambiando los valores de sus
  1618.  variables.
  1619.  
  1620.       La pantalla de pruebas está formada, aparte de las dos líneas de esta-
  1621.  do, por tres ventanas:
  1622.  
  1623.       1) Ventana de código fuente: Esta ventana está encabezada por el epí-
  1624.  grafe "CODIGO FUENTE". En su interior se encuentra el código fuente de los
  1625.  programas de C o C++ que van a ser probados.
  1626.  
  1627.       2) Ventana de variables: Está ventana está encabezada por la leyenda
  1628.  "VARIABLES". En ella aparece los nombres de todas las variables que utiliza
  1629.  el programa a ser probado junto con su valor actual.
  1630.  
  1631.       3) Ventana de entrada/salida: Está ventana está encabezada por el títu-
  1632.  lo de "ENTRADA/SALIDA". Hace la función de la entrada y salida estándar, es
  1633.  decir, que todas las sentencias de E/S estándar del programa que se prueba
  1634.  utilizan esta ventana para escribir y leer datos.
  1635.  
  1636.       Las teclas disponibles en esta pantalla son:
  1637.  
  1638.  - Las teclas generales (<F1>, <ESC> y <ALT-X>) o sus correspondientes pul-
  1639.  saciones de botones del ratón.
  1640.  
  1641.  - La tecla <F10> o la presión del botón izquierdo sobre la región de esta
  1642.  tecla en la línea de estado inferior. La acción asociada a esta tecla es el
  1643.  comienzo de la prueba, es decir, hacer que la línea ejecutable actual del
  1644.  programa a probar sea la primera línea ejecutable de ese programa.
  1645.  
  1646.  - Las demás teclas o la presión del botón izquierdo del ratón cuando el
  1647.  cursor de éste no se encuentra sobre una región de las teclas <F1>, <ESC>,
  1648.  <ALT-X> o <F10> en la línea inferior. En este caso se ejecuta la línea
  1649.  ejecutable actual del programa a probar, actualizando las ventanas de
  1650.  variables y de entrada/salida si fuera necesario, y por último se pasa a
  1651.  la siguiente línea ejecutable. La línea ejecutable actual en cada momento
  1652.  se distingue claramente pues dicha línea está escrita con colores distintos
  1653.  al resto de las líneas del programa.
  1654.  
  1655.       Tres observaciones finales sobre este proceso:
  1656.  
  1657.       a) La línea ejecutable siguiente a una de las que se exponen a
  1658.  continuación
  1659.          - una línea que contiene la función exit(); o
  1660.          - una línea que contiene la sentencia return dentro de la función
  1661.            main(); o
  1662.          - una línea que contiene la llave de cierre } de la función main()
  1663.  equivale a la finalización de la prueba, es decir, la cesión del control del
  1664.  tutor al proceso llamador del de la prueba (bien el proceso de lección com-
  1665.  pleta o bien el proceso de tareas).
  1666.  
  1667.       a) El formato de cada línea de la ventana de variables que contiene una
  1668.  variable es
  1669.                     nombre_de_variable: mensaje
  1670.  donde nombre_de_variable es el nombre de la variable que aparece en el
  1671.  programa a probar y mensaje puede ser uno de los siguientes:
  1672.          - (vble indefinida). El seguimiento del programa de prueba se en-
  1673.  cuentra en un punto (en una línea ejecutable) en el cual todavía no se ha
  1674.  definido esa variable o bien esa variable no es conocida en ese lugar.
  1675.          - (ble no inicializada). El control del programa de
  1676.  prueba se encuentra en un lugar (en una línea ejecutable) en el cual se
  1677.  conoce (se puede acceder) la variable pero sin embargo todavía no se le ha
  1678.  asignado ningún valor y por lo tanto contiene "basura".
  1679.          -  El valor de la variable. El formato de este valor depende del
  1680.  tipo de variable (entera, carácter, cadena de caracteres, etc.).
  1681.  
  1682.       c) Cuando se leen datos de la ventana de entrada/salida, se puede
  1683.  observar que se cambia la línea de estado inferior para denotar que
  1684.  cualquier tecla pulsada (<F1>, <ESC>, etc.) es leída y procesada por la
  1685.  sentencia de entrada (getchar(), scanf(), cin, ...) del programa de prueba.
  1686.  Por lo tanto, teclas como <F1>, <ESC>, <ALT-X> y <F10> pierden en este
  1687.  momento sus significados habituales; la línea inferior indica la desacti-
  1688.  vación de los acciones usuales asociadas a las citadas teclas.
  1689.  
  1690.  
  1691.  
  1692.  4.16.- EJEMPLOS.
  1693.  ----------------
  1694.  
  1695.       El proceso de ejemplos está formado por una serie de ventanas de
  1696.  visualización (cf. 4.6) donde en cada una se encuentra un programa completo
  1697.  en C o C++ (excepto primera y última ventana).
  1698.  
  1699.       Con cada ejemplo podemos realizar varias operaciones:
  1700.  
  1701.  - Verlo con las teclas de visualización o con las botones del ratón (cf.
  1702.  4.6). El usuario puede observar de esta forma la implementación y diseño
  1703.  de programas completos en C y C++. Hay todo tipo de programas ejemplos,
  1704.  algunos bastantes complicados.
  1705.  
  1706.  - Copiarlo a un fichero, pulsando la tecla <F2>. El usuario puede copiar el
  1707.  ejemplo que visualiza en pantalla a un fichero de disco con el nombre que
  1708.  desee para compilarlo con un compilador de C (o C++) y modificarlo si lo
  1709.  desea.
  1710.  
  1711.  - Imprimirlo, pulsando la tecla <F4>. Se supone que la impresora está conec-
  1712.  tada con el puerto paralelo LPT1. Si su impresora se encuentra en otro puer-
  1713.  to, utilice la opción pi (cf. 4.18.11) para que el programa utilice otro
  1714.  puerto de impresora. La impresión se puede interrumpir pulsando <ESC>.
  1715.  
  1716.  - Ejecutarlo, pulsando la tecla <F9>. Para entender cómo esta hecho el pro-
  1717.  grama y para saber lo que hace, lo mejor es ejecutarlo. El código ejecutable
  1718.  de los programas ejemplos se encuentran en los ficheros PRTUTC.EXE (ejemplos
  1719.  del lenguaje C, cf. 4.21) y PRTUTCPP.EXE (ejemplos del lenguaje C++, cf.
  1720.  4.21), así que estos ficheros han de estar en el directorio de trabajo para
  1721.  ejecutar los ejemplos. Si hay poca memoria, no podrán ejecutarse los progra-
  1722.  mas ejemplos desde el programa TUTOR.EXE.
  1723.  
  1724.       Debido a que todas las teclas de los cursores se utilizan para visua-
  1725.  lizar los ejemplos de las ventanas, hay que utilizar las teclas <F7> y <F8>
  1726.  para ir a la anterior y próxima ventana, respectivamente. Si pulsamos <F7>
  1727.  en la primera ventana y la tarea es lineal, nos salimos del proceso de ejem-
  1728.  plos. Lo mismo ocurre si pulsamos <F8> estando en la última ventana con
  1729.  tarea lineal.
  1730.  
  1731.       También están disponibles las teclas generales (<F1>, <ESC> y <ALT-X>)
  1732.  como ocurre a lo largo de todo el programa.
  1733.  
  1734.  
  1735.  
  1736.  4.16.1.- EL PROGRAMA EJECUTAR.EXE.
  1737.  ----------------------------------
  1738.  
  1739.       Este programa ejecuta los ejemplos presentados en la tarea de ejemplos
  1740.  del programa TUTOR.EXE.
  1741.  
  1742.       Cuando se pulsa la tecla <F9> en la tarea de ejemplos del programa
  1743.  TUTOR.EXE, este programa ejecuta el programa PRTUTC.EXE si el ejemplo es de
  1744.  C o el programa PRTUTCPP.EXE si el ejemplo es de C++. En los sistemas que
  1745.  tengan poca memoria convencional libre puede suceder que algunos ejemplos no
  1746.  puedan ser ejecutados o incluso que no puedan ser ejecutados siquiera los
  1747.  programas PRTUTC.EXE y PRTUCPP.EXE; en estos casos se puede copiar el ejem-
  1748.  plo, pulsando <F2>, a un fichero de disco, y obtener de este fichero un pro-
  1749.  grama ejecutable haciendo uso de un compilador de C y C++. Una solución al-
  1750.  ternativa y más cómoda para ejecutar los ejemplos en aquellos sistemas con
  1751.  poca memoria libre es hacer uso del programa EJECUTAR.EXE.
  1752.  
  1753.       La sintaxis correcta de ejecución es
  1754.  
  1755.                 EJECUTAR lenguaje lección ejemplo
  1756.  
  1757.  donde
  1758.  
  1759.       - lenguaje puede ser C o C++
  1760.       - lección es un número entre 1 y 12 para C, y entre 1 y 8 para C++
  1761.       - ejemplo es el número del ejemplo a ejecutar.
  1762.  
  1763.       El número de ejemplos para cada lección se muestra en la siguiente
  1764.  tabla:
  1765.  
  1766.                   Lenguaje C                 Lenguaje C++
  1767.               Lección    Ejemplos        Lección    Ejemplos
  1768.                  1           2              1           1
  1769.                  2           2              2           1
  1770.                  3          10              3           2
  1771.                  4           6              4           4
  1772.                  5           7              5           7
  1773.                  6          10              6           1
  1774.                  7           3              7           1
  1775.                  8           3              8           3
  1776.                  9           7
  1777.                 10           6
  1778.                 11           3
  1779.                 12           3
  1780.  
  1781.       Todos los posibles errores que puede emitir el programa EJECUTAR.EXE
  1782.  se detallan en el apartado 6.8.
  1783.  
  1784.  
  1785.  
  1786.  4.17.- EJERCICIOS.
  1787.  ------------------
  1788.  
  1789.       El proceso de ejercicios está formado por una serie de pantallas, cada
  1790.  una contiene un ejercicio, excepto la primera y última que indican el prin-
  1791.  cipio y el final de los ejercicios.
  1792.  
  1793.       Hay cuatro tipos de ejercicios:
  1794.  
  1795.  - Tests: se hace una pregunta y el usuario ha de elegir la respuesta correc-
  1796.  ta entre un conjunto de opciones.
  1797.  
  1798.  - Preguntas con comprobación: se hace una pregunta, el usuario escribe su
  1799.  respuesta en un pequeño editor, y el programa comprueba si la respuesta
  1800.  introducida es la correcta.
  1801.  
  1802.  - Preguntas sin comprobación: se hace una pregunta, el usuario piensa
  1803.  mentalmente la respuesta, y cuando lo desee mira la respuesta correcta.
  1804.  
  1805.  - Propuestas de programas: el programa propone un programa que ha de ser
  1806.  realizado por el usuario en su compilador de C o C++.
  1807.  
  1808.       Los cuatro siguientes subapartados hacen una descripción más detallada
  1809.  de cada uno de los tipos de ejercicios.
  1810.  
  1811.       Si se pulsa la tecla <F4> (o presión del botón correspondiente) desde
  1812.  la primera o última ventana de ejercicios, las cuales no son ventanas de
  1813.  ejercicios sino que simplemente sirven de delimitadores, se imprimen todos
  1814.  los ejercicios cargados en memoria de la lección y lenguaje actuales. En ca-
  1815.  da pantalla de ejercicios también se dispone de la tecla de impresión (<F4>)
  1816.  pero en tales casos sólo se imprime un ejercicio (el ejercicio actual).
  1817.  
  1818.       Debido a que todas las teclas de los cursores se utilizan en los ejer-
  1819.  cicios (menú, editor), hay que utilizar las teclas <F7> y <F8> para ir al
  1820.  anterior y siguiente ejercicio, respectivamente. Si pulsamos <F7> en la pri-
  1821.  mera ventana y la tarea es lineal, nos salimos del proceso de ejercicios. Lo
  1822.  mismo ocurre si pulsamos <F8> estando en la última ventana con tarea lineal.
  1823.  
  1824.       En cada ejercicio están disponibles las teclas generales (<F1>, <ESC> y
  1825.  <ALT-X>).
  1826.  
  1827.  
  1828.  
  1829.  4.17.1.- TESTS.
  1830.  ---------------
  1831.  
  1832.       Este proceso realiza ejercicios tipo tests correspondientes a una
  1833.  lección el lenguaje dado (C o C++).
  1834.  
  1835.       La pantalla de tests consta de tres partes:
  1836.  
  1837.  - Parte 1: En ella se hace la pregunta.
  1838.  
  1839.  - Parte 2: Menú con varias respuestas a la pregunta de la parte 1, entre las
  1840.  cuales se encuentra la verdadera.
  1841.  
  1842.  - Parte 3: En esta parte se escribe la respuesta correcta a la pregunta plan-
  1843.  teada cuando lo solicita el usuario; también se escribe en este lugar los
  1844.  mensajes de acierto y de fallo cuando el usuario elige una opción del menú.
  1845.  
  1846.       El usuario puede en todo momento seleccionar una respuesta del menú y
  1847.  comprobar si es correcta o no; también puede ver la respuesta correcta
  1848.  mediante la pulsación de la tecla <F3>.
  1849.  
  1850.       En esta pantalla se dispone de la tecla <F4> para imprimir el ejercicio
  1851.  actual (en este caso el test actual). Si se desean imprimir todos los ejer-
  1852.  cicios de una lección, es necesario pulsar <F4> desde la primera o última
  1853.  ventana del proceso de ejercicios (cf. 4.17).
  1854.  
  1855.       Como en todos los tipos de ejercicios, con la tecla <F7> nos vamos al
  1856.  ejercicio anterior y con la tecla <F8> nos vamos al siguiente ejercicio.
  1857.  
  1858.       También disponemos de las teclas generales.
  1859.  
  1860.  
  1861.  
  1862.  4.17.2.- PREGUNTAS CON COMPROBACION.
  1863.  ------------------------------------
  1864.  
  1865.       Este proceso consiste en una serie de preguntas a las que el usuario
  1866.  debe responder en un pequeño editor. Una vez escrita la respuesta, ésta es
  1867.  comparada con la respuesta correcta.
  1868.  
  1869.       Hay tres ventanas en las pantallas de este tipo de ejercicio. En la
  1870.  ventana de pregunta se escribe la pregunta. En la ventana de introducción
  1871.  de la respuesta el usuario escribe la respuesta. En la ventana de respuesta
  1872.  se escribe, cuando lo solicite el usuario, la respuesta correcta a la pre-
  1873.  gunta planteada; también se escribe en este lugar los mensajes de acierto y
  1874.  fallo cuando el usuario termina de introducir su respuesta.
  1875.  
  1876.       El usuario puede en todo momento ver la respuesta correcta pulsando la
  1877.  tecla <F3>.
  1878.  
  1879.       En esta pantalla se dispone de la tecla <F4> para imprimir el ejercicio
  1880.  actual (en este caso la pregunta con comprobación actual). Si se desean im-
  1881.  primir todos los ejercicios de una lección, es necesario pulsar <F4> desde
  1882.  la primera o última ventana del proceso de ejercicios (cf. 4.17).
  1883.  
  1884.       Como en todos los tipos de ejercicios, con la tecla <F7> nos vamos al
  1885.  ejercicio anterior y con la tecla <F8> nos vamos al siguiente ejercicio.
  1886.  
  1887.       También disponemos como siempre de las teclas generales.
  1888.  
  1889.  
  1890.  
  1891.  4.17.3.- PREGUNTAS SIN COMPROBACION.
  1892.  ------------------------------------
  1893.  
  1894.       Este proceso consiste en una serie de preguntas a las que el usuario
  1895.  debe responder mentalmente para después comparar la respuesta pensada con
  1896.  la dada por este proceso.
  1897.  
  1898.       Hay tres ventanas en las pantallas de este tipo de ejercicio. En la
  1899.  ventana de pregunta se escribe la pregunta. En la ventana de observación
  1900.  se escribe un mensaje que le dice al usuario que pulse la tecla <F3> cuando
  1901.  desee ver la respuesta correcta. En la ventana de respuesta se escribe la
  1902.  respuesta correcta a la pregunta planteada.
  1903.  
  1904.       En esta pantalla se dispone de la tecla <F4> para imprimir el ejercicio
  1905.  actual (en este caso la pregunta sin comprobación actual). Si se desean im-
  1906.  primir todos los ejercicios de una lección, es necesario pulsar <F4> desde
  1907.  la primera o última ventana del proceso de ejercicios (cf. 4.17).
  1908.  
  1909.       Como en todos los tipos de ejercicios, con la tecla <F7> nos vamos al
  1910.  ejercicio anterior y con la tecla <F8> nos vamos al siguiente ejercicio.
  1911.  
  1912.       También disponemos de las teclas generales.
  1913.  
  1914.  
  1915.  
  1916.  4.17.4.- PROPUESTAS DE PROGRAMAS.
  1917.  ---------------------------------
  1918.  
  1919.       Este proceso muestra enunciados de programas para que el usuario los
  1920.  haga, compile y ejecute en un compilador del lenguaje C o C++.
  1921.  
  1922.       El enunciado del programa se imprime en impresora pulsando la tecla
  1923.  <F4>. Se supone que la impresora está conectada con el puerto paralelo LPT1.
  1924.  Si su impresora se encuentra en otro puerto, utilice la opción pi (cf.
  1925.  4.18.11) para que el programa utilice otro puerto de impresora. La impresión
  1926.  se puede interrumpir pulsando <ESC>. Si se desean imprimir todos los ejerci-
  1927.  cios de una lección, es necesario pulsar <F4> desde la primera o última ven-
  1928.  tana del proceso de ejercicios (cf. 4.17).
  1929.  
  1930.       Pulsando la tecla <F5> se llama al compilador de C o C++ que utilice el
  1931.  usuario. Cuando el usuario abandone el compilador regresará al mismo punto
  1932.  del tutor desde el que se realizó la llamada al compilador. El nombre del
  1933.  compilador, esto es, la especificación completa del compilador (unidad,
  1934.  ruta, nombre), debe estar en la primera línea del fichero TUTOR.CMP (cf.
  1935.  5.8), el cual es un fichero de texto ASCII que se puede editar con cualquier
  1936.  procesador de textos que manipule ficheros de texto ASCII. El contenido de
  1937.  las demás líneas (a partir de la primera) es ignorado. Por supuesto, la
  1938.  letra de la unidad y la ruta, son opcionales; si no se ponen, se considerará
  1939.  la unidad y el directorio de trabajo. El nombre del programa (del compila-
  1940.  dor) puede tener todos los argumentos que se desee; la única condición o
  1941.  restricción que se pone a ello es que el nombre del programa junto con sus
  1942.  argumentos no puede sobrepasar los 255 caracteres. El fichero TUTOR.CMP se
  1943.  puede crear fácilmente con la utilidad COMPILAD.EXE (cf. 5.8).
  1944.  
  1945.       Como en todos los tipos de ejercicios, con la tecla <F7> nos vamos al
  1946.  ejercicio anterior y con la tecla <F8> nos vamos al siguiente ejercicio.
  1947.  
  1948.       También disponemos como siempre de las teclas generales.
  1949.  
  1950.  
  1951.  
  1952.  4.18.- ARGUMENTOS.
  1953.  ------------------
  1954.  
  1955.       La sintaxis de llamada al programa TUTOR.EXE es:
  1956.  
  1957.                      TUTOR [argumentos]
  1958.  
  1959.  donde [argumentos] quiere decir que tras el nombre del programa pueden ir
  1960.  opcionalmente varios argumentos. Si no se introduce ningún argumento el pro-
  1961.  grama TUTOR.EXE se ejecuta en modo normal, esto es, con una serie de paráme-
  1962.  tros con sus valores por defecto. [argumentos] tiene la siguiente sintaxis:
  1963.  
  1964.                 argumento argumento argumento ...
  1965.  
  1966.  donde argumento puede ser:
  1967.  
  1968.          ?: ayuda.
  1969.          np: no presentación
  1970.          mp n: menú principal
  1971.          l[ección] n: lección
  1972.          t[area] n: tarea
  1973.          nt: no turbo
  1974.          ndv: no acceso directo a vídeo
  1975.          tc: tareas circulares
  1976.          pt: partir teoría
  1977.          rr ms: retardo ratón
  1978.          pi n: puerto de impresora
  1979.          p: memoria expandida
  1980.          x: memoria extendida
  1981.          fmu: fichero con manual de usuario
  1982.          prt: pulsación al regresar al tutor
  1983.  
  1984.       Los argumentos anteriores pueden aparecer en cualquier orden tras el
  1985.  nombre del programa y pueden aparecer más de una vez (en este caso sólo ten-
  1986.  drá validez el que aparezca en último lugar). Si aparece el argumento ? no
  1987.  se consideran los demás argumentos. Los argumentos se pueden escribir tanto
  1988.  en mayúsculas, en minúsculas como en una combinación de ambas. Los nombres
  1989.  de argumentos de lección y tarea se pueden escribir tanto en forma abreviada
  1990.  como en su forma completa (observad la lista de argumentos anterior).
  1991.  
  1992.  
  1993.  
  1994.  4.18.1.- ARGUMENTO ?.
  1995.  ---------------------
  1996.  
  1997.       Si aparece el argumento ? (ayuda) en la lista de argumentos, los demás
  1998.  argumentos se desecharán.
  1999.  
  2000.       Este argumento hace que el programa TUTOR.EXE muestre una pequeña ayuda
  2001.  acerca de todos sus argumentos. En este caso no se entrará en el tutor pro-
  2002.  piamente dicho, únicamente se muestra la ayuda y termina el programa.
  2003.  
  2004.       La ayuda mostrada por el programa con este argumento está dividida en
  2005.  dos pantallas: en la primera pantalla se informa del nombre del programa y
  2006.  de su autor, y se listan todos los argumentos con una breve descripción para
  2007.  cada uno de ellos. Tras mostrar esta pantalla, el programa emite el siguien-
  2008.  te mensaje en la última línea de la pantalla: "Pulsa ESC para terminar la
  2009.  ayuda o cualquier otra tecla para continuarla". Si nuestro objetivo sólo era
  2010.  averiguar la sintaxis y significado de los argumentos, podemos pulsar ESC
  2011.  para terminar la ayuda; pero si queremos leer algunas observaciones sobre
  2012.  los argumentos y una explicación más detallada de alguno de ellos, pulsamos
  2013.  cualquier tecla para obtenerla. Tras esta pulsación, se muestra una segunda
  2014.  pantalla de ayuda sobre los argumentos y el programa devuelve el control al
  2015.  sistema operativo.
  2016.  
  2017.       Si se introduce un argumento que no corresponda a ninguno de los
  2018.  listados en este apartando, el programa TUTOR.EXE mostrará el mensaje de
  2019.  error "Error: El argumento NOM_ARG no es válido." donde NOM_ARG es el nombre
  2020.  de argumento no válido introducido.
  2021.  
  2022.  
  2023.  
  2024.  4.18.2.- ARGUMENTO NP.
  2025.  ----------------------
  2026.  
  2027.       El argumento np (no presentación) hace que no se muestre la pantalla de
  2028.  presentación (cf. 4.20).
  2029.  
  2030.       Una vez vista la pantalla de presentación, podría resultar tedioso para
  2031.  el usuario tener que verla cada vez que entre en el tutor. Usando este argu-
  2032.  mento elude tal pantalla y consigue que la primera pantalla que aparezca es
  2033.  la del menú principal (cf. 4.10) del tutor.
  2034.  
  2035.       Otra ventaja adicional que tiene la utilización de este argumento es
  2036.  hacer que la entrada en el tutor sea más rápida. Tened en cuenta que mostrar
  2037.  la pantalla de presentación implica ejecutar el programa PORTUTOR.EXE; con
  2038.  el argumento np le decimos al programa TUTOR.EXE que no realice una llamada
  2039.  al programa PORTUTOR.EXE.
  2040.  
  2041.  
  2042.  
  2043.  4.18.3.- ARGUMENTO MP.
  2044.  ----------------------
  2045.  
  2046.       El argumento mp (menú principal) tiene la sintaxis
  2047.                 MP N
  2048.  donde N puede tomar los valores 1 (Información general), 2 (Lenguaje C)
  2049.  ó 3 (Lenguaje C++).
  2050.  
  2051.       Con este argumento se consigue que en el primer acceso al menú princi-
  2052.  pal se seleccione de forma automática la opción N de este menú.
  2053.  
  2054.       Por ejemplo, si ejecutamos el programa tutor en la forma
  2055.                 TUTOR NP MP 2
  2056.  entramos directamente en el menú de lecciones con el lenguaje C seleccio-
  2057.  nado, puesto que hemos seleccionado la opción 2 del menú principal de forma
  2058.  automática.
  2059.  
  2060.       Este argumento sólo tiene efecto sobre el menú principal la primera vez
  2061.  que se accede a él.
  2062.  
  2063.       Si el número N (1 ½ N ½ 3) no aparece, se muestra el mensaje de error
  2064.  "Error: Opción mp sin número de opción.". Si aparece el número N, pero éste
  2065.  no está comprendido entre 1 y 3, ambos inclusive, entonces se muestra el
  2066.  mensaje de error "Error: Opción de mp no válida.".
  2067.  
  2068.  
  2069.  
  2070.  4.18.4.- ARGUMENTO L.
  2071.  ---------------------
  2072.  
  2073.       El argumento l (también se puede escribir lección o leccion) tiene la
  2074.  sintaxis
  2075.                 L N
  2076.  donde N ha de ser mayor que 0.
  2077.  
  2078.       Con este argumento se consigue que en el primer acceso al menú de
  2079.  lecciones se seleccione de forma automática la opción N de este menú, es
  2080.  decir, la lección N.
  2081.  
  2082.       Por ejemplo, si ejecutamos el programa tutor en la forma
  2083.                 TUTOR NP MP 2 L 3
  2084.  entramos directamente en el menú de tareas con la lección 2 del lenguaje C
  2085.  seleccionada, puesto que hemos seleccionado, de forma automática, la opción
  2086.  2 del menú principal y la opción 3 del menú de lecciones.
  2087.  
  2088.       Este argumento sólo tiene efecto sobre el menú lecciones la primera vez
  2089.  que se accede a él.
  2090.  
  2091.       Si el número N (N > 0) no aparece, se muestra el mensaje de error
  2092.  "Error: Opción l sin número de lección." Si aparece el número N, pero éste
  2093.  no es mayor que 0, entonces se muestra el mensaje de error "Error: Opción de
  2094.  lección no válida.". En este caso sólo se comprueba el límite inferior (que
  2095.  es 1) y el límite superior (que puede ser 12 ó 8) porque si aparece el pará-
  2096.  metro l y no aparece el parámetro mp es imposible averiguar si el usuario va
  2097.  a trabajar con el lenguaje C (en cuyo caso el límite superior de l sería 12)
  2098.  o con el lenguaje C++ (en cuyo caso el límite superior de l sería 8). Si el
  2099.  número N es mayor de 12 para el caso del lenguaje C o es mayor de 8 para el
  2100.  caso del lenguaje C++ no se emitirá ningún mensaje de error y se desechará
  2101.  tal argumento.
  2102.  
  2103.       Por ejemplo, si hacemos
  2104.                 TUTOR NP MP 2 L 14
  2105.  será equivalente a hacer
  2106.                 TUTOR NP MP 2
  2107.  puesto que no existe la lección 14 para el lenguaje C (mp 2).
  2108.  
  2109.  
  2110.  
  2111.  4.18.5.- ARGUMENTO T.
  2112.  ---------------------
  2113.  
  2114.       El argumento t (también se puede escribir tarea) tiene la sintaxis
  2115.                 T N
  2116.  donde N ha de ser 1 (lección completa), 2 (teoría), 3 (pruebas), 4 (ejem-
  2117.  plos) ó 5 (ejercicios).
  2118.  
  2119.       Con este argumento se consigue que en el primer acceso al menú de
  2120.  tareas se seleccione de forma automática la opción N de este menú.
  2121.  
  2122.       Por ejemplo, si ejecutamos el programa tutor en la forma
  2123.                 TUTOR NP MP 2 L 3 T 2
  2124.  entramos directamente en la teoría de la lección 2 del lenguaje C, puesto
  2125.  que hemos seleccionado, de forma automática, la opción 2 del menú principal,
  2126.  la opción 3 del menú de lecciones y la opción 2 del menú de tareas.
  2127.  
  2128.       Este argumento sólo tiene efecto sobre el menú lecciones la primera vez
  2129.  que se accede a él.
  2130.  
  2131.       Si el número N (1 ½ N ½ 5) no aparece, se muestra el mensaje de error
  2132.  "Error: Opción t sin número de tarea." Si aparece el número N, pero éste no
  2133.  está comprendido entre 1 y 5, ambos inclusive, entonces se muestra el mensa-
  2134.  je de error "Error: Opción de tarea no válida.".
  2135.  
  2136.       Por ejemplo, si hacemos
  2137.                 TUTOR NP MP 2 T 3 T 2 L 1
  2138.  será equivalente a hacer
  2139.                 TUTOR NP MP 2 T 2 L 1
  2140.  ya que dijimos anteriormente que si un argumento aparece más de una vez sólo
  2141.  se tendrá en cuenta el que aparece en el último lugar de la lista de argu-
  2142.  mentos.
  2143.  
  2144.  
  2145.  
  2146.  4.18.6.- ARGUMENTO NT.
  2147.  ----------------------
  2148.  
  2149.       El argumento nt (no turbo) hace que se entre en el programa TUTOR.EXE
  2150.  con el indicador de turbo desactivado (puesto a off). Si no se utiliza este
  2151.  argumento, al entrar en el programa este indicador está activado (puesto a
  2152.  on).
  2153.  
  2154.       Cuando este indicador está activado, el usuario también estudiará Turbo
  2155.  C y Turbo C++ (o Borland C++) además del ANSI C y el ANSI C++; si, por el
  2156.  contrario, el indicador de turbo está desactivado, entonces el tutor no le
  2157.  mostrará al usuario ninguna información relativa a los lenguajes C y C++ de
  2158.  Borland International.
  2159.  
  2160.       Si el usuario no va a estudiar nunca las versiones de Borland de los
  2161.  lenguajes C y C++, mejor que tener que desactivar este indicador en el menú
  2162.  principal, cada vez que entre al programa, con las teclas <ALT-T> o con el
  2163.  ratón, es mejor, repetimos, ejecutar el programa en la forma TUTOR NT; y
  2164.  aun más cómodo sería crear un fichero por lotes llamado, por ejemplo,
  2165.  TUTORNT.BAT, que contenga la línea: TUTOR NT.
  2166.  
  2167.  
  2168.  
  2169.  4.18.7.- ARGUMENTO NDV.
  2170.  -----------------------
  2171.  
  2172.       El argumento ndv se utiliza para indicarle al programa TUTOR.EXE que no
  2173.  emplee la salida de consola con accesos directos a RAM de vídeo.
  2174.  
  2175.       Por defecto, el programa produce la salida en pantalla escribiendo
  2176.  directamente en la memoria RAM de vídeo. Una segunda forma de salida a
  2177.  pantalla es escribir los caracteres en ésta vía interrupciones de la ROM
  2178.  BIOS. La primera forma es mucho más rápida que la segunda pero tiene como
  2179.  inconveniente que es menos portable. Para usar la primera forma, el hardware
  2180.  de vídeo del sistema debe ser idéntico a los adaptadores de visualización de
  2181.  IBM. La segunda forma permite la salida a consola trabajando en cualquier
  2182.  sistema compatible a nivel BIOS con IBM.
  2183.  
  2184.       Si en su ordenador hay problemas con la salida a consola, utilice el
  2185.  argumento ndv.
  2186.  
  2187.  
  2188.  
  2189.  4.18.8.- ARGUMENTO TC.
  2190.  ----------------------
  2191.  
  2192.       El argumento tc (tareas circulares) hace que las tareas (teoría,
  2193.  ejemplos y ejercicios) sean circulares. Por defecto son lineales.
  2194.  
  2195.       Cuando una tarea es circular, la ventana anterior a la primera ventana
  2196.  es la última ventana, y viceversa, la ventana siguiente a la última ventana
  2197.  es la primera ventana. Si, por el contrario, la tarea es lineal, el intento
  2198.  de ir a la ventana anterior de la primera ventana o el intento de ir a la
  2199.  ventana siguiente de la última ventana es equivalente a la pulsación de la
  2200.  tecla <ESC>, esto es, se abandona la tarea en la que estamos.
  2201.  
  2202.  
  2203.  
  2204.  4.18.9.- ARGUMENTO PT.
  2205.  ----------------------
  2206.  
  2207.       El argumento pt (partir teoría) hace que las lecciones de teoría par-
  2208.  tibles sean manipuladas en dos partes, de tal forma que sólo una de las
  2209.  partes se mantenga en memoria. Por defecto, las lecciones de teoría no se
  2210.  parten en dos trozos.
  2211.  
  2212.       El argumento pt es muy interesante en el proceso de teoría porque
  2213.  debido al gran volumen de información que se maneja en este proceso, en el
  2214.  momento de leer la lección del fichero de datos y cargarla en memoria puede
  2215.  suceder, con algunas lecciones especialmente largas, que se produzca el
  2216.  error de memoria insuficiente. En este caso debemos llamar al programa uti-
  2217.  lizando este argumento. El significado de pt es partir teoría. Por defecto,
  2218.  las lecciones de teoría se cargan completamente en memoria. Si se especifica
  2219.  este argumento, algunas lecciones de teoría se cargan en memoria en dos par-
  2220.  tes: cuando se carga una, se descarga la otra. De este modo, con el argumen-
  2221.  to pt, y en las lecciones partibles (son lecciones que ocupan mucha memoria
  2222.  y que pueden ser partidas) siempre se encuentra una parte en memoria y otra
  2223.  parte en disco, concretamente en el fichero de datos de teoría.
  2224.  
  2225.       Si al intentar leer la teoría de una lección se produce el error de
  2226.  "Memoria insuficiente" (cf. 6.1.2.1) se debe ejecutar el programa en la
  2227.  forma TUTOR PT para que se cargue la lección en memoria por partes (si dicha
  2228.  lección es partible). Si aún así persiste el problema de "Memoria insufi-
  2229.  ciente" se debe dejar más memoria libre desalojando algunos programas resi-
  2230.  dentes. Otra solución para resolver el problema de memoria es modificar las
  2231.  particiones de esa lección (cambiar palabra clave "partir" de lugar dentro
  2232.  de lección en fichero de datos) o hacer la lección partible si dicha lección
  2233.  no lo es (incluir palabra clave "partir" dentro de lección en fichero de
  2234.  datos de teoría), esto se describe en el apartado 5.3.
  2235.  
  2236.  
  2237.  
  2238.  4.18.10.- ARGUMENTO RR.
  2239.  -----------------------
  2240.  
  2241.       El argumento rr (retardo en ratón) tiene la sintaxis
  2242.                 RR MS
  2243.  donde MS son los milisegundos de retardo. Si no se utiliza este argumento,
  2244.  el número de milisegundos de retardo de ratón es 200.
  2245.  
  2246.       Cuando se pulsa un botón del ratón, por muy rápido que se haga, inte-
  2247.  riormente se generan varias pulsaciones. La solución para este caso es
  2248.  generar un tiempo de retardo tras cada pulsación de botón. Durante este
  2249.  tiempo de retardo todo lo que pasa es ignorado, de esta forma, se generan,
  2250.  tras una presión de botón, presiones que no son tenidas en cuenta. El valor
  2251.  por defecto está puesto a 200 milisegundos, no obstante, este valor se puede
  2252.  modificar a través del argumento rr.
  2253.  
  2254.       Si el número de milisegundos MS no aparece, se muestra el mensaje de
  2255.  error "Error: Opción rr sin número de milisegundos." Si aparece el número
  2256.  MS, pero éste es menor o igual a cero, entonces se muestra el mensaje de
  2257.  error "Error: Número de milisegundos no válido.".
  2258.  
  2259.  
  2260.  
  2261.  4.18.11.- ARGUMENTO PI.
  2262.  -----------------------
  2263.  
  2264.       El argumento pi (puerto de impresora) tiene la sintaxis
  2265.                 PI N
  2266.  donde N representa al número del puerto al que está conectada la impresora.
  2267.  
  2268.       Por defecto, la impresión se dirige al puerto paralelo número 0, que
  2269.  corresponde al puerto LPT1; pero si la impresora del usuario está conectada
  2270.  a otro puerto, deberá utilizar este argumento en la llamada al programa.
  2271.  
  2272.       Si el número del puerto de impresora N no aparece, se muestra el men-
  2273.  saje de error "Error: Puerto de impresora sin número.".
  2274.  
  2275.  
  2276.  
  2277.  4.18.12.- ARGUMENTOS P Y X.
  2278.  ---------------------------
  2279.  
  2280.       Los argumentos p (memoria expandida) y x (memoria extendida) hacen que
  2281.  el programa TUTOR.EXE utilice la memoria expandida y la memoria extendida,
  2282.  respectivamente, para realizar los intercambios de módulos.
  2283.  
  2284.       El programa TUTOR.EXE está diseñando con overlays, esto quiere decir,
  2285.  que no todo el programa ejecutable tiene porqué estar al mismo tiempo en
  2286.  memoria y que lo más normal es que haya módulos en disco y otros en memoria
  2287.  convencional durante la ejecución del programa. Cuando se va a ejecutar una
  2288.  instrucción de un módulo que se encuentra en disco, éste se carga en memoria
  2289.  descargándose uno o varios que haya en memoria si no cabe el que va a entrar.
  2290.  En resumen, en los programas diseñados con overlays, hay intercambios entre
  2291.  disco y memoria convencional. Con el argumento p se consigue que los inter-
  2292.  cambios se hagan entre memoria expandida y memoria convencional. Con el ar-
  2293.  gumento x se consigue que los intercambios se hagan entre memoria extendida
  2294.  y memoria convencional. Esto supone un incremento en la velocidad de ejecu-
  2295.  ción del programa. En el caso de memoria expandida se intenta reservar 256K
  2296.  para el área de intercambio. En el caso de memoria extendida el gestor de
  2297.  sobrecarga intenta reservar la cantidad de memoria que pueda para contener
  2298.  todos los overlays; pero el uso de memoria extendida no está estandarizado
  2299.  y puede haber problemas con ella en determinadas configuraciones, a pesar de
  2300.  que el gestor de sobrecarga intenta cada método conocido para encontrar la
  2301.  cantidad de memoria extendida que está usada.
  2302.  
  2303.       Si se especifica el argumento x y no existe memoria extendida o esta es
  2304.  insuficiente, el programa TUTOR.EXE emitirá el mensaje de error "Error: Es-
  2305.  pecificado parámetro x y memoria extendida no disponible o es insuficiente.".
  2306.  Si se especifica el argumento p y no existe memoria expandida o no se dispone
  2307.  de 256K de memoria expandida se emitirá el mensaje de error "Error: Especifi-
  2308.  cado parámetro p y memoria expandida no disponible o es insuficiente.".
  2309.  
  2310.       Ya hemos dicho que el uso de memoria extendida no está estandarizado,
  2311.  por lo tanto, si se tiene problemas en la ejecución del programa o al aban-
  2312.  donar éste por el uso del argumento x es preferible no utilizar dicho argu-
  2313.  mento, aunque ello suponga un ligero decremento en la velocidad de ejecución
  2314.  del programa.
  2315.  
  2316.  
  2317.  
  2318.  4.18.13.- ARGUMENTO FMU.
  2319.  ------------------------
  2320.  
  2321.       Este argumento permite al usuario visualizar a través de la opción 1
  2322.  del menú principal un fichero distinto a TUTOR.DOC (el cual contiene el
  2323.  manual de usuario y es el que se visualiza por defecto).
  2324.  
  2325.       El argumento fmu (fichero con manual de usuario) tiene la
  2326.  sintaxis
  2327.            FMU NOMBRE_DE_FICHERO
  2328.  donde NOMBRE_DE_FICHERO es la descripción (puede contener letra de unidad y
  2329.  ruta) del nuevo fichero a visualizar cuando se seleccione la opción 1 del
  2330.  menú principal del programa TUTOR.EXE.
  2331.  
  2332.       Si el nombre del nuevo fichero no aparece tras el argumento fmu se
  2333.  emitirá el mensaje de error "Error: Opción fmu sin nombre de fichero".
  2334.  
  2335.  
  2336.  
  2337.  4.18.14.- ARGUMENTO PRT.
  2338.  ------------------------
  2339.  
  2340.       Cuando se invoca al compilador (en realidad el programa, fichero por
  2341.  lotes o comando del DOS que esté en la primera línea del fichero TUTOR.CMP,
  2342.  cf. 5.8), éste se ejecuta y cuando el usuario se sale del compilador, el
  2343.  control pasa directamente al programa TUTOR.EXE. Si se utiliza el parámetro
  2344.  prt (pulsación al regresar al tutor) al salirse del compilador y justo antes
  2345.  de regresar al tutor, se emite el mensaje "Pulsa cualquier tecla o botón del
  2346.  ratón para regresar al tutor.".
  2347.  
  2348.       ¿Y para qué puede ser útil este argumento al usuario? Pues bien, supon-
  2349.  gamos que el usuario quiere hacer un DIR del directorio actual al pulsar
  2350.  <F5> desde las propuestas de programas; en tal caso la primera línea del
  2351.  fichero TUTOR.CMP contendrá "DIR" o "DIR *.*" o "DIR ." o cualquier comando
  2352.  equivalente. Al pulsar en este caso <F5> (o su equivalente del ratón) se
  2353.  ejecuta el DIR e inmediatamente se cede el control al tutor de tal manera
  2354.  que no da tiempo a ver la información ofrecida por el comando DIR del DOS.
  2355.  Si utilizamos en este caso el parámetro PRT, tras ejecutarse el DIR y antes
  2356.  de volver al tutor se mostrará un mensaje que espera la pulsación de una
  2357.  tecla (o presión de un botón del ratón) en la pantalla sin borrar el con-
  2358.  tenido de ésta; de esta forma podemos ver el resultado del DIR.
  2359.  
  2360.  
  2361.  
  2362.  4.19.- EL FICHERO T.BAT.
  2363.  ------------------------
  2364.  
  2365.       El fichero T.BAT contiene una sola línea. Esta línea es
  2366.  la siguiente:
  2367.  
  2368.             TUTOR NP TC PT %1 %2 %3 %4 %5 %6 %7 %8 %9
  2369.  
  2370.       Este fichero se suministra debido a que la mayoría de las veces intere-
  2371.  sa ejecutar el programa TUTOR.EXE con los argumentos NP, TC y PT. Por lo
  2372.  tanto, muchas veces es preferible ejecutar el fichero por lotes T.BAT que el
  2373.  programa TUTOR.EXE.
  2374.  
  2375.       El fichero T.BAT se puede llamar sin ningún argumento, aunque también
  2376.  se le puede llamar hasta con nueve argumentos. Cada uno de los argumentos
  2377.  que se le pasa al fichero T.BAT son argumentos que se le pasan al programa
  2378.  TUTOR.EXE además de NP, TC y PT que ya están incluidos en el fichero T.BAT.
  2379.  
  2380.       Ejemplo de algunas ejecuciones del programa TUTOR.EXE:
  2381.  
  2382.  1) T es equivalente a TUTOR NP TC PT
  2383.  2) T ? es equivalente a TUTOR NP TC PT ? y esto es equivalente a TUTOR ?
  2384.  3) T MP 1 es equivalente a TUTOR NP TC PT MP 1
  2385.  4) T TC MP 2 T 1 es equivalente a TUTOR NP TC PT TC MP 2 T 1 y esto es
  2386.  equivalente a TUTOR NP PT TC MP 2 T 1
  2387.  
  2388.       Ejemplo de creación de algunos ficheros por lotes:
  2389.  
  2390.  1) Fichero TCT.BAT (teoría de C de tutor): T MP 2 L %1 T 2
  2391.  2) Fichero TX.BAT (t utilizando memoria extendida): T X
  2392.  3) Fichero TUTORX.BAT (tutor utilizando memoria extendida): TUTOR X
  2393.  
  2394.       A cada usuario le convendrá ejecutar el tutor con unos argumentos a
  2395.  su medida. Por esto, es muy recomendable que se cree un fichero (o varios
  2396.  ficheros) por lotes que haga la llamada a T.BAT o a TUTOR.EXE con los ar-
  2397.  gumentos que le convengan, en vez de tener que teclear los argumentos tras
  2398.  el nombre del programa cada vez que entre en el tutor.
  2399.  
  2400.  
  2401.  
  2402.  4.20.- EL PROGRAMA PORTUTOR.EXE.
  2403.  --------------------------------
  2404.  
  2405.       El programa PORTUTOR.EXE (portada de tutor) es un programa auxiliar del
  2406.  programa TUTOR.EXE, esto es, no se puede llamar directamente, sólo puede ser
  2407.  ejecutado por TUTOR.EXE.
  2408.  
  2409.       Este programa muestra una sucesión de pantallas hasta que se pulsa una
  2410.  tecla, momento en el cual acaba el programa. Cada pantalla está formada por
  2411.  el desarrollo de una espiral aleatorio con colores aleatorios junto con un
  2412.  recuadro central en el cual aparecen los nombres del programa ("Tutor de
  2413.  C/C+ Versión 1.0 (1993)") y del autor del programa (Antonio Lebrón Bocane-
  2414.  gra). En la última línea de la pantalla aparece el mensaje "Pulsa cualquier
  2415.  tecla para ir al tutor (no vale botón del ratón)".
  2416.  
  2417.       El programa PORTUTOR.EXE trabaja en modo gráfico y soporta las princi-
  2418.  pales tarjetas gráficas del mercado (CGA, HERCULES, EGA, VGA, etc).
  2419.  
  2420.       Para evitar que se pueda cambiar el nombre del programa tutor, del
  2421.  autor o del tutor del proyecto, estos nombres se chequean al principio de
  2422.  PORTUTOR.EXE. De esta forma, si algunos de los nombres citados son cambiados
  2423.  con un editor de ficheros binarios, se emitirá el mensaje de error "El nom-
  2424.  bre del programa o del autor ha sido cambiado.".
  2425.  
  2426.       Si se ejecuta el programa TUTOR.EXE sin el argumento NP y por cual-
  2427.  quier motivo TUTOR.EXE no puede ejecutar PORTUTOR.EXE, por ejemplo porque
  2428.  el programa PORTUTOR.EXE no se encuentre en el directorio de trabajo, el
  2429.  programa TUTOR.EXE mostrará el mensaje "No se puede ejecutar el programa
  2430.  PORTUTOR.EXE".
  2431.  
  2432.  
  2433.  
  2434.  4.21.- LOS PROGRAMAS PRTUTC.EXE Y PRTUTCPP.EXE.
  2435.  -----------------------------------------------
  2436.  
  2437.       Los programas PRTUTC.EXE (programas de tutor en C) y PRTUTCPP.EXE (pro-
  2438.  gramas de tutor en C++) son programas auxiliares del programa TUTOR.EXE, es
  2439.  decir, que sólo pueden ser ejecutados por TUTOR.EXE y no directamente desde
  2440.  la línea de órdenes del sistema operativo.
  2441.  
  2442.       Cada uno de los programas ejemplos de C y de C++ constituyen un
  2443.  módulo en los programas PRTUTC.EXE y PRTUTCPP.EXE, de tal forma que
  2444.  cuando ejecutamos un ejemplo (con la tecla <F9> o su correspondiente
  2445.  pulsación de botón, cf. 4.16) estamos ejecutando un módulo del programa
  2446.  PRTUTC.EXE o PRTUTCPP.EXE.
  2447.  
  2448.       Si por cualquier motivo, el programa TUTOR.EXE no puede ejecutar el
  2449.  programa PRTUTC.EXE o PRTUTCPP.EXE, por ejemplo porque estos dos programas
  2450.  no se encuentren en el directorio de trabajo o no haya suficiente memoria
  2451.  para ejecutarlos, entonces TUTOR.EXE mostrará el mensaje "No se puede
  2452.  ejecutar el programa NOM_PROG." donde NOM_PROG es PRTUTC.EXE o PRTUTCPP.EXE.
  2453.  
  2454.       Tanto el programa PRTUTC.EXE como el programa PRTUTCPP.EXE están dise-
  2455.  ñados con overlays (la técnica del overlay explicada en cf. 4.18.12). A cau-
  2456.  sa de esto, cuando no hay suficiente memoria para que PRTUTOR.EXE los ejecu-
  2457.  te, en vez de visualizarse el mensaje anterior ("No se puede ejecutar el
  2458.  programa NOM_PROG.") no se visualiza ningún mensaje. Por lo tanto, cuando se
  2459.  intente ejecutar un ejemplo y se borre la pantalla con atributo de pantalla
  2460.  negro sobre blanco y se vuelve inmediatamente a la pantalla de la tarea de
  2461.  ejemplos del tutor, esto se debe a que no hay suficiente memoria para ejecu-
  2462.  tar ese ejemplo. Esto se puede solucionar dejando más memoria libre, esto se
  2463.  consigue desalojando algunos programas residentes que pueda haber. Si aun
  2464.  así no se puede ejecutar el ejemplo, el usuario puede copiarlo a un fichero
  2465.  (con la tecla <F2> o su correspondiente pulsación de botón) y compilarlo con
  2466.  un compilador de C o de C++, obteniendo de esta forma un programa ejecutable.
  2467.  Una última y más cómoda alternativa para ejecutar los ejemplos, si éstos no
  2468.  se pueden ejecutar desde el programa TUTOR.EXE, es ejecutarlos a través del
  2469.  programa EJECUTAR.EXE (cf. 4.16.1).
  2470.  
  2471.  
  2472.  
  2473.  5.- FICHEROS DE DATOS.
  2474.  ----------------------
  2475.  
  2476.       Los ficheros de datos son aquellos ficheros de texto ASCII que
  2477.  contienen datos que son utilizados por el tutor.
  2478.  
  2479.       Los ficheros de datos son los siguientes:
  2480.  
  2481.  - Ficheros de teoría: TEOC.DAT y TEOCPP.DAT.
  2482.  - Ficheros de ejemplos: EJEMC.DAT y EJEMCPP.DAT.
  2483.  - Ficheros de ejercicios: EJERC.DAT y EJERCPP.DAT.
  2484.  - Fichero de ayuda: TUTOR.HLP.
  2485.  - Fichero de información general: TUTOR.DOC.
  2486.  - Fichero de compilador: TUTOR.CMP.
  2487.  - Fichero índice: TUTOR.IND.
  2488.  - Fichero de configuración: TUTOR.CFG.
  2489.  
  2490.       Mientras se lee de los ficheros con extensión DAT y del fichero
  2491.  TUTOR.DOC se muestra una ventana centrada en pantalla con atributo de pan-
  2492.  talla negro sobre verde que nos va informando continuamente de la situación
  2493.  de lectura. Al mismo tiempo, el mensaje de la línea de estado inferior es:
  2494.  "Pulsa ESC si deseas interrumpir la lectura del fichero". Como se puede su-
  2495.  poner, si se pulsa <ESC> o se presiona el botón <BOTIZQ> estando el cursor
  2496.  del ratón en la línea inferior, entonces se terminará ipso facto la lectura
  2497.  del fichero y se entrará en el proceso correspondiente (visualizar TUTOR.DOC,
  2498.  teoría, ejemplos o ejercicios). En ese caso hay que tener en cuenta que la
  2499.  estructura almacenada en memoria no está completa; por ejemplo, si se pulsa
  2500.  <ESC> mientras se lee el fichero TUTOR.DOC, el fichero TUTOR.DOC visualizado
  2501.  contendrá un número menor de líneas que el fichero TUTOR.DOC de disco; otro
  2502.  ejemplo, si se pulsa <ESC> mientras se está leyendo los ejercicios de una
  2503.  determinada lección, entonces los ejercicios que se podrán examinar de esa
  2504.  lección será menor que el número real de ejercicios de dicha lección.
  2505.  
  2506.  
  2507.  
  2508.  5.1.- FICHEROS CON EXTENSION DAT Y HLP.
  2509.  ---------------------------------------
  2510.  
  2511.       Estos ficheros tienen una determinada sintaxis que hay que respetar
  2512.  para que sean leídos e interpretados correctamente.
  2513.  
  2514.       Estos ficheros de datos están compuestos por bloques delimitados por
  2515.  las palabras claves begin-end:
  2516.  
  2517.                 begin
  2518.                 ...
  2519.                 end
  2520.  
  2521.       Todas las palabras claves han de empezar en la columna 1 del fichero y
  2522.  se tiene en cuenta el caso (las mayúsculas son distintas de las minúsculas).
  2523.  
  2524.       Entre bloque y bloque begin-end puede haber cualquier número de líneas
  2525.  en blanco, y las líneas que empiezan por ; entre bloque y bloque se consi-
  2526.  deran líneas de comentario. El texto que pueda ir detrás de las palabras
  2527.  claves hasta el final de línea, dejando al menos un espacio en blanco entre
  2528.  palabra clave y resto de línea, es ignorado, es decir, se considera como
  2529.  comentario. Por ejemplo:
  2530.  
  2531.           ; esto es un comentario
  2532.           begin este texto detrás de begin es comentario
  2533.           ...
  2534.           end este texto detrás de end es comentario
  2535.  
  2536.       La sintaxis del texto que hay dentro de un bloque begin-end depende del
  2537.  tipo de fichero, así que se detallará en los apartados siguientes.
  2538.  
  2539.       En los ficheros de datos con extensión .DAT cada bloque begin-end
  2540.  representa una lección, y en el fichero con extensión .HLP cada bloque
  2541.  begin-end representa una ayuda local, es decir, la ayuda de un determinado
  2542.  proceso en TUTOR.EXE.
  2543.  
  2544.       El usuario no puede añadir ni quitar bloques begin-end, so pena de
  2545.  que quiera obtener el correspondiente mensaje de error por parte del
  2546.  programa TUTOR.EXE. Sí puede, en cambio, modificar el interior de los
  2547.  bloques begin-end.
  2548.  
  2549.       Las líneas de los ficheros de datos no pueden tener más de 255 carac-
  2550.  teres. Si alguna línea tuviera más caracteres de este número, el programa
  2551.  INDEXAR.EXE o el TUTOR.EXE informarían de tal situación.
  2552.  
  2553.       Para que el programa TUTOR.EXE pueda utilizar correctamente los fi-
  2554.  cheros de datos, éstos han de ser indexados previamente con el programa
  2555.  INDEXAR.EXE. Ver apartado siguiente.
  2556.  
  2557.  
  2558.  
  2559.  5.2.- EL PROGRAMA INDEXAR.EXE, EL FICHERO POR LOTES I.BAT, Y
  2560.  ------------------------------------------------------------
  2561.  EL FICHERO DE DATOS TUTOR.IND.
  2562.  ------------------------------
  2563.  
  2564.       El programa INDEXAR.EXE indexa los ficheros de datos en el fichero
  2565.  TUTOR.IND. A continuación explicaremos qué quiere decir indexar un fichero
  2566.  de datos.
  2567.  
  2568.       La sintaxis correcta de ejecución de este programa es:
  2569.  
  2570.    INDEXAR [/A | /C] FICHERO_INDICE [FICHERO_1 FICHERO_2 ...]
  2571.  
  2572.  donde /A significa añadir a fichero índice, /N significa crear fichero
  2573.  índice, y FICHERO_INDICE, FICHERO_1 y FICHERO_2 se refiere a especifi-
  2574.  caciones de ficheros las cuales pueden contener opcionalmente nombres
  2575.  de unidades y de rutas. Puede haber desde cero hasta 99 ficheros fuentes.
  2576.  
  2577.       Puesto que el único fichero índice que necesita el tutor es el
  2578.  fichero TUTOR.IND y puesto que los únicos ficheros de datos a indexar
  2579.  son aquéllos con extensión DAT y extensión HLP (TEOC.DAT, TEOCPP.DAT,
  2580.  EJEMC.DAT, EJEMCPP.DAT, EJERC.DAT, EJERCPP.DAT y TUTOR.HLP) se sumi-
  2581.  nistra el fichero por lotes I.BAT que contiene una sola línea que es
  2582.  la siguiente:
  2583.  
  2584.  indexar /c tutor.ind tutor.hlp teoc.dat ejemc.dat ejerc.dat teocpp.dat
  2585.  ejemcpp.dat ejercpp.dat
  2586.  
  2587.  que indexa todos los ficheros indexables de datos del tutor en un nuevo
  2588.  fichero TUTOR.IND. Si el usuario modifica algún fichero de datos podrá
  2589.  indexarlo fácilmente con el fichero I.BAT.
  2590.  
  2591.       El programa TUTOR.EXE utiliza el fichero índice TUTOR.IND para acceder
  2592.  rápidamente a los datos de los ficheros. La estructura del fichero TUTOR.IND
  2593.  es:
  2594.  
  2595.  número_de_ficheros
  2596.  nom_fich_1 núm_bloques_1 comienzo_bloq_1 comienzo_bloq_2 ...
  2597.  nom_fich_2 núm_bloques_2 comienzo_bloq_1 comienzo_bloq_2 ...
  2598.  ...
  2599.  
  2600.  donde número_de_ficheros es el número de ficheros indexados que se encuen-
  2601.  tran en el fichero índice. Cada una de las líneas siguientes a ésta contiene
  2602.  la información relativa a un fichero del siguiente modo: nombre de fichero
  2603.  (sólo nombre, ni letra de unidad ni ruta), número de bloques begin-end que
  2604.  contiene ese fichero, y a continuación la posición de comienzo de cada blo-
  2605.  que como la posición absoluta en bytes de la letra b de la palabra clave
  2606.  begin con respecto al principio de ese fichero de datos. El final de los
  2607.  bloques begin-end se detecta en la lectura de los ficheros de datos al leer
  2608.  la palabra clave end.
  2609.  
  2610.       Siempre que se lee de un fichero de datos (se sobrentiende con exten-
  2611.  sión DAT y HLP) se lee un bloque begin-end entero, con la excepción de los
  2612.  bloques partibles (cf. 4.18.9) en los ficheros de datos de teoría.
  2613.  
  2614.       Al comienzo del programa TUTOR.EXE, se lee toda la información que
  2615.  contiene el fichero TUTOR.IND y se carga en memoria tal información. El
  2616.  fichero TUTOR.IND ha de estar en el directorio de trabajo. Cuando se va
  2617.  a leer un bloque de un fichero de datos (una ayuda local, la teoría de una
  2618.  lección, los ejemplos de una lección o los ejercicios de una lección) se
  2619.  posiciona el puntero del fichero al principio del bloque, ya que sabemos la
  2620.  posición de comienzo de ese bloque, y entonces se empieza a leer línea a
  2621.  línea, almacenándolas en memoria dinámica, hasta encontrar la palabra clave
  2622.  end al comienzo de una línea, momento en el cual se termina la lectura.
  2623.  Cuando nos salimos de esa tarea (ayuda local, teoría de una lección, los
  2624.  ejemplos de una lección o los ejercicios de una lección) se descarga la
  2625.  información almacenada en memoria del fichero de datos. Supongamos ahora
  2626.  que no disponemos del indexamiento de los ficheros de datos; si queremos
  2627.  leer los ejercicios de la lección 10 del lenguaje C, tendríamos que leer
  2628.  todos los caracteres del fichero EJERC.DAT hasta encontrar la décima línea
  2629.  que contenga al principio la palabra clave begin y leer los ejercicios de
  2630.  ese bloque (lección) a partir de ese punto; con el indexamiento nos posi-
  2631.  cionamos directamente en la primera del bloque begin-end correspondiente a
  2632.  la lección 10 (décimo bloque). Como se puede observar, el aumento de velo-
  2633.  cidad de búsqueda en los ficheros de datos con el indexado de los ficheros
  2634.  es considerable en relación a la lectura secuencial de éstos.
  2635.  
  2636.       La versión definitiva del fichero TUTOR.IND conviene obtenerla mediante
  2637.  la ejecución del fichero por lotes I.BAT, aunque mientras modificamos algu-
  2638.  nos ficheros de datos podemos ahorrar tiempo teniendo en cuenta las siguien-
  2639.  tes consideraciones:
  2640.  
  2641.  1) Sólo es necesario indexar un fichero de datos cuando se modifica algún
  2642.  comienzo de bloque.
  2643.  
  2644.  2) Un mismo fichero de datos puede aparecer varias veces en el fichero
  2645.  TUTOR.IND siendo sólo válida la información referente a él que se encuentre
  2646.  en último lugar. De esta forma si queremos indexar un sólo fichero, por
  2647.  ejemplo TEOC.DAT, hacemos:
  2648.  
  2649.                 INDEXAR /A TUTOR.IND TEOC.DAT
  2650.  
  2651.  3) Si un mismo fichero aparece muchas veces en el fichero TUTOR.IND y esto
  2652.  ocasionara algún problema, podemos editar TUTOR.IND con cualquier editor que
  2653.  trabaje con ficheros de texto ASCII y borrar todas aquellas líneas duplica-
  2654.  das del fichero pero teniendo en cuenta dos cosas: primero, no dejar líneas
  2655.  en blanco entre fichero y fichero; y segundo, actualizar el número de fiche-
  2656.  ros indexados, dicho número debe estar en los dos primeros bytes del fichero
  2657.  TUTOR.IND.
  2658.  
  2659.  
  2660.  
  2661.  5.3.- FICHEROS DE TEORIA.
  2662.  -------------------------
  2663.  
  2664.       Los ficheros de teoría son: TEOC.DAT que contiene la teoría correspon-
  2665.  diente al lenguaje C y TEOCPP.DAT que contiene la teoría correspondiente al
  2666.  lenguaje C++.
  2667.  
  2668.       En estos ficheros, las líneas en blanco y las líneas que empiezan por
  2669.  punto y coma (;) son consideradas líneas de comentario y pueden aparecer en
  2670.  cualquier lugar de los ficheros.
  2671.  
  2672.       Dentro de cada bloque begin-end, se pueden dar tres tipos de acciones:
  2673.  ventana, visualizador y borrado de pantalla. También puede aparecer una vez
  2674.  por cada bloque begin-end, esto es, una vez por cada lección, la palabra
  2675.  clave partir.
  2676.  
  2677.       La acción de ventana escribe una ventana en pantalla con texto de
  2678.  teoría en su interior. Esta ventana no es de visualización puesto que no
  2679.  tiene la barra vertical, por lo tanto, el texto que hay en su interior no
  2680.  se puede desplazar.
  2681.  
  2682.       La acción de visualizador escribe una ventana de visualización en la
  2683.  que podemos visualizar el texto mediante las teclas de visualización (cf.
  2684.  4.6). Estas ventanas tienen la barra vertical en su lado derecho.
  2685.  
  2686.       La acción de borrado de pantalla borra la pantalla de teoría, aunque no
  2687.  se borran las líneas superior ni inferior. El sentido de borrar la pantalla
  2688.  de teoría es el de ocultar todas aquellas ventanas visibles.
  2689.  
  2690.       Significar una diferencia entre una acción de ventana y una acción de
  2691.  visualizador en el proceso de teoría: la única forma de ocultar una ventana
  2692.  (no de visualización) sin salirnos del proceso de teoría es mediante la pa-
  2693.  labra clave borrar_pantalla, sin embargo, las ventanas de visualización son
  2694.  ocultadas en cuanto nos salimos de ellas, ya sea con <LEFT> o con <RIGHT>.
  2695.  Esto no supone ninguna restricción importante, sino que simplemente hay que
  2696.  tenerlo en cuenta.
  2697.  
  2698.       En el fichero de datos, la sintaxis para la acción de ventana es:
  2699.  
  2700.                 beginv
  2701.                 ...
  2702.                 endv
  2703.  
  2704.       La sintaxis para la acción de visualizador es:
  2705.  
  2706.                 beginvis
  2707.                 ...
  2708.                 endvis
  2709.  
  2710.       Y la acción para de borrado de pantalla es la siguiente:
  2711.  
  2712.                 borrar_pantalla
  2713.  
  2714.       Todo lo que se dijo en el apartado 5.1 sobre las palabras claves (empe-
  2715.  zar en columna 1, tratamiento sensitivo al caso, resto de líneas considerada
  2716.  como comentario, etc.) está vigente para estas palabras claves que se acaban
  2717.  de describir y para todas las que se mencionen más adelante.
  2718.  
  2719.       Dentro de los bloques beginv-endv y beginvis-endvis podemos tener las
  2720.  siguientes palabras claves:
  2721.  
  2722.                 coordenadas_completas x1 y1 x2 y2
  2723.                 borde n
  2724.                 cabecera "..."
  2725.                 no_sombra
  2726.                 color ct cf
  2727.                 "..."
  2728.  
  2729.       Las palabras claves que sólo pueden ir dentro del bloque beginv-endv
  2730.  son las siguientes:
  2731.  
  2732.                 coordenadas x1 y1
  2733.                 centrar_coordenadas
  2734.                 centrar_coordenadas_x y1
  2735.                 centrar_coordenadas_y x1
  2736.                 pulsación
  2737.                 borrar_ventana
  2738.  
  2739.       Las palabras claves que sólo pueden ir dentro del bloque
  2740.  beginvis-endvis son las siguientes:
  2741.  
  2742.                 no_posicion
  2743.                 no_multiatributo
  2744.  
  2745.       Las palabras claves anteriores pueden aparecer varias veces y en
  2746.  cualquier orden dentro de un bloque beginv-endv o beginvis-endvis.
  2747.  Describamos a continuación, por orden alfabético, el significado de
  2748.  cada palabra clave de los tres grupos que se acaban de listar:
  2749.  
  2750.  - borde n: especifica el tipo de borde de la ventana; n puede ser 0 (no
  2751.  borde), 1 (borde simple) o 2 (borde doble). Por defecto, una ventana (no
  2752.  de visualización) tiene el mismo borde que la anterior. Para las ventanas
  2753.  de visualización es necesario especificar el tipo de borde ya que en caso
  2754.  contrario estaría indefinido.
  2755.  
  2756.  - borrar_ventana: esta palabra clave produce un borrado de la ventana
  2757.  actual. Se debe utilizar cuando todas las líneas que se han de visualizar
  2758.  no caben de una vez y no se quiere utilizar una ventana de visualización.
  2759.  
  2760.  - cabecera "...": especifica la cabecera de una ventana. Por defecto, las
  2761.  ventanas no tienen cabecera, pero si se utiliza esta palabra clave, el
  2762.  nombre de la cabecera aparecerá centrado en el borde superior de la ventana.
  2763.  Si el nombre de la cabecera no cabe en el borde de la ventana, sólo se mos-
  2764.  trará lo que quepa de dicho nombre. Ejemplo de utilización:
  2765.  
  2766.                 cabecera "CABECERA DE VENTANA".
  2767.  
  2768.  - centrar_coordenadas: centra la ventana en el centro de la pantalla.
  2769.  
  2770.  - centrar_coordenadas_x y1: centra la ventana en el eje x, estando el borde
  2771.  superior de la ventana en la coordenada y1.
  2772.  
  2773.  - centrar_coordenadas_y x1: centra la ventana en el eje y, estando el borde
  2774.  izquierdo de la ventana en la coordenada x1.
  2775.  
  2776.  - color ct cf: especifica los colores de la ventana; ct es el número del
  2777.  color de texto y cf es el número de color de fondo. Por defecto, una ventana
  2778.  (no de visualización) tiene el mismo color que la anterior. Para las venta-
  2779.  nas de visualización es necesario especificar el color ya que en caso con-
  2780.  trario estaría indefinido. A continuación se listan todos los números de
  2781.  colores posibles junto con el nombre del color:
  2782.  
  2783.  Colores que pueden ser utilizados tanto para texto como para fondo:
  2784.  
  2785.                 NEGRO      0
  2786.                 AZUL       1
  2787.                 VERDE      2
  2788.                 CYAN       3
  2789.                 ROJO       4
  2790.                 MAGENTA    5
  2791.                 MARRON     6
  2792.                 BLANCO     7
  2793.  
  2794.  Colores que sólo pueden ser utilizados como color de texto:
  2795.  
  2796.                 GRIS OSCURO      8
  2797.                 AZUL CLARO       9
  2798.                 VERDE CLARO     10
  2799.                 CYAN CLARO      11
  2800.                 ROJO CLARO      12
  2801.                 MAGENTA CLARO   13
  2802.                 AMARILLO        14
  2803.                 BLANCO INTENSO  15
  2804.  
  2805.  - coordenadas x1 y1: especifica la posición de comienzo de la ventana dejan-
  2806.  do que la posición final sea calculada automáticamente. La esquina superior
  2807.  izquierda de la ventana será ubicada en la posición (x1,y1). La esquina in-
  2808.  ferior derecha de se calcula de tal modo que se ajuste al número de líneas y
  2809.  a la longitud de la línea mayor que contenga esa ventana. Por ejemplo, si la
  2810.  ventana tiene 3 líneas, la línea mayor tiene 5 caracteres, y se especifica
  2811.  coordenadas 1 2, entonces las coordenadas de la ventana serán (1,2,10,5). La
  2812.  coordenada y2 se calcula como: y2 = y1 + 2 líneas de bordes + número de lí-
  2813.  neas de texto de ventana - 1; que en nuestro ejemplo es: y2 = 1 + 2 + 3 - 1
  2814.  = 5. La coordenada x2 se calcula como: x2 = x1 + 2 líneas de bordes + número
  2815.  de caracteres de la línea más larga + 2 espacios en blanco (uno entre borde
  2816.  izquierdo y primera columna y el otro entre el último carácter de la línea
  2817.  más larga y el borde derecho de la ventana) - 1; que en nuestro ejemplo es:
  2818.  x2 = 2 + 2 + 5 + 2 - 1 = 10. Siempre se deja un espacio en blanco en la
  2819.  primera y última columna de la ventana.
  2820.  
  2821.  - coordenadas_completas x1 y1 x2 y2: especifica coordenadas de la ventana;
  2822.  estas coordenadas son (x1,y1,x2,y2), es decir, la esquina superior izquierda
  2823.  de la ventana está ubicada en la posición (x1,y1) de la pantalla y la esqui-
  2824.  na inferior derecha está ubicada en la posición (x2,y2). Hay que tener en
  2825.  cuenta que el programa TUTOR.EXE trabajo en modo color 80x25, teniendo como
  2826.  coordenadas (1,1) la esquina superior izquierda de la pantalla.
  2827.  
  2828.  - no_multiatributo: esta palabra clave hace que el atributo de pantalla
  2829.  de la ventana sea único, es decir, que en este caso no podrá salir texto
  2830.  sobreimpresionado (esto se consigue con el carácter tilde ~). Es conve-
  2831.  niente utilizar esta palabra clave en aquellas ventanas que no contengan
  2832.  texto sobreimpresionado pues la visualización es mucho más rápido debido
  2833.  a que no tiene que chequear el carácter de cambio de atributo de pantalla
  2834.  (~). Por defecto, se supone que una ventana de visualización puede contener
  2835.  caracteres sobreimpresionados.
  2836.  
  2837.  - no_posicion: esta palabra clave hace que no aparezca los números de líneas
  2838.  visualizadas en la esquina superior derecha; esto resulta interesante cuando
  2839.  la cabecera de la ventana es muy larga y la posición oculta parte de la cabe-
  2840.  cera. Por defecto, se escribirá la posición en las ventanas de visualización.
  2841.  
  2842.  - no_sombra: por defecto, todas las ventanas tienen sombra, por eso se sumi-
  2843.  nistra esta palabra clave, para crear una ventana sin sombra.
  2844.  
  2845.  - pulsación: esta palabra clave hace que el usuario tenga que pulsar una
  2846.  tecla. Sólo se debe utilizar mientras se escriben líneas en las ventanas
  2847.  de teoría, ya que al finalizar el proceso de una ventana se produce auto-
  2848.  máticamente una acción de pulsación. Ejemplo de utilización:
  2849.  
  2850.                 " ... "
  2851.                 pulsación
  2852.                 " ... "
  2853.  
  2854.       No se debe utilizar para pasar de una ventana a otra, ni de un visua-
  2855.  lizador a otro.
  2856.  
  2857.  - "...": son las líneas a visualizar donde los puntos significativos repre-
  2858.  senta el contenido. En el contenido puede haber caracteres " ya que sólo se
  2859.  consideran el primero y el último. Ejemplo:
  2860.  
  2861.                 ; una línea normal
  2862.                 "Línea 1"
  2863.                 ; una línea en blanco
  2864.                 ""
  2865.                 ; una línea normal
  2866.                 "Línea 2"
  2867.  
  2868.       Los trozos de mensajes que aparezcan entre los caracteres ~ se escri-
  2869.  birán sobreimpresionados. Para escribir el carácter tilde (~) es necesario
  2870.  escribirlo dos veces consecutivas: ~~. Ejemplo:
  2871.  
  2872.                 ; los dígitos 23 aparecerán sobreimpresionados:
  2873.                 "1~23~4"
  2874.  
  2875.       Hay un bloque del que todavía no hemos hablado y que puede aparecer en
  2876.  cualquier lugar (siempre que sea coherente) en los ficheros de teoría, este
  2877.  bloque es begint-endt. Todo lo que vaya entre estas palabras claves sólo se
  2878.  procesará si la opción turbo está on. Ejemplo:
  2879.  
  2880.                 begint
  2881.                 beginv
  2882.                 ...
  2883.                 endv
  2884.                 borrar_pantalla
  2885.                 beginv
  2886.                 ...
  2887.                 endv
  2888.                 endt
  2889.                 beginv
  2890.                 "línea 1"
  2891.                 begint
  2892.                 "línea 2"
  2893.                 endt
  2894.                 end
  2895.  
  2896.       Para terminar la descripción de la sintaxis de los ficheros de teoría
  2897.  hagamos algunas consideraciones sobre la palabra clave partir:
  2898.  
  2899.  - La palabra clave partir debe estar fuera de los bloques beginv-endv y
  2900.  beginvis-endvis.
  2901.  
  2902.  - No es conveniente ponerla dentro de un bloque begint-endt ya que en este
  2903.  caso sólo se partirá la lección si la opción partir está on y además está
  2904.  on la opción de turbo.
  2905.  
  2906.  - Otra cuestión importante a tener con partir se da cuando una ventana toma
  2907.  información de la ventana anterior, en cuyo caso no se debe utilizar partir
  2908.  a no ser que la ventana que va después de partir define todos sus parámetros.
  2909.  Por ejemplo:
  2910.  
  2911.               beginv
  2912.               ...
  2913.               color 15 1   color blanco intenso sobre azul
  2914.               ...
  2915.               endv
  2916.  
  2917.               partir
  2918.  
  2919.               beginv
  2920.               ...
  2921.               ; no haría falta repetir el mismo color si no
  2922.               ; estuviera la palabra clave partir antes de
  2923.               ; este bloque
  2924.               color 15 1   necesario por si se parte la lección
  2925.               endv
  2926.  
  2927.       Yo le recomendaría al usuario examinar los ficheros TEOC.DAT y
  2928.  TEOCPP.DAT si realmente quiere comprender cuál es su sintaxis para poder
  2929.  así modificarlos.
  2930.  
  2931.  
  2932.  
  2933.  5.4.- FICHEROS DE EJEMPLOS.
  2934.  ---------------------------
  2935.  
  2936.       Los ficheros de ejemplos son: EJEMC.DAT que contiene los ejemplos
  2937.  correspondientes al lenguaje C y EJEMCPP.DAT que contiene los ejemplos
  2938.  correspondientes al lenguaje C++.
  2939.  
  2940.       Estos ficheros, al igual que todos los ficheros con extensión DAT,
  2941.  están compuestos por bloques delimitados por las palabras claves begin-end,
  2942.  donde cada bloque representa a una lección, es decir, que en cada bloque
  2943.  begin-end están todos los ejemplos de una determinada lección. Ejemplo de
  2944.  la estructura general de estos ficheros:
  2945.  
  2946.                 ; LECCION 1
  2947.                 begin
  2948.                 ...
  2949.                 end
  2950.  
  2951.                 ; LECCION 2
  2952.                 begin
  2953.                 ...
  2954.                 end
  2955.  
  2956.                 ...
  2957.  
  2958.       Dentro de cada bloque nos podemos encontrar bloques begint-endt y
  2959.  begine-ende. Dentro de los bloques begint-endt puede haber ninguno, uno
  2960.  o varios bloques begine-ende. Es importante darse cuenta que un bloque
  2961.  begint-endt no puede aparecer dentro de un bloque begine-ende sino fuera.
  2962.  En los ficheros de teoría sí se podía incluir un bloque begint-endt dentro
  2963.  de los bloques beginv-endv y beginvis-endvis, con esto se conseguía que una
  2964.  o varias líneas de las ventanas sólo se procesarán si estaba el indicador de
  2965.  turbo (cf. 4.18.6) puesto a on. En el caso de los ejemplos, no es útil tal
  2966.  posibilidad.
  2967.  
  2968.       Cada bloque begine-ende representa un programa ejemplo. La sintaxis de
  2969.  los bloques begine-ende es:
  2970.  
  2971.                 begine "cabecera"
  2972.                 ...
  2973.                 ende
  2974.  
  2975.       Todo lo que hay entre begine-ende es tratado como texto que pertenece
  2976.  al código fuente del ejemplo. "cabecera" es la cabecera que aparecerá en el
  2977.  lado izquierdo del borde superior de la ventana de visualización (cf. 4.6).
  2978.  
  2979.       Todo lo que esté entre begint-endt sólo será procesado si la opción
  2980.  turbo está on. Ejemplo:
  2981.  
  2982.                 begint
  2983.                 begine " EJEMPLO 1 "
  2984.                 ...
  2985.                 ende
  2986.                 begine " EJEMPLO 2 "
  2987.                                     ...
  2988.                 ende
  2989.                 endt
  2990.  
  2991.       En estos ficheros, las líneas en blanco y la líneas que empiezan por
  2992.  punto y coma (;) sólo serán consideradas como comentarios si están fuera
  2993.  de un bloque begine-ende, puesto que si están dentro serán líneas pertene-
  2994.  cientes al ejemplo, ya hemos dicho anteriormente que todo las líneas que
  2995.  aparezcan dentro de un bloque begine-ende en los ficheros de ejercicios
  2996.  aparecerán exactamente igual en la ventana de ejemplos.
  2997.  
  2998.       Yo le recomendaría al usuario inspeccionar los ficheros EJEMC.DAT y
  2999.  EJEMCPP.DAT para que vea cómo están construidos y poder así modificarlos
  3000.  si lo desea.
  3001.  
  3002.  
  3003.  
  3004.  5.5.- FICHEROS DE EJERCICIOS.
  3005.  -----------------------------
  3006.  
  3007.       Los ficheros de ejercicios son: EJERC.DAT que contiene los ejercicios
  3008.  correspondientes al lenguaje C y EJERCPP.DAT que contiene los ejercicios
  3009.  correspondientes al lenguaje C++.
  3010.  
  3011.       Estos ficheros, al igual que todos los ficheros con extensión DAT,
  3012.  están compuestos por bloques delimitados por las palabras claves begin-end,
  3013.  donde cada bloque representa a una lección, es decir, que en cada bloque
  3014.  begin-end están todos los ejercicios de una determinada lección. Ejemplo de
  3015.  la estructura general de estos ficheros:
  3016.  
  3017.                 ; LECCION 1
  3018.                 begin
  3019.                 ...
  3020.                 end
  3021.  
  3022.                 ; LECCION 2
  3023.                 begin
  3024.                 ...
  3025.                 end
  3026.  
  3027.                 ...
  3028.  
  3029.       Dentro de cada bloque nos podemos encontrar bloques begint-endt y
  3030.  begine-ende. Todo lo que esté entre begint-endt sólo será procesado si
  3031.  la opción turbo está on. Dentro de los bloques begint-endt puede haber
  3032.  ninguno, uno o varios bloques begine-ende. Es importante darse cuenta que
  3033.  un bloque begint-endt no puede aparecer dentro de un bloque begine-ende sino
  3034.  fuera. En los ficheros de teoría sí se podía incluir un bloque begint-endt
  3035.  dentro de los bloques beginv-endv y beginvis-endvis, con esto se conseguía
  3036.  que una o varias líneas de las ventanas sólo se procesarán si estaba el
  3037.  indicador de turbo (cf. 4.18.6) puesto a on. En el caso de los ejemplos,
  3038.  no es útil tal posibilidad.
  3039.  
  3040.       Cada bloque begine-ende representa un ejercicio. La sintaxis de los
  3041.  bloques begine-ende es:
  3042.  
  3043.                 begine "tipo_de_ejercicio"
  3044.                 ...
  3045.                 ende
  3046.  
  3047.  donde tipo_de_ejercicio puede ser test, pcc, PCC, psc y prpr. El tipo de
  3048.  ejercicio test está descrito en el apartado 4.17.1. Los tipos de ejercicios
  3049.  pcc y PCC corresponden a las preguntas con comprobación, que están descritas
  3050.  en el apartado 4.17.2. El tipo de ejercicio psc corresponde a las preguntas
  3051.  sin comprobación, que están descritas en el apartado 4.17.3. El tipo de
  3052.  ejercicio prpr se refiere a las propuestas de programas, proceso explicado
  3053.  en el apartado 4.17.4.
  3054.  
  3055.       En el caso de prpr, todo lo que hay en el interior de begine-ende es
  3056.  tratado como texto que pertenece al código fuente del enunciado de programa.
  3057.  
  3058.       En el caso de pcc, PCC y psc debe haber obligatoriamente dos palabras
  3059.  claves en el interior del bloque begine-end: pregunta y respuesta. En las
  3060.  líneas siguientes (tres líneas como máximo) a la línea en la que se encuen-
  3061.  tra la palabra clave pregunta, se debe poner el texto correspondiente a la
  3062.  pregunta planteada. Lo mismo sucede con la palabra clave respuesta, después
  3063.  de la cual puede ir un máximo de tres líneas que contengan la respuesta a la
  3064.  pregunta planteada; si se trata de pcc o PCC, la respuesta introducida por
  3065.  el usuario se comparará con la primera línea tras la palabra clave respuesta.
  3066.  La diferencia entre pcc y PCC está que en el primer caso no se considera el
  3067.  caso de los caracteres de la respuesta (ni la introducida por el usuario ni
  3068.  la real que se encuentra en el fichero de datos) y en el segundo caso sí se
  3069.  considera el caso de los caracteres (si éstos están en minúsculas o mayús-
  3070.  culas). La longitud máxima de cada línea de pregunta o respuesta es de 74
  3071.  caracteres, empezando a contar a partir del primer carácter de la línea,
  3072.  aunque éste sea un blanco; en el caso de pcc o PCC, la respuesta (primera
  3073.  línea tras la palabra clave respuesta) debe tener una longitud máxima de 70
  3074.  caracteres.
  3075.  
  3076.       En el caso de los ejercicios tipo test, los bloques begine-ende deben
  3077.  contener, además de las palabras claves pregunta y respuesta, la palabra
  3078.  clave opciones. Después de la palabra clave opciones pueden ir un máximo de
  3079.  nueve líneas, antes de aparecer otra palabra clave, donde cada línea corres-
  3080.  ponde a una opción del menú. En el menú que aparece en pantalla cada opción
  3081.  va precedida por un número de opción para que el usuario puede seleccionar
  3082.  una opción pulsando directamente la tecla correspondiente a ese número. En
  3083.  el caso de los test, al comienzo de la línea siguiente a la que contiene la
  3084.  palabra clave respuesta debe encontrarse el número de la opción correcta,
  3085.  siendo el número correspondiente a la primera opción el uno.
  3086.  
  3087.       Como ejemplo de un bloque begine-ende vamos a mostrar a continuación
  3088.  los dos primeros bloques que aparece en el fichero EJEMC.DAT:
  3089.  
  3090.  begine "test"
  3091.  pregunta
  3092.  
  3093.    ¿Qué tipo de fichero es aquél que tiene extensión OBJ?
  3094.  opciones
  3095.  Fichero fuente
  3096.  Fichero objeto
  3097.  Fichero ejecutable
  3098.  Fichero de librería
  3099.  respuesta
  3100.  2
  3101.  ende
  3102.  begine "pcc"
  3103.  pregunta
  3104.  
  3105.    ¿Quién fue el inventor del lenguaje C?
  3106.  respuesta
  3107.  Dennis Ritchie
  3108.  ende
  3109.  
  3110.       En estos ficheros, las líneas en blanco y la líneas que empiezan por
  3111.  punto y coma (;) sólo serán consideradas como comentarios si están fuera de
  3112.  un bloque begine-ende.
  3113.  
  3114.       Yo le recomendaría al usuario examinar los ficheros EJERC.DAT y
  3115.  EJERCPP.DAT para que vea cómo están construidos y poder de esta manera
  3116.  modificarlos si lo desea.
  3117.  
  3118.  
  3119.  
  3120.  5.6.- FICHERO DE AYUDA.
  3121.  -----------------------
  3122.  
  3123.       El fichero de ayuda es TUTOR.HLP y contiene las ayudas locales del
  3124.  programa TUTOR.EXE.
  3125.  
  3126.       Estos ficheros, al igual que todos los ficheros con extensión DAT,
  3127.  están compuestos por bloques delimitados por las palabras claves begin-end,
  3128.  donde cada bloque representa una ayuda local. Ejemplo de la estructura
  3129.  general de este fichero:
  3130.  
  3131.                 ; AYUDA LOCAL 1
  3132.                 begin
  3133.                 ...
  3134.                 end
  3135.  
  3136.                 ; AYUDA LOCAL 2
  3137.                 begin
  3138.                 ...
  3139.                 end
  3140.  
  3141.                 ...
  3142.  
  3143.       Dentro de cada bloque begin-end se encuentra el texto tal y como va a
  3144.  ser mostrada en el proceso de ayuda local (cf. 4.8).
  3145.  
  3146.       En estos ficheros, las líneas en blanco y la líneas que empiezan por
  3147.  punto y coma (;) sólo serán consideradas como comentarios si están fuera de
  3148.  un bloque begin-end, puesto que si están dentro serán líneas pertenecientes
  3149.  al texto de la ayuda.
  3150.  
  3151.       Cada vez que pulsamos la tecla <F1> en TUTOR.EXE este programa lee un
  3152.  bloque begin-end y lo muestra en una ventana de visualización (cf. 4.5).
  3153.  
  3154.  
  3155.  
  3156.  5.7.- FICHERO DE INFORMACION GENERAL.
  3157.  -------------------------------------
  3158.  
  3159.       El fichero de información general se llama TUTOR.DOC y en él se
  3160.  encuentra el manual de usuario de todo el paquete.
  3161.  
  3162.       El fichero TUTOR.DOC es un fichero de texto ASCII que puede ser editado
  3163.  con cualquier procesador de texto que trabaje con ficheros de texto ASCII.
  3164.  También puede ser visualizado seleccionando la opción 1 del menú principal
  3165.  (cf. 4.10) del programa TUTOR.EXE; de esta forma podemos consultarlo sin
  3166.  salirnos del tutor.
  3167.  
  3168.       Este fichero ha sido creado con el procesador de texto WordPerfect 5.1.
  3169.  De hecho, el manual de usuario es el resultado de imprimir el fichero
  3170.  TUTOR.DOC en formato WordPerfect. Para convertir este fichero de formato
  3171.  WordPerfect a formato ASCII se ha utilizado la utilidad CONVERT.EXE que
  3172.  está incluida en la versión 5.1 de dicho procesador de textos.
  3173.  
  3174.  
  3175.  
  3176.  5.8.- EL PROGRAMA COMPILAD.EXE, EL FICHERO POR LOTES C.BAT, Y EL
  3177.  ----------------------------------------------------------------
  3178.  FICHERO DE DATOS TUTOR.CMP.
  3179.  ---------------------------
  3180.  
  3181.       El programa COMPILAD.EXE construye el fichero TUTOR.CMP.
  3182.  
  3183.       Pulsando la tecla <F5> en el proceso de propuestas de programas (cf.
  3184.  4.14.4) en la tarea de ejercicios (cf. 4.17) se llama al compilador de C o
  3185.  C++ que utilice el usuario. El nombre del compilador, que puede contener
  3186.  opcionalmente la letra de unidad y el nombre de ruta, debe estar en la pri-
  3187.  mera línea del fichero TUTOR.CMP, el cual es un fichero de texto ASCII que
  3188.  se puede editar con cualquier procesador de textos que manipule ficheros de
  3189.  texto ASCII. El contenido de las demás líneas (a partir de la primera) es
  3190.  ignorado. El nombre del programa (del compilador) puede tener todos los ar-
  3191.  gumentos que se desee; la única condición o restricción que se pone a ello
  3192.  es que el nombre del programa junto con sus argumentos no puede sobrepasar
  3193.  los 255 caracteres. El nombre del programa empezará en el primer carácter
  3194.  que no sea un espacio en blanco en la primera línea del fichero. Es obvio
  3195.  que el tutor no puede diferenciar un nombre de un compilador de C o C++ de
  3196.  cualquier otro programa, esto implica que el usuario puede poner el nombre
  3197.  de cualquier fichero de programa (extensiones de fichero .COM o .EXE), el
  3198.  nombre de cualquier fichero de lotes (extensión .BAT) o cualquier comando
  3199.  interno del DOS (como por ejemplo DIR) en la primera línea del fichero
  3200.  TUTOR.DOC. Poniendo como nombre del programa COMMAND.COM se consigue un OS
  3201.  SHELL, es decir, entrar en el sistema operativo DOS, desde el cual nos sali-
  3202.  mos, para regresar al tutor, con la orden EXIT del DOS. El fichero TUTOR.CMP
  3203.  se puede crear fácilmente con la utilidad COMPILAD.EXE (cf. 5.8), suminis-
  3204.  trada para tal efecto, aunque también se puede crear y modificar con cual-
  3205.  quier editor de ficheros de texto ASCII.
  3206.  
  3207.       La sintaxis correcta de ejecución de este programa es:
  3208.  
  3209.   COMPILAD NOM_FICH [NOMBRE_COMPILADOR [ARGUMENTOS_COMPILADOR]]
  3210.  
  3211.  donde NOM_FICH es el fichero de datos a crear, el NOMBRE_COMPILADOR es el
  3212.  nombre del programa compilador de C y/o C++, y ARGUMENTOS_COMPILADOR son los
  3213.  argumentos que se le pasan a NOMBRE_COMPILADOR cuando éste es ejecutado por
  3214.  TUTOR.EXE. NOM_FICH debe ser TUTOR.CMP para que sea utilizada por TUTOR.EXE.
  3215.  Si no aparece NOMBRE_COMPILADOR, el fichero NOM_FICH estará vacío. También
  3216.  son opcionales los argumentos ARGUMENTOS_COMPILADOR.
  3217.  
  3218.       Puesto que el único fichero de compilador que utiliza el tutor es el
  3219.  fichero TUTOR.CMP se suministra el fichero por lotes C.BAT que contiene una
  3220.  sola línea y es la siguiente:
  3221.  
  3222.  compilad tutor.cmp %1 %2 %3 %4 %5 %6 %7 %8 %9
  3223.  
  3224.  que crea el fichero TUTOR.CMP y copia en la primera línea de él los argumen-
  3225.  tos pasados a T.BAT que pueden ser hasta nueve.
  3226.  
  3227.       El fichero TUTOR.CMP es abierto, leído y procesado al comienzo de
  3228.  la ejecución del programa TUTOR.EXE, guardándose el nombre del compilador
  3229.  en memoria y cerrando acto seguido el fichero TUTOR.CMP. Por lo tanto,
  3230.  cualquier anomalía que pueda haber relacionada con el fichero TUTOR.CMP
  3231.  se producirá al principio del tutor y en este momento se emitirá el
  3232.  mensaje de error si lo hubiera. Los posibles errores que pueden dar el
  3233.  programa TUTOR.EXE en relación con este fichero son los siguientes:
  3234.  
  3235.  - "No se podrá llamar al compilador ya que no se ha podido abrir TUTOR.CMP".
  3236.  Este error se produce cuando no se puede abrir el fichero TUTOR.CMP y esto
  3237.  suele ocurrir cuando no se encuentra en el directorio de trabajo.
  3238.  
  3239.  - "No se podrá llamara al compilador ya que no se ha podido leer el nombre
  3240.  de él". Este error se produce cuando se abre el fichero TUTOR.CMP y no se
  3241.  puede leer el nombre del compilador. Esto ocurre cuando la primera línea del
  3242.  fichero está vacía.
  3243.  
  3244.  - "No se podrá llamar al compilador ya que el nombre es demasiado largo (>=
  3245.  255)". Este error se produce cuando el nombre del compilador junto con sus
  3246.  argumentos están formados por más de 255 caracteres.
  3247.  
  3248.       El fichero TUTOR.CMP se suministra conteniendo la línea
  3249.                             command
  3250.  que produce un OS SHELL, es decir, cede el control a la línea de órdenes del
  3251.  sistema operativo hasta que se ejecute EXIT desde esta línea. El usuario ha
  3252.  de cambiar esta línea por su compilador de C y C++ si desea invocar a tal
  3253.  compilador desde las propuestas de programas.
  3254.  
  3255.  
  3256.  
  3257.  5.9.- FICHERO DE CONFIGURACION.
  3258.  -------------------------------
  3259.  
  3260.       El fichero de configuración el TUTOR.CFG. En este fichero se encuentra
  3261.  las características de las pantallas del programa TUTOR.EXE, principalmente
  3262.  los colores.
  3263.  
  3264.       Absolutamente todos los colores que aparecen en las distintas pantallas
  3265.  del programa TUTOR.EXE son modificables por parte del usuario alterando el
  3266.  contenido del fichero de configuración. Es pertinente reseñar que no son
  3267.  cambiables los colores de la pantalla de presentación, puesto que tal pre-
  3268.  sentación es obra del programa PORTUTOR.EXE y no de TUTOR.EXE; por otra par-
  3269.  te, las pantallas de presentación utilizan colores aleatorios. También re-
  3270.  sulta obvio que no se pueden modificar los colores de los programas ejemplos,
  3271.  cuyos códigos ejecutables están en los programas PRTUTC.EXE y PRTUTCPP.EXE,
  3272.  ya que estos colores responden a un determinado código de programa ejemplo.
  3273.  
  3274.       El fichero TUTOR.CFG es un fichero de texto ASCII que puede ser manipu-
  3275.  lado con cualquier editor de textos de ficheros ASCII.
  3276.  
  3277.       Las líneas en blanco y las líneas que empiezan con punto y coma (;) en
  3278.  su primera columna son líneas de comentario; estas líneas son desechadas por
  3279.  el programa TUTOR.EXE aunque son muy útiles para hacer este fichero legible
  3280.  al usuario.
  3281.  
  3282.       El resto de las líneas comienzan con dos números enteros. Estos números
  3283.  deben estar en el rango de 0 a 255 y entre ellos puede haber cualquier número
  3284.  de espacios, tampoco importa el número de espacios entre el principio de la
  3285.  línea y el primer número. El contenido de la línea que sigue a estos dos
  3286.  números, (es decir, el resto de la línea) es ignorado; aunque en este lugar
  3287.  es muy útil reseñar el significado de los dos números de la línea que le
  3288.  corresponde; de hecho ese es el mensaje que por defecto se suministra en
  3289.  cada línea después de los dos números, aunque el usuario puede modificarlo.
  3290.  Una restricción impuesta para cada línea de texto de este fichero es que las
  3291.  líneas no pueden contener más de 255 caracteres; es necesario significar a
  3292.  este respecto que el fichero TUTOR.CFG es leído al comienzo de cada ejecu-
  3293.  ción del programa TUTOR.EXE, y en consecuencia cuantas más líneas de comen-
  3294.  tario se le añadan y cuantas más largas se hagan las líneas tanto más tiempo
  3295.  tardará el programa TUTOR.EXE en procesar el fichero de configuración.
  3296.  
  3297.       Procedamos en este momento a la explicación de los dos primeros números
  3298.  de cada línea de datos del fichero TUTOR.CFG. En todas las líneas, excepto
  3299.  en una de ellas que después se aclarará, el primer número indica color de
  3300.  texto y el segundo color de fondo. La característica de pantalla a las que
  3301.  corresponde estos colores se expone en el resto de la línea. Se disponen de
  3302.  dieciséis colores, con códigos que van desde 0 hasta 15; los nombres de los
  3303.  colores disponibles junto con sus códigos se encuentran en el apartado 5.3.
  3304.  
  3305.       Hay una sola línea de datos (línea que contiene dos números a procesar)
  3306.  en la cual sus dos números correspondientes no representan colores de texto
  3307.  y fondo. La línea, a no ser que el usuario la modifique, es la siguiente:
  3308.  
  3309.  176 112  carácter (código ASCII) y atributo de pantalla de relleno en tareas
  3310.  
  3311.       El primer número (originalmente 176, es decir, el carácter ░) es el
  3312.  código ASCII del carácter de relleno (carácter de fondo de pantalla, sin
  3313.  tener en cuenta las líneas de estado) de las pantallas de tareas (pantallas
  3314.  de teoría, de ejemplos y de ejercicios; la tarea de pruebas no tiene fondo).
  3315.  Si el usuario desea que el carácter de relleno sea, por ejemplo, el carácter
  3316.  x, entonces el primer número de esta línea será 120, es decir, el código
  3317.  ASCII del carácter x.
  3318.  
  3319.       El segundo número de la línea de la que hablamos representa el atributo
  3320.  de pantalla con el cual se ha de escribir el carácter de relleno. El atribu-
  3321.  to de pantalla es un byte en el cual el bit 7 indica si el carácter se es-
  3322.  cribe con parpadeo o sin él, los bits 6-4 representan el código del color
  3323.  de fondo, y los bits 3-0 reflejan el código del color de texto (color del
  3324.  primer plano). Recordemos de nuevo que los códigos de los colores se encuen-
  3325.  tran en el apartado 5.3. Los bits se enumeran del siguiente modo:
  3326.  
  3327.                         7 6 5 4  3 2 1 0
  3328.                         x x x x  x x x x
  3329.  
  3330.       El valor original de este atributo de pantalla es 112, que en hexade-
  3331.  cimal corresponde al número 70, el cual en binario es 01110000, y que según
  3332.  la descripción anterior corresponde a blanco sobre negro.
  3333.  
  3334.       Cuando el usuario modifique este fichero ha de tener presente tres
  3335.  consideraciones importantes:
  3336.  
  3337.       1) Todas las líneas de datos han de empezar con dos números. Los espa-
  3338.  cios en blanco entre los dos números y los espacios en blanco entre el prin-
  3339.  cipio de línea y el primer número no se tienen en cuenta. Si se introduce un
  3340.  carácter antes o después del primer número, el programa TUTOR.EXE no infor-
  3341.  mará de ningún error pero sin embargo los colores del programa no serán los
  3342.  esperados.
  3343.  
  3344.       2) Las líneas de datos no pueden contener más de 255 caracteres.
  3345.  
  3346.       3) Se pueden insertar tantas líneas de comentario y líneas en blanco
  3347.  como se deseen pero NUNCA se ha de cambiar el orden de las líneas de datos.
  3348.  Por ejemplo, la primera línea de datos siempre ha de contener los colores
  3349.  de la línea de estado superior, la segunda línea de datos siempre ha de
  3350.  contener los colores normales (no sobreiluminados) de la línea de estado
  3351.  inferior, y así sucesivamente hasta la última línea de datos.
  3352.  
  3353.  
  3354.  
  3355.  6.- ERRORES.
  3356.  ------------
  3357.  
  3358.       El usuario siempre es informado de todo error que ocurra en cualquier
  3359.  programa de los que forman el tutor.
  3360.  
  3361.       En los siguiente apartados se exponen todos los posibles errores para
  3362.  cada programa.
  3363.  
  3364.  
  3365.  
  3366.  6.1.- ERRORES EN TUTOR.EXE
  3367.  --------------------------
  3368.  
  3369.       Los errores en el programa TUTOR.EXE los podemos dividir en los
  3370.  siguientes grupos: errores en los argumentos, errores terminales, errores
  3371.  no terminales, avisos y errores de programación.
  3372.  
  3373.  
  3374.  
  3375.  6.1.1.- ERRORES EN LOS ARGUMENTOS.
  3376.  ----------------------------------
  3377.  
  3378.       Los errores en los argumentos son aquéllos que se producen al llamar al
  3379.  programa TUTOR.EXE con argumentos incorrectos o incompletos.
  3380.  
  3381.       Los errores que se pueden dar de este tipo, por orden alfabético, son
  3382.  los siguientes:
  3383.  
  3384.  - "El nombre del programa o el nombre del autor ha sido cambiado."
  3385.  
  3386.       Este error ocurre cuando se llama al programa TUTOR.EXE con el argu-
  3387.  mento ? y este programa detecta un cambio en el nombre del autor o del
  3388.  programa (concretamente en la línea que aparece sobreiluminada cuando se
  3389.  llama al tutor con el argumento ? y se ofrece la ayuda de los argumentos).
  3390.  Lo más probable es que el usuario haya realizado tal cambio con un editor
  3391.  hexadecimal como los que proporciona las Utilidades Norton o las PCTOOLS.
  3392.  La solución es fácil: restaurar el título original del programa o conseguir
  3393.  una nueva copia del tutor. De todas formas, el chequeo de los nombres de
  3394.  autor y programa sólo se hace cuando TUTOR.EXE se ejecuta con el argumento
  3395.  ?, en los demás casos no se efectúa el chequeo y se puede trabajar perfec-
  3396.  tamente con el tutor.
  3397.  
  3398.  - "Error: El argumento N no es válido."
  3399.  
  3400.       El argumento número N no es correcto. Los únicos argumentos válidos
  3401.  están listados en el apartado 4.18. También se puede obtener la lista de
  3402.  argumentos disponibles ejecutando el programa TUTOR.EXE con el argumento ?.
  3403.  
  3404.  - "Error: Especificado parámetro "p" y memoria expandida no disponible o es
  3405.  insuficiente."
  3406.  
  3407.       Se ha llamado al programa TUTOR.EXE con el parámetro p y sin embargo o
  3408.  bien no hay memoria expandida o bien la que hay disponible es insuficiente
  3409.  (menos de 256 Kbytes). Si no se puede disponer de más memoria expandida
  3410.  (como mínimo 256K) es necesario ejecutar el tutor sin este parámetro.
  3411.  
  3412.  - "Error: Especificado parámetro "x" y memoria extendida no disponible o es
  3413.  insuficiente."
  3414.  
  3415.       Se ha llamado al programa TUTOR.EXE con el parámetro x y sin embargo o
  3416.  bien no hay memoria extendida o bien la que hay disponible es insuficiente.
  3417.  Si no se puede disponer de más memoria extendida es necesario ejecutar el
  3418.  tutor sin este parámetro.
  3419.  
  3420.  - "Error: Número de lección no válido."
  3421.  
  3422.       El número de lección debe ser un número mayor que 0.
  3423.  
  3424.  - "Error: Número de milisegundos no válido."
  3425.  
  3426.       El número de milisegundos de retardo debe ser un entero mayor que 0.
  3427.  
  3428.  - "Error: Número de tarea no válido."
  3429.  
  3430.       El número de tarea debe estar en el rango de 1 a 5. El número 1 corres-
  3431.  ponde a "Lección completa", el número 2 a "Teoría", el número 3 a "Pruebas",
  3432.  el número 4 a "Ejemplos", y el número 5 a "Ejercicios".
  3433.  
  3434.  - "Error: Opción de mp no válida."
  3435.  
  3436.       Tras el argumento mp debe ir el número de opción del menú principal.
  3437.  Este número debe ser 1, 2 ó 3.
  3438.  
  3439.  - "Error: Opción fmu sin nombre de fichero."
  3440.  
  3441.       Tras el argumento fmu debe ir el nombre de fichero a visualizar con la
  3442.  opción 1 del menú principal.
  3443.  
  3444.  - "Error: Opción l sin número de lección."
  3445.  
  3446.       Tras el argumento l[ección] debe ir el número de lección. Este número
  3447.  debe estar en el rango de 1 a 12 para el lenguaje C, y en el rango de 1 a 8
  3448.  para el lenguaje C++.
  3449.  
  3450.  - "Error: Opción mp sin número de opción."
  3451.  
  3452.       Tras el argumento mp debe ir el número de opción del menú principal.
  3453.  
  3454.  - "Error: Opción rr sin número de milisegundos."
  3455.  
  3456.       Tras el argumento rr debe ir el número de milisegundos de retardo entre
  3457.  la presión de un botón y su acción correspondiente.
  3458.  
  3459.  - "Error: Opción t sin número de tarea."
  3460.  
  3461.       Tras el argumento t[area] debe ir el número de tarea.
  3462.  
  3463.  - "Error: Puerto de impresora sin número."
  3464.  
  3465.       Tras el argumento pi debe ir el número del puerto de impresora,
  3466.  correspondiendo el número 0 al puerto LPT1, el número 1 al puerto LPT2,
  3467.  y así sucesivamente.
  3468.  
  3469.  
  3470.  
  3471.  6.1.2.- ERRORES TERMINALES.
  3472.  ---------------------------
  3473.  
  3474.       Los errores terminales son aquéllos que provocan una salida del
  3475.  programa TUTOR.EXE tras mostrar el mensaje correspondiente.
  3476.  
  3477.       Hay tres tipos de errores terminales: error de memoria insuficiente,
  3478.  errores de línea de ficheros y errores terminales normales.
  3479.  
  3480.  
  3481.  
  3482.  6.1.2.1.- ERROR DE MEMORIA INSUFICIENTE.
  3483.  ----------------------------------------
  3484.  
  3485.       Este error se produce cuando no hay suficiente memoria para que el
  3486.  programa siga ejecutándose correctamente.
  3487.  
  3488.       Es el único tipo de error cuyo mensaje de error no se muestra en una
  3489.  ventana centrada en pantalla, puesto que no hay suficiente memoria para
  3490.  crear una estructura de ventana.
  3491.  
  3492.       Cuando se origina este error se borra la pantalla en atributo de pan-
  3493.  talla blanco sobre negro y se expone el mensaje de error.
  3494.  
  3495.       Este error se suele dar al leer la teoría de una lección debido al gran
  3496.  volumen de información que tiene que procesar y almacenar en memoria. Otra
  3497.  situación es la que es probable que se dé este error en los sistemas con
  3498.  poca memoria es al leer el manual de usuario mediante la opción 1 del menú
  3499.  principal. En otras situaciones no es frecuente que se dé este error.
  3500.  
  3501.       Si no hay suficiente memoria para cargar la teoría de una lección,
  3502.  ejecutar el programa con el argumento pt (cf.4.18.9). Si así no se resuelve
  3503.  el problema de la memoria insuficiente, deberá el usuario desalojar algunos
  3504.  programas residentes hasta que se pueda cargar dicha teoría en memoria. Si
  3505.  todavía persiste el error, se puede hacer una lección partible (con la pala-
  3506.  bra clave partir, cf. 4.18.9) o si ya lo es, se puede cambiar la palabra
  3507.  clave partir de lugar para adecuar la partición al sistema del usuario.
  3508.  
  3509.       Cuando este error se da al leer el manual de usuario desde la primera
  3510.  opción del menú principal y no hay posibilidad de dejar más memoria RAM con-
  3511.  vencional libre se tienen dos alternativas: leer parcialmente el manual pul-
  3512.  sando la tecla ESC (o su equivalente del ratón) mientras se lee el fichero
  3513.  de disco, o bien leer el manual de usuario (que se encuentra en el fichero
  3514.  TUTOR.DOC) con cualquier editor de textos. Por supuesto, también se puede
  3515.  imprimir el fichero TUTOR.DOC si no se dispone del libro.
  3516.  
  3517.       Una tercera situación en la que se suele dar este error ocurre al invo-
  3518.  car la ayuda local desde el proceso de visualización del manual de usuario
  3519.  (opción 1 del manual de usuario). En este caso la única forma de ver tal
  3520.  ayuda es leyendo parcialmente el manual de usuario (pulsando <ESC>) e invo-
  3521.  car entonces al proceso de ayuda (pulsando <F1>). El mismo procedimiento se
  3522.  ha de seguir si el error de memoria insuficiente sucedió al invocar la ayuda
  3523.  desde otro proceso (por ejemplo, desde la teoría o los ejemplos); en tales
  3524.  casos, si se desea leer la ayuda de estos procesos y no se dispone de la
  3525.  cantidad suficiente de memoria libre, se ha de interrumpir la lectura de los
  3526.  ficheros pulsando <ESC> y entonces invocar a la ayuda pulsando <F1>. En el
  3527.  caso extremo de que no se pueda invocar al proceso de ayuda, el fichero de
  3528.  ayuda (TUTOR.HLP) se puede leer con cualquier editor de textos ASCII.
  3529.  
  3530.  
  3531.  
  3532.  6.1.2.2.- ERRORES DE LINEAS DE FICHEROS.
  3533.  ----------------------------------------
  3534.  
  3535.       Estos errores se producen cuando una línea de un fichero de datos
  3536.  (con extensión DAT y HLP) no es correcta. Normalmente, una línea de un
  3537.  fichero de datos es incorrecta cuando ésta empieza por una palabra clave
  3538.  que no se espera.
  3539.  
  3540.       Cuando ocurre este error, el programa TUTOR.EXE muestra una ventana
  3541.  centrada en la pantalla con atributo de pantalla negro sobre rojo en cuyo
  3542.  interior se muestra el mensaje de error junto con la línea del fichero en
  3543.  la que se produjo el error. La línea del fichero puede ocupar dos líneas
  3544.  en el interior de esta ventana. La línea de estado inferior nos informa de
  3545.  que pulsemos cualquier tecla o botón del ratón para abandonar el programa.
  3546.  
  3547.       Para solucionar el error debemos editar el fichero de datos, cuyo
  3548.  nombre nos lo dice el mensaje de error. Los ficheros de datos se pueden
  3549.  editar con cualquier procesador de texto que trabaje con ficheros de texto
  3550.  ASCII. La línea en la cual se produjo el error la podemos encontrar con una
  3551.  búsqueda de texto, puesto que el contenido de esa línea es mostrado en la
  3552.  ventana de error. Recordad que si modificamos algún comienzo de bloque en
  3553.  los ficheros de datos es necesario indexar ese fichero con el programa
  3554.  INDEXAR.EXE (cf. 5.2).
  3555.  
  3556.       A continuación se lista, por orden alfabético, todos los mensajes
  3557.  de errores de líneas de ficheros que pueden ocurrir, junto con una breve
  3558.  explicación:
  3559.  
  3560.  - "Demasiadas líneas en PR en lección N del fichero F."
  3561.  
  3562.       F puede ser EJERC.DAT y EJERCPP.DAT.
  3563.  
  3564.       N está en el rango de 1 a 12 para EJERC.DAT y en el rango de 1 a 8 para
  3565.  EJERCPP.DAT
  3566.  
  3567.       PR puede ser "pregunta" o "respuesta".
  3568.  
  3569.       Tras las palabras claves pregunta y respuesta puede haber un máximo de
  3570.  tres líneas en los ficheros de datos de ejercicios. Esto error indica que
  3571.  hay una pregunta o una respuesta que contiene más de tres líneas.
  3572.  
  3573.  - "Demasiadas opciones en PR en lección N del fichero F."
  3574.  
  3575.       F puede ser EJERC.DAT y EJERCPP.DAT.
  3576.  
  3577.       PR puede ser "pregunta" o "respuesta".
  3578.  
  3579.       N está en el rango de 1 a 12 para EJERC.DAT y en el rango de 1 a 8 para
  3580.  EJERCPP.DAT
  3581.  
  3582.       Tras la palabra clave opciones se encuentran todas los nombres de op-
  3583.  ciones de un determinado test. El número máximo de opciones es nueve, por lo
  3584.  tanto, este error indica que hay un test que contiene más de nueve opciones.
  3585.  
  3586.  - "El tipo de ejercicio ha de ir entre comillas en lección N de fichero F."
  3587.  
  3588.       F puede ser EJERC.DAT y EJERCPP.DAT.
  3589.  
  3590.       N está en el rango de 1 a 12 para EJERC.DAT y en el rango de 1 a 8 para
  3591.  EJERCPP.DAT
  3592.  
  3593.       Tras la palabra clave begine debe ir el nombre del ejercicio entre
  3594.  comillas. Este error indica que en la línea mostrada no ocurre tal cosa,
  3595.  bien porque no aparezca ninguna comilla o porque sólo aparezca una de
  3596.  ellas (la de abrir o la de cerrar).
  3597.  
  3598.  - "Encontrada palabra clave begint dentro de bloque begint-endt en lección N
  3599.  del fichero F."
  3600.  
  3601.       F puede ser TEOC.DAT, TEOCPP.DAT, EJEMC.DAT, EJEMCPP.DAT, EJERC.DAT y
  3602.  EJERCPP.DAT.
  3603.  
  3604.       N está en el rango de 1 a 12 para los ficheros de datos correspondien-
  3605.  tes al lenguaje C, y en el rango de 1 a 8 para los ficheros de datos corres-
  3606.  pondientes al lenguaje C++.
  3607.  
  3608.       Los bloques begint-endt no se pueden anidar y sin embargo ha sido
  3609.  encontrada la palabra clave begint en el interior de un bloque begint-endt.
  3610.  
  3611.  - "Encontrado dos particiones en lección N del fichero F."
  3612.  
  3613.       F puede ser TEOC.DAT y TEOCPP.DAT.
  3614.  
  3615.       N está en el rango de 1 a 12 para TEOC.DAT y en el rango de 1 a 8 para
  3616.  TEOCPP.DAT
  3617.  
  3618.       Una lección de teoría sólo se puede partir en dos partes, o dicho de
  3619.  otro modo, en una lección de teoría sólo puede aparecer una vez la palabra
  3620.  clave partir. Este error indica que en la lección especificada se han encon-
  3621.  trado dos palabras claves partir.
  3622.  
  3623.  - "Línea demasiado larga en fichero TUTOR.CFG."
  3624.  
  3625.       En el fichero TUTOR.CFG hay una línea que contiene más de 255 carac-
  3626.  teres. El comienzo de la línea en la cual se produjo el error es mostrada
  3627.  en la ventana de error. Solución: acortar la longitud de dicha línea de tal
  3628.  manera que contenga menos de 256 caracteres.
  3629.  
  3630.  - "Línea demasiado larga en lección N del fichero F."
  3631.  
  3632.       F puede ser TEOC.DAT, TEOCPP.DAT, EJEMC.DAT, EJEMCPP.DAT, EJERC.DAT y
  3633.  EJERCPP.DAT.
  3634.  
  3635.       N está en el rango de 1 a 12 para los ficheros de datos correspondien-
  3636.  tes al lenguaje C, y en el rango de 1 a 8 para los ficheros de datos corres-
  3637.  pondientes al lenguaje C++.
  3638.  
  3639.       Una línea de un fichero de datos no puede contener más de 255 carac-
  3640.  teres. La solución a este problema es, por lo tanto, bastante sencilla:
  3641.  reducir los caracteres de la línea a un máximo de 255. A partir del nombre
  3642.  del fichero y el contenido de la línea que son suministrados en la ventana
  3643.  de error, debería ser fácil localizarla y modificarla en el fichero de datos
  3644.  correspondiente con un editor de ficheros de texto ASCII.
  3645.  
  3646.  - "Línea demasiado larga en número de ayuda N del fichero TUTOR.HLP."
  3647.  
  3648.       N es un número que puede tener los siguientes valores:
  3649.  
  3650.              1 ayuda de pantalla de presentación
  3651.              2 ayuda del menú principal
  3652.              3 ayuda de la información general
  3653.              4 ayuda del menú de lecciones del lenguaje C
  3654.              5 ayuda del menú de lecciones del lenguaje C++
  3655.              6 ayuda del menú de tareas
  3656.              7 ayuda de la teoría
  3657.              8 ayuda de los ejemplos
  3658.              9 ayuda de los ejercicios
  3659.             10 ayuda de los tests
  3660.             11 ayuda de las preguntas con comprobación
  3661.             12 ayuda de las preguntas sin comprobación
  3662.             13 ayuda de las propuestas de programas
  3663.             14 ayuda del proceso de abandonar tutor
  3664.             15 ayuda de la edición
  3665.  
  3666.       Las líneas en los ficheros de datos no pueden tener más de 255 carac-
  3667.  teres. La línea demasiado larga se encuentra en el bloque begin-end N-ésimo
  3668.  del fichero TUTOR.HLP. El contenido de dicha línea se muestra en la ventana
  3669.  de error; sabiendo el contenido de la línea se puede encontrar en el fichero
  3670.  TUTOR.HLP con una búsqueda de un trozo del texto de esa línea.
  3671.  
  3672.  - "Nombre de cabecera incorrecto en lección N de fichero F."
  3673.  
  3674.       F puede ser TEOC.DAT y TEOCPP.DAT.
  3675.  
  3676.       N está en el rango de 1 a 12 para TEOC.DAT y en el rango de 1 a 8 para
  3677.  TEOCPP.DAT.
  3678.  
  3679.       Tras la palabra clave cabecera debe ir el nombre de la cabecera entre
  3680.  comillas. Este error indica que en la línea mostrada no ocurre tal cosa,
  3681.  bien porque no aparezca ninguna comilla o porque sólo aparezca una de ellas
  3682.  (la de abrir o la de cerrar).
  3683.  
  3684.  - "Nombre de ejemplo incorrecto en lección N de fichero F."
  3685.  
  3686.       F puede ser EJEMC.DAT y EJEMCPP.DAT.
  3687.  
  3688.       N está en el rango de 1 a 12 para EJEMC.DAT y en el rango de 1 a 8 para
  3689.  EJEMCPP.DAT.
  3690.  
  3691.       Tras la palabra clave begine debe ir el nombre del ejemplo entre comi-
  3692.  llas. Este error indica que en la línea mostrada no ocurre tal cosa, bien
  3693.  porque no aparezca ninguna comilla o porque sólo aparezca una de ellas (la
  3694.  de abrir o la de cerrar). Si se desea que un ejemplo no tenga ningún nombre,
  3695.  esto es, que la ventana de visualización de un determinado ejemplo no tenga
  3696.  cabecera, hacer lo siguiente:
  3697.  
  3698.                 begine ""
  3699.  
  3700.  - "Palabra clave no válida en lección N del fichero F."
  3701.  
  3702.       F puede ser TEOC.DAT, TEOCPP.DAT, EJEMC.DAT, EJEMCPP.DAT, EJERC.DAT y
  3703.  EJERCPP.DAT.
  3704.  
  3705.       N está en el rango de 1 a 12 para los ficheros de datos correspondien-
  3706.  tes al lenguaje C, y en el rango de 1 a 8 para los ficheros de datos corres-
  3707.  pondientes al lenguaje C++.
  3708.  
  3709.       La línea mostrada en la ventana de error comienza por una palabra clave
  3710.  inexistente o bien por una palabra clave que está fuera de contexto. La sin-
  3711.  taxis correcta para cada fichero de datos está descrita en el apartado 5.
  3712.  
  3713.  - "Palabra clave no válida en TE en lección N del fichero F."
  3714.  
  3715.       F puede ser EJERC.DAT y EJERCPP.DAT.
  3716.  
  3717.       N está en el rango de 1 a 12 para los ficheros de datos correspondien-
  3718.  tes al lenguaje C, y en el rango de 1 a 8 para los ficheros de datos corres-
  3719.  pondientes al lenguaje C++.
  3720.  
  3721.       TE puede ser "test", "pregunta con comprobación" o "pregunta sin
  3722.  comprobación".
  3723.  
  3724.       Este error indica que dentro del tipo de ejercicio TE, en la lección
  3725.  N y en el fichero F, hay una línea (mostrada en la ventana de error) que
  3726.  empieza por una palabra clave incorrecta o fuera de contexto.
  3727.  
  3728.  - "String sin terminación en lección N de fichero F."
  3729.  
  3730.       F puede ser TEOC.DAT y TEOCPP.DAT.
  3731.  
  3732.       N está en el rango de 1 a 12 para TEOC.DAT y en el rango de 1 a 8 para
  3733.  TEOCPP.DAT
  3734.  
  3735.       En una lección de teoría se ha encontrado una línea que empieza por
  3736.  comillas ("), lo cual indica que es un línea correspondiente a una ventana
  3737.  normal o a una ventana de visualización, pero sin embargo, no se han encon-
  3738.  trado las comillas de cierre.
  3739.  
  3740.  - "Tipo de ejercicio incorrecto en lección N de fichero F."
  3741.  
  3742.       F puede ser EJERC.DAT y EJERCPP.DAT.
  3743.  
  3744.       N está en el rango de 1 a 12 para EJERC.DAT y en el rango de 1 a 8 para
  3745.  EJERCPP.DAT
  3746.  
  3747.       Después de una palabra clave begine debe ir obligatoriamente el tipo de
  3748.  ejercicio entre comillas. Las formas correctas de begine son las siguientes:
  3749.  
  3750.                 begine "test"
  3751.                 begine "pcc"
  3752.                 begine "PCC"
  3753.                 begine "psc"
  3754.                 begine "prpr"
  3755.  
  3756.       Esto error indica que el tipo de ejercicio que va entre comillas no es
  3757.  ni test ni pcc ni PCC ni psc ni prpr.
  3758.  
  3759.  
  3760.  
  3761.  6.1.2.3.- ERRORES TERMINALES NORMALES.
  3762.  --------------------------------------
  3763.  
  3764.       Bajo este epígrafe se agrupa todos aquellos errores terminales que no
  3765.  son ni de memoria insuficiente ni de líneas de ficheros.
  3766.  
  3767.       Cuando ocurre un error de este tipo, el programa TUTOR.EXE presenta una
  3768.  ventana centrada en la pantalla con atributo de pantalla de negro sobre
  3769.  blanco en cuyo interior se encuentra el mensaje de error. La línea de estado
  3770.  inferior nos informa de que pulsemos cualquier tecla o botón del ratón para
  3771.  abandonar el programa.
  3772.  
  3773.       A continuación se listan, por orden alfabético, todos los mensajes de
  3774.  error que pueden presentarse junto con una breve descripción de ellos:
  3775.  
  3776.  - "Anchura de ventana de visualización incorrecta."
  3777.  
  3778.       Este error ocurre cuando especificamos una ventana de visualización
  3779.  (bloque beginvis-endvis) en el fichero de teoría con una anchura muy pequeña.
  3780.  
  3781.       Este problema se resuelve aumentando la anchura de la ventana de visua-
  3782.  lización en el fichero de teoría hasta que no se produzca este error.
  3783.  
  3784.  - "El fichero F no debería estar en el fichero índice TUTOR.IND."
  3785.  
  3786.       En el fichero TUTOR.IND sólo pueden estar los ficheros TEOC.DAT,
  3787.  TEOCPP.DAT, EJEMC.DAT, EJEMCPP.DAT, EJERC.DAT, EJERCPP.DAT y TUTOR.HLP.
  3788.  
  3789.       El fichero F es distinto a los 7 ficheros mencionados y por lo tanto
  3790.  no puede estar en el fichero TUTOR.IND.
  3791.  
  3792.  - "El fichero 'TUTOR.DOC' está vacío."
  3793.  
  3794.       Este error se produce cuando el fichero TUTOR.DOC está vacío, es decir,
  3795.  no contiene ningún carácter. El fichero TUTOR.DOC suministrado contiene el
  3796.  manual de usuario.
  3797.  
  3798.       Para recuperar la información original que contiene este fichero se
  3799.  puede volver a instalar el paquete (cf. 3).
  3800.  
  3801.  - "En el fichero índice TUTOR.IND no está el fichero de ayuda TUTOR.HLP."
  3802.  
  3803.       Para solucionar este problema puedes ejecutar el fichero por lotes
  3804.  I.BAT o bien ejecutar el programa INDEXAR.EXE del siguiente modo:
  3805.  
  3806.                 INDEXAR /A TUTOR.HLP
  3807.  
  3808.       En el fichero índice TUTOR.IND deben estar todos los ficheros de datos
  3809.  con extensión DAT y HLP, esto es, todos aquellos ficheros de datos cuyo
  3810.  contenido está formado por bloques begin-end.
  3811.  
  3812.  - "En el fichero índice TUTOR.IND no está el fichero de ejemplos F."
  3813.  
  3814.       F puede ser EJEMC.DAT y EJEMCPP.DAT.
  3815.  
  3816.       Este problema se puede solucionar llamando simplemente al fichero por
  3817.  lotes I.BAT.
  3818.  
  3819.  - "En el fichero índice TUTOR.IND no está el fichero de ejercicios F."
  3820.  
  3821.       F puede ser EJERC.DAT y EJERCPP.DAT.
  3822.  
  3823.       Este problema se puede solucionar llamando simplemente al fichero por
  3824.  lotes I.BAT.
  3825.  
  3826.  - "En el fichero índice TUTOR.IND no está el fichero de teoría F."
  3827.  
  3828.       F puede ser TEOC.DAT y TEOCPP.DAT.
  3829.  
  3830.       Este problema se puede solucionar llamando simplemente al fichero por
  3831.  lotes I.BAT.
  3832.  
  3833.  - "Error al intentar abrir el fichero F".
  3834.  
  3835.       Este error acontece cuando no se puede abrir el fichero F donde F
  3836.  representa a un fichero de datos (excepto el fichero TUTOR.CMP que tiene
  3837.  su propio mensaje de error de apertura). La causa más probable de este
  3838.  error es que el fichero F no se encuentre en el directorio de trabajo.
  3839.  
  3840.  - "Error al intentar cerrar el fichero F".
  3841.  
  3842.       Este error ocurre cuando no se puede cerrar el fichero F donde F
  3843.  representa a un fichero de datos. Este error es muy infrecuente. Posi-
  3844.  blemente haya algún problema de disco.
  3845.  
  3846.  - "Error hardware de dispositivo."
  3847.  - "Error Hardware en drive U."
  3848.  - "ERROR en drive U."
  3849.  
  3850.       ERROR puede ser:
  3851.  
  3852.  "Intento de escribir en un diskette protegido"
  3853.  "Unidad desconocida (número de la unidad de disco inválido)"
  3854.  "Unidad no preparada (no hay disco o la puerta está abierta)"
  3855.  "Comando desconocido"
  3856.  "Error de CRC"
  3857.  "Mala longitud de la estructura de petición"
  3858.  "Error de búsqueda (movimiento a la pista solicitada fallido)"
  3859.  "Medio desconocido (formato del disco no reconocido)"
  3860.  "Sector no encontrado"
  3861.  "Impresora sin papel"
  3862.  "Error de escritura"
  3863.  "Error de lectura"
  3864.  "Error general (no especificado)"
  3865.  "Reservado"
  3866.  "Reservado"
  3867.  "Cambio de disco inválido"
  3868.  
  3869.       Todos estos errores se llaman errores críticos del DOS, ya que
  3870.  suponen una situación de emergencia que impide que la ejecución del
  3871.  programa continúe.
  3872.  
  3873.       Atención: se puede producir algún error crítico que haga que el ordena-
  3874.  dor se bloquee y TUTOR.EXE no muestre la correspondiente ventana de error.
  3875.  Esto puede ocurrir porque el programa TUTOR.EXE modifica la dirección aso-
  3876.  ciada con la interrupción 36 (25 hex); esta dirección es la del comienzo de
  3877.  una rutina que es llamada por el sistema cada vez que se produce un error
  3878.  crítico.
  3879.  
  3880.       Estos errores son más comunes con discos. U representa una unidad de
  3881.  disco (A, B, C, ...).
  3882.  
  3883.       El error "Error hardware de dispositivo. Posiblemente sea la impresora"
  3884.  es frecuente que ocurra un rato después de que se desactive el botón de rea-
  3885.  dy de la impresora mientras ésta está imprimiendo o un rato después de que
  3886.  la impresora se quede sin papel. En estos, el sistema operativo, tras espe-
  3887.  rar un determinado lapso de tiempo, genera el error hardware de dispositivo.
  3888.  
  3889.  - "Han sido pulsadas las teclas Ctrl-Break, Ctrl-C o Alt-Key-pad-3."
  3890.  
  3891.       La pulsación de las teclas <CTRL-BREAK>, <CTRL-C> o <ALT-KEYPAD-3>
  3892.  provoca la salida inmediata del tutor tras mostrar este mensaje.
  3893.  
  3894.       Atención: puede haber casos que la pulsación de estas teclas haga que
  3895.  el ordenador se quede bloqueado debido a que el tratamiento de estas teclas
  3896.  es diferente al resto: el programa TUTOR.EXE cambia el valor de un vector de
  3897.  interrupción para tratarlas.
  3898.  
  3899.  - "Indexación no actualizada sobre fichero de ayuda F."
  3900.  
  3901.       F puede ser TEOC.DAT, TEOCPP.DAT, EJEMC.DAT, EJEMCPP.DAT, EJERC.DAT,
  3902.  EJERCPP.DAT y TUTOR.HLP.
  3903.  
  3904.       Este error indica que el fichero F ha sido modificado y no ha sido
  3905.  indexado después de la modificación. Cada vez que el programa TUTOR.EXE
  3906.  va a leer un bloque begin-end de un fichero de datos, comprueba que el
  3907.  comienzo de bloque, leído del fichero TUTOR.IND, corresponda a la letra
  3908.  b de la palabra clave begin, y si no es así muestra este mensaje de error.
  3909.  
  3910.       Para solucionar este problema puedes ejecutar el fichero por lotes
  3911.  I.BAT o bien ejecutar el programa INDEXAR.EXE del siguiente modo:
  3912.  
  3913.                         INDEXAR /A F
  3914.  
  3915.  siendo F el fichero sobre el que se produjo el error; aunque en este caso se
  3916.  recomienda hacer I.BAT para que el fichero F no aparezca más de una vez en
  3917.  TUTOR.IND.
  3918.  
  3919.  - "La línea L del fichero TUTOR.DOC es demasiado larga."
  3920.  
  3921.       Las líneas del fichero TUTOR.DOC no pueden tener más de 255 caracteres.
  3922.  
  3923.       Este error ocurrió porque la línea L-ésima contiene más de 255 carac-
  3924.  teres.
  3925.  
  3926.       Este problema se resuelve editando el fichero TUTOR.DOC con cualquier
  3927.  procesador de textos que trabaje con ficheros de texto ASCII y dividiendo la
  3928.  línea L en dos líneas.
  3929.  
  3930.  - "Ni la anchura ni la altura de las ventanas pueden ser menores que 1."
  3931.  
  3932.       Este error ocurre cuando se crea una ventana, normal o de visuali-
  3933.  zación, en el fichero de datos de teoría, cuya anchura o altura es menor
  3934.  que 1. Una de las causas por las que puede ocurrir es cuando utilizamos
  3935.  la palabra clave centrar_coordenadas y la ventana no contiene ninguna línea.
  3936.  
  3937.       Este problema se resuelve examinando la descripción de la ventana
  3938.  (bloque beginv-endv) en la que se produjo el error, asegurándonos de que
  3939.  tanto la anchura como la altura sean mayores que 1.
  3940.  
  3941.  - "Número de casillas de las barras de visualización incorrecto."
  3942.  
  3943.       Este error se produce cuando especificamos una anchura y/o una altura
  3944.  de una ventana de visualización (bloque beginvis-endvis), en el fichero de
  3945.  teoría, muy pequeñas, y por lo tanto, el número de casillas para la barra
  3946.  horizontal y/o vertical es demasiado pequeño.
  3947.  
  3948.       Este problema se resuelve aumentando la anchura y/o altura de la
  3949.  ventana de visualización en el fichero de teoría hasta que no se produzca
  3950.  este error.
  3951.  
  3952.  
  3953.  
  3954.  6.1.3.- ERRORES NO TERMINALES.
  3955.  ------------------------------
  3956.  
  3957.       Los errores terminales son aquéllos que no provocan necesariamente una
  3958.  salida inmediata del tutor.
  3959.  
  3960.       Cuando se produce un error de este tipo, el programa TUTOR.EXE muestra
  3961.  una ventana de error centrada en la pantalla con atributo de pantalla negro
  3962.  sobre rojo, en cuyo interior se muestra el mensaje de error y un menú hori-
  3963.  zontal (cf. 4.5) con tres opciones:
  3964.  
  3965.  - Ignorar: el programa sigue la ejecución como si se hubiese hecho correc-
  3966.  tamente la operación que provocó el error.
  3967.  
  3968.  - Reintentar: vuelve a intentar la misma operación que provocó el error.
  3969.  
  3970.  - Abortar: seleccionar esta opción es equivalente a pulsar las teclas
  3971.  <ALT-X>.
  3972.  
  3973.       A continuación se listan, por orden alfabético, todos los mensajes de
  3974.  error que pueden presentarse junto con una breve descripción de ellos:
  3975.  
  3976.       Hay dos grupos de errores no terminales: errores de impresora y errores
  3977.  de ficheros.
  3978.  
  3979.       Los errores de impresora son aquellos errores relacionados con la
  3980.  impresora. Estos errores se pueden producir en los procesos de teoría
  3981.  (cf. 4.14), de ejemplos (cf. 4.16) y de ejercicios (cf. 4.17) al pulsar
  3982.  la tecla <F4>. Los posibles errores de impresora son:
  3983.  
  3984.  - "Error de temporización en la impresora."
  3985.  - "Error de entrada/salida en la impresora."
  3986.  - "Impresora no seleccionada (por ejemplo, no encendida)."
  3987.  - "Señal de falta de papel en la impresora."
  3988.  
  3989.       Si apagamos la impresora mientras estamos imprimiendo, el programa
  3990.  puede tardar un rato en emitir el mensaje de error terminal "Error hardware
  3991.  de dispositivo. Posiblemente sea la impresora" debido al tiempo de retardo
  3992.  de las impresoras en los ordenadores personales IBM. Este error es evitable
  3993.  pulsando la tecla <ESC> (o su equivalente del ratón, esto es, presionando
  3994.  <BOTDER> o bien <BOTIZQ> cuando el cursor del ratón está en la línea infe-
  3995.  rior) para interrumpir la impresión en vez de apagar la impresora por las
  3996.  buenas; en este caso, la impresora seguirá imprimiendo hasta vaciar el buf-
  3997.  fer de impresión; tanto esta última observación como la posibilidad de in-
  3998.  terrupción se comunica en la línea de estado inferior mientras se produce la
  3999.  impresión. Si el usuario tarda mucho tiempo bien en introducir el papel en
  4000.  la impresora tras haberse imprimido uno o bien en activar de nuevo el botón
  4001.  ready de la impresora tras haberlo desactivado, el sistema operativo gene-
  4002.  rará un error y por lo tanto el programa TUTOR.EXE lo considerá como un
  4003.  error terminal.
  4004.  
  4005.       En cuanto a los errores de ficheros sólo hay uno: "No es posible abrir
  4006.  el fichero F." donde F es el nombre del fichero que no se puede abrir. Este
  4007.  error puede ocurrir en el proceso de ejemplos (cf. 4.16) al pulsar la tecla
  4008.  <F2>.
  4009.  
  4010.  
  4011.  
  4012.  6.1.4.- AVISOS.
  4013.  ---------------
  4014.  
  4015.       Los avisos nunca provocan la salida del programa y son mensajes de
  4016.  información o advertencias de errores no importantes y de operaciones
  4017.  incorrectas realizadas por parte del usuario.
  4018.  
  4019.       Cuando se produce un aviso, el programa TUTOR.EXE presenta una ventana
  4020.  centrada en pantalla con atributo de pantalla negro sobre borde en cuyo
  4021.  interior se encuentra el mensaje del aviso. La línea de estado inferior nos
  4022.  informa de que pulsemos cualquier tecla o botón del ratón para continuar.
  4023.  
  4024.       A continuación se listan, por orden alfabético, todos los mensajes de
  4025.  avisos que pueden presentarse junto con una breve descripción de ellos:
  4026.  
  4027.  - "Faltan datos en fichero TUTOR.CFG. Habrá colores no inicializados."
  4028.  
  4029.       En el fichero TUTOR.CFG hay menos líneas de datos de las que habría de
  4030.  haber. La mejor solución a este problema es recuperar el fichero TUTOR.CFG
  4031.  original, instalar de nuevo el tutor o añadir las líneas de datos perdidas
  4032.  si el usuario recuerda las que faltan (por ejemplo, porque el fichero
  4033.  TUTOR.CFG conserve el comentario de cada línea).
  4034.  
  4035.       La situación contrario, es decir, que haya más líneas de datos de
  4036.  las necesarias, no produce un error puesto que los datos sobrantes son
  4037.  desechados.
  4038.  
  4039.       Si se continúa en el programa tras haber obtenido este aviso, habrá
  4040.  colores no inicializados correspondientes a los datos no leídos. Lo más
  4041.  probable es que estos colores se inicialicen a 0, es decir, con el color
  4042.  negro; y el efecto que se consigue con un atributo de pantalla correspon-
  4043.  diente a colores de texto y fondo negros es que los caracteres impresos en
  4044.  pantalla se hacen invisibles.
  4045.  
  4046.  - "Ejemplo imprimido correctamente."
  4047.  
  4048.       Informa que se ha imprimido el ejemplo sin ningún problema, es decir,
  4049.  que ni se ha pulsado la tecla <ESC> ni se ha producido un error de impresora.
  4050.  
  4051.  - "Ejercicio(s) imprimido(s) correctamente."
  4052.  
  4053.       Informa que se ha imprimido el ejercicio (o los ejercicios si se pulsó
  4054.  <F4> desde la primera o última ventana de ejercicios) sin ningún problema,
  4055.  es decir, que ni se ha pulsado la tecla <ESC> ni se ha producido un error de
  4056.  impresora.
  4057.  
  4058.  - "Imprimiendo ejemplo".
  4059.  
  4060.       Este mensaje informa de que actualmente se está imprimiendo el ejemplo
  4061.  que se ve en pantalla que cargada en memoria. La línea de estado inferior
  4062.  comunica que esta interrupción puede ser interrumpida con la pulsación de la
  4063.  tecla <ESC>.
  4064.  
  4065.  - "Imprimiendo ejercicio(s)".
  4066.  
  4067.       Este mensaje informa de que actualmente se está imprimiendo bien el
  4068.  ejercicio que se ve en pantalla si se pulsó <F4> desde un determinado ejer-
  4069.  cicio o bien todos los ejercicios de una lección si se invocó <F4> desde
  4070.  la primera o última ventana de los ejercicios. La línea de estado inferior
  4071.  comunica que esta interrupción puede ser interrumpida con la pulsación de
  4072.  la tecla <ESC>.
  4073.  
  4074.  - "Impresión interrumpida con ESC".
  4075.  
  4076.       Informa de que se ha interrumpido la impresión del ejercicio (o los
  4077.  ejercicios) debido a la pulsación de la tecla de <ESC> por parte del usua-
  4078.  rio, y por lo tanto es probable que el ejercicio (o los ejercicios) no se
  4079.  haya imprimido completamente. Si al pulsar <ESC> el resto del ejercicio (o
  4080.  los ejercicios) estaba en el buffer de la impresora entonces sí se imprimirá
  4081.  en su totalidad. Se habla de ejercicios en plural porque la impresión puede
  4082.  ser invocada desde la primera o última ventana de ejercicios, en cuyo caso
  4083.  se imprimirán todos los ejercicios de una lección si no se interrumpe tal
  4084.  proceso de impresión con la tecla <ESC>.
  4085.  
  4086.  - "Imprimiendo teoría".
  4087.  
  4088.       Este mensaje informa de que actualmente se está imprimiendo la teoría
  4089.  que cargada en memoria. La línea de estado inferior comunica que esta
  4090.  interrupción puede ser interrumpida con la pulsación de la tecla <ESC>.
  4091.  
  4092.  - "La primera y última ventana no son copiables ya que no son programas."
  4093.  
  4094.       Este error ocurre cuando se intenta copiar un ejemplo a un fichero,
  4095.  pulsando la tecla <F2>, cuando estamos en la primera o última ventana de los
  4096.  ejemplos, las cuales son ventanas de control o información, no son ventanas
  4097.  en cuyo interior haya un programa ejemplo.
  4098.  
  4099.  - "La primera y última ventana no son ejecutables ya que no son programas."
  4100.  
  4101.       Este error sucede cuando intentamos ejecutar un ejemplo, pulsando la
  4102.  tecla <F9>, pero estando en la primera o última ventana de la tarea de
  4103.  ejemplos, las cuales no contienen programas ejemplos puesto que son ventanas
  4104.  de control.
  4105.  
  4106.  - "La primera y última ventana no son imprimibles ya que no son programas."
  4107.  
  4108.       Este error sobreviene cuando se intenta imprimir un ejemplo, pulsando
  4109.  la tecla <F4>, cuando estamos situados en la primera o última ventana del
  4110.  proceso de ejemplos, las cuales no contienen un ejemplo puesto que son
  4111.  ventanas de control.
  4112.  
  4113.  - "No hay ninguna información de teoría en memoria."
  4114.  
  4115.       Este error acontece cuando intentamos imprimir la teoría, pulsando
  4116.  <F2>, pero no hay teoría cargada en memoria. Este error es muy infrecuente
  4117.  por no decir que es imposible que ocurra tal y como está diseñado el pro-
  4118.  grama; pero hay que tener en cuenta todos los casos posibles.
  4119.  
  4120.  - "No se puede ejecutar el compilador ya que no se leyó su nombre en
  4121.  TUTOR.CMP."
  4122.  
  4123.       Este error ocurre cuando se intenta llamar al compilador, pulsando <F5>
  4124.  en el proceso de propuestas de programas, pero el nombre del compilador no
  4125.  pudo leerse del fichero TUTOR.CMP al principio del programa TUTOR.EXE.
  4126.  
  4127.  - "No es posible cerrar el fichero F."
  4128.  
  4129.       Este error se produce cuando no se puede cerrar el fichero F. El
  4130.  fichero F es el fichero en el que se copia el programa ejemplo tras
  4131.  pulsar la tecla <F2>.
  4132.  
  4133.  - "No se puede ejecutar el programa P."
  4134.  
  4135.       P es PRTUTC.EXE o PRTUTCPP.EXE.
  4136.  
  4137.       Este error acontece cuando intentamos ejecutar un ejemplo, pulsando la
  4138.  tecla <F9>, y ese ejemplo no se puede ejecutar, bien porque el programa P no
  4139.  se encuentre en el directorio de trabajo o bien porque no hay suficiente
  4140.  memoria para ejecutar el programa P.
  4141.  
  4142.       Si este error ocurrió debido a que no hay suficiente memoria para eje-
  4143.  cutar algunos ejemplos desde el programa TUTOR.EXE, estos ejemplos se podrán
  4144.  ejecutar desde el programa EJECUTAR.EXE (cf. 4.16.1) que consume mucha menos
  4145.  memoria para ejecutar PRTUTC.EXE y PRTUTCPP.EXE.
  4146.  
  4147.  - "No se podrá llamar al compilador ya que no se ha podido abrir TUTOR.CMP."
  4148.  
  4149.       Al principio del programa TUTOR.EXE, éste lee el nombre del compilador
  4150.  de C o de C++ en el fichero TUTOR.CMP; pero en este caso el fichero TUTOR.CMP
  4151.  no se ha podido abrir, seguramente porque no se encuentra en el directorio
  4152.  de trabajo; esto implica que no podrá llamarse al compilador en el proceso
  4153.  de propuestas de programas, con la tecla <F5>.
  4154.  
  4155.  - "No se podrá llamar al compilador ya que el nombre es demasiado largo
  4156.  (>255)."
  4157.  
  4158.       Al principio del programa TUTOR.EXE, éste lee el nombre del compilador
  4159.  de C o de C++ del fichero TUTOR.CMP; pero en este caso, el nombre del compi-
  4160.  lador junto con sus posibles argumentos contienen más de 255 caracteres;
  4161.  esto implica que no podrá llamarse al compilador en el proceso de propuestas
  4162.  de programas, con la tecla <F5>.
  4163.  
  4164.  - "No se podrá llamar al compilador ya que no se ha podido leer el nombre de
  4165.  él."
  4166.  
  4167.       Al principio del programa TUTOR.EXE, éste lee el nombre del compilador
  4168.  de C o de C++ del fichero TUTOR.CMP; pero en este caso, el nombre del compi-
  4169.  lador no se encuentra en la primera línea del fichero TUTOR.CMP, es decir,
  4170.  que la primera línea de este fichero está vacía; esto implica que no podrá
  4171.  llamarse al compilador en el proceso de propuestas de programas, con la
  4172.  tecla <F5>.
  4173.  
  4174.  - "No se puede ejecutar el programa PORTUTOR.EXE."
  4175.  
  4176.       Si no se especifica el argumento np (cf. 4.18.2) al ejecutar el
  4177.  TUTOR.EXE, este programa llama a PORTUTOR.EXE para que presente en pantalla
  4178.  la portada. Este error se ha producido porque el programa PORTUTOR.EXE no
  4179.  pudo ser ejecutado. Básicamente hay dos razones principales por las que no
  4180.  se pudo ejecutar: bien porque no se encontraba en el directorio de trabajo
  4181.  o bien porque no había suficiente memoria para ejecutarlo.
  4182.  
  4183.  - "Puede que no se haya imprimido el ejemplo completo, ya que se pulsó la
  4184.  tecla ESC".
  4185.  
  4186.       Informa de que se ha interrumpido la impresión del ejemplo debido a la
  4187.  pulsación de la tecla de <ESC> por parte del usuario, y por lo tanto es pro-
  4188.  bable que el ejemplo no se haya imprimido completamente. Si al pulsar <ESC>
  4189.  el resto del ejemplo estaba en el buffer de la impresora entonces sí se im-
  4190.  primirá en su totalidad.
  4191.  
  4192.  - "Puede que no se haya imprimido la teoría completa, ya que se pulsó la
  4193.  tecla ESC".
  4194.  
  4195.       Informa de que se ha interrumpido la impresión de la teoría debido a la
  4196.  pulsación de la tecla de <ESC> por parte del usuario, y por lo tanto es pro-
  4197.  bable que la teoría no se haya imprimido completamente. Si al pulsar <ESC>
  4198.  el resto del teoría estaba en el buffer de la impresora entonces sí se im-
  4199.  primirá en su totalidad.
  4200.  
  4201.  - "Texto no encontrado."
  4202.  
  4203.       Este aviso ocurre cuando buscamos un texto, con las teclas <CTRL-B>,
  4204.  <CTRL-R> o <CTRL-A> en cualquier ventana de visualización (cf. 4.6), y dicho
  4205.  texto no se encuentra en el contenido de la ventana.
  4206.  
  4207.  - "Teoría imprimida correctamente."
  4208.  
  4209.       Informa que se ha imprimido toda la teoría sin ningún problema, es
  4210.  decir, que ni se ha pulsado la tecla <ESC> ni se ha producido un error de
  4211.  impresora.
  4212.  
  4213.  
  4214.  
  4215.  6.1.5.- ERRORES DE PROGRAMACION.
  4216.  --------------------------------
  4217.  
  4218.       Los errores de programación son aquellos errores provocados por un
  4219.  error en el diseño o programación del programa.
  4220.  
  4221.       Cuando ocurre un error de programación, el programa TUTOR.EXE presenta
  4222.  una ventana centrada en pantalla con atributo de pantalla negro sobre rojo,
  4223.  en cuyo interior aparece el mensaje del error.
  4224.  
  4225.       Estos errores no deberían de aparecer nunca en el programa. En este
  4226.  caso no se van a listar todos los posibles errores de programación puesto
  4227.  que no son interesantes para el usuario: no los va a poder resolver si el
  4228.  programa TUTOR.EXE le mostrara alguno.
  4229.  
  4230.       Hay un error de programación que, si ocurre, no es mostrado como los
  4231.  demás en el interior de una ventana centrada en la pantalla sino que es
  4232.  visualizado en una línea anterior a la del mensaje de tiempo empleado. Este
  4233.  error es el que informa que el montón (heap o memoria dinámica utilizada) se
  4234.  ha corrompido en la ejecución del programa TUTOR.EXE, es decir, que se ha
  4235.  gestionado mal la memoria dinámica en la codificación. Siempre que el pro-
  4236.  grama TUTOR.EXE termina, por el motivo que sea (pulsación de las teclas
  4237.  <ALT-X>, error, etc.), y justo antes de mostrar el mensaje de tiempo emplea-
  4238.  do, se comprueba el estado del montón. Si este error apareciera, como ocurre
  4239.  con los demás errores de programación, el usuario no puede hacer nada por
  4240.  solucionarlo; lo que sí podría hacer es contactar con el programador para
  4241.  que éste lo solucione, o si dispone del código fuente atreverse a solucio-
  4242.  narlo él mismo. De todas formas, para tranquilidad de los usuarios, hay que
  4243.  decir que el programa ha sido probado intensa y extensamente sin detectarse
  4244.  ni éste ni ningún otro error de programación. Prácticamente se puede decir
  4245.  con seguridad, sin temor a equivocarnos, que este error no aparecerá jamás.
  4246.  
  4247.  
  4248.  
  4249.  6.2.- ERRORES EN PORTUTOR.EXE.
  4250.  ------------------------------
  4251.  
  4252.       Los errores que se pueden dar en el programa PORTUTOR.EXE por orden
  4253.  alfabético, son los siguientes:
  4254.  
  4255.  - "El nombre del programa o el nombre del autor ha sido cambiado."
  4256.  
  4257.       Al comienzo del programa PORTUTOR.EXE se chequea los nombres del pro-
  4258.  grama, del autor del programa y el del tutor del proyecto para prevenir que
  4259.  no sean modificados con un editor de ficheros binarios. Si se produce este
  4260.  error quiere decir que algunos de los nombres citados han sido cambiados.
  4261.  
  4262.  - "Error gráfico: E"
  4263.  
  4264.       La portada presentada por el programa PORTUTOR.EXE está en modo gráfi-
  4265.  co. Si al inicializar el sistema gráfico se produjera algún error, se mos-
  4266.  traría este mensaje donde E es el tipo de error. El mensaje de error E está
  4267.  en inglés.
  4268.  
  4269.  - "Este programa es ejecutado por el programa TUTOR.EXE"
  4270.  
  4271.       Este error se produce cuando se intenta ejecutar directamente el
  4272.  programa PORTUTOR.EXE por parte del usuario. Este programa sólo puede
  4273.  ser ejecutado por TUTOR.EXE.
  4274.  
  4275.  
  4276.  
  4277.  6.3.- ERRORES EN PRTUTC.EXE.
  4278.  ----------------------------
  4279.  
  4280.       Los errores que se pueden dar en el programa PRTUTC.EXE, por orden
  4281.  alfabético, son los siguientes:
  4282.  
  4283.  - "Argumentos incorrectos."
  4284.  
  4285.       Este error se da cuando el número de argumentos pasado al programa
  4286.  PRTUTC.EXE es incorrecto. Este error no debería aparecer nunca, puesto que
  4287.  el programa PRTUTC.EXE es ejecutado por TUTOR.EXE y éste último siempre
  4288.  debería llamar correctamente a PRTUTC.EXE.
  4289.  
  4290.  - "Este programa es ejecutado por el programa TUTOR.EXE"
  4291.  
  4292.       Este error se produce cuando se intenta ejecutar directamente el pro-
  4293.  grama TUTOR.EXE por parte del usuario. Este programa sólo puede ser ejecu-
  4294.  tado por TUTOR.EXE.
  4295.  
  4296.  - "Error gráfico: E"
  4297.  
  4298.       El programa PRTUTCPP.EXE inicializa el sistema gráfico al comienzo de
  4299.  su ejecución. Si en tal inicialización ocurre un error, se muestra este men-
  4300.  saje junto con el tipo de error E. E contiene el mensaje de error en inglés.
  4301.  
  4302.  
  4303.  
  4304.  6.4.- ERRORES EN PRTUTCPP.EXE.
  4305.  ------------------------------
  4306.  
  4307.       Los errores que se pueden dar en el programa PRTUTCPP.EXE, por orden
  4308.  alfabético, son los siguientes:
  4309.  
  4310.  - "Argumentos incorrectos."
  4311.  
  4312.       Este error se da cuando el número de argumentos pasado al programa
  4313.  PRTUTCPP.EXE es incorrecto. Este error no debería aparecer nunca, puesto
  4314.  que el programa PRTUTCPP.EXE es ejecutado por TUTOR.EXE y éste último
  4315.  siempre debería llamar correctamente a PRTUTCPP.EXE.
  4316.  
  4317.  - "Este programa es ejecutado por el programa TUTOR.EXE"
  4318.  
  4319.       Este error se produce cuando se intenta ejecutar directamente el pro-
  4320.  grama TUTOR.EXE por parte del usuario. Este programa sólo puede ser ejecu-
  4321.  tado por TUTOR.EXE.
  4322.  
  4323.  
  4324.  
  4325.  6.5.- ERRORES EN INSTALAR.EXE.
  4326.  ------------------------------
  4327.  
  4328.       Los errores que se pueden dar en el programa INSTALAR.EXE por orden
  4329.  alfabético, son los siguientes:
  4330.  
  4331.  - "Fichero PAQTUTOR.EXE no encontrado."
  4332.  
  4333.       Este error ocurre si el fichero PAQTUTOR.EXE no está en el directorio
  4334.  de trabajo al ejecutar INSTALAR.EXE.
  4335.  
  4336.  - "No hay suficiente espacio libre en unidad U:"
  4337.  
  4338.       Para poder instalar el paquete formado por los distintos ficheros que
  4339.  constituyen el tutor en la unidad U, el disco de esta unidad debe tener
  4340.  libre como mínimo unos 3'5 Mb aproximadamente.
  4341.  
  4342.  - "No es posible crear el directorio D"
  4343.  
  4344.       Este error sucede cuando el directorio D, que es el directorio en el
  4345.  cual se va a instalar el tutor, no existe y no se ha podido crear.
  4346.  
  4347.  - "SINTAXIS: instalar directorio"
  4348.  
  4349.       Este error se da cuando el número de argumentos pasado al programa
  4350.  INSTALAR.EXE es incorrecto. En el apartado 3.3.1 se describe cuál es la
  4351.  sintaxis correcta de llamada a este programa.
  4352.  
  4353.  
  4354.  
  4355.  6.6.- ERRORES EN INDEXAR.EXE.
  4356.  -----------------------------
  4357.  
  4358.       Los errores que se pueden dar en el programa INDEXAR.EXE por orden
  4359.  alfabético, son los siguientes:
  4360.  
  4361.  - "El primer argumento es incorrecto."
  4362.  
  4363.       El primer argumento del programa INDEXAR.EXE tiene que ser obliga-
  4364.  toriamente /C o /A. Ver apartado 5.2 para más detalles.
  4365.  
  4366.  - "Error al intentar abrir el fichero 'F' en modo CA."
  4367.  
  4368.       F es el fichero índice. Si este programa se invoca desde I.BAT,
  4369.  entonces F será TUTOR.IND.
  4370.  
  4371.       CA es "añadir" si el primer argumento es /A o "crear" si el primer
  4372.  argumento es /C.
  4373.  
  4374.       Este error ocurre cuando el fichero F no se puede abrir. Esto puede
  4375.  ocurrir por múltiples causas, por ejemplo, disco protegido contra escritura,
  4376.  disco lleno, etc.
  4377.  
  4378.  - "Error al intentar abrir el fichero 'F'."
  4379.  
  4380.       Este error ocurre cuando no se puede abrir el fichero F, que es un
  4381.  fichero de datos a indexar.
  4382.  
  4383.  - "Error al intentar cerrar el fichero 'F'."
  4384.  
  4385.       Este error ocurre cuando no se puede cerrar el fichero F, siendo F uno
  4386.  de los ficheros de datos a indexar o el fichero índice. Este error sucede en
  4387.  muy raras ocasiones.
  4388.  
  4389.  - "Error: begin sin end en fichero 'F'."
  4390.  
  4391.       Este error acontece porque en el fichero de datos F hay un begin que no
  4392.  tiene su correspondiente end.
  4393.  
  4394.  - "Error en fichero 'F': Encontrado un 'BE' sin 'EB' en línea L."
  4395.  
  4396.       F es un fichero de datos.
  4397.  
  4398.       BE es o bien "begin" o bien "end". EB es la inversa de BE, es decir, si
  4399.  BE es "begin" entonces EB es "end", y si BE es "end" entonces EB es "begin".
  4400.  
  4401.       L es el número de línea del fichero F en el que se produjo el error.
  4402.  
  4403.       Este error ocurre cuando aparece un bloque begin-end en el cual falta,
  4404.  o bien la palabra clave begin o bien la palabra clave end.
  4405.  
  4406.  - "Error en fichero 'F': el número máximo de bloques (bloques begin-end) es
  4407.  de 99."
  4408.  
  4409.       Este error sobreviene porque en el fichero de datos F hay más de 99
  4410.  bloques begin-end. El número máximo de bloques begin-end en un fichero de
  4411.  datos para poder ser indexado por INDEXAR.EXE es de 99.
  4412.  
  4413.  - "Error: Se ha encontrado una línea en el fichero 'F' con más de 255
  4414.  caracteres."
  4415.  
  4416.       Este error ocurre porque en el fichero de datos F existe una línea
  4417.  que contiene más de 255 caracteres. El número máximo de caracteres que
  4418.  puede tener una línea de un fichero de datos para poder ser indexado por
  4419.  INDEXAR.EXE es de 255.
  4420.  
  4421.  
  4422.  
  4423.  6.7.- ERRORES EN COMPILAD.EXE.
  4424.  ------------------------------
  4425.  
  4426.       Los errores que se pueden dar en el programa COMPILAD.EXE por orden
  4427.  alfabético, son los siguientes:
  4428.  
  4429.  - "No es posible abrir el fichero F para escritura."
  4430.  
  4431.       Este error se produce cuando no se puede abrir el fichero F. El
  4432.  fichero F es aquél que va a contener el nombre del compilador. Si el
  4433.  programa COMPILAD.EXE es ejecutado por C.BAT, F es el fichero TUTOR.CMP.
  4434.  
  4435.  - "No es posible cerrar el fichero F."
  4436.  
  4437.       Este error ocurre cuando no se puede cerrar el fichero F. Es muy
  4438.  improbable.
  4439.  
  4440.  - "SINTAXIS: compilad nombre_fichero [nombre_compilador [argumentos]]"
  4441.  
  4442.       Este error se da cuando el número de argumentos pasados a COMPILAD.EXE
  4443.  es incorrecto. En el apartado 5.8 se describe cuál es la sintaxis correcta
  4444.  de llamada a este programa.
  4445.  
  4446.  
  4447.  
  4448.  6.8.- ERRORES EN EJECUTAR.EXE.
  4449.  ------------------------------
  4450.  
  4451.       Los errores que se pueden dar en el programa EJECUTAR.EXE, por orden
  4452.  alfabético, son los siguientes:
  4453.  
  4454.  - "Ejemplo incorrecto."
  4455.  
  4456.       Este error sobreviene cuando el número de ejemplo dado por el usuario
  4457.  no es número (contiene caracteres que no son dígitos) o bien dicho número de
  4458.  ejemplo corresponde a un ejemplo inexistente.
  4459.  
  4460.       Los números de ejemplos correctos están especificados en la tabla que se
  4461.  encuentra en el apartado 4.16.1. A continuación se lista todos los ejemplos
  4462.  del tutor y que por lo tanto se pueden ejecutar con el programa EJECUTAR.EXE:
  4463.  
  4464.    Lenguaje C.
  4465.      Lección 1.
  4466.        Ejemplo 1: OPERACIONES ARITMETICAS.
  4467.        Ejemplo 2: PASOS EN EL DESARROLLO DE UN PROGRAMA.
  4468.      Lección 2.
  4469.        Ejemplo 1: CALCULO DE LA LONGITUD Y EL AREA DE UN CIRCULO.
  4470.        Ejemplo 2: TAMAÑO DE LOS TIPOS MAS USADOS EN C.
  4471.      Lección 3.
  4472.        Ejemplo 1: ORDENACION POR EL METODO DE INSERCION DIRECTA.
  4473.        Ejemplo 2: ORDENACION POR EL METODO DE SELECCION DIRECTA.
  4474.        Ejemplo 3: ORDENACION POR EL METODO DE LA BURBUJA.
  4475.        Ejemplo 4: ORDENACION POR EL METODO DE LA SACUDIDA.
  4476.        Ejemplo 5: ORDENACION POR EL METODO DE INTERCAMBIO DIRECTO CON TEST.
  4477.        Ejemplo 6: ORDENACION POR EL METODO SHELL.
  4478.        Ejemplo 7: BUSQUEDA LINEAL EN UN VECTOR DESORDENADO.
  4479.        Ejemplo 8: BUSQUEDA LINEAL EN VECTOR ORDENADO.
  4480.        Ejemplo 9: BUSQUEDA BINARIA.
  4481.        Ejemplo 10: GENERACION DE 0 Y 1 ALEATORIAMENTE.
  4482.      Lección 4.
  4483.        Ejemplo 1: TRANSFORMACION DE NOTA NUMERICA A ALFABETICA.
  4484.        Ejemplo 2: CONTADOR DE NUMEROS POSITIVOS, NEGATIVOS Y NULOS DE UNA
  4485.                   SERIE.
  4486.        Ejemplo 3: CALCULO DEL MAYOR Y MENOR NUMERO DE UNA SERIE.
  4487.        Ejemplo 4: INVERSION DE UN VECTOR.
  4488.        Ejemplo 5: CALCULO DE LA MEDIA DE UNA SERIE DE NUMEROS.
  4489.        Ejemplo 6: VISUALIZADOR DE MEMORIA.
  4490.      Lección 5.
  4491.        Ejemplo 1: TORRES DE HANOI.
  4492.        Ejemplo 2: PERMUTACIONES.
  4493.        Ejemplo 3: ORDENACION POR EL METODO DE ORDENACION RAPIDA.
  4494.        Ejemplo 4: DIBUJO DE UN GRAFICO.
  4495.        Ejemplo 5: DIBUJO DE UN GRAFICO 2.
  4496.        Ejemplo 6: ESPIRAL.
  4497.        Ejemplo 7: POLIGONO.
  4498.      Lección 6.
  4499.        Ejemplo 1: TRES EN RAYA.
  4500.        Ejemplo 2: CUADRADO MAGICO.
  4501.        Ejemplo 3: MEJOR DESGLOSE DE MONEDA.
  4502.        Ejemplo 4: METODO DE ELIMINACION DE GAUSS.
  4503.        Ejemplo 5: JUEGO DEL RATON ATRAPADO.
  4504.        Ejemplo 6: 32 FUNCIONES DE MANIPULACION DE ARRAYS DE CARACTERES.
  4505.        Ejemplo 7: VUELTA DEL CABALLO.
  4506.        Ejemplo 8: RELLENO DE UN TABLERO SEGUN UNAS REGLAS DADAS.
  4507.        Ejemplo 9: PROBLEMA DE LAS OCHO REINAS.
  4508.        Ejemplo 10: PROBLEMA DE LAS OCHO REINAS AMPLIADO.
  4509.      Lección 7.
  4510.        Ejemplo 1: 21 FUNCIONES DE MANIPULACION DE CADENAS DE CARACTERES.
  4511.        Ejemplo 2: ESCRITURA ALFABETICA DE NUMEROS.
  4512.        Ejemplo 3: ESCRITURA ALFABETICA DE NUMEROS VERSION 2.
  4513.      Lección 8.
  4514.        Ejemplo 1: PROGRAMA PARA PROBAR OPERACIONES CON UNA LISTA.
  4515.        Ejemplo 2: PROGRAMA PARA PROBAR OPERACIONES CON UN ARBOL.
  4516.        Ejemplo 3: PROGRAMA PARA PROBAR OPERACIONES CON UNA TABLA HASH.
  4517.      Lección 9.
  4518.        Ejemplo 1: COPIAR FICHERO UTILIZANDO FUNCIONES DE E/S DE ALTO NIVEL.
  4519.        Ejemplo 2: COPIAR FICHERO UTILIZANDO FUNCIONES DE E/S DE BAJO NIVEL.
  4520.        Ejemplo 3: COPIAR FICHERO LINEA A LINEA ESCRIBIENDO NUMEROS DE LINEA.
  4521.        Ejemplo 4: COPIAR FICHERO SELECTIVAMENTE.
  4522.        Ejemplo 5: COMPARAR DOS FICHEROS.
  4523.        Ejemplo 6: COPIAR FICHERO CON SUSTITUCIONES.
  4524.        Ejemplo 7: ORDENAR FICHERO.
  4525.      Lección 10.
  4526.        Ejemplo 1: CONSTANTES DEFINIDAS EN FICHERO LIMITS.H.
  4527.        Ejemplo 2: MACROS Y FUNCIONES DECLARADAS EN FICHERO CTYPE.H.
  4528.        Ejemplo 3: COMPRESION/DESCOMPRESION DE FICHEROS.
  4529.        Ejemplo 4: EJEMPLO SOBRE ALGUNAS FUNCIONES DE PANTALLA DE TURBO C.
  4530.        Ejemplo 5: EJEMPLO SOBRE ALGUNAS FUNCIONES GRAFICAS DE TURBO C.
  4531.        Ejemplo 6: LISTADOR DE FICHEROS EN HEXADECIMAL Y EN ASCII.
  4532.      Lección 11.
  4533.        Ejemplo 1: EJEMPLO PARA PROBAR LAS FUNCIONES DE SETJMP.H
  4534.        Ejemplo 2: DIR.
  4535.        Ejemplo 3: EJEMPLO PARA PROBAR LAS FUNCIONES int86() Y bdos().
  4536.      Lección 12.
  4537.        Ejemplo 1: ANALISIS Y EVALUACION DE EXPRESIONES.
  4538.        Ejemplo 2: LABERINTO.
  4539.        Ejemplo 3: CRONOMETRAR EJECUCION DE PROCESO.
  4540.    Lenguaje C++.
  4541.      Lección 1.
  4542.        Ejemplo 1: (sin título)
  4543.      Lección 2.
  4544.        Ejemplo 1: ORDENACION RAPIDA.
  4545.      Lección 3.
  4546.        Ejemplo 1: CLASE ent.
  4547.        Ejemplo 2: CLASE cola_char.
  4548.      Lección 4.
  4549.        Ejemplo 1: CLASE conj_int.
  4550.        Ejemplo 2: CLASE lista.
  4551.        Ejemplo 3: CLASE timer.
  4552.        Ejemplo 4: CLASE video.
  4553.      Lección 5.
  4554.        Ejemplo 1: CLASE pot.
  4555.        Ejemplo 2: CLASE vect.
  4556.        Ejemplo 3: CLASE intpeq.
  4557.        Ejemplo 4: CLASE arbol_binario.
  4558.        Ejemplo 5: CLASE asoc.
  4559.        Ejemplo 6: CLASE iterador_asociat.
  4560.        Ejemplo 7: CLASE fecha.
  4561.      Lección 6.
  4562.        Ejemplo 1: CLASE vector_ind.
  4563.      Lección 7.
  4564.        Ejemplo 1: CLASES PARA CONTADORES.
  4565.      Lección 8.
  4566.        Ejemplo 1: CLASE fraccion.
  4567.        Ejemplo 2: PROGRAMA COPIAR.
  4568.        Ejemplo 3: CLASE string.
  4569.        Ejemplo 4: CONTADOR DE PALABRAS.
  4570.  
  4571.  - "Lección incorrecta."
  4572.  
  4573.       Este error ocurre cuando el número de lección dada por el usuario no es
  4574.  número (contiene caracteres que no son dígitos) o bien dicho número de lec-
  4575.  ción corresponde a una lección inexistente. Para el lenguaje C, los números
  4576.  correctos de lección están en el rango de 1 a 12, ambos inclusive; y para el
  4577.  lenguaje C++, el rango de números de lección correctos están en el rango de
  4578.  1 a 8, ambos inclusive; dicho de otro modo, el tutor del lenguaje C tiene 12
  4579.  lecciones y el tutor del lenguaje C++ tiene 8 lecciones.
  4580.  
  4581.  - "Lenguaje incorrecto."
  4582.  
  4583.       Este error sucede cuando el nombre del lenguaje dado por el usuario
  4584.  no es correcto. Los nombres de lenguajes correctos son "C" y "C++", que
  4585.  se pueden escribir indistintamente en minúsculas o en mayúsculas.
  4586.  
  4587.  - "No se puede ejecutar el programa P."
  4588.  
  4589.       Este error acontece cuando el programa EJECUTAR.EXE no puede ejecutar
  4590.  el programa P siendo P bien PRTUTC.EXE o bien PRTUTCPP.EXE. Hay fundamen-
  4591.  talmente dos motivos por los cuales no se puede ejecutar el programa P: el
  4592.  programa P no se encuentra en el directorio de trabajo o no hay suficiente
  4593.  memoria para ejecutarlo.
  4594.  
  4595.  - "Número incorrecto de argumentos."
  4596.  
  4597.       Este error se produce cuando en la ejecución del programa EJECUTAR.EXE
  4598.  no se pasan tres argumentos. La sintaxis correcta de ejecución es: EJECUTAR
  4599.  lenguaje lección ejemplo.
  4600.  
  4601.  
  4602.  
  4603.  7.- GLOSARIO DE TERMINOS.
  4604.  -------------------------
  4605.  
  4606.       En este apartado se presenta una lista, ordenada alfabéticamente, con
  4607.  las definiciones de algunos términos que aparecen en el manual de usuario.
  4608.  
  4609.  
  4610.  - 8088: microprocesador Intel incorporado en el primer y original IBM PC.
  4611.  Permite direccionar 1MB de memoria y trabaja con 16 bits.
  4612.  
  4613.  - 8086: microprocesador de Intel ligeramente superior al 8088. A grandes
  4614.  rasgos, comparte sus mismas características. Los ordenadores que poseen un
  4615.  8088 o un 8086 reciben el nombre de compatibles PC, y si tienen un disco
  4616.  duro, compatibles PC XT.
  4617.  
  4618.  - 80286 (286): microprocesador de Intel incorporado en el IBM PC AT. Permite
  4619.  acceder a 16MB de memoria y trabaja con 16 bits.
  4620.  
  4621.  - 80386 (386): microprocesador de Intel que permite acceder a 4096MB de
  4622.  memoria y trabaja con 32 bits.
  4623.  
  4624.  - ANSI: Amarican Nacional Standard Institute (Instituto Nacional de Están-
  4625.  dares americano).
  4626.  
  4627.  - ANSI C: C estándar.
  4628.  
  4629.  - ANSI C++: C++ estándar.
  4630.  
  4631.  - ASCII: American Standard Code for Information Interchange (Código Estándar
  4632.  Americano para Intercambio de Información). Código estándar utilizado para
  4633.  interpretar los bytes en modo texto -en modo binario se interpretan como
  4634.  instrucciones en código máquina-. Cada carácter tiene un código ASCII que
  4635.  sirve para identificar unívocamente a dicho carácter.
  4636.  
  4637.  - AT: Ordenador con un microprocesador 286. Reciben este nombre porque el
  4638.  primer ordenador 286 que apareció en el mercado era el IBM PC/AT.
  4639.  
  4640.  - Atributo de pantalla: número que expresa los colores de texto y fondo con
  4641.  los que se han de escribir los caracteres en la pantalla. También indica si
  4642.  los caracteres se escriben con parpadeo o sin él.
  4643.  
  4644.  - BIOS (Basic Input/Output System): conjunto de rutinas básicas que sirven
  4645.  para inicializar el ordenador, controlar dispositivos, etc. Las rutinas de
  4646.  la BIOS se localizan en dos chips presentes en todos los ordenadores.
  4647.  
  4648.  - Borland C++: compilador de C++ de la compañía Borland International.
  4649.  
  4650.  - C de Kernighan y Ritchie: primer lenguaje C creado; fue inventando por
  4651.  Kernighay y Ritchie.
  4652.  
  4653.  - CGA (Color Graphics Adapter): Tarjeta de vídeo en color que permite una
  4654.  resolución de 640x200.
  4655.  
  4656.  - Código de overlay: código de un programa que se mantiene en la memoria de
  4657.  masas y que se copia en la memoria principal sólo cuando se necesita.
  4658.  
  4659.  - Compilador: programa que traduce el código fuente de un programa a código
  4660.  máquina.
  4661.  
  4662.  - Debugger: utilidad, que generalmente forma parte del software del sistema
  4663.  de un ordenador, que permite seguir la ejecución de un programa, permitiendo
  4664.  conocer en qué estado se encuentra el mismo, así como los valores de las
  4665.  variables empleadas en él.
  4666.  
  4667.  - EGA (Enhaced Graphics Adapter): tarjeta de vídeo de mayor resolución que
  4668.  la CGA y menor que la VGA.
  4669.  
  4670.  - Hardware: los dispositivos electrónicos (por ejemplo, CPU, memoria) que
  4671.  proporcionan la capacidad de computación y los dispositivos electromecánicos
  4672.  que proporcionan las funciones del mundo exterior.
  4673.  
  4674.  - HERCULES: tarjeta gráfica monocroma.
  4675.  
  4676.  - Interrupción: las interrupciones son la forma empleada por la circutería
  4677.  exterior del microprocesador para informar que algo (como, por ejemplo, la
  4678.  pulsación de una tecla) ha ocurrido y que, por tanto, requiere que se rea-
  4679.  lice alguna acción. El sistema BIOS, o el sistema operativo, pueden producir
  4680.  interrupciones mediante software para requerir y ejecutar programas especia-
  4681.  les de servicio.
  4682.  
  4683.  - Lenguaje fuente: lenguaje de programación que puede traducir un determi-
  4684.  nado compilador o ensamblador.
  4685.  
  4686.  - Lenguaje objeto: 1) El lenguaje en que un compilador o un ensamblador
  4687.  general los módulos que producen. 2) Lenguaje en el que un compilador
  4688.  escribe los resultados de las compilaciones.
  4689.  
  4690.  - LPT1: primer puerto paralelo.
  4691.  
  4692.  - LPT2: segundo puerto paralelo.
  4693.  
  4694.  - Memoria convencional: la memoria convencional (conventional memory) es la
  4695.  memoria RAM comprendida entre 0K y 640K.
  4696.  
  4697.  - Memoria expandida: la memoria expandida (expanded memory) es una especi-
  4698.  ficación que permite acceder a memoria fuera del rango 0K-1024K mediante
  4699.  un marco de página situado dentro de dicho rango en el cual se realiza un
  4700.  intercambio de bancos de memoria.
  4701.  
  4702.  - Memoria extendida: la memoria extendida (extended memory) es la memoria
  4703.  RAM propia de los ordenadores 286 o superior cuya dirección se sitúa por
  4704.  encima de 1024K.
  4705.  
  4706.  - Memoria RAM de vídeo: la memoria vídeo o la memoria de pantalla (video
  4707.  memory) es la memoria RAM en la cual se escribe la combinación de bytes
  4708.  que genera los caracteres que se ven en la pantalla. En todas las tarjetas
  4709.  gráficas se incluyen chips de memoria RAM.
  4710.  
  4711.  - OOP (Object Oriented Programming): programación orientada a objetos.
  4712.  
  4713.  - Overlay: ver código de overlay.
  4714.  
  4715.  - Procesador de texto: programa que permite escribir, editar y corregir
  4716.  ficheros de texto, generalmente documentos o programas.
  4717.  
  4718.  - Programación orientada a objetos: metodología de programación que está
  4719.  revolucionando la base misma del diseño e implementación del software. Bajo
  4720.  el nombre de OOP se agrupan varias técnicas claves entre las que destacan la
  4721.  abstracción de datos, la herencia de tipos de datos, el polimorfismo, la
  4722.  encapsulación, etc.
  4723.  
  4724.  - Puerto: los puertos son el modo general de comunicación que emplea el
  4725.  microprocesador con el resto de los componentes de la circutería distintos
  4726.  de la memoria. La asignación de un puerto es único y característico del
  4727.  diseño de un modelo de ordenador particular.
  4728.  
  4729.  - RAM (Random Access Memory): la memoria RAM o memoria de acceso aleatorio
  4730.  es la memoria volátil que se utiliza normalmente para ejecutar programas y
  4731.  almacenar datos. Cuando se apaga el ordenador, desaparece todo el contenido
  4732.  de esta memoria RAM.
  4733.  
  4734.  - Ratón: periférico apuntador en forma de ratón y con varios botones que a
  4735.  medida que es movido con la mano sobre una superficie plana se va moviendo
  4736.  un apuntador en la pantalla del monitor.
  4737.  
  4738.  - ROM (Read-Only Memory): la memoria ROM o memoria de sólo lectura es memo-
  4739.  ria que sólo se puede leer, pero nunca modificar. Contiene rutinas fundamen-
  4740.  tales que controlan varios aspectos críticos del sistema. Todas las rutinas
  4741.  de la BIOS se almacenan en chips de memoria ROM; por eso se le conoce gene-
  4742.  ralmente como ROM BIOS. Sin embargo, también existe otra ROM como la ROM de
  4743.  vídeo que incorporan las tarjetas de vídeo VGA o superiores.
  4744.  
  4745.  - ROM-BIOS: colección de rutinas en lenguaje máquina ubicadas en memoria ROM
  4746.  que proporcionan los servicios de soporte para las operaciones del ordenador.
  4747.  
  4748.  - Fichero fuente: fichero de disco que contiene un programa escrito en un
  4749.  cierto lenguaje de programación.
  4750.  
  4751.  - Sistema de gestión de bases de datos (DBMS): software responsable de
  4752.  todos los aspectos de la creación, utilización y mantenimiento de una base
  4753.  de datos.
  4754.  
  4755.  - Sistema operativo: un sistema operativo es un programa que actúa directa-
  4756.  mente sobre el hardware, gestionando los recursos de un ordenador de acuerdo
  4757.  a ciertos objetivos; los dos objetivos principales de un sistema operativo
  4758.  son la utilización eficiente de los recursos disponibles y eliminar las
  4759.  dificultades que supone tratar directamente con el hardware.
  4760.  
  4761.  - Software: los programas de ordenador, estructuras de datos y documentación
  4762.  asociada que sirven para realizar el método lógico, procedimiento o control
  4763.  requerido.
  4764.  
  4765.  - Turbo C: compilador de C de la compañía Borland International.
  4766.  
  4767.  - Turbo C++: compilador de C++ de la compañía Borland International.
  4768.  
  4769.  - Ventana de pantalla: recuadro que aparece en la pantalla, normalmente con
  4770.  texto en su interior.
  4771.  
  4772.  - VGA (Video Graphics Array): especificación de vídeo de mayor resolución
  4773.  que la EGA.
  4774.  
  4775.  - XT: los ordenadores XT son los ordenadores que poseen un microprocesador
  4776.  8088 u 8086 y un disco duro. Las siglas XT se utilizaban en el nombre del
  4777.  primer ordenador con disco duro de IBM, el IBM PC/XT.
  4778.  
  4779.  
  4780.  
  4781.  8.- AUTOR DE LA APLICACION.
  4782.  ---------------------------
  4783.  
  4784.       Esta aplicación es una herramienta interactiva con la cual un usuario
  4785.  puede aprender los lenguajes C y C++.
  4786.  
  4787.        Los datos personales del autor son los siguientes:
  4788.  
  4789.  ┌──────────────────────────┐
  4790.  │ Antonio Lebrón Bocanegra │
  4791.  │ C/ El Gastor, 21         │
  4792.  │ 11690 Olvera (Cádiz)     │
  4793.  │ Tlf: (956) 120059        │
  4794.  └──────────────────────────┘
  4795.