Logo Studenta

Aprende-a-Desarrollar-Con-JavaScript

¡Este material tiene más páginas!

Vista previa del material en texto

Este libro, que trata sobre el aprendizaje en el desarrollo con JavaScript, se dirige a los lectores que deseen adquirir 
las habilidades necesarias para dominar esta área,  fundamental en  los desarrollos Web. Es completamente esencial 
dominar  el  software  existente  que  permite  adquirir  el  conocimiento  del  lenguaje  JavaScript,  si  desea  conseguir  el 
conocimiento suficiente dentro del sector específico relacionado con las tecnologías de la Web 2.0. 
 
Partiendo de la base de que el lector solo tiene conocimientos básicos de programación, el autor comenzia recordando 
y aportando conocimiento sobre algoritmia. A continuación, explica los conceptos principales del lenguaje JavaScript. 
Los  diferentes conceptos,  principios  o  funcionalidades,  se  descubren  a  través  de  ejemplos  concretos,  fácilmente 
reutilizables en otros desarrollos. 
 
En  la medida  en  que  el  lenguaje  JavaScript  se  integra  con  otras  tecnologías Web  (o  lenguajes),  como  el  inevitable 
HTML,  las  hojas  de  estilo  CSS,  los  lenguajes  orientados  a  la  programación  del  lado  servidor  como  PHP  u  otras 
herramientas  como Ajax,  este  libro  también  le permitirá dar  sus primeros pasos,  adentrándose en estas diferentes 
tecnologías. 
 
El autor se apoya en ejemplos que siguen una progresión lógica a lo largo de los capítulos. 
 
Tiene a su disposición elementos adicionales que se pueden descargar desde esta página. 
 
Los capítulos del libro: 
Presentación del lenguaje JavaScript – Desarrollo a partir de algoritmos – Conceptos principales del lenguaje JavaScript 
–  Procesamiento  condicionado  –  Procesamiento  iterativo  bucles  –  Tablas  –  Procedimientos  y  funciones  –  Enfoque 
orientado  a  objetos  en  JavaScript  –  Principales  objetos  en  JavaScript  – Utilizar  formularios  para  introducir  datos  – 
Modelo DOM – Exploración del flujo XML via DOM – Gestión de las cookies en JavaScript – Almacenamiento local de datos 
– Almacenamiento remoto: formato XML   – Almacenamiento remoto: formato JSON – Geolocalización – Diseño HTML 5 
CANVAS – Gráficos de gestión – Creación de documentos PDF – Creación de códigos QR 
Aprender a desarrollar con JavaScript
Christian VIGOUROUX 
Christian VIGOUROUX es Doctor en la universidad de Rennes 1, en el área de componentes de gestión (IAE­ Instituto 
de Gestión de Rennes). Ahí enseña desde hace casi de 30 años informática de gestión, encargado principalmente de la 
enseñanza en Técnicas de Internet, Ingeniería de software e Informática decisional en el  máster de Sistemas de 
información y control de gestión, que él dirige. Adicionalmente, desarrolla actividades de consultoría en grandes 
empresas, para la implantación de soluciones decisionales y la implantación de arquitecturas de software. 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdj4fPctWJ61IgLAA==-enidentnumber
JavaScript, término que nos encontraremos muy a menudo en este libro con las siglas JS, es un lenguaje inventado 
por  Brendan  Eich  en  1995,  que  sirve  principalmente  para  programar   procesamientos  del  lado  "cliente"  en  los 
desarrollos Web. La primera versión de este  lenguaje fue bautizado por LiveScript. El objetivo era proporcionar un 
lenguaje de script al navegador (browser) Netscape Navigator 2. 
Rápidamente,  LiveScript  fue  renombrado  por  JavaScript,  y  una  organización,  el  ECMA,  se  hizo  responsable  de  los 
aspectos  relativos  a  la  estandarización.  En  paralelo,  Microsoft  desarrolló  su  propia  solución  de  scripting  para  su 
navegador Internet Explorer. 
La  programación  del  lado  "cliente"  de  JavaScript  permite  añadir  una  cierta  interactividad  a  las  páginas  Web.  En 
particular,  las páginas podrán reaccionar a  las acciones del usuario, como  la selección en una  lista desplegable,  la 
selección de una casilla de selección o un clic en un botón de un formulario. 
El código JavaScript, almacenado como archivos en un servidor Web, es accesible, a través del protocolo HTTP, por el 
navegador del puesto "cliente", usando una llamada del usuario a través de la introducción de una URL o con un clic 
en un enlace de hipertexto. El código JavaScript es no compilado y se interpreta por un motor dedicado, incorporado 
al navegador. 
El lenguaje JavaScript ha sufrido muchas evoluciones a lo largo del tiempo y se soporta prácticamente por todos los 
principales navegadores (Microsoft Internet Explorer, Mozilla Firefox, Opera, Safari, Google Chrome...), que están en 
los  ordenadores,  independientemente  de  su  sistema  operativo  (diferentes  versiones  de Microsoft Windows,  Unix, 
Linux, Mac OS X...). 
JavaScript  se  dejó  de  lado  durante  mucho  tiempo  porque  tenía  la  reputación  de  ser  difícil  de  depurar  y  tener 
comportamientos  muy  diferentes  entre  un  navegador  y  otro.  Se  han  añadido  muchas  mejoras  a  lo  largo  de  las 
versiones (JavaScript 2.0 actualmente). 
Puede  encontrar  la  descripción  completa  de  las  novedades  de  JavaScript  en  el  sitio  web  de  Mozilla 
(https://developer.mozilla.org/es/docs/Web/JavaScript). 
Para terminar, JavaScript ha recuperado su esplendor con la aparición de muchas librerías de calidad y frameworks 
(Ajax, jQuery, Dojo...). Por tanto, JavaScript es una piedra angular en los desarrollos de la "Web 2.0". 
También mencionamos la confusión de los desarrolladores principiantes entre JavaScript y Java. No hay que confundir 
Java y JavaScript. JavaScript es un lenguaje de programación de scripts desarrollado por Netscape Communications, 
mientras  que  Java  es  un  lenguaje  de  programación  informático  orientado  a  objetos,  creado  por  James  Gosling  y 
Patrick Naughton, empleados de Sun Microsystems. La sintaxis de los dos lenguajes es parecida, porque derivan los 
dos del C++. 
Comparativo Java/JavaScript: 
Definición e histórico rápido
Java  JavaScript 
Autor  Desarrollado por Sun Microsystems  Desarrollado  por  Netscape 
Communications 
Formato  Compilado como de byte­code  Interpretado 
Almacenamiento  Applet  descargado  como  un  elemento 
de la página Web 
Código insertado en la página Web 
Uso  Se  usa  para  desarrollar  todo  tipo  de 
aplicaciones 
Se  usa  únicamente  para  "dinamizar" 
las páginas Web 
Ejecución  Se  ejecuta  en  la  JVM  (Java  Virtual 
Machine) del navegador 
Se ejecuta por el navegador 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdj4ad3wWJ61IgLAA==-enidentnumber
https://developer.mozilla.org/es/docs/Web/JavaScript
Programación  orientada  a 
objetos (POO) 
Orientado a objetos  Manipula  objetos  pero  no  permite 
definirlos 
Tipado  Fuertemente tipado  Sin control de tipo 
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdj4ad3wWJ61IgLAA==-enidentnumber
Muy  a  menudo,  JavaScript  se  considera  como  un  lenguaje  muy  accesible  desde  el  punto  de  vista  técnico. 
Evidentemente, en desarrollos sencillos los principiantes podrán hacer sus intentos demanera fácil. Además, existe 
una documentación importante sobre el tema (libros, sitios de Internet, foros, vídeos...). 
Por el contrario, para aplicaciones profesionales, ya no será posible conformarse con descargar scripts y adaptarlos 
para  integrarlos en  sus propias páginas HTML. Se deberá hacer una  inversión  real  en  formación y  son necesarias 
competencias mínimas en desarrollo de software. 
De manera  ideal,  para  controlar  JavaScript  en  las  mejores  condiciones,  hay  que  tener  algunos  conocimientos  de 
algoritmia, haber desarrollado previamente en un lenguaje de scripting o incluso, mejor, en un lenguaje evolucionado 
como C++ o Java. 
Este libro, accesible para los principiantes en desarrollo Web y en JavaScript en particular, repasará muchos requisitos 
previos indispensables, en concreto de algoritmia (enfoque procedimental  inicial) y del  lenguaje HTML (sin hacer un 
estudio exhaustivo), antes de abordar realmente JavaScript. 
Requisitos previos para un aprendizaje sencillo del lenguaje
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdj/TByxmJ61IgLAA==-enidentnumber
Es frecuente oír que "el desarrollo Web no necesita muchas herramientas". En un primer enfoque, es cierto que para 
desarrollar páginas Web con lenguajes HTML y JavaScript es posible utilizar herramientas sencillas (y gratuitas). Un 
editor  de  texto  como  Notepad  y  un  navegador  pueden  ser  suficientes.  Incluso  no  es  obligatoria  una  conexión  a 
Internet. 
Por el contrario, para desarrollos importantes, puede ser útil tener piezas de software más evolucionadas (gratuitas o 
de  pago).  Para  elaborar  sus  scripts,  puede  utilizar  editores  de  texto  (gratuitos),  que  ofrecen  prestaciones  más 
completas  (coloración  sintáctica,  gestión multiarchivo,  completar  automáticamente  el  código,  acceso  FTP  integrado, 
soporte  de  múltiples  lenguajes  Web...).  Por  ejemplo,  Notepad++  (http://notepad­plus­plus.org/)  o  Aptana  Studio 
(http://www.aptana.com/products/studio3/download) pueden sustituir a Notepad. 
Kompozer (http://kompozer.net/) también es un software gratuito y puede ser una alternativa interesante. Se trata de 
un software clasificado dentro de la categoría de IDE (Integrated Development Environment). 
También existen muchos generadores de código o IDE gratuitos o de pago. El más conocido es Adobe Dreamweaver. 
Para que sirva de orientación, muchos ejemplos utilizados en este libro se han desarrollado con Aptana Studio 3.4.1. 
Herramientas necesarias
Los principales ejemplos de este libro se pueden descargar libremente desde la página Información. Para facilitarle su 
uso, estos scripts están clasificados por capítulos. Se ha hecho un esfuerzo particular a nivel de  la calidad de estos 
scripts (comentarios, indentación, nomenclatura de variables...) para facilitar su reutilización. 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjYejP1WJ61IgLAA==-enidentnumber
http://notepad-plus-plus.org/
http://www.aptana.com/products/studio3/download
http://kompozer.net/
Ubicamos  también  rápidamente  el  lenguaje  JavaScript  respecto  a  otros  lenguajes  o  tecnologías  habituales  en  los 
proyectos  de  desarrollo  Web.  Sepa  que  el  código  JavaScript  se  utiliza  de  manera  aislada  muy  raramente.  Las 
secuencias de código JavaScript son,  la mayor parte de  las veces, para animar  los scripts HTML (HyperText Markup 
Language). Para decir  las cosas de una manera más sencilla, en la visualización de páginas Web, el  lenguaje HTML 
describe principalmente el contenido, mientras que el JavaScript, como se ha comentado anteriormente, gestiona la 
interactividad. 
Muy  a menudo,  el  formateo  de  la  información mostrada  (secuencias  de  texto,  tablas,  imágenes...)  no  se  asegura 
directamente  con  directivas  (etiquetas)  del  lenguaje  HTML,  sino  usando  una  tecnología  adicional  (sin  duda,  es 
exagerado hablar de lenguaje), el CSS (Cascading Style Sheets), también llamado "hojas de estilo en cascada". 
También es muy importante entender que el lenguaje JavaScript está orientado al lado "cliente". Por lo tanto, es inútil 
pedirle actuar en el  lado "servidor". No puede acceder a  las bases de datos almacenadas en el  servidor y buscar 
datos  almacenados  en  las  tablas.  Hay  lenguajes  adicionales,  muy  utilizados  en  los  proyectos  Web,  como  PHP, 
Microsoft  ASP.NET  e  incluso  Java,  que  tendrán  precisamente  este  papel.  Estos  lenguajes,  usando  consultas  SQL, 
preguntan a las bases de datos y un intérprete (software de lado "servidor") genera sobre la marcha el código HTML, 
que contiene la información leída de las tablas. Posteriormente se envía al navegador del puesto "cliente", usando el 
protocolo HTTP. Solo queda que el navegador descodifique  (descifre) el  código HTML (y  JavaScript  si es necesario) 
para conseguir una visualización sencilla consultable por un usuario humano. 
Posicionamiento de JavaScript respecto a otras tecnologías de 
desarrollo Web (HTML, CSS, PHP...)
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjwTXh2mJ61IgLAA==-enidentnumber
Un  algoritmo  es  la  descripción  de  las  operaciones  necesarias  para  obtener  un  resultado  a  partir  de  valores  de 
entrada:  los  "datos".  Un  programa  es  un  algoritmo  escrito  en  un  lenguaje  concreto.  Volveremos  sobre  esto más 
adelante. 
Una receta de cocina se puede considerar como un algoritmo. Para que sirva de ejemplo, la fabricación de un pastel 
se basa en ingredientes (leche, mantequilla, harina, azúcar...) y se aplicará un procedimiento metódico (receta de la 
abuela)  para  utilizar  estos  ingredientes  (mezcla,  tiempo  de  cocción...).  Habrá  comprobado  en  su  día  a  día  que 
utilizamos algoritmos sin darnos cuenta realmente (recetas, noticias, planos de diseño, plantillas...). 
Volvamos  sobre  nuestro  ejemplo  de  la  receta  de  cocina.  En  su  ausencia,  es  posible  conseguir  el  plato  con  una 
sucesión de  intentos  (ensayos,  tiempo de cocción aproximado). Evidentemente, esta  forma de proceder  (incluso si 
para algunos es satisfactoria) no es eficaz (se pierde tiempo y es un lío de ingredientes). 
La programación va a ser el medio de definir y especificar al ordenador el conjunto de operaciones necesarias para 
resolver  un problema. Se  trata  de  la  traducción  a  un  lenguaje  comprensible  por  la máquina  de  las  secuencias  de 
acciones que se deben aplicar a  los datos, en el marco de un procesamiento  informático. Aquí  también es posible 
hacer una comparación con los idiomas; un mismo ordenador puede entender (ejecutar) varios lenguajes informáticos 
(Pascal, C, C++,  Java, Objective­C,  JavaScript...). A partir de un algoritmo  idéntico  (una especie de modelo  lógico), 
será posible traducirlo de varias maneras programáticas. 
En resumen, en el procesamiento de un problema, hay que distinguir dos fases principales: 
En  este  capítulo  se  exponen  los  principiosgenerales  de  la  algoritmia  y  se  pone  el  acento  en  la  formulación  de 
algoritmos en lenguaje descriptivo, en detrimento del  lenguaje JavaScript, que se verá en detalle en los siguientes 
capítulos. 
Presentación de la noción de algoritmo
l La búsqueda y redacción de una solución; un algoritmo (análisis del problema).  
l La expresión del algoritmo en un lenguaje de programación para su explotación en el ordenador (codificación). 
Para que sirva de ejemplo, esto es lo que dice la enciclopedia Wikipedia sobre este asunto: un algoritmo (del griego y 
latín, dixit algorithmus, y este a su vez del matemático persa Al­Juarismi), es un conjunto prescrito de instrucciones o 
reglas bien definidas, ordenadas y  finitas que permite  realizar una actividad mediante pasos sucesivos, que no generen 
dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos, se llega 
a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia. 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjwU084GJ61IgLAA==-enidentnumber
Un algoritmo manipula objetos sobre los que puede realizar acciones. Los objetos simples son: 
Para  poder  manipular  estos  objetos,  hay  operaciones  disponibles.  Estos  objetos,  así  como  las  operaciones 
asociadas,  se  deben  definir  perfectamente.  Analicemos  los  tres  ejemplos  siguientes,  que  son  situaciones  de 
intercambio entre un cliente y un vendedor. 
Ejemplo 1: 
Ejemplo 2: 
Ejemplo 3: 
En estos ejemplos, comprobamos la necesidad de: 
Se llama tipo a la asociación: 
Hay cuatro tipos básicos: entero, real, booleano y carácter. 
El tipo entero: 
Noción de variable
1. Presentación de las nociones de variable y tipo
l números (3.14159, 1980, 9...), 
l caracteres ("A", "9"...) y cadenas de caracteres ("PAULINA"...), 
l valores booleanos o lógicos (verdadero o falso). 
l "Buenos días, quisiera 1 kg y 1 kg." 
l "??" 
l "Buenos días, señor, quisiera 1 kg de arroz y 1 kg de vino." 
l "Aquí está su kilo de arroz y ¿qué más quería?" 
l "Buenos días señor, quisiera 1 kg de arroz y 1 litro de vino." 
l "Le he puesto todo en esta bolsa." 
l citar la naturaleza de los objetos que vamos a manipular (arroz, vino...), 
l no  utilizar  estos  objetos  de  cualquier  manera  (el  arroz  se  pesa,  el  vino  se  bebe...)  es  decir,  para  cada 
naturaleza de objeto, hay operaciones particulares. 
l de una naturaleza de objeto (arroz, vino, o incluso enteros, reales...), 
l y las operaciones asociadas (pesar, lavar, cocinar el arroz, sumar, multiplicar enteros...). 
2. Tipos básicos y operaciones asociadas
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIdKs5WJ61IgLAA==-enidentnumber
El tipo real: 
El tipo booleano: 
Recordemos el funcionamiento de los operadores lógicos No, Y y O, con esta tabla resumen: 
En resumen:  
l Los valores son números enteros. 
l Notación: se utiliza la notación decimal (ejemplos: 365, ­15). 
l Operaciones: adición, sustración, multiplicación, división entera, módulo (resto de la división entera), etc. 
l Los valores son números reales. 
l Notación: el punto anglosajón se sustituye por la coma (ej.: 124.89, 0.136, 1986). 
l Operaciones: las que se usan habitualmente con los números reales en aritmética. 
l Solo hay dos valores booleanos: verdadero o falso. 
l Notación: Verdadero y Falso. 
l Operaciones: se utilizan los operadores lógicos usuales (No, O e Y). 
A  No A 
Verdadero  Falso 
Falso  Verdadero 
A  B  A O B 
Verdadero  Falso  Verdadero 
Falso  Verdadero  Verdadero 
Falso  Falso  Falso 
Verdadero  Verdadero  Verdadero 
A  B  A Y B 
Verdadero  Falso  Falso 
Falso  Verdadero  Falso 
Falso  Falso  Falso 
Verdadero  Verdadero  Verdadero 
l El contrario de Falso es Verdadero e inversamente (cf. tabla de No). 
l Con el O  lógico, es suficiente con que uno de  los operandos (A, B) sea Verdadero para que el resultado A O B sea 
Verdadero (cf. tabla de O). 
l Con  el  Y  lógico,  los  dos  operandos  (A,  B)  deben  ser  simultáneamente  Verdadero  para  que  el  resultado A  Y  B  sea 
Verdadero (cf. tabla del Y). 
3. Interés de los tipos
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIdKs5WJ61IgLAA==-enidentnumber
Hagamos  aquí  un  pequeño  esfuerzo  de  abstracción,  imaginando  un  lenguaje  (de  comunicación)  basado 
exclusivamente en dos tipos. 
La definición de estos tipos (naturaleza de los objetos y operaciones asociadas) es cercana a la "vida real". Este 
lenguaje permitirá manipular los objetos de tipo "Sólido" y de tipo "Líquido". 
Caractericemos estos dos tipos como sigue: 
Sólido: 
Líquido: 
y escribimos un primer algoritmo: 
Hay dos ventajas que se perciben con el uso de tipos en nuestro "lenguaje": 
Sin realizar las acciones descritas en este algoritmo, vemos que la operación fundir vino es errónea, porque el vino 
es un objeto declarado de tipo Líquido y la operación fundir no está asociada a este tipo. La operación comer caucho 
es  correcta,  aunque  el  caucho  sea  indigesto.  Beber  sidra  no  es  posible,  porque  la  sidra  no  se  ha  citado  como 
elemento de tipo Líquido. Para terminar, es inútil declarar el agua y el refresco, porque no se usan. 
La  manera  más  habitual  de  manipular  los  objetos  es  hacerlos  intervenir  en  cálculos.  Para  esto,  se  utilizan  los 
operadores elementales sobre un operando (operadores unarios) o sobre dos operandos (operadores binarios). 
Una expresión es la asociación de operadores y operandos. Las reglas gobiernan el orden de evaluación de los 
diferentes términos de una expresión: 
l Naturaleza: materia con forma propia 
l Operaciones: fundir, comer 
l Naturaleza: materia que tiende a fluir 
l Operaciones: hervir, beber, vaciar 
Inicio 
Sólido: mantequilla, queso, caucho 
Líquido: aceite, agua, vino, refresco 
Beber aceite, fundir mantequilla, fundir vino, comer caucho, beber sidra, cocinar caucho 
Fin 
l Para describir objetos de la misma naturaleza, que admiten las mismas operaciones, es suficiente con describir el tipo 
una vez para todos y anunciar que tal o cual objeto es de tal o cual tipo. Las repeticiones se evitan. 
l El  tipado  (uso  de  tipos)  proporciona  un  medio  para  detectar  un  determinado  número  de  errores  sin  ejecutar  el 
algoritmo, simplemente examinando las operaciones respecto al tipo anunciado. 
4. Uso de variables en las expresiones
l Una operación se evalúa inicialmente si su prioridad es más fuerte que la de las operaciones adyacentes (ejemplo: el 
- 3 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIdKs5WJ61IgLAA==-enidentnumberLa  siguiente  tabla  lista  los  operadores  que  se  usan  en  algoritmia,  así  como  la  prioridad  existente  entre  estos 
operadores durante la evaluación de expresiones. 
Resulta evidente que prácticamente siempre estos operadores se encontrarán (con las mismas notaciones) en los 
lenguajes de programación. Volveremos más tarde en este libro sobre ellos, aplicados a JavaScript. 
El orden de los caracteres se rige por la tabla ASCII. En esta tabla, cada carácter ocupa una posición numérica; el 
65 para la letra "A", el 97 para la letra "a", lo que hace pensar que "a" es más grande que "A". 
cálculo de 3+5/2 empieza por 5/2). 
l En  caso  de  igualdad  de  prioridad,  la  evaluación  tiene  lugar  de  izquierda  a  derecha  (ejemplo:  3+2­5  se  evalúa 
empezando por 3+2). 
l Siempre podemos utilizar paréntesis para forzar el orden de evaluación (ejemplo: 3*(2­5) se evalúa empezando por 
2­5). 
5. Tabla resumen de los operadores
Operador  Notación  Tipo de operandos  Tipo de resultado 
+ y ­ unario 
Negación lógico 
+ ­ 
No 
Entero o Real 
Booleano 
El del operando 
Booleano 
Potencia  **  Entero o Real  Entero o Real 
Multiplicación 
División de reales 
Cociente de enteros 
Resta (módulo) 
* 
/ 
Div 
Mod 
Entero o Real 
Real 
Entero 
Entero 
Entero o Real 
Real 
Entero 
Entero 
Adición 
Sustración 
+ 
­ 
Entero o Real 
Entero o Real 
Entero o Real 
Entero o Real 
Comparaciones  >,  <,  >=,  <=,  =, 
<>  
Cualquier tipo  Booleano 
Y lógico  Y  Booleano  Booleano 
O lógico  O  Booleano  Booleano 
Los  operadores  se  clasifican  por  orden  de  prioridad  decreciente  en  esta  tabla  (el  No  es,  por  ejemplo, 
prioritario respecto al O). 
- 4 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIdKs5WJ61IgLAA==-enidentnumber
Durante el análisis de un problema, a menudo  tenemos que descomponer este en subproblemas, que se deben 
resolver  en  un  orden  secuencial  concreto.  Cada  subproblema  genera  resultados  que  se  pueden  utilizar  en  los 
subproblemas que siguen. Por tanto, para poder manipular estos resultados, conviene asignarles un nombre. Esta 
nomenclatura se hace a través de un identificador. También se habla muy a menudo de variable en memoria. 
A cada variable en memoria, se le asocia las siguientes características: 
Estas características se precisan durante la declaración de la variable en memoria. 
Sintaxis de la declaración: 
Ejemplos: 
En lo sucesivo, se ha elegido nombrar a las variables en memoria en mayúsculas, para mejorar su legibilidad. 
Debe  saber  que  hay  muchos  lenguajes  de  programación  que  son  sensibles  a  la  diferencia  entre  mayúsculas  y 
minúsculas de las variables en memoria (una variable CANTIDAD es diferente de una variable Cantidad). 
Evidentemente,  en  programación  (JavaScript  en  nuestro  caso),  se  pueden  proponer  diferentes  convenciones  de 
nomenclatura. 
En  JavaScript,  para  las  variables  en  memoria  (y  las  funciones),  la  convención  comúnmente  aceptada  es  el 
"camelCaps", es decir, que los nombres deben empezar sistemáticamente por una minúscula y después se insertan 
mayúsculas  al  inicio  de  cada  palabra  que  aparece  en  el  nombre  de  la  variable.  Por  ejemplo,  una  variable  como 
ACUMULADO_ANUAL  (la  convención en esta presentación de  la algoritmia)  se codificará como acumuladoAnual en 
JavaScript. 
Manipulación de las variables
1. Nomenclatura de las variables
l su  denominación,  que  se  debe  hacer  con  sentido  (dos  resultados  diferentes  se  designan  por  identificadores 
diferentes), 
l su tipo (conjunto al que pertenece el valor que designa). 
Tipo IDENTIFICADOR 
Tipo es el tipo e IDENTIFICADOR es la denominación de la variable en memoria. 
Real PI 
Car SEPARADOR 
Bool TEST 
Ent NBMESES, NBDIAS 
Una vez que se define una variable en memoria, no se puede cambiar su tipo. 
Cualquier variable en memoria utilizada en un algoritmo se debe haber declarado con antelación. 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIbpnBmN61IgLAA==-enidentnumber
La asignación consiste en almacenar e incluso imputar una expresión a una variable en memoria. La sintaxis que se 
mantiene en esta presentación de la algoritmia es: 
La asignación se representa con el símbolo "<­" (y no con "=", que sirve para hacer comparaciones de igualdad). 
La expresión debe ser del mismo tipo que los valores designados por el identificador. Esta expresión se convierte en 
el nuevo valor, designado por IDENTIFICADOR. 
Para ilustrar las diferentes nociones descritas, en adelante se presentan ejemplos en este libro. Esto le permitirá 
descubrir  los  mecanismos  de  la  algoritmia  en  cada  situación.  Después  puede  (también  es  el  objetivo  de  esta 
presentación) escribir sus propios algoritmos para procesamientos que usted codificará finalmente en JavaScript. 
Enunciado 
Se  le pide  invertir  el  contenido de dos variables en memoria de  tipo entero.  La primera variable  se  llamará, por 
ejemplo, A y  la  segunda B. El  valor  inicial  de A  será, por  ejemplo, 5, mientras que el  de B  será 3. Utilizando un 
algoritmo debe invertir los contenidos para que al final A contenga 3 y B, 5. 
Para que sirva de ejemplo, el contenido de las variables en memoria a lo largo del desarrollo del algoritmo será: 
Puede observar que, en este libro, muchos scripts JavaScript no usan la convención camelCaps. La elección ha sido 
no modificar los nombres de las variables en memoria de los algoritmos subyacentes. 
2. Asignación
IDENTIFICADOR <­ expresión 
Las convenciones que se mantienen aquí pueden ser diferentes de  las que se usan en determinados  lenguajes de 
programación.  Para  JavaScript,  la  asignación se  representa  con  "=", mientras  que  la  comparación  en  igualdad  es 
"==".  Lo  ha  entendido  con  este  pequeño  ejemplo,  pero  es  necesario  estar  muy  atento  durante  la  codificación  en 
programación. Tendremos la ocasión de volver sobre esta dificultad varias veces a lo largo de este libro. 
3. Ejercicio n.°1: Inversión del contenido de dos variables en memoria
Inicio 
Ent A, B, C 
A <­ 5 
B <­ 3 
C <­ A 
A <­ B 
B <­ C 
Fin 
l A <­ 5 (A contiene 5, B está vacío) 
l B <­ 3 (A contiene 5, B contiene 3) 
l C <­ A (A contiene 5, B contiene 3, C contiene 5) 
l A <­ B (A contiene 3, B contiene 3, C contiene 5) 
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIbpnBmN61IgLAA==-enidentnumber
Terminamos con algunas reglas generales de formato y sintaxis: 
En el ejercicio anterior, la inversión del contenido de las dos variables A y B se hace sin dificultad. Por el contrario, el 
contenido de estas dos variables no se ha presentado en la pantalla (o en el visor). Es útil mostrar en pantalla el 
resultado de  los procesamientos, al menos el resultado final. Esta visualización (o escritura) de  los resultados se 
debe solicitar explícitamente. 
A nivel de algoritmia, se va a considerar que la escriturase hace después en una sucesión de líneas, sin indicación 
particular del formato de visualización (negrita, cursiva, fuente de caracteres específica...). 
El orden de escritura se realiza por la instrucción Escribir(e1, e2, ..., ei, ..., en), donde las "ei" pueden representar: 
Ejemplo n.°1: 
Ejemplo n.°2: 
Ejemplo n.°3: 
l B <­ C (A contiene 3, B contiene 5, C contiene 5) 
l Puede  prever  una  línea  en  blanco  (interlineado)  entre  las  secciones  principales  de  su  algoritmo  (declaraciones, 
inicializaciones, cálculos, visualización de resultados...) e incluso, por qué no, justo después de Inicio y antes de Fin. 
l Prevea un trazo vertical para relacionar la palabra clave Inicio con la palabra clave Fin. 
l Observe que las palabras clave aparecen en Negrita/Cursiva en las correcciones (inicial únicamente en mayúscula). 
l Los nombres  de  las  variables  estarán  completamente  en MAYÚSCULAS  (contrario  a  las  convenciones habituales  en 
JavaScript). 
4. Visualización de los resultados
l una expresión, 
l una cadena de caracteres representada entre comillas, 
l el orden Alineación, que hace empezar la impresión en la línea siguiente. 
Escribir("El cuadrado de 4 es ", 4 * 4) 
provoca la impresión de: 
El cuadrado de 4 es 16 
Escribir("La nota en español es ", 10 + 4, Alineación, "La nota en informática es ", (18 + 12) / 2) 
provoca la impresión de: 
La nota en español es 14 
La nota en informática es 15 
Escribir("La nota en español es ", 10 + 4) 
Escribir("La nota en informática es ", (18 + 12) / 2) 
provoca la impresión de: 
La nota en español es 14 
La nota en informática es 15 
- 3 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIbpnBmN61IgLAA==-enidentnumber
Ejemplo n.°4: 
Ejemplo n.°5: 
Ejemplo n.°6: 
Enunciado 
Calcular (y mostrar en pantalla) la superficie de dos círculos de radios predeterminados (5,5 metros y 3,5 metros, 
por ejemplo), así como la diferencia entre estas dos superficies 
Corrección 
Real MAT, INFO 
MAT <­ 15 
INFO <­ 13 
Escribir("La media es ", (MAT + INFO) / 2) 
provoca la impresión de: 
La media es 14 
Real MAT, INFO, MED 
MAT <­ 15 
INFO <­ 13 
MED <­ (MAT + INFO) / 2 
Escribir("La media es ", MED) 
provoca la impresión de: 
La media es 14 
En  la  gran mayoría  de  los  lenguajes  de  programación,  la  instrucción  de  visualización  de mensajes  en pantalla  no 
permite la presentación simultánea de una información alfanumérica y numérica. Por tanto, también convendría en la 
algoritmia  integra  esta  restricción,  usando  la  función Numero_a_cadena.  En  la mayor  parte  de  las  correcciones  de 
ejercicios propuestos en este capítulo esta función no se ha utilizado. 
Real MAT, INFO 
MAT <­ 15 
INFO <­ 13 
Escribir("La media es ", Número_a_cadena((MAT + INFO) / 2)) 
provoca la impresión de: 
La media es 14 
5. Ejercicio n.°2: Superficies de círculos
Inicio 
Real RADIO1, RADIO2, PI, SUPERFICIE1, SUPERFICIE2, DIFERENCIA  
RADIO1 <­ 5.5 
RADIO2 <­ 3.5 
PI <­ 3.14 
SUPERFICIE1 <­ PI * RADIO1 * RADIO1 
SUPERFICIE2 <­ PI * RADIO2 * RADIO2 
DIFERENCIA <­ SUPERFICIE1 ­ SUPERFICIE2 
- 4 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIbpnBmN61IgLAA==-enidentnumber
Los algoritmos no tienen un interés general si, durante cada ejecución, proporcionan siempre el mismo resultado. 
Para acceder a  los datos que el usuario ha  introducido por el  teclado  (o se han  leído de un archivo), a nivel de 
algoritmia tendremos una instrucción dedicada. La entrada de datos en el periférico de entrada se hará a través de 
la instrucción Leer. 
La entrada de datos por Leer se asignará a una variable en memoria (declarada con antelación). La instrucción Leer 
se deberá preceder obligatoriamente de un mensaje explicativo (Escribir("Su entrada de datos:") por ejemplo) para 
indicar al usuario la entrada de datos esperada. 
Ejemplo: 
NB: 
Co significa inicio de comentario 
Fco significa fin de comentario 
Enunciado 
Calcular y mostrar la superficie y el volumen de una esfera, cuyo valor del radio se introducirá por el teclado 
Corrección 
Escribir("Superficie 1 = ", SUPERFICIE1, Alineación, "Superficie 2 = ", 
SUPERFICIE2, Alineación, "Diferencia = ", DIFERENCIA) 
Fin 
6. Introducción por el teclado
Inicio 
Co Declaraciones Fco 
Car NOMBRE, APELLIDO 
Co Introducción del nombre por el teclado Fco 
Escribir("Nombre: ") 
NOMBRE <­ Leer 
Co Introducción del apellido por el teclado Fco 
Escribir("Apellido: ") 
APELLIDO <­ Leer 
Co Visualización de la pantalla para control Fco 
Escribir("La identidad es ", NOMBRE, " ", APELLIDO) 
Fin 
Los comentarios situados en un algoritmo (y en un programa informático) no juegan un papel efectivo. En el caso de 
un lenguaje de programación como JavaScript, serán ignorados por la máquina durante la ejecución del programa. 
Sin  embargo,  son  necesarios,  porque  permiten  al  programador  (o  a  terceras  personas  que  deban  intervenir 
posteriormente  en  el  algoritmo o  programa)  entender más  fácilmente  el  razonamiento  codificado.  Los  comentarios  se 
sitúan, como mínimo, al inicio de cada porción de código específico. 
7. Ejercicio n.°3: Superficie y volumen de una esfera
- 5 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIbpnBmN61IgLAA==-enidentnumber
Inicio 
Co Declaraciones Fco 
Real PI, RADIO, SUPERFICIE, VOLUMEN 
Co Introducción del radio por el teclado Fco 
Escribir("Radio: ") 
RADIO <­ Leer 
Co Cálculos Fco 
PI <­ 3.14 
SUPERFICIE <­ 4 * PI * RADIO * RADIO 
VOLUMEN <­ SUPERFICIE * RADIO / 3 
Co Visualización de los resultados Fco 
Escribir("Radio  de  la  esfera  =  ",  RADIO,  Alineación,  "Superficie  =  ",  SUPERFICIE,  Alineación, 
"Volumen = ", VOLUMEN) 
Fin 
- 6 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIbpnBmN61IgLAA==-enidentnumber
Una función predefinida es un "microprograma" autónomo, al que es posible pedir un procesamiento (un cálculo en 
general), pasando uno o varios argumentos. Una vez que el cálculo está asegurado, la función restituye un valor de 
retorno  (la  respuesta)  al  solicitante  (secuencia  de  código  que  llama  a  la  función).  Esta  noción  seguramente  le  es 
familiar si, por ejemplo, ha utilizado funciones nativas en Microsoft Excel (SUMA, BUSCAR...). 
Veremos más tarde en esta presentación de la algoritmia (y también, sobre todo, en JavaScript) cómo desarrollar sus 
propias funciones. 
El objetivo aquí no es enumerar la lista de funciones habituales en algoritmia (además pueden variar de un autor a 
otro), sino mostrarle cómo se pueden usar. Se utilizará una presentación a través de ejemplos o ejercicios. 
EnunciadoEscribir un algoritmo que permita introducir por el teclado un nombre para mostrar el número de caracteres 
Complemento  del  ejercicio:  Una  función  Longitud(variable_cadena)  predefinida  se  utilizará  para  determinar  el 
número de caracteres de la palabra. 
Correcciones 
E incluso: 
Funciones predefinidas
1. Ejercicio n.°4: Visualización de la longitud de un nombre
Inicio 
Co Declaraciones Fco 
Car NOMBRE 
Co Introducción del nombre por el teclado Fco 
Escribir("Nombre:") 
NOMBRE <­ Leer 
Co Visualización del resultado Fco 
Escribir(NOMBRE, " contiene " , Longitud(NOMBRE), " carácter(es)") 
Fin 
Inicio 
Co Declaraciones Fco 
Car NOMBRE 
Ent NB_CAR 
Co Introducción del nombre por el teclado Fco 
Escribir("Nombre: ") 
NOMBRE <­ Leer 
Co Visualización del resultado Fco 
NB_CAR <­ Longitud(NOMBRE) 
Escribir(NOMBRE, " contiene " , NB_CAR, " carácter(es)") 
Fin 
2. Ejercicio n.°5: Determinación de iniciales
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjkKhnFmN61IgLAA==-enidentnumber
Enunciado 
Escribir  un  algoritmo  que  permita  la  extracción  de  las  iniciales  de  una  persona,  cuyo  apellido  y  nombre  se 
introducirán por el teclado (ejemplo: AS para Ángel Sánchez) 
Complemento: se utilizará una función Sub_cadena(CADENA, POSICION_INICIO, [POSICION_FIN]) predefinida. 
En muchos lenguajes de programación, este tercer argumento (aquí POSICION_FIN) es, en realidad, un número 
de caracteres que se ha de extraer a partir de la posición POSICION_INICIO). 
En  lo sucesivo, encontrará ejemplos concretos de  la aplicación de  la  función Sub_cadena, así como de  funciones 
adicionales (Izquierda, Derecha, Concatenar...). 
Corrección 
Un argumento de función que no es sistemáticamente necesario se indica por convención entre corchetes. 
En  caso de  la  función Sub_cadena,  si  el  tercer argumento no está,  la extracción se hará a partir del  carácter en 
posición POSICION_INICIO, hasta el final de la cadena de caracteres. 
Car NOMBRE, APELLIDO, INICIALES 
NOMBRE <­ "Ángel" 
Sub_cadena(NOMBRE, 1, 3) vale ”Áng" 
Izquierda(NOMBRE, 4) vale ”Ánge" 
Sub_cadena(NOMBRE, 3, 2) vale ”el" 
Sub_cadena(NOMBRE, 3) vale ”el" 
Sub_cadena(NOMBRE, Longitud(NOMBRE), Longitud(NOMBRE)) vale ”l" 
Sub_cadena(NOMBRE, Longitud(NOMBRE)) vale ”l" 
Sub_cadena(NOMBRE, Longitud(NOMBRE)­1, Longitud(NOMBRE)) vale ”el" 
Derecha(NOMBRE, 2) vale ”gel" 
Izquierda(APELLIDO, 1) & Izquierda(NOMBRE, 1) vale ”SA" 
APELLIDO <­ "Sánchez" 
INICIALES <­ Sub_cadena(APELLIDO, 1, 1) & Sub_cadena(NOMBRE, 1, 1) vale ”SA" 
INICIALES <­ Concatenar(Sub_cadena(NOMBRE, 1, 1), Sub_cadena(APELLIDO, 1, 1)) vale ”AS" 
El ampersand (&) sirve para concatenar dos elementos de tipo carácter. 
Inicio 
Co Declaraciones Fco 
Car APELLIDO, NOMBRE, INICIAL_APELLIDO, INICIAL_NOMBRE 
Co Introducción del apellido Fco 
Escribir("Apellido: ") 
APELLIDO <­ Leer 
Co Introducción del nombre Fco 
Escribir("Nombre: ") 
NOMBRE <­ Leer 
Co Determinación de las iniciales Fco 
INICIAL_APELLIDO <­ Sub_cadena(APELLIDO, 1, 1) 
INICIAL_NOMBRE <­ Sub_cadena(NOMBRE, 1, 1) 
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjkKhnFmN61IgLAA==-enidentnumber
E incluso: 
Co Visualización de las iniciales Fco 
Escribir(APELLIDO, " ", NOMBRE, " tiene como iniciales: ", INICIAL_APELLIDO, INICIAL_NOMBRE) 
Fin 
Inicio 
Co Declaraciones Fco 
Car APELLIDO, NOMBRE, INICIALES 
Co Introducción del apellido Fco 
Escribir("Apellido: ") 
APELLIDO <­ Leer 
Co Introducción del nombre Fco 
Escribir("Nombre: ") 
NOMBRE <­ Leer 
Co Visualización de las iniciales Fco 
INICIALES <­ Izquierda(APELLIDO, 1) & Izquierda(NOMBRE, 1) 
Escribir(APELLIDO, " ", NOMBRE, " tiene como iniciales: ", INICIALES) 
Fin 
- 3 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjkKhnFmN61IgLAA==-enidentnumber
En muchas situaciones, las acciones solo se realizan si se cumplen determinadas condiciones: 
Cada una de estas opciones está condicionada por una expresión booleana que, mientras sea verdadera, implica la 
ejecución del procesamiento asociado. 
La sintaxis de la algoritmia para programar los procesamientos condicionados es sencilla: 
Algunas observaciones sobre esta estructura tan intuitiva: 
El organigrama de flujo correspondiente a esta estructura es el siguiente: 
Procesamientos condicionados
l Una ecuación de segundo grado tiene 0, 1 o 2 soluciones reales, según sea el discriminante negativo, nulo o positivo. 
l Si una cantidad de artículos en stock baja de un determinado umbral, hay que hacer un pedido. 
l Si hace bueno, entonces vamos a la playa. En caso contrario hacemos algoritmia juntos. 
l Si no hace bueno, entonces hacemos algoritmia juntos. 
Si Condición 
Entonces 
T1 
[En caso contrario 
T2] 
Finsi 
l Condición es una expresión con resultado booleano (Verdadero o Falso). 
l T1 y T2 son los procesamientos. 
l Finsi significa el fin del si. 
l Existe una forma simplificada, sin alternativa (sin En caso contrario T2). 
l Comprobar la condición se hace en una hipótesis de condición verdadera. 
l Dibujar un trazo vertical (a la izquierda) entre Si y Finsi será un medio mnemotécnico para no olvidar el Finsi. 
l Piense en indentar los procesamientos T1 y T2. 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdju4DmG2N61IgLAA==-enidentnumber
En el ejemplo que se presenta a continuación, a una variable NBLU se le asigna un valor numérico introducido por el 
teclado y el algoritmo indica si se trata de un valor par o impar: 
Enunciado 
Calcular las raíces de un polinomio de segundo grado Ax2+Bx+C (con A<>0 aunque esta prueba no se hará aquí). 
Los valores A, B y C se introducirán por el teclado. 
Corrección 
Inicio 
Co Declaraciones Fco 
Ent NBLU 
Co Introducción por el teclado Fco 
Escribir("Número: ") 
NBLU <­ Leer 
Co Determinación de la parte Fco 
Si NBLU Mod2 = 0 
Entonces 
Escribir(NBLU, " es par") 
En caso contrario 
Escribir(NBLU, " es impar") 
Finsi 
Fin 
1. Ejercicio n.°6: Polinomio de segundo grado
Inicio 
Co Declaraciones Fco 
Real A, B, C, DELTA 
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdju4DmG2N61IgLAA==-enidentnumber
El  interés  de  este  ejercicio,  además  de  que  revise  un  poco  las matemáticas,  es mostrar  que  es  posible  anidar 
estructuras condicionales.La aplicación no es difícil, pero implica un mínimo de rigor, fundamentalmente no olvidar 
cerrar  sus  estructuras  con  un Finsi  y  también  indentar  (añadir  un nivel  de desplazamiento)  los  procesamientos, 
incluidos después de los Entonces y En caso contrario. 
Enunciado 
Imprimir en letras el mes correspondiente a un número dado por el teclado (comprendido entre 1 y 12). El control de 
la entrada de datos no se prevé. 
Corrección 
Co Introducción de los argumentos Fco 
Escribir("A: ") 
A <­ Leer 
Escribir("B: ") 
B <­ Leer 
Escribir("C: ") 
C <­ Leer 
Co Cálculo del discriminante Fco 
DELTA <­ (B * B) ­ (4 * A * C) 
Co Determinación del número de raíces Fco 
Si DELTA < 0 
Entonces 
Escribir("Sin soluciones") 
En caso contrario 
Si DELTA = 0 
Entonces 
Escribir("Solución única = ", ­B / (2 * A)) 
En caso contrario 
Escribir("Dos raíces: ", (­B+DELTA**0.5)/(2*A), " y ", (­B­DELTA**0.5)/(2*A)) 
Finsi 
Finsi 
Fin 
2. Ejercicio n.°7: Etiqueta del mes sin cifrar
Inicio 
Co Declaraciones Fco 
Ent MESES 
Co Introducción del número del mes Fco 
Escribir("Número del mes (1 a 12): ") 
MESES <­ Leer 
Co Visualización del resultado Fco 
Si MESES=1 
Entonces 
Escribir("Enero") 
En caso contrario 
- 3 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdju4DmG2N61IgLAA==-enidentnumber
Evidentemente, la solución propuesta es opuesta a su nivel de elaboración, pero desde el punto de vista técnico es 
óptima. Por ejemplo, la entrada de datos de la cifra 2 provocará la visualización correcta ("Febrero"). 
También habría sido posible "superponer" 12 pruebas sucesivas, como se  indica a continuación. Esta solución es 
poco satisfactoria porque, independientemente del valor introducido por el teclado, se ejecutan las 12 pruebas. 
La  estructura  de  control  Siguiente  ...  Finsiguiente  es  una  solución  elegante  para  gestionar  este  tipo  de 
problemática. La sintaxis es la siguiente:  
Si MESES=2 
Entonces 
Escribir("Febrero") 
En caso contrario 
… 
Finsi 
Fin 
Inicio 
Co Declaraciones Fco 
Ent MESES 
Co Introducción del número del mes Fco 
Escribir("Número del mes (1 a 12): ") 
MESES <­ Leer 
Co Visualización del resultado Fco 
Si MESES=1 
Entonces 
Escribir("Enero") 
Finsi 
Si MESES=2 
Entonces 
Escribir("Febrero") 
Finsi 
… 
Si MESES=12 
Entonces 
Escribir("Diciembre") 
Finsi 
Fin 
Siguiente VARIABLE/EXPRESION 
Valor_1: Accion_1 
… 
Valor_n: Accion_n 
[Otrocaso: Acción por defecto] 
Finsiguiente 
- 4 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdju4DmG2N61IgLAA==-enidentnumber
En el caso donde la variable VARIABLE (o la expresión EXPRESION) sea igual a Valor_1, el procesamiento Accion_1 
se disparará (igual para Valor_2 con, en este caso, la ejecución de Accion_2 y así sucesivamente). 
En  este  ejercicio  se muestra  un mensaje  de  error  dentro  de Otrocaso.  En  contrapartida,  será  necesario  que  el 
usuario  del  algoritmo  (o  del  programa)  lo  ejecute  de  nuevo  porque,  de  momento,  no  se  ha  previsto  ningún 
dispositivo para que se haga una nueva entrada de datos. 
En determinados lenguajes de programación, la implementación de la estructura Siguiente ... Finsiguiente es un 
poco  particular.  Después  de  detectar  la  condición  verdadera,  todas  las  acciones  asociadas  a  las  condiciones 
siguientes se ejecutan, ya sean estas condiciones verdaderas o falsas. En estos lenguajes, hay que prever la adición de 
una palabra clave particular que provoque la salida hacia Finsiguiente. 
La estructura Siguiente ... Finsiguiente (o su equivalente) no está implementada en todos los lenguajes de 
programación. 
3. Ejercicio n.°8: Etiqueta del mes sin cifrar (Siguiente ... Finsiguiente)
Inicio 
Co Declaraciones Fco 
Ent MESES 
Co Introducción del número del mes Fco 
Escribir("Número del mes (1 a 12): ") 
MESES <­ Leer 
Co Visualización del resultado Fco 
Siguiente MESES 
1: Escribir("Enero") 
2: Escribir("Febrero") 
... 
12: Escribir("Diciembre") 
Otrocaso: Escribir("Error de entrada de datos del n.° de mes") 
Finsiguiente 
Fin 
- 5 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5Mjdju4DmG2N61IgLAA==-enidentnumber
En la mayor parte de los problemas, determinadas acciones se deben ejecutar varias veces. 
Cuando el número de repeticiones es grande, resulta pesado rescribir n veces la misma secuencia de código. Esta 
rescritura es imposible en el caso en que el número de repeticiones (iteraciones) es desconocido a priori (trazar un 
conjunto de datos hasta que no haya más). 
Es necesario poder expresar la repetición de una acción que, una vez inicializada, continuará hasta que se produzca 
un determinado evento. Este evento de parada se especificará en el algoritmo con una condición. 
Vamos a estudiar cuatro tipos de iteraciones (bucles), que tendrán su equivalente en los principales lenguajes de 
programación. 
Bucle "Mientras" con una comprobación inicial de iteración: 
Bucle "Hasta que" con una comprobación inicial de iteración: 
Bucle "Mientras" con una comprobación final de iteración: 
Bucle "Hasta que" con una comprobación final de iteración: 
Estos cuatro bucles tienen un determinado número de puntos en común: 
Estructuras iterativas
1. Concepto de iteraciones
2. Estructuras iterativas básicas
Mientras Condición Hacer 
Acciones 
Volverhacer 
Hastaque Condición Hacer 
Acciones 
Volverhacer 
Hacer 
Acciones 
Mientras Condición Volverhacer 
Hacer 
Acciones 
Hastaque Condición Volverhacer 
l Hastaque es una abreviación para Hasta que 
l Mientras es una abreviación para Mientras 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
Con las dos últimas iteraciones para las que se hace la comprobación del final de bucle, las Acciones se realizan al 
menos una vez. 
Los bucles "Mientras" y "Hasta que" tienen un funcionamiento muy parecido, en la medida en que es suficiente con 
invertir  la  condición  para  pasar  de  una  sintaxis  a  otra.  Por  ejemplo,  CONTADOR  >  10  en  el  caso  de  un  bucle 
"Mientras" se convertirá en CONTADOR <= 10 en caso de un bucle "Hasta que". 
El siguiente diagrama de flujo corresponde a las estructuras "Mientras" y "Hasta que" (con una comprobación inicial 
de iteración): 
En caso de un bucle Hastaque: 
En caso de un bucle Mientras: 
Enunciado 
Calcular y mostrar la media de 10 números que se introducirán por el teclado 
l Condición, es una expresión booleana de resultado Verdadero o Falso 
l Acciones representa una secuencia de acciones 
l la flecha que une "Condición" a "Acciones" corresponde al estado Falso de la Condición, 
l la flechaque une "Condición" a "Acciones siguientes" corresponde al estado Verdadero de la Condición. 
l la flecha que une "Condición" a "Acciones" corresponde al estado Verdadero de la Condición, 
l la flecha que une "Condición" a "Acciones siguientes" corresponde al estado Falso de la Condición. 
3. Ejercicio n.°9: Media de 10 números
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
Corrección 
Enunciado 
Calcular y mostrar la media de n números reales que se introducirán por el teclado (lista terminada con un cero) 
Aprovechamos este enunciado un poco más complejo para mostrar que una misma problemática se puede resolver 
utilizando múltiples algoritmos. 
Corrección n.°1 
Inicio 
Co Cálculo de la media de 10 números que se introducirán por el teclado Fco 
Co Declaraciones Fco 
Real NBLU, CPT, SUMA, MEDIA 
Co Inicializaciones Fco 
CPT <­ 1 
SUMA <­ 0 
Co Iteración Fco 
Mientras CPT < 11 Hacer 
Escribir("Número n.° ", CPT, ": ") 
NBLU <­ Leer 
SUMA <­ SUMA + NBLU 
CPT <­ CPT + 1 
Volverhacer 
Co Visualización del resultado Fco 
MEDIA <­ SUMA / 10 
Escribir("Media: ", MEDIA) 
Fin 
4. Ejercicio n.°10: Media de una serie de n números
Inicio 
Co Declaraciones Fco 
Real NBLU, CPT, SUMA, MEDIA 
Co Inicializaciones Fco 
CPT <­ 0 
SUMA <­ 0 
NBLU <­ 1 Co Para permitir pasar por la iteración, al menos una vez Fco 
Co Bucle de lectura Fco 
Hastaque NBLU = 0 Hacer 
Escribir("Número (0 para terminar): ") 
NBLU <­ Leer 
CPT <­ CPT +1 
SUMA <­ SUMA + NBLU 
Volverhacer 
Co Visualización del resultado Fco 
MEDIA <­ SUMA / (CPT­1) 
Escribir("Media de los ", CPT ­ 1, "números = ", MEDIA) 
- 3 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
En esta corrección,  la entrada del número cero no provoca  la salida  inmediata del bucle. Por  tanto, es necesario 
reducir  el  valor  de  la  variable CPT  (contador de  la  cantidad de números que  se  introducen por  el  teclado)  en el 
cálculo de la media. También es necesario pensar en asignar un valor inicial a la variable NBLU (aquí 1) antes de la 
iteración,  para  que  se  pueda  iniciar.  Para  terminar,  con  esta  versión  de  corrección,  se  produciría  un  problema 
(división por cero) si el primer número introducido por el teclado es un 0. 
Corrección n.°2 
En esta corrección, se ha utilizado un bucle Mientras  con una comprobación  final de bucle. Aquí no es necesario 
asignar  un  valor  ficticio  a  la  variable  NBLU  antes  del  bucle.  Además,  una  estructura  condicional  después  de  la 
iteración permite evitar una posible división por 0. 
Corrección n.°3 
Fin 
Inicio 
Co Declaraciones Fco 
Real NBLU, CPT, SUMA, MEDIA 
Co Inicializaciones Fco 
CPT <­ 0 
SUMA <­ 0 
Co Bucle de lectura Fco 
Hacer 
Escribir("Número (0 para terminar): ") 
NBLU <­ Leer 
CPT <­ CPT +1 
SUMA <­ SUMA + NBLU 
Mientras NBLU <> 0 Volverhacer 
Co Visualización del resultado Fco 
Si CPT­1=0 
Entonces 
Escribir("No se ha introducido ninguna cifra ") 
En caso contrario 
MEDIA <­ SUMA / (CPT­1) 
Escribir("Media de los ", CPT ­ 1, "números = ", MEDIA) 
Finsi 
Fin 
Inicio 
Co Declaraciones Fco 
Real NBLU, CPT, SUMA, MEDIA 
Co Inicializaciones Fco 
CPT <­ 0 
SUMA <­ 0 
Co primera entrada de datos Fco 
Escribir("Número (0 para terminar): ") 
NBLU <­ Leer 
Co Bucle de lectura Fco 
- 4 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
En esta corrección, se ha mantenido un bucle Mientras con una comprobación inicial de este. La particularidad es 
que  se hace una primera entrada de datos por  el  teclado  (variable NBLU) antes de  la  iteración,  lo que obliga a 
continuación a prever la entrada de los números siguientes de la secuencia, al final de la iteración. El interés de esta 
solución es que el cero final no se tiene en cuenta en la variable CPT. 
Enunciado  
Calcular el MCD de dos números enteros leídos por el teclado (método de la división) 
El desarrollo del cálculo es la siguiente: 
Aprovechamos  este  enunciado  para  destacar  que  los  bucles  Mientras  y  Hastaque  se  pueden  utilizar 
indistintamente en la resolución de los problemas iterativos; basta con invertir lógicamente la condición verificada. 
Es necesario observar que el bucle Mientras es sistemáticamente implementado en los lenguajes de programación 
(en general llamado While o Do While). El bucle Hastaque (que se traduciría por un Until o Do Until) no es, 
por el contrario, sistemáticamente implementado. 
Corrección n.°1 
Mientras NBLU <> 0 Hacer 
CPT <­ CPT +1 
SUMA <­ SUMA + NBLU 
Escribir("Número (0 para terminar): ") 
NBLU <­ Leer 
Volverhacer 
Co Visualización del resultado Fco 
Si CPT=0 
Entonces 
Escribir("No se ha introducido ninguna cifra") 
En caso contrario 
MEDIA <­ SUMA / CPT 
Escribir("Media de los ", CPT, "números = ", MEDIA) 
Finsi 
Fin 
5. Ejercicio n.°11: El común divisor más grande, por el método de las divisiones 
sucesivas
l Introducir los números A y B por el teclado 
l Calcular el RESTO de la división entera de A por B 
l Cuando este RESTO es nulo, B es el MCD buscado 
l Sustituir A por B 
l Sustituir B por este RESTO 
l Empezar de nuevo a nivel del cálculo del RESTO 
Inicio 
Co Declaraciones Fco 
Ent A, B, RESTO 
- 5 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
Corrección n.°2 
Las estructuras  iterativas Hastaque Hacer … Volverhacer  y Mientras Hacer … Volverhacer se pueden sustituir 
por la estructura iterativa Para Hacer … Volverhacer cuando el número de iteraciones es conocido antes del inicio 
de la estructura y solo en este caso. 
Esta iteración, un poco confusa al inicio, tiene la particularidad de presentar un determinado automatismo respecto 
a la gestión del contador de iteraciones realizadas. 
Su sintaxis general es: 
Co Introducción de los dos números Fco 
Escribir("Primer número: ") 
A <­ Leer 
Escribir("Segundo número: ") 
B <­ Leer 
Co Bucle de procesamiento Fco 
RESTO <­ A Mod B 
Mientras RESTO <> 0 Hacer 
A <­ B 
B <­ RESTO 
RESTO <­ A Mod B 
Volverhacer 
Co Fin de procesamiento Fco 
Escribir("MCD = ", B) 
Fin 
Inicio 
Co Declaraciones Fco 
Ent A, B, RESTO 
Co Introducción de los dos números Fco 
Escribir("Primer número: ") 
A <­ Leer 
Escribir("Segundo número: ") 
B <­ Leer 
Co Bucle de procesamiento Fco 
RESTO <­ A Mod B 
Hastaque RESTO = 0 Hacer 
A <­ B 
B <­ RESTO 
RESTO <­ A Mod B 
Volverhacer 
Co Fin de procesamiento Fco 
Escribir("MCD = ", B) 
Fin 
6. Estructura iterativa Para
Para VARIABLE De EXPRESION_INICIO A EXPRESION_FIN [No EXPRESION_NO]Hacer 
- 6 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
Veamos sus particularidades: 
Enunciado 
Calcular la media de 10 números que se introducirán por el teclado, con un bucle Para 
Corrección 
Acciones 
Volverhacer 
l VARIABLE es una variable entera, que se debe declarar al inicio del algoritmo.  
l EXPRESION_INICIO es una constante entera (por ejemplo, 1) o una variable entera, que se debe declarar al inicio del 
algoritmo e inicializar antes de la estructura iterativa. 
l EXPRESION_FIN es una constante entera (por ejemplo, 10) o una variable entera, que se debe declarar al  inicio del 
algoritmo e inicializar antes de la estructura iterativa. 
l EXPRESION_NO es una  constante entera  (por ejemplo, 2) o una variable entera, que  se debe declarar al  inicio del 
algoritmo e inicializar antes de la estructura iterativa. Lo más habitual es que No EXPRESION_NO no se prevea en este 
tipo de iteración. 
l EXPRESION_NO  puede  ser  negativo.  En  este  caso,  EXPRESION_INICIO  debe  ser  >  (o  eventualmente  =)  a 
EXPRESION_FIN. 
l La estructura Para gestiona el incremento del contador del bucle (VARIABLE). Por tanto, no es conveniente intervenir 
sobre este contador en las Acciones, aunque no está prohibido. 
l En informática, un argumento opcional se representa como sigue: [argumento]. Cuando el argumento es obligatorio, 
los [] no se ponen. 
7. Ejercicio n.°12: Cálculo de la media de 10 números
Inicio 
Co Cálculo de la media de 10 números que se introducirán por el teclado Fco 
Co Declaraciones Fco 
Ent CPT 
Real NBLU, SUMA, MEDIA 
Co Inicializaciones Fco 
SUMA <­ 0 
Co Iteración Fco 
Para CPT De 1 A 10 Hacer 
Escribir("Número n° ", CPT, ": ") 
NBLU <­ Leer 
SUMA <­ SUMA + NBLU 
Co NB: sobre todo, no hay que modificar el valor de la variable CPT en el bucle Fco 
Volverhacer 
Co Visualización del resultado Fco 
MEDIA <­ SUMA / 10 
Escribir("Media: ", MEDIA) 
Co NB: Es necesario evitar dividir aquí la SUMA por CPT Fco 
Co en la medida en que en determinados lenguajes Fco 
Co CPT valdrá 11 en salida Fco 
- 7 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
Como se indica en los comentarios en el algoritmo anterior, es mejor no utilizar directamente el valor de la variable 
CPT  (que ha  servido para  contar  los números que  se  introducen por  el  teclado) porque,  según  las  variantes de 
implementación de los lenguajes de programación, CPT podría valer 10 u 11. 
Enunciado 
Contar el número de vocales de una palabra introducida por el teclado 
Recordatorio:  se utilizará una  función Longitud(CADENA) para determinar el número de  caracteres de  la palabra 
introducida. La función Sub_cadena(CADENA, POSICION_INICIO, [POSICION_FIN]) también será necesaria. 
Corrección 
Por  la  primera  vez,  vemos  una  estructura  condicional  (Siguiente  ...  Finsiguiente)  integrada  en  una  estructura 
iterativa (Para). Evidentemente, esta estructura condicional habría podido estar basada en un Si ... Finsi. 
Fin 
8. Ejercicio n.°13: Deducir el número de vocales de una palabra
Inicio 
Co Declaraciones Fco 
Car PALABRA 
Ent NB_VOCALES, CONTADOR 
Co Introducción de la palabra por el teclado Fco 
Escribir("Palabra: ") 
PALABRA <­ Leer 
Co Poner en mayúsculas la palabra Fco 
PALABRA <­ Mayúsculas(PALABRA) 
Co Inicialización de las variables Fco 
NB_VOCALES <­ 0 
Co Determinación del número de vocales Fco 
Para CONTADOR De 1 ALongitud(PALABRA) Hacer 
Co Analizar la letra actual Fco 
Siguiente Sub_cadena (PALABRA, CONTADOR, CONTADOR) 
"A": NB_VOCALES <­ NB_VOCALES + 1 
"E": NB_VOCALES <­ NB_VOCALES + 1 
"I": NB_VOCALES <­ NB_VOCALES + 1 
"O": NB_VOCALES <­ NB_VOCALES + 1 
"U": NB_VOCALES <­ NB_VOCALES + 1 
Finsiguiente 
Volverhacer 
Co Visualización del resultado Fco 
Escribir(PALABRA, "contiene: ", NB_VOCALES, " vocal(es)") 
Fin 
En función de la problemática que se ha de resolver, habrá comprobado que es necesario combinar lo mejor posible 
las  estructuras  condicionales  (Si  ...  Finsi  o Siguiente  ...  Finsiguiente)  con  las  diferentes  variantes  de  bucles 
(Mientras, Hastaque y Para) anidándolas, utilizándolas secuencialmente, etc. 
- 8 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
- 9 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjCdYpIWN61IgLAA==-enidentnumber
Una  tabla  agrupa  varios  valores  del mismo  tipo. Globalmente,  podemos  nombrar  todos  los  valores  o  designar  de 
manera precisa uno de ellos con una operación de scripting. 
Por ejemplo, consideremos ALFABETO como el conjunto de letras del alfabeto. En este caso: 
En un algoritmo, como sucede con las variables (simples) vistas hasta ahora, las tablas se deben declarar antes de 
poder utilizarlas. La sintaxis de declaración es: 
Observe que a nivel de esta declaración: 
La tabla ALFABETO mencionada anteriormente se podría declarar como sigue: 
Veamos ahora  cómo utilizar este  tipo de  tabla  (asignación de valores a  las diferentes  "celdas" y  lectura de estos 
valores a continuación). La sintaxis es intuitiva: 
Observe a nivel del uso de las tablas: 
Tabla de dimensión única
l ALFABETO designa una tabla que podrá servir para almacenar el conjunto de letras del alfabeto. 
l ALFABETO(14) podría representar la letra "N". 
l El entero 14 se llama índice. 
Tipo IDENTIFICADOR(INF: SUP) 
l IDENTIFICADOR es el nombre global de la tabla (nombre libremente elegido por el programador, en mayúsculas si 
es posible). 
l Tipo indica el tipo de los elementos de la tabla, y todos los elementos de la tabla tienen el mismo tipo (Entero, 
Real, Bool, Carácter). 
l INF y SUP son, respectivamente, los extremos inferior y superior del  intervalo de variación del índice de la tabla. Una 
tabla como esta tiene N elementos, donde N = SUP ­ INF + 1. 
l INF  y  SUP  son  constantes  definidas  con  antelación  (sin  dimensionamiento  "dinámico",  aunque  determinados 
lenguajes de programación lo permiten). 
l En determinados lenguajes de programación, el valor INF no se puede expresar. En este caso, el valor INF se considera 
implícitamente como 1 (algunas veces también 0). Cuando es posible, es mejor evitar el uso del índice con valor cero. 
Car ALFABETO(1:26) 
Car ALFABETO(0:25) ­­­> es un poco particular pero también muy usual. 
IDENTIFICADOR(ÍNDICE) 
l IDENTIFICADOR es el nombre de la tabla. 
l ÍNDICE es una expresión entera, cuyo valor debe pertenecer al intervalo (INF: SUP). 
l La notación IDENTIFICADOR(ÍNDICE) designa a un elemento de la tabla, identificado por su índice en la tabla. 
1. Ejercicion.°14: Contar los números pares en una tabla
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjcFZXKmN61IgLAA==-enidentnumber
Enunciado 
Determinación de la cantidad de números pares en una tabla (entrada de datos inicial a través del teclado). 
Corrección 
En el procesamiento de las tablas, es preferible el bucle Para porque el conjunto de las celdas se utiliza a menudo o 
se analiza. 
Inicio 
Co Determinación de la cantidad de números pares en una tabla Fco 
Co Declaraciones Fco 
Ent TB(1: 10) 
Ent NB_PARES 
Ent IND  
Co Inicializaciones Fco 
NB_PARES <­ 0 
Co Carga de la tabla Fco 
Para IND De 1 A 10 Hacer 
Escribir("TB(", IND, "): ") 
TB(IND) <­ Leer 
Volverhacer 
Co Determinación de la cantidad de números pares Fco 
Para IND De 1 A 10 Hacer 
Si TB(IND) Mod 2 = 0 Entonces 
NB_PARES <­ NB_PARES + 1 
Finsi 
Volverhacer 
Escribir("Cantidad de números pares de la tabla = ", NB_PARES) 
Fin 
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjcFZXKmN61IgLAA==-enidentnumber
Cuando los elementos de una tabla son ellos mismos tablas, se habla de tabla de varias dimensiones. 
A  nivel  de  la  declaración  de  este  tipo  de  tabla,  hay  que  declarar  los  límites  del  índice  para  cada  una  de  las 
dimensiones, lo que no es ya una sorpresa: 
Tipo IDENTIFICADOR(INF1: SUP1, ..., INFi: SUPi, ..., INFn: SUPn) 
Para acceder a las diferentes celdas de una tabla de varias dimensiones, hay que indicar un valor de índice para cada 
una de ellas. A modo de ejemplo, para una tabla de dos dimensiones (tabla de líneas divididas en columnas como una 
matriz 2D en Microsoft Excel), el primer índice normalmente designa el número de la línea y el segundo el número de 
la columna de la celda a la que se hace referencia. Por tanto, la sintaxis es: 
IDENTIFICADOR(ÍNDICE1, ..., ÍNDICEi, ..., ÍNDICEn) 
Enunciado 
Sea la tabla TB de dos dimensiones con cuatro líneas y cinco columnas. Realizar los siguientes procesamientos: 
Corrección 
Tabla con dimensiones múltiples
1. Ejercicio n.°15: Minihoja de cálculo
l introducir  por  el  teclado  valores  en  las  tres  primeras  líneas  y  las  cuatro primeras  columnas  (se  conserva  la  última 
línea y la última columna libres, para los totalizadores de líneas y columnas), 
l añadir las columnas de última línea y las líneas en última columna. 
Inicio 
Co Declaraciones de las variables Fco 
Ent TB(1: 4, 1: 5) 
Ent LÍNEA, COLUMNA 
Co Inicialización de la tabla TB con ceros Fco 
Para LÍNEA De 1 A 4 Hacer 
Para COLUMNA De 1 A 5 Hacer 
TB(LÍNEA, COLUMNA) <­ 0 
Volverhacer 
Volverhacer 
Co Inicialización de la tabla TB con los valores leídos Fco 
Para LÍNEA De 1 A 3 Hacer 
Para COLUMNA De 1 A 4 Hacer 
Escribir("TB(", LÍNEA, ",", COLUMNA, ")=") 
TB(LÍNEA, COLUMNA) <­ Leer 
Volverhacer 
Volverhacer 
Co Añadir en columna 5 y línea 4 Fco 
Para LÍNEA De 1 A 3 Hacer 
Para COLUMNA De 1 A 4 Hacer 
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIZXlNGN61IgLAA==-enidentnumber
TB(LÍNEA, 5) <­ TB(LÍNEA, 5) + TB(LÍNEA, COLUMNA)  
TB(4, COLUMNA) <­ TB(4, COLUMNA) + TB(LÍNEA, COLUMNA) 
Volverhacer 
Volverhacer 
Fin 
La inicialización de las celdas de la tabla a cero al inicio del procesamiento puede ser útil en determinados lenguajes 
de programación porque  los valores  iniciales, de  la  línea 4 y de  la  columna 5 en nuestro ejemplo, pueden ser no 
nulos. 
- 2 - © Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjIZXlNGN61IgLAA==-enidentnumber
Estos nuevos mecanismos permiten al programador tratar un problema sin preocuparse, inicialmente, de las reglas 
detalladas de los subproblemas. Se trata de herramientas muy similares a las funciones matemáticas. 
En  programación,  un  procedimiento  o  una  función,  representa  un  algoritmo  que  opera  con  argumentos  o 
argumentos formales (valores ficticios de alguna manera). La ejecución de este algoritmo se genera con la llamada 
del procedimiento o de la función. Los datos de este algoritmo llamado son los argumentos efectivos (que provienen 
del algoritmo que llama). 
El  interés  metodológico  de  estos  mecanismos  en  una  primera  etapa  consiste  principalmente  en  convertir  los 
subproblemas  en  procedimientos  (o  en  funciones)  y  tratar  el  problema  general  (o  principal)  como  si  estos 
subproblemas estuvieran solucionados. En una segunda etapa, se describen estos procedimientos o funciones. Otro 
interés  consiste  en  el  hecho  de  que,  si  el  mismo  subproblema  se  debe  resolver  varias  veces  con  argumentos 
efectivos diferentes, el uso de un procedimiento o función permite una mejor legibilidad del algoritmo. 
Comencemos el estudio de este mecanismo con la sintaxis de la declaración: 
En esta declaración: 
La llamada de un procedimiento desde otro o desde el algoritmo principal se hace respetando el siguiente esquema: 
con: 
Enunciado 
Procedimientos, funciones y paso de argumentos
1. Los objetivos
2. Los procedimientos
Procedimiento NOMBRE_PROCEDIMIENTO([Tipo1 IDFO1, ..., Tipoi IDFOi])  
Cuerpo del procedimiento 
Fin_procedimiento 
l NOMBRE_PROCEDIMIENTO es un nombre elegido libremente por el programador. 
l IDFOi es el nombre del enésimo argumento formal del procedimiento. 
l Tipoi es el tipo del enésimo argumento formal del procedimiento. 
l El procedimiento no devuelve valores a menos que intervenga sobre las variables (accesibilidad) globales. 
l Procedimiento y Fin_procedimiento son palabras reservadas. 
NOMBRE_PROCEDIMIENTO(IDEF1, IDEFi, ..., IDEFn) 
l NOMBRE_PROCEDIMIENTO es un nombre elegido libremente por el programador, 
l IDEFi es el nombre del enésimo argumento efectivo. 
3. Ejercicio n.°16: Llamada de un procedimiento con paso de argumentos
- 1 -© Editions ENI – Tous droits réservés – Copie personnelle de Jack Jack
enidentnumber-AAEAAAD/////AQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwSmFjayBKYWNrIC0gMjkzZWU4YTMtMGVmNS00N2M2LWFkNjEtNjBjMGRiZmM5MjdjQRO6OmN61IgLAA==-enidentnumber
Llamar a un procedimiento que muestra el doble de los valores efectivos pasados como argumento (los dos valores 
pasados como argumento se introducen por el teclado). 
Corrección 
En la corrección que se presenta, en realidad se introducirán dos duplas de números por el teclado (A y B y después 
C y D), para mostrar la reutilización del procedimiento DOBLE. 
Las variables A y B (después C y D) son cualificadas con argumentos efectivos. Durante la llamada del procedimiento 
DOBLE, al

Continuar navegando

Contenido elegido para ti

261 pag.
Fundamentos_de_programacion_C_Java

Escola Santa Afra

User badge image

Jose Francisco Freire

309 pag.
22 pag.
450 pag.
Introducción-a-la-Lógica-de-Programación

Escuela Universidad Nacional

User badge image

Victor Hernández

Otros materiales