Está en la página 1de 256

DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”


Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

MATERIAL DEL CURSO DE NIVELACION PARA LAS CARRERAS

“TECNICATURA SUPERIOR EN DESARROLLO DE SOFTWARE”


Y
“TECNICATURA SUPERIOR EN COMPUTACION Y REDES”

CONCEPTOS Y TECNICAS DE
RESOLUCIÓN DE PROBLEMAS
-------
OTROS CONCEPTOS
ADICIONALES

NSTITUTO DE EDUCACION SUPERIOR N° 9-012


“SAN RAFAEL EN INFORMATICA”

-1-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

Para Romper el Hielo….. CONCEPTOS ….

PENSAMIENTO LATERAL

Por pensamiento lateral se conoce una forma de pensamiento que consiste en solucionar problemas
de una forma creativa. El término fue acuñado por Edward de Bono en el año 1967, en el libro New
Think: the Use of Lateral Thinking. A partir de este material, se han diseñado diversos acertijos que,
presentados como un problema tradicional, ponen a prueba los principios lógicos del que ha de
resolverlos. Se trata de, como se dice en inglés, de “pensar fuera de la caja”.

A continuación presentamos algunos de los acertijos clásicos relacionados con esta manera de pensar.
(Verlos en el Anexo 1). No te preocupes: aunque la respuesta parezca evidente una vez conocida, no
resulta tan sencillo encontrarla si no hemos sido capaces de encontrar la clave para responderla.

MAGNITUDES Y MEDICIONES

Conceptos Fundamentales:

Conceptos Abstractos: Son Conceptos Ideales, que surgen de la mente humana para dar explicación o
solución a situaciones o fenómenos de la cotidianidad. No tienen una representación tangible,
representan un objeto o cualidad particular. Son ejemplo de esto los conceptos de Unidad, Números,
Medida, Magnitud, etc. Hemos resaltado “unidad”, porque es un concepto que no ha sido definido.

 Unidad. Una unidad de medida es una cantidad de una determinada magnitud física, definida y
adoptada por convención o por ley. Cualquier valor de una cantidad física puede expresarse
como un múltiplo de la unidad de medida.

 Número. Un número es un concepto matemático que expresa cantidad. También


consideramos que un número es el signo o conjunto de signos con que se representa este
concepto. Los números se clasifican en cinco tipos principales: números naturales
«N», números enteros «Z», números racionales «Q», números reales «R» (incluyen a los
irracionales) y números complejos «C»

 Tiempo. Aún no se ha podido definir, pero entendemos de forma intuitiva que transcurre de
forma indetenible, mientras ocurren y sucede todo a nuestro alrededor. Para dar inicio al
estudio de Física, que es el estudio de los fenómenos naturales relacionados con movimiento y
energía en sus distintas formas, excluyendo aquellos que modifican la estructura molecular de
los cuerpos, debemos comenzar presentando conceptos fundamentales que dan soporte a
todo lo que trataremos a continuación.

 Medida. Es la representación cuantitativa de la comparación de una propiedad con un patrón


de referencia, mediante un número y unidad. Para visualizar esta idea, analicemos la siguiente
situación:

Ejemplo: Si queremos establecer la medida de un listón tomaremos por ejemplo un objeto


como unidad (por ejemplo bolígrafo) y lo compararemos para observar cuántas veces está
contenido el bolígrafo en el listón.

-2-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

 Magnitudes. Son todas aquellas propiedades que pueden ser medidas y expresar su resultado
mediante un número y una unidad. En física las Magnitudes Fundamentales son las que no
dependen de otras para establecer su medida. Por ejemplo: tiempo, longitud, masa, etc.

UNIDADES Y CONVERSIÓN DE UNIDADES

Sistema de unidades. El objetivo de un sistema de unidades es el de definir en términos de una unidad


estándar, la magnitud de una cantidad medida. El Comité Internacional de Pesas y Medidas ha
trabajado desde el año 1960 para proporcionar definiciones claras respecto a unidades estándar para
ayudar a los científicos para que comuniquen sus mediciones de manera más precisa. El sistema de
unidades de medición adoptado por tal comité se basa en el sistema métrico, pero a las unidades se
las denomina Unidades del Sistema Internacional (SI).

El SI es el sistema básico, aceptado en el mundo entero. Las unidades del SI que cuantifican los
parámetros de masa, longitud y tiempo son respectivamente, el kilogramo [kg], el metro [m] y el
segundo [s], a éstas se las llama unidades básicas o patrón. Si bien existen otras, que son las
denominadas unidades prácticas, que en ocasiones, son más usadas que las anteriores, como lo son el
gramo, el kilómetro y la hora, por nombrar algunas.

Hay unidades derivadas que surgen de hacer alguna operación matemática y dependen de otras
unidades. Por ejemplo la densidad de un objeto es la masa presente en una unidad de volumen. La
medida de la densidad depende de las unidades empleadas para medir la masa y el volumen. Es así
que la densidad puede expresarse en gramos por centímetro cúbico [g/cm3] o si es en el SI se
expresaría en kilogramos por metros cúbico [kg/m3].

Factor Prefijo Símbolo Factor Prefijo Símbolo


101 deca Da 10 -1 deci D
102 hecto H 10 -2 centi C
103 kilo K 10 -3 mili M
106 mega M 10 -6 micro µ
109 giga G 10 -9 nano N
1012 tera T 10 -12 pico P
1015 peta P 10 -15 femto F
1018 exa E 10 -18 atto A
1021 zetta Z 10 -21 zepto Z
1024 yotta Y 10 -24 yocto Y

MÚLTIPLOS BINARIOS

 Un poco de historia. Bit y Byte.

La confusión entre estos dos términos (BIT y BYTE) tiene su origen desde los comienzos de la
computación. La unidad básica en informática (y cuyo valor es binario) es el bit y, de éste, el byte (1
byte = 23 bits). Cuando comenzó a hablarse de números grandes de bytes, se hizo necesario hablar de
nuevas unidades.

Tras notar que un grupo de 210 bytes tenía un valor cercano a los 1000 bytes (210 = 1024), a nadie
pareció molestarle demasiado que fuera llamado «kilobyte», dada la aparente aproximación con el
valor que implica el prefijo «kilo» del SI. Con el aumento de capacidad computacional, comenzó a
-3-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

hablarse de «megas», «gigas», etcétera, haciendo la aparente aproximación cada vez más imprecisa
(como se puede ver en la última columna de la siguiente tabla, en la que además se muestran sus
valores).

 Tabla de prefijos binarios (comparación con los prefijos del SI)

Binario Decimal y diferencia con binario


Símbolo Prefijo Factor Factor Prefijo Bin ÷ Dec Error
Ki Kibi 210 103 Kilo 1.024 2.4%
20 6
Mi Mebi 2 10 Mega 1.049 4.9%
Gi Gibi 230 109 Giga 1.074 7.4%
Ti Tebi 240 1012 Tera 1.100 10.0%
50 15
Pi Pebi 2 10 Peta 1.126 12.6%
Ei Exbi 260 1018 Exa 1.153 15.3%
Zi Zebi 270 1021 Zetta 1.181 18.1%
80 24
Yi Yobi 2 10 Yotta 1.209 20.9%

Estos prefijos determinan múltiplos y submúltiplos para establecer mediciones más pequeñas o más
grandes.

En la tabla figura además el modo de expresión de Notación científica.

Dejamos estos links para reforzar los conceptos trabajados.

https://youtu.be/qjX4wKUoK7E

https://youtu.be/W4AwXQfn_o4

 Disposición de la IEC

Para terminar con esta confusión, la Comisión Electrotécnica Internacional (IEC, por sus siglas en
inglés) introdujo los prefijos Kibi, Mebi, Gibi, Tebi, Pebi, Exbi, Zebi y Yobi los cuales están formados con
las primeras dos letras de los prefijos del SI y el sufijo 'bi' (por binario).

-4-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

QUÉ TENER EN CUENTA AL RESOLVER UN PROBLEMA

Sugerimos tener en cuenta algunos componentes que caracterizan el proceso de resolver un


problema, estos son:

 El entendimiento del problema.


 El diseño del plan.
 El proceso de llevar a cabo el plan.
 El análisis retrospectivo del proceso empleado para resolver el problema.
 Verificar la plausibilidad de la solución o soluciones.

Algunos estudiantes tienen éxito con este método cuando resuelven problemas en el mismo contexto,
pero otros experimentan dificultades cuando el contexto del problema es diferente. Esto motivó a
investigar por qué estas ideas no daban resultado o no son consideradas como guía en el proceso
docente a la hora de impartir este contenido.

Al revisar algunos estudios realizados en ciencias cognoscitivas e inteligencia artificial se encontró que
en estas disciplinas se han producido programas que son capaces de resolver problemas en áreas
como ajedrez, lógica simbólica y cálculo integral con mucho éxito. Las ideas empleadas en los
programas incorporan procedimientos usados por expertos al resolver problemas. Para describir y
posteriormente codificar las actividades usadas por los expertos se emprende una observación
sistemática del proceso que ellos utilizan al resolver problemas.

Los resultados de este procedimiento mostraron un progreso en la forma en que los estudiantes
resuelven problemas. Sin embargo, este método no era suficiente. Por ejemplo, algunos estudiantes
sabían el procedimiento pero no reconocían cuando utilizarlos.

Por ejemplo:

El problema: “El hermano mayor de una familia con tres hermanos tiene 4 años más que el segundo y
este 3 más que el menor. Si entre todos tienen la edad del padre que tiene 40 años ¿qué edad tiene
cada hermano?”.

Para resolver estos problemas debemos elegir algún valor desconocido para llamarle “x”.

En este caso llamemos :

• x = edad del hermano menor.

A partir de ello, expresar los datos del problema y plantear una igualdad (ecuación) con ellos. Será:

• x + 3, edad del hermano mediano.

• x + 3 + 4 = x + 7, edad del hermano mayor.

• Ecuación: suma de las edades de los hermanos = 40 ;


x + x + 3 + x +7 = 40,

• Resolviendo la ecuación se obtiene x = 10, luego la solución del problema es:

-5-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

• Edades de los tres hermanos: 10, 13 y 17 años.

Se encontró que de 156 estudiantes, 66 decidieron usar procedimientos aritméticos, el cual es


correcto pero lleva mucho tiempo y empirismo. Solamente 20 estudiantes se dieron cuenta de que se
trataba de un problema que se podía modelar, es decir, expresar la solución del problema como una
ecuación lineal.

Hacer bien un ejercicio en lógica, matemática o ciencias exactas se basa más que en conocer la
materia; en concretar qué técnicas se usan, cuándo y cómo.

Hemos encontrado cinco dimensiones que influyen en el proceso de resolver problemas:

 Dominio del conocimiento: incluye definiciones, hechos y procedimientos usados en el


dominio matemático.

 Estrategia cognoscitiva: incluye métodos heurísticos tales como descomponer el problema en


simples casos, establecer metas relacionadas, invertir el problema y dibujar diagramas.

 Estrategia metacognocitiva: se relaciona con el monitoreo empleado para resolver problemas,


con el cambio de dirección como resultado de una evaluación permanente del proceso.

 Sistema de creencias: incluye las ideas que los estudiantes tienen acerca de la matemática, la
lógica y las ciencias y cómo resolver problemas.

 Actividades de aprendizaje: es donde los estudiantes son expuestos a estrategias que pueden
ayudarlos a leer argumentos matemáticos.

Los estudiantes deben reconocer los principios epistemológicos de esta disciplina para poder estar en
posición de éxito:

1. Encontrar la solución de un problema matemático, lógico o de ciencias, no es el fin u objetivo


del proceso, sino el punto inicial para encontrar otras soluciones, extensiones y
generalizaciones de ese problema.

2. Aprender resolución de problemas es un proceso activo el cual requiere discusiones de


conjeturas y pruebas. Este proceso puede guiar a los estudiantes al desarrollo de nuevas ideas
matemáticas.

3. Dominio del conocimiento: incluye definiciones, hechos y procedimientos usados en el


dominio matemático, lógico y de las ciencias.

En consideración con estos principios, es necesario formular un grupo de actividades de aprendizaje.


Sugerimos:

1. Resolver problemas nuevos en la clase con la finalidad de mostrar a los estudiantes las
decisiones tomadas durante el proceso de resolver problemas.

2. Propiciar el intercambio entre estudiantes a la hora de resolver problemas en clase. Esto es


con la finalidad de discutir la destreza y deficiencias mostradas por los estudiantes en el
proceso de resolver problemas.

-6-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

Ejercitación:

LENGUAJE COLOQUIAL Y SIMBÓLICO:

Establecer un nexo entre el lenguaje coloquial y el simbólico es fundamental para la resolución de


situaciones problema, asignarle una expresión adecuada a una ecuación es fundamental.

En cada uno de los siguientes problemas plantea la ecuación correspondiente y luego resuelve:

1) La suma de un número y el triple de su opuesto es igual al triple del opuesto de 6. ¿Cuál es el


número? (El opuesto de un número es el número al otro lado de 0 en la recta numérica y a la misma
distancia de 0.)

¿Cómo se expresaría la ecuación?

¿Qué debería conocer para hacerlo?

¿Será: x+ 3. (- X)=6 lo mismo que x-3x = 6?

2) La diferencia entre el triple de un número y 42 es –15. Averigua ese número.

3) Calcula tres números enteros, impares, consecutivos, cuya suma es –15.

4) Calcula tres números enteros, pares, consecutivos, cuya suma es 0.

5) La diferencia entre un número y el opuesto de 3 es –7. ¿Cuál es ese número?

6) Si al triple de un número se lo aumenta en 10 unidades se obtiene la mitad del opuesto de 52.


Calcula ese número.

7) Un número y su consecutivo suman – 15. ¿A qué números nos referimos?

8) El triple de un número es igual a él disminuido en 18. ¿Cuál es el número?

9) La suma de dos números consecutivos es –30. Calcúlalos.

10) La suma entre un número y el doble de su consecutivo es igual al opuesto de 10. ¿Qué número es?

11) Pienso un número, lo elevo al cuadrado, divido por tres y sumo dos. Obtengo 50 ¿Qué número
pensé?

12) Compré un libro y una carpeta. El libro cuesta $7 más que la carpeta. Gasté en total $25. ¿Cuánto
cuesta cada cosa?

13) Juan tiene 5 años más que Luis y entre los dos tienen 37 años. ¿Qué edad tiene cada uno?

14) Si al doble de un número se lo disminuye en el triple de 4 da como resultado la cuarta parte de 80.
¿Cuál es el Nº?

15) α = 2x+30º y β = x + 80º son dos ángulos opuestos por el vértice. ¿Cuánto miden?

-7-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

MAS CONCEPTOS ….

¿Qué es un Algoritmo?

Un algoritmo consiste en una lista finita


de operaciones organizadas de manera
lógica y ordenada que tienen el propósito
de buscar la solución a un problema en
matemática, informática y disciplinas
afines. Se trata de una serie de
instrucciones o reglas establecidas que,
por medio de una sucesión de pasos,
permiten arribar a un resultado o
solución.

Partes de un Algoritmo

Todo algoritmo debe obedecer a la


estructura y componentes básicos de un
sistema, es decir que posee: entrada,
proceso y salida.

ENTRADA: Corresponde al insumo, a los


datos necesarios que requiere el proceso
para ofrecer los resultados esperados.

PROCESO: Pasos necesarios para obtener


la solución del problema o la situación
planteada, convirtiendo los datos de
entrada en la información de salida.

SALIDA: Resultados arrojados por el


proceso como solución.

Características de los algoritmos

Asimismo, los algoritmos presentan una serie de características comunes.

 Precisos. Objetivos, sin ambigüedad, exactos.

 Ordenados. Presentan una secuencia clara y precisa para poder llegar a la solución.

 Finitos. Contienen un número determinado de pasos los cuales deben conllevar a la


finalización del proceso y producir un resultado en un tiempo finito

-8-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

 Concretos. Ofrecen una solución determinada para la situación o problema


planteados.

 Definidos. El mismo algoritmo debe dar el mismo resultado al recibir la misma


entrada. Si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo
resultado

Tipos de algoritmos

En razón de la tarea que se propone que cumplan, los algoritmos se clasifican en tipos.
Particularmente en las ciencias informáticas tenemos:

Ejemplo real de algoritmo informático

A continuación, vamos a ver un ejemplo de algoritmo informático que utilizamos este año
para resolver un enigma que planteamos en nuestras redes sociales para celebrar el Día del
Programador.

El reto o situación de partida que proponíamos era el siguiente: «Si Java es Ñfaf y Javascript
es Ñfafxhwnuy, resuelve a través de la rueda de cifrado la siguiente frase con tu solución
programada: KJPNE INF IJ PTX UWTLWFQFITWJX».

-9-
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

Situación de partida para el algoritmo.


Para conseguir descifrar el mensaje oculto, diseñamos un algoritmo informático, un conjunto
de instrucciones o pasos para resolver el enigma:

function decoded(encodedTxt) {
let alphabet = "abcdefghijklmnñopqrstuvwxyz".split("");
let decodedTxt = "";
encodedTxt.toLowerCase().split("").forEach(item => {
if (item === " ") {
decodedTxt += item;
}
else if (alphabet.indexOf(item) != -1) {
if (alphabet.indexOf(item) >= 5) {
decodedTxt += alphabet[(alphabet.indexOf(item) - 5)];
}
else if (alphabet.indexOf(item) <= 4) {
decodedTxt += alphabet[alphabet.length + alphabet.indexOf(item) - 5];
}
}
});
console.log(decodedTxt.toUpperCase());
}
const txtEncrypted = 'KJPNE INF IJ PTX UWTLWFQFITWJX';
decoded(txtEncrypted);

Finalmente, nuestro algoritmo nos proporcionó la solución que buscábamos: el mensaje FELIZ
DIA DE LOS PROGRAMADORES.

Conclusión
Como hemos visto, un algoritmo informático no es más que un conjunto de instrucciones para
conseguir un fin. Los algoritmos están muy presentes en el ámbito de la informática, pero
también en nuestra vida cotidiana. Existen numerosos tipos y ejemplos de algoritmos y,
dependiendo de la situación en que nos encontremos, unos u otros nos ayuda rán a llegar a la
solución que necesitemos.

- 10 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

MAS CONCEPTOS …

¿Qué son los Datos y las Variables?

Un dato es una representación simbólica (numérica, alfabética, algorítmica, espacial, etc.) de un


atributo o variable cuantitativa o cualitativa. Los datos describen hechos empíricos, sucesos y
entidades. Es un valor o referente que recibe el computador por diferentes medios, casi siempre
ingresados desde sus periféricos. Los datos representan la información que el programador manipula
en la construcción de una solución o en el desarrollo de un algoritmo.

Los datos aisladamente pueden no contener información humanamente relevante. Solo cuando
un conjunto de datos se examina conjuntamente a la luz de un enfoque, hipótesis o teoría se puede
apreciar la información contenida en dichos datos. Los datos pueden consistir en números, estadísticas
o proposiciones descriptivas. Los conceptos de datos, información, conocimientos y sabiduría están
inter-relacionados. Los datos convenientemente agrupados, estructurados e interpretados se
consideran que son la base de la información humanamente relevante que se pueden utilizar en la
toma de decisiones, la reducción de la incertidumbre o la realización de cálculos. Es de empleo muy
común en el ámbito informático y, en general, prácticamente en cualquier investigación científica.

En programación, un dato es la expresión general que describe las características de las entidades
sobre las cuales opera un algoritmo. En estructura de datos, es la parte mínima de la información.

Las variables:

Son atributos, cualidades, características observables que poseen las personas,


objetos, instituciones, que expresan magnitudes que varían discretamente o en forma continua.

Ejemplo:

Son variables de las personas: la edad, sexo, talla, peso, contextura, color del cabello, color de ojos,
grado de atención, conocimientos previos, confesión religiosa, procedencia, clase social, etc.

Son variables de las cosas, objetos: forma, color, tamaño, peso, conservación, antigüedad, etc.

Las instituciones también poseen variables como: antigüedad, organización, eficiencia,


magnitud, productividad, etc.

- 11 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

LOS ERRORES MÁS COMUNES EN RESOLUCIONES MATEMÁTICAS

Durante las entrevistas con los Profesores de Matemática fue posible obtener información relevante
sobre los errores que habitualmente cometen los alumnos durante la formación de Nivel Medio.

Así, en el tercer ciclo de la Educación General Básica, los Profesores de Matemática aducen que los
errores más frecuentes de sus alumnos se encuentran cuando:

• Aplican la “regla de los signos” de la multiplicación al efectuar sumas o restas de números enteros.

• Suman números racionales efectuando la adición de numeradores por un lado y denominadores por
el otro.

• Dividen números racionales aplicando el algoritmo de la multiplicación.

• Resuelven divisiones donde el dividendo es un 0, pensándolo como 1, o ignorando su presencia.

• Simplifican fracciones dividiendo al numerador y denominador por números distintos.

• Asocian que un decimal periódico se obtiene, en todos los casos, como una fracción cuyo numerador
es igual al número sin la coma y con su período truncado; o expresando la parte entera como
numerador y el período como denominador.

• Consideran que tienen un número negativo elevado a cierto exponente cuando el signo menos se
antepone a la potencia.

• Recuperan el esquema de multiplicación reiterada, con factores negativos, cuando el exponente de


la potencia es un entero negativo.

• Asumen que toda potencia de exponente nulo da por resultado cero, o es igual a la base de la
misma.

• Aplican distributivas de la radicación con respecto a la suma y/o resta.

• Estiman que la raíz con radicando negativo e índice impar tiene un doble resultado, o que no posee
solución en el campo de los reales.

• Decodifican incorrectamente los valores representados por literales en una recta numérica.

• No logran determinar jerarquías ni tipos de operaciones que intervienen en los términos de una
ecuación.

• Consideran que un factor negativo se transpone dividiendo y cambiado de signo; o que forma parte
de una resta por lo que se pasa sumando al otro miembro.

• Transponen factores como dividendos, y no como divisores.

• No identifican las figuras geométricas elementales cuando se presentan en posiciones “no estándar”.

• Suponen que la altura de un triángulo siempre es un segmento interior a la figura.

- 12 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

• Brindan respuestas que prescinden de las unidades de medida en problemas que involucran
magnitudes.

Por otra parte, para el Ciclo de Especialización, los Profesores de Matemática establecieron que los
errores más comunes de los alumnos son los siguientes:

• Identifican la semántica de potencias con base entera y exponente fraccionario negativo, con tomar
el inverso multiplicativo del exponente.

• Asocian que si el exponente de una potencia es un entero negativo, y la base es una suma
algebraica, se debe tomar en primera instancia los inversos multiplicativos de los sumandos.

• Multiplican las raíces de igual índice y radicando cuando se tratan de adiciones, o aplican distributiva
de la raíz con respecto a la suma algebraica.

• Ofrecen como resultados de sumas algebraicas entre números racionales e irracionales, sólo una
expresión que involucra una determinada cantidad de radicales.

• Asocian que el exponente de la potencia de un producto, afecta sólo a uno de los factores.

• Distribuyen la potencia con respecto a la suma algebraica.

• Asumen que el denominador de una fracción divide sólo a uno de los sumandos del numerador.

• Encuentran redundante la presencia del signo “–” cuando se sustituyen números negativos en una
expresión en las que aparecen restas.

• Expresan como una potencia la suma de literales.

• Brindan un resultado numérico cuando a cierta cantidad de literales se le resta sólo uno de ellos.

• Extraen factores de un radical ajustándose a un algoritmo, y sin tener en cuenta si están en el


numerador o denominador de una fracción.

• Aplican distributivas cuando tienen el cociente entre un número y una suma algebraica.

• Suman los exponentes de las potencias de otras potencias.

• Realizan traducciones incorrectas de las expresiones que aparecen en las situaciones problemáticas.

• Conciben que cualquier letra siempre representa a un número positivo, y que simboliza un negativo
si se le antepone el signo menos.

• Aplican la fórmula para hallar las raíces de una ecuación de segundo grado, sin cerciorarse que la
expresión se encuentre igualada a cero.

• No logran interpretar coherentemente la información que deviene de una gráfica.

- 13 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

• Utilizan todos los datos que aparecen en un problema sin tener en cuenta si el cálculo realizado
responde a la pregunta solicitada.

Cabe aclarar que los errores detallados por los Profesores de Matemática se circunscribieron, casi con
exclusividad, a la Aritmética y al Álgebra, y sólo se citaron algunos de ellos en temas de Geometría.

Conclusión

Se incluye el párrafo precedente, dada la gran similitud existente entre los errores en los ejercicios
matemáticos de los estudiantes en general, y los errores en las resoluciones de problemas de lógica y
desarrollo de problemas de programación de software y a los efectos de establecer criterios de
referencia. Aunque no se vea la similitud fácilmente, poseer una mente matemáticamente entrenada,
potencia enormemente la facilidad para la resolución de problemas informáticos. Por supuesto existen
excepciones, y todo se puede entrenar. Por ello es que estudiantes provenientes de formaciones
humanísticas o sociales, con muy poco entrenamiento matemático, pueden lograr mediante un
adecuado esfuerzo, desempeñarse productivamente en la resolución de problemas de software y
actividades de desarrollo.

- 14 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

INFORMACION COMPLEMENTARIA

EL PERFIL PROFESIONAL DEL EGRESADO DE LAS CARRERAS DE DESARROLLO DE SOFTWARE (VER Res
CGES 501/19 – PERFIL PROFESIONAL) INCLUYE ALGUNOS DE ESTOS RASGOS DISTINTIVOS:

1. Amplias habilidades y capacidades para el desempeño en un campo profesional específico.


Se alcanzan mediante la atención en el proceso de enseñanza al desarrollo de competencias
profesionales generales. Esto permite la movilidad relativamente amplia dentro de una rama de los
conocimientos.

2. Elevada especialización profesional, al interior de sub ramas relevantes del quehacer profesional
contemporáneo. Se alcanza mediante la atención en el proceso de enseñanza al desarrollo de
competencias profesionales específicas. Permite desempeños exitosos dentro de campos cada vez
más estrechos de desempeño profesional. Garantiza la focalización en determinadas áreas de
interés, casi siempre identificadas como de interés académico, y garantiza la reproducción de
especialistas de alto rango y perfil estrecho.

3. Apertura hacia las problemáticas vinculadas a las NTICs (Nuevas Tecnologías de la Información y la
Comunicación) y la informatización de la sociedad.
Garantiza tanto el manejo de herramientas generales, como de otras específicas de las profesiones,
que elevan su efectividad práctica.

4. Limitadas capacidades y habilidades para el diálogo con otros campos profesionales, en particular
los opuestos en el binomio ciencias-humanidades.
Es el costo de la especialización, que descuida el resto de la formación universitaria y produce
como efecto de largo plazo, dos debilidades asociadas: 1) la incapacidad para el diálogo con otras
especialidades relativamente lejanas. 2) la profundización de la separación en dos “culturas”
incapaces de dialogar entre sí, la humanística y la científico-técnica.

5. Falta de una formación “para-científica”, que complemente el currículo con información de elevada
utilidad para el desempeño profesional, concerniente a legislación, economía y procesos
económicos, política (en especial de ciencia, tecnología y educación), inserción social de los
conocimientos y aplicación de los resultados de la ciencia y la tecnología en la vida social. Esta
trama curricular prácticamente inexistente en el nivel universitario enfrenta al egresado a una
práctica social que demanda conocimientos ausentes, que se buscan entonces mediante la
improvisación en la práctica y en algunas actividades de postgrado que los introducen. Se debe en
parte a una debilidad de la formación académica práctico-productiva, que tiene un carácter casi
siempre formal y complementario; y en parte a la imposibilidad de sobrecargar el currículo
universitario intentando incorporar la diversidad de la vida profesional real.

6. Formación ambiental débil, que apenas rebasa los niveles de información mínimos para superar la
educación anti ambiental heredada de la modernidad europea.
Es una de las debilidades más agudas de la formación universitaria actual que cumple parcialmente
con los objetivos de la educación ambiental y la educación para el desarrollo sostenible.

- 15 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

ESTE EGRESADO, SIN EMBARGO, DEBERA CONSIDERAR LOS SIGUIENTES CAMBIOS EN 5, 10 y 25


AÑOS

La caracterización del perfil del egresado que se requiere debe tomar en cuenta las siguientes líneas
principales de tensión problemática actual, y su previsible mantenimiento y profundización en los
próximos años.

Cambios en el mundo del trabajo y la vida social bajo el influjo del desarrollo tecnológico y el
intervencionismo científico.

Esto implica:

 La modificación permanente de los requerimientos de habilidades para el trabajo;


 El cambio de las profesiones bajo la influencia del desarrollo científico y tecnológico, en especial las
tecnologías de la información y las comunicaciones.
 El incremento de los conflictos vinculados al desarrollo y el intervencionismo científico y
tecnológico en toda la vida social, incluida la vida privada de las personas;
 Cambios importantes en las legislaciones para estar al día con respecto a los cambios científicos,
tecnológicos y laborales.
 Cambios de naturaleza económica, política y jurídica que atraviesan todo el tejido social e impactan
las universidades y su labor de formación.
 Ampliación de los procesos de globalización y regionalización.
Esto significa un reto para los países y las instituciones en materia de legislación, regulación,
estandarización de los procesos y mantenimiento de las identidades. Por una parte, la globalización
implica procesos trans regionales ineludibles. Por otra, la formación de bloques regionales se
perfila como la estrategia más exitosa de los países para enfrentar esos retos del mundo
globalizado.
Otro aspecto relevante de estos procesos radica en los flujos migratorios de fuerza de trabajo, no
solo la migración en general, como un proceso relativamente masivo, sino la migración selectiva de
la fuerza de trabajo calificada, que incluye los egresados de las universidades. La potencialidad de
países emergentes como India, China y Brasil para impactar estos procesos migratorios no debe
pasar inadvertida para las universidades.
Finalmente, la globalización implica una mayor conectividad de las vidas locales y globales, lo que
imprime mayor sensibilidad de las sociedades a los cambios que tienen lugar en países y regiones
hegemónicas.
 Polaridad de las diferencias socioeconómicas y sociales.
Es un rasgo distintivo de las sociedades latinoamericanas que impacta la educación superior en
todas sus vertientes, y tiene consecuencias tanto para los procesos como para la calidad de los
egresados. La polaridad de las diferencias socioeconómicas y sociales ha sido objeto de atención
política con resultados ambivalentes, que incluyen sistemas de educación superior con una amplia
base social y garantía de acceso, y sistemas excluyentes, tanto por la forma académica (disrupción
entre la enseñanza general y la superior que impide el acceso al no estar preparados los
estudiantes para carreras que demandan un nivel de conocimientos científicos que la enseñanza
previa no garantiza), como por los requerimientos socioeconómicos. La polaridad de las diferencias
se encuentra dentro de la educación superior, ya le es inherente, y produce un proceso de
exclusión social que de no revertirse en el mediano plazo, incrementará la dependencia tecnológica
y científica de los países latinoamericanos.
 Emergencia a un primer plano de los problemas sociales vinculados a la convivencia y la cohesión
social.

- 16 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

Una de las consecuencias de los procesos de polarización y exclusión social es la afectación


sustancial de la seguridad pública, la convivencia y la cohesión social. A las instituciones
corresponde un papel principal, tanto en la prevención, como en la búsqueda de soluciones a los
problemas de esta índole, que emergen a primer plano porque afectan al resto de las
problemáticas de la vida social, urbana y rural, aunque se presenten con máxima relevancia en los
entornos urbanos, las grandes ciudades y las megalópolis.

 Tensiones ambientales locales y globales.


Las tensiones ambientales locales y globales, desde la afectación de la vida cotidiana y los entornos
inmediatos, hasta el cambio climático, así como los acuerdos para mitigarlos, adaptarse a ellos y
revertirlos cuando sea posible, ocuparán lugares cada vez más prominentes en las agendas
políticas, sociales y científicas. Esto incluye procesos ambientales extremos y tensiones sociales,
tanto por los impactos de esos eventos, como por los activismos sociales y políticos que
desencadenan.

 Políticas de partido versus políticas de civilización y humanidad.


Esto significa la consideración de las políticas de inclusión social en la educación superior; las de
desarrollos científicos y tecnológicos propios, con inversión pública y selectiva en ciencia y
tecnología; y la consideración de la actual crisis de la política, la representación y la democracia,
que implica cambios fundamentales en la sociedad contemporánea. Las políticas de partido,
cerradas por lo general a las problemáticas del futuro y la metamorfosis de la humanidad, son
incapaces de atender estos retos, y serán sustituidas por políticas de civilización y humanidad que
atiendan los problemas locales en su vínculo con las problemáticas globales.

Todos estos factores están lejos de incluirlo todo, pero permiten caracterizar el tipo de demanda que
enfrentan las casas de estudios superiores, tanto para la preparación de los profesionales, como para
la transformación del pensamiento y la enseñanza mediante una reforma paradigmática, que habilite
un pensamiento capaz de enfrentar el reto fundamental del creciente entretejimiento (complejidad)
de los procesos sociales, económicos, científicos, educativos, etc. en la sociedad actual.
Al considerar estas tensiones y el perfil del egresado actual, se puede caracterizar el perfil deseable
para un egresado de educación superior/universitario- Este puede servir de base para considerar
entonces lo posible a realizar en los próximos 5-25 años.

TRABAJO EN EQUIPO
En muchas ocasiones hemos visto como diferentes personajes públicos hablaban de la importancia del
trabajo en equipo. Desde políticos a deportistas han hecho especial hincapié en lo valioso que puede
llegar a ser un buen trabajo en equipo.
Winston Churchill mencionó una vez “si estamos juntos no hay nada imposible. Si estamos divididos
todo fallará.” También Michel Jordan dijo lo siguiente: "el talento gana partidos, pero el trabajo en
equipo y la inteligencia gana campeonatos”. Un concepto que también se puede ver reflejado en el
proverbio africano “Si quieres ir rápido, ve solo. Si quieres llegar lejos, ve acompañado”.

Qué es el trabajo en equipo


El trabajo en equipo responde a una manera organizada y coordinada de trabajar entre varias
personas con la finalidad de alcanzar metas comunes. Se puede considerar una herramienta laboral. A
través de las habilidades complementarias de cada uno de los integrantes, todos los miembros del
equipo mantienen una responsabilidad individual y mutua para dirigir todos los esfuerzos a un objetivo
común.

- 17 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

A partir de la definición de trabajo en equipo, vemos que este genera una sinergia positiva, pero para
lograrlo se debe mantener un gran sentido de la unión y tener empatía con todos los integrantes.
Como resultado encontramos un mayor rendimiento, productividad y satisfacción personal y laboral.
Además, en el trabajo en equipo el liderazgo es compartido por todos. Por ello, es muy importante el
estilo de comunicación

Cuál es la importancia del trabajo en equipo


Ejemplos de trabajo en equipo como puede ser una empresa, organización de trabajo o un grupo de
amigos, tienen un papel clave en el desarrollo de cada uno de sus integrantes. A continuación,
veremos cuál es la importancia del trabajo en equipo.

Crea unión
Uno de los beneficios del trabajo en equipo es que cada uno de los integrantes del equipo aporta sus
conocimientos a todos y estos sumados tienen un mayor impacto y beneficio para lograr los objetivos
que el grupo se ha propuesto

Estructuras participativas y flexibles


Una de las características del trabajo en equipo es que el liderazgo es compartido. Este hecho hace
que no haya una jerarquía en el trabajo, sino que cada uno de los miembros pueda aportar de igual
forma su conocimiento y opinión. A su vez, todo ello fomenta valores como la solidaridad, cooperación
y colaboración, sentido de pertenencia y evita el burnout o la fuga de cerebros.

Refuerza la responsabilidad
El hecho de que cada uno de los integrantes del grupo tenga un rol asignado, hace que deban
responder a sus tareas y estás sean esenciales para poder alcanzar el objetivo grupal. Así pues, cada
integrante tiene un sentido de la responsabilidad más elevado que en otras circunstancias.

Fomenta las habilidades sociales


Tener que estar en constante contacto con cada uno de los miembros del equipo, hace que cada uno
de los integrantes deban desarrollar y potenciar sus habilidades sociales, tales como; la escucha
activa, la empatía, la resolución de problemas, la comunicación asertiva, etc. Para que el trabajo en
equipo sea efectivo se debe mantener una comunicación abierta con constante feedback,

Más fuertes en contextos de crisis


Los equipos que son fuertes, están unidos y tienen metas claras son menos permeables en contextos
de inestabilidad o crisis. Las sinergias creadas en el equipo y el compromiso adquirido empoderan a
este ante los cambios que puedan surgir.

Características del trabajo en equipo


Existen distintos factores que distinguen una buena cooperación grupal. Para distinguirlos, veamos
cuáles son las características del trabajo en equipo:

 Todos son el motor del equipo: se caracteriza principalmente por tener un guía que conduce el
equipo pero no lo controla, es decir el rol de liderazgo es compartido y cada miembro del equipo
puede aportar su opinión o modo de ver las cosas para alcanzar el objetivo.
 Uso de la confrontación colectiva: otra de las características del trabajo en equipo. Cuando hay un
conflicto o problema este se resuelve permitiéndole a cada miembro aportar su idea para solventarlo.
 Espíritu colectivo: la cohesión y la cooperación son dos valores fundamentales en el trabajo en
equipo. Todos unidos hacía un mismo propósito, generando satisfacción y unión grupal para realizar
las tareas.

- 18 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

 Trabajo interdependiente: se trabaja así para alcanzar los objetivos personales y colectivos. La
responsabilidad que desempeña cada miembro del grupo es tanto individual como colectiva.
 Comunicación fluida: la comunicación empleada en el trabajo en equipo es abierta con todos los
miembros del grupo.

Según Tom Peters, especialista en gestión empresarial y para muchos considerado el padre del
Management moderno, describió los cinco componentes que debe tener un equipo (las cinco c del
trabajo en equipo) para lograr un alto rendimientos. Estos son la complementariedad,
la coordinación, la comunicación, la confianza y el compromiso que se adopta.
Lo ideal es que este sea abierto y con feedback constante.

ARMA UN EQUIPO DE ESTUDIO QUE TE GENERE CADA DÍA MÁS COMPROMISO DE SEGUIR ADELANTE.

COMO DICE EL PROVERBIO:

LOS DOS ERRORES MÁS COMUNES PARA LLEGAR A LA MAESTRÍA SON: NO DAR EL PRIMER PASO Y NO
RECORRER EL CAMINO COMPLETO.

- 19 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

ANEXO I

ACERTIJOS CLÁSICOS

Material Práctico de cursillo Ingreso al IES N° 9-012 – San Rafael en Informática

“Tecnicatura Superior en Desarrollo de Software” / “Tecnicatura Superior en Desarrollo de


Software”

EJERCICIOS

1. ¿Qué está en el centro de París?


2. ¿Qué palabra de cuatro letras contiene seis?
3. ¿A qué pregunta nunca puedes responder con un sí?
4. Dos padres y dos hijos fueron a pescar, tres peces pescaron y les tocó un pescado a cada uno,
¿cómo es esto posible?
5. ¿Qué hay que romper antes de usar?
6. Hay una casa de un piso donde todo es amarillo. Paredes amarillas, puertas amarillas, muebles
amarillos. ¿De qué color son las escaleras?
7. ¿Qué sube, pero nunca baja?
8. ¿Cómo es posible pinchar un globo sin permitir que se escape aire y sin que el globo haga
ruido?
9. ¿Qué se repite una vez cada minuto, dos veces cada momento y nunca en cien años?
10. Marta y María son hermanas. Marta tiene dos sobrinas que no son sobrinas de María. ¿Es
posible?
11. ¿Qué se moja al secar?
12. Cuando me necesitan me tiran. Cuando terminan conmigo me traen de vuelta. ¿Qué soy?
13. Un vaquero llega a un pueblo en Viernes, se queda 3 días y se va en Viernes, ¿cómo lo hizo?
14. ¿Qué necesitas para encender una vela?
15. ¿Qué da la vuelta en todo el mundo pero se queda en una esquina.
16. ¿Cómo se puede llevar agua en un colador?
17. ¿Dónde hay más pescado en la tierra o en el mar?
18. ¿Puedes nombrar tres días consecutivos que sin usar las palabras miércoles, viernes o
domingo?
19. ¿Puede un hombre casarse con la hermana de su viuda?
20. ¿Cómo se dice: «No veo yema blanca» o «no veo la yema blanca»?
21. Si me nombras desaparezco, ¿qué soy?
22. Qué es lo que es algo y a la vez nada.
23. Soy pequeño y blandito y mi casa llevo en el lomito. ¿Qué soy?
24. Aliméntame y viviré, dame agua y moriré. ¿Quién soy?
25. Tiene manos, pero no puede aplaudir, ¿qué es?
26. Hay 10 peces en un pecera. 2 Se ahogan. 4 Nadan lejos. 3 Mueren, ¿cuántos peces quedan?
27. Tengo ciento cincuenta sillas y siento cincuenta monos. ¿Cuántas sillas me quedan?
28. Si tres gallinas ponen tres huevos en tres día. ¿Cuánto tardarán 24 gallinas en poner 24
huevos?
29. A las cuantas vueltas se echa un perro.
30. Soy alto cuando soy joven y corto cuando soy viejo, ¿qué soy?
31. Si un caballo blanco entra al mar negro, ¿cómo sale?
32. Si un león entra a tu casa y se sube a tu cama. ¿En qué se convierte?

- 20 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

33. Un gallo sube a lo alto de la montaña y pone un huevo. Si el viento sopla de Este a Oeste.
¿Hacia dónde caerá el huevo?
34. ¿Hasta dónde puede correr un zorro hacia el bosque?
35. Yo actúo como un gato, me veo como un gato, sin embargo, no soy un gato. ¿Qué soy yo?
36. ¿Qué te pertenece, pero otras personas lo usan más que tú?
37. Dos niñas tienen los mismos padres y nacieron a la misma hora del mismo día del mismo mes,
pero no son gemelas. ¿Cómo puede ser esto posible?
38. Un caballo está atado a una cuerda de 5 metros y hay una paca de heno a 7 metros de
distancia. Sin embargo, el caballo todavía puede comer del heno. ¿Cómo es esto posible?
39. ¿En qué número está estacionado el auto?

40. ¿Cuál es el animal que después de muerto da muchas vueltas?


41. ¿Por qué los buzos siempre se tiran de espaldas?
42. ¿Cuántos animales de cada especie metió Moisés en el arca?
43. México empieza con «M» y termina con «T», ¿verdadero o falso?
44. ¿Cómo sacas un elefante del agua?
45. ¿Quién es el hombre que con un solo brazo puede detener hasta 50 automoviles?
46. Imagina que estás en una habitación que se está llenando de agua rápidamente. No hay
puertas ni ventanas. ¿Cómo sales?
47. ¿Qué puedes sostener sin tocarlo?
48. Soy ligera como una pluma, pero ni siquiera la chica más fuerte puede sostenerme por más de
5 minutos. ¿Qué soy yo?
49. Si 2 son compañía y 3 son multitud, ¿qué hacen 4 y 5?
50. Si un avión se estrella entre la frontera de México y Estados Unidos, ¿dónde entierran a los
sobrevivientes?
51. A Juanito se le cayó un anillo dentro de una taza llena de café, pero el anillo no se mojó.
52. Estás en un avión, enfrente de ti hay un caballo y atrás un auto, ¿en dónde estás?
53. «Este loro es capaz de repetir todo lo que oiga», le aseguró a una señora el dueño de una
pajarería. Pero una semana después, la señora que lo compró estaba de vuelta en la tienda,
protestando porque el loro no decía ni una sola palabra. Y sin embargo, el vendedor no le había
mentido. ¿Puedes explicarlo tú?
54. Solo puedo vivir donde hay luz, pero muero si la luz brilla sobre mí … ¿Qué soy?
55. Estoy sucio cuando estoy blanco. ¿Qué soy?
56. ¿Qué no ha sido y tiene que ser, y cuándo sea deja de ser?
57. ¿Un bate y una bola cuestan 1,10 dólares. El bate cuesta un dólar más que la bola. Así que,
¿cuánto cuesta la pelota?».

- 21 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

58. ¿Puedes anotar ocho ochos que sumen mil?


59. Si 5 máquinas hacen 5 artículos en 5 minutos, ¿cuánto tiempo tardarán 100 máquinas en hacer
100 artículos?
60. Tú vas conduciendo un autobús, recoges a 20 personas y se bajan 8; recoges 10 y bajas 6, se
suben 19, y bajan 3 en la parada. ¿De qué color son los ojos del conductor?
61. En una clase de 6º hay más de 20 y menos de 30 alumnos. Si se agrupan de 4 en 4 sobran 2 y si
se agrupan de 5 en 5 sobra 1. ¿Cuántos alumnos hay en esa clase?
62. Tengo que comprar 20 aves con $20, donde cada pavo cuesta $4, cada gallina a 50 centavos, y
cada pollo cuesta 25 centavos.
63. Soy mayor que 110 y menor que 120, la suma de mis dígitos es 9.¿Qué soy?
64. Mientras un niño iba a la tienda con su madre contó 14 casas de su lado derecho. Al regresar a
casa, contó 14 casas de su lado izquierdo. ¿Cuántas casas hay entre su casa y la tienda?
65. Hay dos patos delante de otros dos patos. Hay dos patos detrás de otros dos patos. Hay dos
patos al lado de otros dos patos. ¿Cuántos patos hay?
66. Un elefante y un ratón pesan juntos 1001 kg, el elefante pesa 1000 kg más que
el ratón. ¿Cuánto pesa el ratón?
67. Mira la siguiente imagen. ¿Cuál es el valor de la pizza que queda ?

68. ¿Quién es el hijo de tu padre que no es tu hermano?

- 22 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

69. Juan estaba mirando un retrato y alguien le preguntó: «¿Quién es el hombre de la


fotografía?». Él contestó: «No tengo hermanos ni hermanas, pero el padre de este hombre es el hijo
de mi padre». ¿Quién es el hombre de la foto?
70. Un sujeto cae en un pozo muy estrecho y se ahoga, a pesar de que el agua le llegaba solo a
media pierna. ¿Cómo? (La estrechez del pozo no permite que la víctima se hallase tumbada)
71. ¿Cuál es el parentesco más cercano que puede tener contigo la cuñada de la hermana de tu
padre?
72. Tres mujeres están en traje de baño. Dos de ellas están tristes pero sonrientes, la otra está
contenta pero llora. ¿Porqué?
73. Estás encerrado dentro de un auto con nada más que un bate de béisbol. ¿Cómo logras salir?
74. Una persona tenía una jarra llena de limonada y una jarra llena de leche. Volcó las dos en un
recipiente grande, y sin embargo la limonada siguió separada de la leche. ¿Cómo es posible?
75. Entras a un cuarto oscuro y muy frío, tienes un fósforo, hay una vela, una lampara de gas y una
chimenea ¿qué enciendes primero?
76. Si un hombre hace un agujero en una hora y dos hombres hacen dos agujeros en dos horas.
¿Cuánto tardará un hombre en hacer medio agujero?
77. Iba para Villavieja me cruce con 7 pastores, cada pastor llevaba 1 saco, cada saco con 3 ovejas.
¿Cuántas personas iban para Villavieja?
78. Vivo en el piso 25 de un edificio. Todos los días, tomo el ascensor y bajo al primer piso. Por la
tarde, al subir por el elevador, voy al piso 16 y subo las escaleras de regreso a mi departamento. No
me gusta el ejercicio, entonces ¿por qué lo hago?
79. Quien lo hace no lo dice, quien lo recibe, no lo sabe, quien lo sabe no lo quiere. ¿Qué es?
80. Estás en una carrera con tres personas. Entonces, rebasas a la penúltima persona, en qué
posición te encuentras ahora?
81. María y Pepe yacen muertos en el suelo sin aparentes signos de violencia, y a su lado un
charco de agua y unos cristales rotos. ¿Cómo murieron?
82. En dos años tendré el doble de edad que hace 5 años. ¿Cuántos años tengo?
83. ¿Qué es negro cuando lo compras, rojo cuando lo usas, y gris cuando lo tiras?
84. En un campo se encuentra un hombre tendido, sin vida. A su lado hay un paquete sin abrir. No
hay ninguna otra criatura viva en el campo. ¿Cómo murió?
85. ¿Qué hay delante de ti siempre pero que no se puede ver?
86. ¿Cómo lanzar una pelota de tenis de forma que recorra una pequeña distancia, se detenga y
regrese por el camino de ida?
87. Un hombre entra en un bar y pide al cantinero un vaso de agua. El cantinero saca un arma de
debajo del mostrador y apunta al hombre. El hombre dice: ¡Gracias! y se va. ¿Por qué? Nota: Ellos
nunca se habían visto antes.
88. Si la hija de Teresa es la madre de mi hija, ¿qué soy yo para Teresa?
89. 101. Acertijo: Arturo está mirando a Melisa, pero Melisa está mirando a Luis, Arturo está
casado pero Luis no. ¿Una persona casada está mirando a un persona soltera?
a) Sí
b) No
c) No se puede determinar.
90. ¿Por qué los barberos prefieren cortar el pelo a diez gordos antes que a un flaco?
91. ¿Cuantos animales de cada especie metió Moisés en el arca ?
92. ¿En la historia bíblica, Quién mató a Caín?
93. ¿Qué hay entre la espada y la pared?.
94. Los niños recién nacidos no tienen dientes al nacer.
95. ¿Cuál era la montaña más alta de la tierra antes de que se descubriese el Everest?
96. ¿Qué es aquello que cuanto más grande es menos se ve?
97. ¿Cuantos meses tienen 28 días?

- 23 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

98. ¿Cual es el parentesco más cercano que puede tener contigo la cuñada de la hermana de tu
padre?
99. Uno solo, al siguiente ya no estaría el estómago vacío.
100. La madre de Juan tiene 5 hijos, al primero lo llamó, LELO, al segundo LILO, al tercero LULO y al
cuatro LALO. ¿Cómo se llamaba el quinto hijo?
101. ¿Cuánta arena hay en un hoyo de 30 x 30 x 30 metros?
102. ¿Qué es lo primero que hace el Sol cuando sale?
103. ¿Cuánto tiempo hace falta para cocer un huevo duro?
104. Presionando el botón de llamada.
105. El padre de Juan le dice a su hijo que le va a otorgar dos monedas de curso legal. “Entre las dos
suman tres pesos, pero una de ellas no es de un peso”. ¿Cuáles son las monedas?
106. Juan se levanta por la mañana y descubre que la luz de la habitación no funciona. Abre el cajón
de los guantes, en el que hay diez guantes negros y diez azul oscuro. ¿Cuántos debe tomar para
asegurarse de que obtiene un par del mismo color?
107. ¿Cuántas veces puede restarse el número 1 del número 1.111?
108. Dos personas viajan en coche. La menor es hija de la mayor, pero la mayor no es su padre.
¿Quién es?
109. En una carrera, un corredor adelanta al que va segundo. ¿En qué posición se coloca?
110. ¿Cómo puede sobrevivir alguien que cae de un edificio de 50 pisos?
111. Una mujer compra en una tienda de animales a un loro que, según le promete el dependiente,
es capaz de repetir todo lo que oiga. Y, sin embargo, la mujer devuelve al animal una semana después
puesto que no ha pronunciado ni un solo sonido, a pesar de que le ha hablado continuamente. Sin
embargo, el dependiente no la ha engañado. ¿Qué ha pasado?
112. Conduces un autobús, en el que suben 18 personas. En la siguiente parada, se bajan 5 pero
suben otras 13. Al llegar a la siguiente estación, se bajan 21 y se suben otras 4. ¿De qué color son los
ojos del conductor?
113. Un granjero tiene 10 conejos, 20 caballos y 40 cerdos. Si llamamos “caballos” a los “cerdos”,
¿cuántos caballos tendrá?
114. Siempre estoy entre la tierra y el cielo. Suelo estar a distancia. Si intentas acercarte, me
alejaré.
115. En una carrera de 4 corredores, se sabe que C ha llegado justo detrás de B, y B ha llegado en
medio de Ay C. ¿Cuál es el orden de llegada de los corredores?
116. Si Luisa come más tarta que Cris, María come más que Cris y menos que Rosa, pero ella come
más que Luisa. ¿Cuál de ellas come menos tarta?
117. Un nadador se ve rodeado por tiburones con bastantes problemas de visión,3 no veían por el
ojo izquierdo y 3 no veían por el ojo derecho.3 podían ver por el derecho y 3 por el izquierdo, 3 podían
ver tanto por el derecho como el izquierdo. Otros 3 eran completamente ciegos. ¿Cuántos tiburones
había como mínimo?
118. Tienes que elegir entre morir en la hoguera o envenenado, tienes que pronunciar una frase y si
es cierta, morirás envenenado y si es falsa morirás en la hoguera. Finalmente te salvas, ¿cómo lo has
logrado?
119.

- 24 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

Realiza dos trazos rectos para dividir la esfera de este reloj en tres partes en la que los números que
contiene cada parte sumen 26

120. Número divisible por 9

Qué condición ha de tener un número para que al restarle la suma de sus cifras el resultado sea
divisible por 9.

121. Juego de lógica matemática

El señor Blanco, el señor Rojo y el señor Verde se encuentran en la calle.

- Qué curioso, dice el señor Rojo, el color de nuestras corbatas se corresponden con los colores de
nuestros apellidos, pero ninguno lleva el color de su apellido.

- ¡Tiene Razón!, dice el señor Blanco.

¿De qué color es la corbata de cada uno?

122. Si el gen del albinismo es recesivo y hay un albino por cada 10000 personas, ¿qué proporción
de población mundial es portadora del gen del albinismo?
123. Dos trenes van por la misma vía en dirección contraria directos a chocarse. Uno de los trenes
viaja a 130 km/h, mientras que el otro viaja a 170 km/h. Entre ellos media 215 km. ¿A qué
distancia estarán un minuto antes de chocar?
124. Dibuja cinco puntos sobre un papel, ¿de qué formas se pueden conectar estos cinco puntos de
manera que cada uno esté unido a otros dos (pero solo a dos)

125. ¿Cuántas veces después de medianoche, y antes del mediodía, la aguja de los minutos coincide
con la de las horas?

126. ¿Cuántos años tiene?

Una amiga le pregunta a María: ¿Cuántos años tienes?

- Tantos como las dos últimas cifras del año de mi nacimiento y he nacido en el siglo xx, contesta.

- ¡Lo mismo digo! Dice la abuela de María que está escuchando.

- ¡Abuela, no puedes tener la misma edad que yo!, dice María.

- Yo no me he quitado ningún año, pero no he nacido en el mismo siglo.

¿Qué edad tienen María y su abuela teniendo en cuenta que la conversación sucede en 1994?

127. Tienes que lograr formar una T con estas figuras desordenadas

- 25 -
DIRECCIÓN GENERAL DE ESCUELAS DIRECCIÓN DE EDUCACIÓN SUPERIOR
INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”
Paunero esq. Almirante Brown – San Rafael – Mza.
Gral. Roca N° 279- Gral. Alvear- Mza.

128. Encontrar dos números cuya suma sea 45 y su resta sea 21.
129. Alberto y su padre se llevan 25 años de edad. Encontrar la edad de Alberto sabiendo que
dentro de 15 años la edad de su padre será el doble que la suya.
130. Se tiene un rectángulo cuya altura mide 2 cm más que la base y cuyo perímetro es 24 cm.
¿Qué dimensiones tiene el rectángulo?
131. Un joven empleado, interrogado acerca de su edad, respondió: “el doble del cuadrado de la
edad que tendré dentro de cuatro años menos el cuádruple del cuadrado de la edad que tenía
hace cuatro años, es el cuádruple de la edad que tendré dentro de doce años”. ¿Qué edad
tiene el empleado?
Para resolver algunas situaciones necesitaremos convertir unidades, por ejemplo:

Expresar en notación científica:

0, 0000000004=

0,0000009=

0,0002=

0,000001=

1000000000=

20000=

400000000=

3500000000000=

132. Sabiendo que el tiempo se mide en Sistema sexagesimal, ¿Cuántos minutos dura un año de
365 días?
133. Sabiendo que Conforme datos del Instituto Nacional de Vitivinicultura
(INV), Argentina produjo en 2018 un total de 14.521.510 Hl (hectolitros) de vino,
representando este valor un incremento del 22,8% respecto al año 2017.
134. ¿Cuántos litros de vino se produjeron en ambos años?
135. Sabiendo que 1Kw-h de energía eléctrica cuesta…………. cuánto cuesta por segundo la
electricidad?
136. Si la velocidad c de la luz se considera aproximadamente 3.108 m/s. ¿Cuántos km/s son?
137. Sabiendo que 1 Kgf es equivalente a 9,8N, calcule en N una fuerza de 3,5 Kgf.

- 26 -
Introducción a la Programación – Curso de Ingreso

INTRODUCCIÓN A LA PROGRAMACIÓN

Lic. Enrique Martínez


Lic. Ariel Villar

Introducción a la Programación 1/42


Introducción a la Programación – Curso de Ingreso

INTRODUCCIÓN A LA PROGRAMACIÓN

BLOQUE - UNO

INTRODUCCIÓN:

Muchas veces el término programación puede llegar tener interpretaciones tan variadas como
confusas. Lo cierto es que la programación en el ser humano es tan connatural de lo que
pensamos. Los programas de computadoras pueden ser comparados como una receta de
cocina. Si Ud. tiene un problema a resolver y quiere realizar la preparación de un huevo frito,
deberá seguir las instrucciones que diga la receta para ese tipo de preparación, es decir, se
deberá respetar una serie de pasos para llegar a la preparación del plato de cocina. Estos
pasos deben respetarse siguiendo un camino lógico, porque de lo contrario, si no se respetase
no se podría llegar al fin que es la preparación del plato. Por ejemplo, para preparar una tortilla
de papa la receta podría ser:

1. Encender la hornalla de la cocina.


2. Colocar el aceite al sartén.
3. Colocar el sartén en la hornalla encendida.
4. Esperar que el aceite se caliente.
5. Tomar un huevo.
6. Partir el huevo.
7. Volcar la clara y la yema.
8. Esperar hasta que el huevo se frite y tome color blanco la clara.
9. Sacar el huevo frito con la espátula.
10. Colocar el huevo frito en un plato.
11. Colocar sal a gusto.
12. Apagar la hornalla de la cocina.
13. Etc.

Ahora bien, si en estos pasos que nos indica la receta, llegáramos a invertir o permutar
cualquiera de sus pasos, se podría correr el riesgo de no llegar a concluir la preparación de la
comida propuesta, es decir, no se llegaría al fin propuesto. Es decir que las recetas se pueden
definir con el conjunto de pasos, ordenados con un criterio adecuado, para cumplir un
determinado fin. Lo mismo ocurre con los programas informáticos, también son un conjunto de
instrucciones ordenadas lógicamente, que el computador es capaz de interpretar, con el fin de
conseguir un fin determinado.

Para ilustrar, otro ejemplo de la vida cotidiana, se verá el caso de los pasos que realizamos
para ver una película de vídeo, podría hacer:

1. Elijo una película de las de mi colección.


2. Compruebo SI TV y vídeo están conectados a la red (y procedo).
3. SI la TV está apagada, la enciendo, SI NO, pues no. Y lo mismo con el vídeo.
4. Abro el estuche de la película.
5. Saco la película de su estuche.
6. Introduzco la película en el vídeo. Dejo el estuche sobre el vídeo.
7. SI la TV no está en el canal adecuado, la cambio, SI NO, pues no.
8. Cojo los mandos a distancia (el del TV y el del vídeo).
9. Me pongo cómodo.
10. Pulso PLAY en el mando del vídeo.

De los dos ejemplos propuestos, ambos poseen cosas en común:

1. La descripción de cada paso no me lleva a ambigüedades: los pasos son


absolutamente explícitos y no inducen a error.
2. El número de pasos es finito.

Introducción a la Programación 2/42


Introducción a la Programación – Curso de Ingreso

Ejercicio Grupal:

En grupo de hasta 4 alumnos, deberán dar un ejemplo de la vida cotidiana donde se deberá
detallar los pasos a seguir para cumplir el fin del ejemplo propuesto.

Hasta aquí, han aparecido conceptos muy significativos para introducirnos en el mundo de la
programación, ellos son: conjunto, secuencia, orden, problema, ambigüedad, etc.
De ahí que nace un concepto que se puede abarcar de manera intuitiva, y es el concepto de
Algoritmo. Se puede considerar al Algoritmo como la series de pasos a seguir, ordenados
lógicamente de acuerdo a un criterio determinado, con el fin de resolver un problema concreto.

¿QUÉ ES UN ALGORITMO?

Esta palabra se deriva MUSA AL-KHOWARIZMI, nombre de un matemático árabe que vivió en
el siglo IX. El diccionario de la RAE lo define como el “método y notación en las distintas formas
de cálculo”.
La conceptualización algoritmo, para los fines de éste curso, se va a definir como el conjunto
de operaciones perfectamente especificadas y ordenadas, cuyo objeto es obtener un resultado
partiendo de unos datos a fin de resolver un problema concreto.

Ejemplo 1:

¿Cuál es el algoritmo que nos permite conocer la superficie de un rectángulo


teniendo como datos los lados (alto y largo)?
Solución:
S: superficie del cuadrado.
A: longitud en alto.
T: longitud en ancho.

Entonces el algoritmo buscado es: S= A x T .

Conclusión: Este modelo de algoritmo representa la solución para hallar


cualquier superficie de un rectángulo conociendo sus dos lados.

“S”, “A” y “T” son las variables de nuestro algoritmo porque las mismas varían
según el valor que le asignemos a “A” y “T”.
En este ejemplo “A” y “T” se denominan variables independientes porque a
dichas variables se le pueden asignar valores arbitrarios o al azar.
A la variable “S”, se la denomina variable dependiente porque “depende” su
valor del valor asignado por las variables independientes.

Por ejemplo: si A=3 y T=4, entonces S=12; en cambio, si A=8 y T=9, entonces
S=72.

Ejemplo 2:
La superficie de un triángulo es base por altura, todo divido por dos.
La representación de un algoritmo podría ser:

R: Superficie del triangulo


A: Altura
B: Base

Entonces el algoritmo buscado es R= (B x A) / 2 .

Por analogía del ejemplo 1, podemos decir que R, A, B son la variables de nuestro
algoritmo (porque se valor varían dependiendo del ejemplo que busquemos).
Las variables B y A son variables independientes, y la variable R es dependiente.

Introducción a la Programación 3/42


Introducción a la Programación – Curso de Ingreso

Ahora, bien, el valor “2”, dentro del algoritmo, siempre va a seguir siendo “2”. Decimos
pues, que el 2 de nuestro algoritmo es una constante del problema porque nunca va a
variar su valor.

A saber, siempre en un algoritmo aparecen dos elemento fundamentales las constantes y las
variables.

DEFINICIÓN DE CONSTANTE

Constante: son los valores que permanecen invariables en un algoritmo

TIPOS DE CONSTANTES

Existen gran variedad de tipos de constantes, nosotros vamos a ver dos clasificaciones:

a) Constantes Numéricas: representadas por todo el campo numérico, ej. 3, 100, -4, 0, ½,
etc.
La importancia de las constantes numéricas radica porque en ellas se pueden realizar
operaciones matemáticas como suma, multiplicación, etc.

b) Constantes Alfanuméricas: están formadas por cualquier combinación de caracteres:


letra, numero y /o símbolo permitido por el computador como: @, &,/,a,3,f,#, etc.
Siempre se escriben entre comillas para identificarlas. Por ejemplo: “Fiat 128”, “Villa 25
de mayo”, “pipo25@hotmail.com”, “23”, etc.

DEFINICIÓN DE VARIABLE

Variable: es una “cosa” que contiene dentro de ella un valor determinado a lo largo de la
resolución de un algoritmo.

El valor de una variable siempre va hacer el mismo durante la ejecución de un algoritmo, salvo,
que le asignemos a dicha variable un valor diferente.

Como la palabra lo dice, se llama variable porque su contenido puede cambiar o “variar” del
procesamiento de un algoritmo. Una característica de las variables es que le podemos asignar
nombres a ellas como por ejemplo: superficie_del_rectangulo, resultado, valor_cobrar,
nombre_persona, etc.

Al igual que las constantes, existen muchos tipos de variables pero por ahora vamos a ver dos
tipos:
a) Variable Numérica: se denominan a aquellas que solamente poseen valores
numéricos y por consecuencia se pueden aplicar operaciones matemáticas sobre ellas.

b) Variable Alfanumérica: son aquellas que contienen en su interior datos alfanuméricos:


combinación de letras, números y símbolos.

¿Cómo se crea una variable?


Rta. Se coloca la variable, luego el signo igual y a continuación el valor que deseamos que
tenga en el algoritmo.

Ejemplo 1:
A=23
(Significa que hemos creado una variable llamada “A” y su valor es del tipo numérico que
equivale a 23)

Introducción a la Programación 4/42


Introducción a la Programación – Curso de Ingreso

Ejemplo 2:
base=1456
(Significa que hemos creado una variable llamada “base” y su valor es 1456)

Ejemplo 3:
nombre =”Juan Agustín Flores”
(Significa que hemos creado una variable llamada “nombre” y su valor es ”Juan Agustín
Flores”, en este caso, a diferencia del ejemplo 1 y 2 que son valores numéricos, el valor del
ejemplo 3 es del tipo alfanumérico o tambien conocido como: cadena, string, etc.)

DEFINICIÓN DE OPERADORES

Operadores: son los símbolos que representan el conjunto de todas las operaciones
aritméticas y lógicas que se pueden hacer con las variables y las constantes.

Existen diferentes tipos de operadores: citamos:

a) Operadores Matemáticos o Aritméticos: + - x / ( ) etc.

b) Operadores de Relación: >,<, =, <>, >=, <=

DEFINICIÓN DE EXPRESIONES

Expresiones: es la combinación lógica y ordenada de variables, constantes y operadores cuyo


fin es proporcionar un resultado y/o valor

Ejemplo de Expresiones:

a) A= (23 x base)/2
b) 23 > 2x14
c) altura<=1232
d) valor_calculado<>232
e) valor1<>valor2
f) etc.

Ejercitación Grupal:
Actividades: formar grupos de 4 personas. Dados los siguientes ejercicios, identificar cuales
son las variables, constantes, operadores y expresiones.

Por ejemplo:

Algoritmo de la Superficie de un triángulo es sup_tri = (base x altura )/2


base vale 10. (se designa algorítmicamente base=10)
altura vale 12 (se designa algorítmicamente altura=12)
¿Entonces cuanto valdrá la variable sup_tri?
Rta. sup_tri vale 60

La resolución del problema es: sup_tri = (base x altura )/2


(60) = ((10)x(12))/2

Entonces distinguimos los elementos del algoritmo:


Variables numéricas:
sup_tri cuyo valor es 60
base cuyo valor es 10
altura cuyo valor es 12
Constantes numéricas:

Introducción a la Programación 5/42


Introducción a la Programación – Curso de Ingreso

Solo el 2.
Operadores Matemáticos:
()x/
Operadores Lógicos
=
Expresiones
sup_tri = (base x altura )/2

Ejercicios a resolver:

a) lado1=10, lado2=20 calculo=??? calculo= 3x(lado1-lado2)-2


b) c=0, p=12, m=10 resultado=??? resultado=(c+m)/p
c) nombre=”Juan Carlos”, largo=23 total=???? total=nombre+largo
d) largo=23, ancho=12, sup=23 total=???? total=(2+3-1)/4
e) Crear una ejercicio similar a estos y exponerlo en clase.

BLOQUE DOS

DEFINICIÓN INTUITIVA DE PROGRAMA

¿QUÉ ES UN PROGRAMA?

Si llevamos la lógica que un algoritmo es un “camino” que nos conduce a la resolución de un


problema; podemos decir que la aplicación de un algoritmo a la informática se denominaría
PROGRAMA DE COMPUTACIÓN.

ALGORITMO PROGRAMA

Entonces, en un programa de computación se pueden aplicar todos los conocimientos


apropiados sobre algoritmos como ser: variables, constantes, operadores, expresiones. Lo
nuevo que se agrega al concepto de programa es término “Palabra Reservada”. Una palabra
reservada debe ser clara y precisa; y es aquella capaz de ser reconocida por el computador y
llevar a cabo (una orden) durante la ejecución de un programa informático.

En sentido amplio, podemos decir que

Programa: es un secuencia de órdenes claras y precisas ordenadas dadas al computador, que


puede ser capaz de cumplirlas para resolver un problema.

Orden 1
Orden 2
PROGRAMA
Orden 3
...
Orden n

¿Porqué decimos que es una secuencia de Órdenes claras y precisas?


Rta. Porque las ordenes que se dan en un programa deben ser de manera que no contengan
lugar a una doble interpretación, por ejemplo
Si en la vida cotidiana digo la orden: siéntate...!!!

Introducción a la Programación 6/42


Introducción a la Programación – Curso de Ingreso

Entonces la persona al cual yo estoy ordenando puede cumplir mi orden sentándose en una
silla, o en el suelo, o en la mesa, etc.
En cambio si digo: Siéntate en esta silla de madera... , entonces se podrá cumplir la orden sin
lugar a dudas.

¿Porqué decimos que los comandos, órdenes o instrucciones deben estar ordenadas?
Rta. Veamos con un ejemplo: si en la vida cotidiana necesitamos poner en marcha el arranque
de un automóvil, el número los pasos serían:

1. Abrir la puerta
2. Sentarse
3. Colocar la llave en el tambor
4. Dar arranque
5. Escuchar que el motor arranque
6. Se encendió el motor.

Analicemos (descompongamos) nuestro ejemplo. Lo hemos divido en 6 pasos básicos,


asumiendo que se pueden subdividir en muchos mas, ahora nos preguntamos ¿qué pasaría si
permutamos el paso 3 por el 1 y el 4 por el 6? ¿Podríamos cumplir con nuestro fin...?
Lo mismo pasa con nuestros programas, el conjuntos de ordenes que hacemos deben tener un
orden lógico u ordenado o con algún sentido, de manera tal que al ser ejecutado por el
procesador de nuestro computador obtengamos como resultado un programa coherente.

OTRA DEFINICION DE PROGRAMA


Fuente: http://www.wikipedia.org Edición
Española digita, 2010.

Un programa informático es un conjunto de instrucciones que una vez


ejecutadas realizarán una o varias tareas en una computadora. Sin programas,
estas máquinas no pueden funcionar correctamente.[1] [2] Al conjunto general de
programas, se le denomina software y así, se refiere al equipamiento lógico o
soporte lógico de una computadora digital.
En informática, se los denomina comúnmente binarios, (propio en sistemas
unix, donde debido a la estructura de este último, los ficheros no necesitan
hacer uso de extensiones. Posteriormente, los presentaron como ficheros
ejecutables, con extensión .exe, en los sistemas operativos de la familia
Windows) debido a que una vez que han pasado por el proceso de compilación
y han sido creados, las instrucciones que se escribieron en un lenguaje de
programación que los humanos usan para escribirlos con mayor facilidad, se
han traducido al único idioma que la máquina comprende, combinaciones de
ceros y unos llamada código máquina. El mismo término, puede referirse tanto
a un programa ejecutable, como a su código fuente, el cual es transformado en
un binario cuando es compilado.
Generalmente el código fuente lo escriben profesionales conocidos como
programadores. Se escribe en un lenguaje que sigue uno de los siguientes dos
paradigmas: imperativo o declarativo y que posteriormente puede ser
convertido en una imagen ejecutable por un compilador. Cuando se pide que el
programa sea ejecutado, el procesador ejecuta instrucción por instrucción.
De acuerdo a sus funciones, se clasifican en software de sistema y software de
aplicación. En los computadores actuales, al hecho de ejecutar varios
programas de forma simultánea y eficiente, se le conoce como multitarea.

 Ejercicio Grupal:

Introducción a la Programación 7/42


Introducción a la Programación – Curso de Ingreso

Formar grupos de 4 o 5 cinco compañeros y realizar la siguiente actividad:


Consigna: uno de los integrantes del grupo hará la función de un computador; el cual solo
entenderá la orden “presionar”. Las teclas permitidas son las siguientes: números del 0 al 9,
los signos +,-,/,x,(,),=, on, off, m+, m-, mr, mc.
Activades: con estas consignas realizar los siguientes ejercicios:
a) (2+3)x3-2=
b) ((9x8)+2)x(2x6)=
c) crear un ejercicio utilizando suma, resta, multiplicación y división cuyo resultado sea
igual a 24.

Nota: así como en el ejercicio grupal, el integrante que interpretaba las acciones del
computador solo reconocía la orden “presionar”, entonces a la palabra “presionar” la
denominaremos palabra reservada del lenguaje de programación.

Definición de Palabra Reservada: es una expresión o palabra que el computador es capaz de


reconocer y en consecuencia de procesarla. Ejemplos de palabras reservadas de los lenguaje
de programación: print (imprimir), say (mostrar), clear (limpiar), + (sumar), - (restar), etc., etc.

Lenguajes de Programación.

Introducción.
Así como nosotros utilizamos el lenguaje para comunicarnos, también lo los computadores
tienen sus propios lenguajes para procesar información y comunicarse.
Si nosotros solamente hablamos español, entonces no entenderíamos nada de una persona
que hable alemán o hebreo o japonés. Esto es así porque cada lenguaje tiene su propia reglas
de construcción, de significación (mesa en español) (table en ingles), de palabras reservadas,
de reglas gramaticales, sintácticas, morfológicas, fonéticas, etc.

Cada lenguaje de programación esta compuesto por un vocabulario (palabras reservadas) y


una sintaxis determinadas

El Vocabulario es el conjunto de palabras que representan los diferentes comandos o


instrucciones que acepta e interpreta un lenguaje de programación.

La Sintaxis es el conjunto de reglas que se deben seguir para escribir correctamente un


programa

Entonces ampliamos la definición de PROGRAMA:

Orden 1 = Pal. Reservada


+Sintaxis Sintaxis
Orden 2= Pal. Reservada +Sintaxis
PROGRAMA
Orden 3= Pal. Reservada +Sintaxis
...
Orden n= Pal. Reservada +Sintaxis

El computador al ser una máquina cuyo principio de funcionamiento es la electricidad, se


desprende que lo único que puede entender y/o procesar son datos cuyos valores pueden
tener dos estados posibles: el positivo o el negativo. A este lenguaje primario se lo denomina
código binario del computador. Entonces los primeros programadores se comunicaban al
computador a través de este lenguaje binario, por ejemplo para dar la orden de impresión de un
listado de clientes daban la orden, por ejemplo, de 011100110111011 1011101110101; como

Introducción a la Programación 8/42


Introducción a la Programación – Curso de Ingreso

era terriblemente tedioso programar en esta nomenclatura binaria, con el tiempo se fueron
perfeccionando los lenguajes de programación llevándolos a un nivel de entendimiento “lo mas
humano posible”, de esta forma nacieron los denominados “lenguajes de alto nivel”; entonces,
por ejemplo, la orden para imprimir era 101110111010010001111010011001 ahora con un solo
comando “Imprimir” bastaría. Entonces ya no tenemos que preocuparnos por tantos ceros y
unos, sino por palabras reservadas mas entendibles para el humano como ser: imprimir, borrar,
guardar, ordenar, sumar, ....

Existen muchos lenguajes de programación que compiten en el mercado, entre ellos


destacamos: “Lenguaje C”, Fortran, Basic, Cobol, Pascal, Foxpro, Delphi, Visual Basic, Visual
Fox, Visual C, Visual C++, Java, PhP, etc.
Es importante aclarar que no existe un único criterio fundamental en la clasificación de
lenguajes de programación, dependen del posicionamiento de los autores, pero si se puede
hacer una clasificación general y es:
 lenguajes estructurados
 lenguajes orientados a objetos.
La clasificación es amplia y puede variar según el criterio de los autores. Por ahora, nos vamos
a centrar en el estudio del lenguaje estructurado, o también conocido como lenguaje lineal; se
denomina lineal porque estos lenguajes crean programas con un conjunto de líneas de códigos
(órdenes) ordenas lógicamente, tienen un principio y un fin, etc. (se sigue de la definición dada
al comienzo del presente cursillo)

CLASIFICACIÓN BÁSICA DE LENGUAJES

Lenguaje Binario (entiende el Computador, lenguajes que están mas a nivel del Hardware)

Lenguaje Alto Nivel (mas entendible para el humano, es el que vamos a usar...)

PALABRAS RESERVADAS DEL LENGUAJE

Como explicitamos anteriormente, las palabras reservadas del lenguaje son aquellas que el
mismo las puede reconocer e interpretar. No se pueden utilizar para ningún otro fin, por
ejemplo no se puede asignar el nombre de una variable con el de una palabra reservada. Por
ejemplo si estoy trabajando en un lenguaje de programación donde la orden para imprimir un
listado es PRINT , entonces si o si debo utilizar la palabra PRINT para imprimir; pero si estoy
trabajando con otro lenguaje de programación diferente al primero y para imprimir su palabra
reservada DOPRINTER, entonces debo utilizar si o si DOPRINTER para imprimir.

Introducción a la Programación 9/42


Introducción a la Programación – Curso de Ingreso

APRENDIENDO LA LÓGICA DE LA PROGRAMACIÓN MEDIANTE EL USO


DE JUEGOS

Juegos de Lógica Interactiva.

Para hacer uso de los juegos, se deben ingresar a las siguientes sitios web:

 http://armorgames.com/play/6061/light-bot-20
 http://armorgames.com/play/2205/light-bot
 http://www.cnc.una.py/sl/SL-index.html

RESOLUCIÓN DE PROBLEMAS MEDIANTE LA LÓGICA DE LA


ALGORITMIA

A los fines pedagógicos del presente curso, no se utilizarán ningún lenguaje de programación
en particular, sino la aplicación de dos software de licencia Libre (free software) denominados:

 PSEINT - PIPEH PSeudo Interprete, sitio oficial http://pseint.sourceforge.net/,


 SLE Software, sitio oficial http://www.cnc.una.py/sl/SL-index.html

El objetivo del presente curso, es que el alumno aprenda la lógica de resolución de problemas
a través del uso de la algoritmia independientemente del uso de un lenguaje de programación
en particular.

Introducción a la Programación 10/42


Introducción a la Programación – Curso de Ingreso

BLOQUE TRES

INTRODUCCIÓN A PSEINT

Consideraciones Previas:

Dificultad de la Programación respecto al Idioma.

Uno de las mayores dificultades con las que se encuentran los hispanoparlantes que empiezan
a programar es el idioma.

Por una parte, la mayoría de lenguajes de programación se basan en el inglés, por lo que un
estudiante de habla hispana tiene que aprender que "write" o "print" son las palabras
equivalentes a "escribir".

Además, la mayoría de lenguajes tienen órdenes que realmente son abreviaturas de una o
varias palabras inglesas, de modo que el aprendiz tiene que entender o memorizar palabras
como "printf" o "writeln" incluso para realizar las tareas más sencillas. Para colmo, la mayoría
de entornos de programación están también en inglés (menús, mensajes de error y aviso, etc).

Por eso, una herramienta habitual para ayudar a los que empiezan es el "Pseudocódigo", algo
así como un falso lenguaje de programación en español, que permite asimilar con más facilidad
las ideas básicas. El pseudocódigo soluciona el primer problema: no hace falta aprender otros
idiomas para entender los conceptos básicos. Pero "históricamente" no solucionaba el
problema del "entorno de programación": no existían entornos para programar en
pseudocódigo, así que típicamente ha sido una herramienta para usar "con lapiz y papel".

Algunas universidades han creado sus propios "intérpretes de pseudocódigo", para ayudar a
los alumnos de primer curso a crear los programas "pensando en español", pero permitiéndoles
además probar esos programas desde un entorno "casi real".
En cuanto a estos "intérpretes de pseudocódigo", que permiten teclear nuestro programa y ver
cual sería el resultado, hay uno que me parece especialmente bueno: PSEINT, que además
realza con colores la sintaxis de nuestros programas para ayudar a detectar errores, tiene
autocompletado para permitir ganar tiempo, está disponible para Windows y Linux, es gratuito
(1), etc. Éste es el que usaremos en este curso introductorio.

Eso sí, no existe un estándar claro en cuanto a pseudocódigo, puede que la sintaxis que
empleen en tu universidad o centro de estudios sea ligeramente diferente a la que veremos
aquí. Aun así, esperamos poder ayudarte a coger con facilidad las nociones básicas.

(1) PSEINT realmente es "de código abierto": cualquiera puede ver cómo está creado, de forma
que incluso si su autor perdiera el interés por el proyecto, otras personas podrían retomarlo, lo
que le garantiza una vida mucho mayor. PSEINT se puede descargar desde
http://pseint.sourceforge.net/

Características del PseInt

PseInt, a pesar de ser una herramienta útil, es muy limitada. De hecho, en 2010 parece estar
abandonado por su autor original, quien ni siquiera responde a los mensajes, por lo que es de
suponer que sea relativamente difícil incluso que otro programador tome el proyecto en su
lugar para solucionar alguno de los problemas que tiene o para añadirle más posibilidades.
Si no te asusta el inglés, bien porque lo conozcas o bien porque estés dispuesto a aprender 30
palabras, estás de suerte: el pseudocódigo en inglés se parece a varios lenguajes de
programación, así que podrías aprender los conceptos básicos usando "entornos reales".
Posiblemente Pascal sería el lenguaje que más se parecería al pseudocódigo, y por eso
durante mucho tiempo se ha considerado un lenguaje muy adecuado para aprender. Pero
como ya hay muchos cursos de Pascal.

Introducción a la Programación 11/42


Introducción a la Programación – Curso de Ingreso

Primeros pasos con PSeInt

Vamos a empezar por lo más sencillo: escribir en pantalla.


Si queremos crear un programa que escriba algo en pantalla, usaremos la orden ESCRIBIR. A
continuación de esta palabras, entre comillas, escribiremos el texto que queremos que
aparezca en pantalla.
Escribir "Hola"
Crear un programa que escriba Hola en la pantalla usando PSEINT también es igual de simple.
En el caso de PSEINT, cada programa debe encerrarse entre las palabras "Proceso" (para
indicar dónde comienza) y "FinProceso" (para señalar dónde termina). Pero eso no añade
ninguna dificultad, porque cuando entramos a PSEINT, ese esqueleto de programa ya aparece
escrito:

Nuestro programa debería tener un nombre: se nos propone que se llame "sin_titulo", pero
mejor podemos hacer clic en esa palabra y escribir otro título que recuerde mejor lo que va a
hacer nuestro programa. De momento, bastará con "Ejemplo001", por eso de que es nuestro
primer ejemplo.

Después, bajamos a la siguiente línea y comenzamos a teclear la palabra "Escribir". Veremos


que PSEINT se da cuenta, y nos recuerda cómo era la orden exacta, incluso cuando apenas
llevamos unas pocas letras :

Introducción a la Programación 12/42


Introducción a la Programación – Curso de Ingreso

Cuando terminamos la palabra "Escribir", se nos propone que escribamos una o más
expresiones, separadas por comas; en nuestro caso, será la palabra "Hola", entre comillas:

Nuestro programa está completo: podemos comprobar su funcionamiento pulsando el botón


que recuerda al "Play" de los equipos de música:

Y entonces aparecerá una nueva ventana que nos muestra el resultado de nuestro programa
(por supuesto, se trata de la palabra Hola):

*** Ejecución iniciado. ****

Hola

*** Ejecución Finalizada. ****

Introducción a la Programación 13/42


Introducción a la Programación – Curso de Ingreso

Por supuesto, no sólo podemos escribir textos prefijados. Podemos usar nuestro ordenador
como calculadora, que nos muestre el resultado de una operación aritmética:

Proceso Ejemplo002
Escribir 20+30

FinProceso

Y como despedida por hoy, vamos a hacer algo un poco más complejo: vamos a sumar dos
números que no estén prefijados dentro del programa, sino que deberá teclear el usuario. Para
eso, usaremos la orden "Leer", que nos permite leer lo que el usuario teclee y dejarlo guardado
para utilizarlo después. Debemos dar un nombre temporal a estos datos que leemos del
usuario. Parece razonable que el primer número que teclee el usuario se llame algo como
"primerNumero", y el segundo sea algo como "segundoNumero". El resultado que queremos
obtener será la suma de ese primer número y ese segundo número, así que nuestro programa
podría quedar así:

Proceso Ejemplo003
Escribir "Dime un numero"
Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Escribir "Su suma es ", primerNumero + segundoNumero

FinProceso

En la próxima entrega puntualizaremos un poco más lo que hemos hecho en este último
programa y veremos cómo comprobar condiciones. Eso será dentro de una semana...

Pseudocódigo. 3 - Más sobre variables

Nuestro último programa pedía dos números al usuario y mostraba su suma, así

Proceso Ejemplo003
Escribir "Dime un numero"
Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Escribir "Su suma es ", primerNumero + segundoNumero
FinProceso

Esas dos palabras, "primerNumero" y "segundoNumero" representan a números que no tienen


un valor prefijado. Eso es lo que llamaremos "variables". En las variantes de pseudocódigo que
emplean en muchas universidades y centros de estudio (ya habíamos avisado de que no existe
ningún estándar totalmente asentado) debemos "declarar las variables" antes de usarlas: decir
qué tipo de dato es el que querremos representar con ese nombre. En nuestro ejemplo anterior
se trataba de dos números enteros, así que el programa sería:

Proceso Ejemplo003b

Variable primerNumero: Entero


Variable segundoNumero: Entero

Escribir "Dime un numero"


Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero
Escribir "Su suma es ", primerNumero + segundoNumero
FinProceso

Introducción a la Programación 14/42


Introducción a la Programación – Curso de Ingreso

Esto se debe a que en la mayoría de lenguajes de programación "reales" es necesario detallar


qué tipo de datos querremos guardar en cada variable, para que la herramienta de
programación sepa exactamente qué cantidad de memoria será necesaria para guardar ese
dato.
Insisto: no es el caso de PSEINT; con esta herramienta no es necesario declarar las variables,
el propio entorno presupone de qué estamos hablando.

Por otra parte, no siempre querremos que el valor de una variable lo introduzca el usuario.
Habrá veces que seamos nosotros mismos los que demos el valor inicial a una variable desde
nuestro programa, bien para usarlo en una serie de cálculos posteriores, o bien por legibilidad
(es más fácil entender algo como "longitudCircunferencia = 2 * pi * radio" que algo como
"longitudCircunferencia = 6.28 * radio".
La forma de dar un valor a una variable es con la secuencia de símbolos "<-":
radio <- 3
longitudCircunferencia <- 2 * pi * radio
(esos símbolos representan una flecha, para indicar que el valor 3 se va a guardar en el
espacio de memoria reservado para la variable llamada "radio").

¿Y qué ocurre si usamos una variable sin haberle dado valor? Esto pasa a veces por despiste,
si tecleamos mal el nombre de una variable, como en este fragmento de programa:
primerNumero <- 2
Escribir primerNmero

Si lees ese fragmento con cuidado, verás que el nombre de la variable que aparece en la
segunda línea es incorrecto, falta la letra "u". ¿Qué sucede en ese caso? En algunos lenguajes
(pocos, afortunadamente) se da por sentado que es una variable nueva, y se le da el valor 0;
en el caso de PseInt, igual que en la mayoría de lenguajes actuales, obtendremos un mensaje
de error que nos dirá que estamos usando una variable que no tenía valor.

En la próxima entrega veremos cómo comprobar condiciones...

4 - Comprobando condiciones (1)


En casi cualquier secuencia de instrucciones para un ordenador, será vital poder comprobar si
se cumple alguna condición. Una primera forma básica de comprobar condiciones es con la
orden "SI". Su uso básico sería

Si condicion Entonces
pasos_a_dar_si_es_verdadero
Si No
pasos_a_dar_si_es_falso
FinSi

El bloque "Si No" es opcional: podemos optar por no indicar lo que queremos que se haga
cuando no se cumpla la condición.
Para ayudarnos a planificar el comportamiento de una secuencia de instrucciones, se suele
usar como ayuda los llamados "diagramas de flujo". En estos diagramas, una condición se
representa como un rombo, del que salen dos flechas: una para la secuencia de acciones a
realizar si se cumple la condición y otra para cuando no se cumple:

Introducción a la Programación 15/42


Introducción a la Programación – Curso de Ingreso

Así, si en PSeInt hacemos clic en el icono de la parte derecha que representa la condición SI,
aparece un esqueleto de programa casi completo, para que hagamos los cambios que nos
interesen:

Sólo tenemos que escribir la condición que realmente nos interesa, y la serie de pasos a dar si
se cumple y si no se cumple, de modo que nuestro programa podría quedar así:
Proceso Ejemplo004

Escribir "Dime un numero"


Leer primerNumero
Escribir "Dime otro numero"
Leer segundoNumero

Si primerNumero > segundoNumero Entonces


Escribir "El primero es mayor"
Sino
Escribir "El segundo es mayor"
FinSi

FinProceso

Su resultado sería éste:

*** Ejecución Iniciada.


Dime un numero
>3
Dime otro numero
>4
El segundo es mayor
*** Ejecución Finalizada. ****

Introducción a la Programación 16/42


Introducción a la Programación – Curso de Ingreso

En ese ejemplo hemos comparado si un valor es mayor que el otro (>). Los operadores de
comparación que tenemos disponibles son:

Operador relacional Significado Ejemplo


> Mayor que 3>2
< Menor que 'ABC'<'abc'
= Igual que 4=3
<= Menor o igual que 'a'<='b'
>= Mayor o igual que 4>=5

También podemos comprobar varias condiciones a la vez, para hacer construcciones como: "si
a es mayor que b y b es mayor que c", o como "si a es igual a 1 o b es igual a 1". Los
operadores lógicos que de los que disponemos son:

Operador lógico Significado Ejemplo


&óY Conjunción ( y ). (7>4) & (2=1) //falso
|óO Disyunción (o). (1=1 | 2=1) //verdadero
~ ó NO Negación (no). ~(2<5) //falso

Los operadores que podemos usar para comparar no son exactamente los mismos que en
PseInt:

Operador relacional Significado Ejemplo


> Mayor que 3>2
< Menor que 2<3
= Igual que 3 == 3
= Distinto de 4 != 3
<= Menor o igual que 7 <= 6
>= Mayor o igual que 4 >= 5

Y las condiciones se pueden enlazar usando "y" (que se escribirá en inglés, "and"), "o" (que
será "or") o "no" ("not").
Ejercicio propuesto: un programa que pida al usuario 3 números y diga cual es el mayor de
los tres.
En la próxima entrega veremos más formas de comprobar condiciones...

5 - Comprobando condiciones (2)

Es frecuente tener que comprobar más de una condición a la vez, o bien varias
condiciones consecutivas. En concreto, un caso espercialmente habitual es el
de que una variable pueda tomar distintos. Por ejemplo, ciertas notas
numéricas tienen "nombres" en español: un 5 es un aprobado, un 9 y un 10 son
sobresaliente, etc. Si queremos hacer un programa que convierta de la nota
numérica a su equivalente escrito, podríamos emplear varias órdenes IF, una
tras la otra. Pero en muchos lenguajes de programación (y por tanto, también

Introducción a la Programación 17/42


Introducción a la Programación – Curso de Ingreso

en muchas variantes de pseudocódigo) existe una alternativa más compacta y


más legible: la orden "SEGUN". Esta órden permite hacer unas cosas u otras
según el valor que tome una variable. Su uso sería así:
Segun variable Hacer
valor1: pasos_a_dar_si_es_el_valor1
valor2: pasos_a_dar_si_es_el_valor2
valor3: pasos_a_dar_si_es_el_valor3
De Otro Modo:
pasos_a_dar_si_es_otro_valor
FinSegun

El bloque "De Otro Modo" es opcional: si detallamos todos los valores posibles, no sería
necesario utilizarlo.
El número de valores que podemos probar es indefinido: no tiene por qué ser 3, sino que
pueden ser menos casos o muchos más.
Según la variante de pseudocódigo (o el lenguaje de programación) que empleemos, puede
haber restricciones en el tipo de datos que es aceptable. Por ejemplo, en el caso de PseInt, la
variable tiene que tener un valor numérico, no puede ser un texto.

Al igual que ocurría con la orden SI, existe un símbolo que podemos usar en los diagramas de
flujo para ayudarmos a planificar nuestro programa (aunqe este símbolo está menos extendido
que el de SI):

Así, si en PseInt hacemos clic en el icono de la parte derecha que representa la condición SI,
aparece un esqueleto de programa casi completo, para que hagamos los cambios que nos
interesen:

Introducción a la Programación 18/42


Introducción a la Programación – Curso de Ingreso

Sólo tenemos que escribir la condición que realmente nos interesa, y la serie de pasos a dar si
se cumple y si no se cumple, de modo que nuestro programa podría quedar así:

Proceso EjemploCasos
Escribir "Introduzca la nota";
Leer nota;
Segun nota Hacer
10:
Escribir "Ha obtenido un sobresaliente alto";
9:
Escribir "Ha obtenido un sobresaliente bajo";
8:
Escribir "Ha obtenido un notable alto";
7:
Escribir "Ha obtenido un notable bajo";
6:
Escribir "Ha obtenido un aprobado alto";
5:
Escribir "Ha obtenido un aprobado";
De Otro Modo:
Escribir "Ha suspendido";
FinSegun
FinProceso

Introducción a la Programación 19/42


Introducción a la Programación – Curso de Ingreso

Su resultado sería éste:

*** Ejecución Iniciada ***


Introduzca la nota
>5
Ha obtenido un aprobado
*** Ejecución Finalizada ***

Pero no siempre habrá que comprobar condiciones una única vez. Es muy frecuente que haya
que hacerlo de forma repetitiva. Por ejemplo, "pedir una contraseña al usuario hasta que sea la
correcta", o aún más cercano al mundo real, "pedir una contraseña al usuario hasta que sea la
correcta o agote sus intentos". De eso hablaremos en la próxima entrega.

6 - Condiciones repetitivas
Habitualmente, una condición se deberá comprobar más de una vez. Por ejemplo, una
condición de error puede repetirse: el usuario que introduce mal una contraseña por primera
vez puede equivocarse en una segunda ocasión.
Por eso, igual que cualquier lenguaje de programación tiene una orden "si", la gran mayoría de
ellos tendrá una orden "mientras", que permite que un fragmento de un programa se repita
mientras una cierta condición se siga cumpliendo (por ejemplo, mientras la contraseña que
teclee el usuario sea incorrecta, el usuario deberá volver a introducirla).
También existe un símbolo habitual en los diagramas de flujo para representar este tipo de
condiciones repetitivas, en las que si se cumple la condición, se realiza una serie de acciones y
se vuelve a comprobar la condición, y así sucesivamente hasta que la condicion no se cumpla:

Y en el caso de PseInt, ese icono generaría un esqueleto de programa como éste:

Introducción a la Programación 20/42


Introducción a la Programación – Curso de Ingreso

Por ejemplo, un programa capaz de sumar muchos números, todos los que el usuario quisiera,
y en el que hubiera que escribir "0" para indicar que queremos terminar, podría ser así:

Proceso Mientras01
Escribir "Dime un numero";
Leer x;
suma <- 0;
Mientras x <> 0 Hacer
suma <- suma + x;
Escribir "Hasta ahora, la suma es ", suma;
Escribir "Dime otro numero";
Leer x;
FinMientras
Escribir "Terminado";
FinProceso

Y su ejecución mostraría algo como:

*** Ejecución Iniciada ***


Dime un número
>5

Hasta ahora la suma es 5


Dime un número
>4
Hasta ahora la suma es 9
Dime un número
>2
Hasta ahora la suma es 11
Dime un número
>0
Terminado
*** Ejecución Finalizada ***

Introducción a la Programación 21/42


Introducción a la Programación – Curso de Ingreso

Hay más formas de comprobar condiciones repetitivas. Pronto las veremos...

Pero esto no es exactamente lo mismo que obtenemos con el programa en PseInt.

7 - Condiciones repetitivas (2)


Es también muy frecuente que un bloque de programa que quizá se repita, deba ejecutarse al
menos una vez. Por ejemplo, si queremos pedir un dato al usuario, quizá exista algún error y
haya que insistir, pero al menos deberemos pedírselo una primera vez.
En estos casos, la estructura "mientras" no es la más adecuada: no podemos comprobar la
condición al principio, sino después de haber pedir el valor. En estos casos (que son muy
frecuentes), sería más razonable usar otra estructura de programación en la que la condición
se compruebe después de dar ciertos pasos. Esa estructura es "repetir... hasta":
Su representación en un diagrama de flujo sería:

Y en el caso de PseInt, ese icono generaría un esqueleto de programa como éste:

Introducción a la Programación 22/42


Introducción a la Programación – Curso de Ingreso

Por ejemplo, un programa que pida al usuario una clave de acceso, y que no le permita seguir
hasta que la introduzca correctamente, se podría hacer así:

Proceso Repetir01
Repetir
Escribir "Dime tu clave de acceso";
Leer clave;
Si clave <> 1234 Entonces
Escribir "Clave incorrecta";
FinSi
Hasta Que clave=1234
Escribir "Bienvenido!";
FinProceso

Cuyo resultado sería:

*** Ejecución Iniciada ***


Dime tu clave de acceso
> 234

Clave Incorrecta
Dime tu clave de acceso
> 123

Clave Incorrecta
Dime tu clave de acceso
> 543
Clave Incorrecta

Dime tu clave de acceso


> 1234
Bienvenido!
*** Ejecución Finalizada ***

Queda otra forma de repetir fragmentos de programa. Pronto estaremos con ella...

8 - Repetir un cierto número de veces


En muchas ocasiones, no querremos que algo se repita mientras se cumpla una condición,
sino un cierto número de veces. Por ejemplo, para escribir "Hola" 3 veces en pantalla existe
una orden más cómoda que la orden "mientras" o la orden "repetir... hasta".
Es la orden "para", que hace que una variable tome una serie de valores que se van
incrementando. Por ejemplo, una estructura como "para x con valores desde 2 hasta 4" haría
que un bloque de programa se repitiera 3 veces. En la primera repetición, la variable "x" tendría
el valor 2, en la segunda tendría el valor 3 y en la tercera tendría el valor 4. La sintaxis exacta
en PseInt es: "Para variable <- valorInicial Hasta valorFinal Hacer"
Su representación en un diagrama de flujo sería:

Introducción a la Programación 23/42


Introducción a la Programación – Curso de Ingreso

Y en el caso de PseInt, ese icono generaría un esqueleto de programa como éste:

Por ejemplo, un programa que mostrara los números del 1 al 10, podría ser:

Proceso Para01
Para x <- 1 Hasta 10 Hacer
Escribir x;
FinPara

FinProceso

Cuyo resultado sería:

*** Ejecución Iniciada ***


1
2
3
4
5
6
7
8
9
10
*** Ejecución Finalizada ***

Introducción a la Programación 24/42


Introducción a la Programación – Curso de Ingreso

Si no queremos avanzar de uno en uno, podemos indicar otro tamaño de "paso"::


Proceso Para02
Para x <- 10 Hasta 20 Con Paso 2 Hacer

Escribir x;
FinPara
FinProceso

Y obtendríamos:

*** Ejecución Iniciada ***


10
12
14
16
18
20
*** Ejecución Finalizada ***

Hemos visto casi todas las construcciones que podremos encontrar en los lenguajes de
programación convencionales (y, por tanto, al planificarlos usando pseudocódigo). En la
próxima entrega veremos alguna otra posibilidad, como el manejo de matrices y las funciones
matemáticas, para pasar después a algunos ejemplos completos.

10 - Funciones matemáticas

Casi cualquier lenguaje de programación tiene incorporadas ciertas funciones matemáticas, de


modo que nos permita calcular raíces cuadradas, logaritmos, senos y cosenos, etc.
Lo mismo ocurre en muchas variantes de pseudocódigo. Por ejemplo, PseInt incluye las
siguientes funciones matemáticas:

Función Significado
RC(X) Raíz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X
EXP(X) Función Exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
TAN(X) Tangente de X
ASEN(X) Arco seno de X
ACOS(X) Arco coseno de X
ATAN(X) Arco tangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero más cercano a X
AZAR(X) Entero aleatorio entre 0 y x-1

Introducción a la Programación 25/42


Introducción a la Programación – Curso de Ingreso

(Si no sabes qué hace alguna de estas funciones, no te preocupes mucho, es señal de
que hasta ahora no la has necesitado... Las más importantes de ellas las probaremos
directamente como parte de los ejercicios)

11 - Ejercicios resueltos
a) Enunciados
1.- Crear un algoritmo que escriba "Hola" cinco veces.
2.- Crear un algoritmo que pida al usuario un número y le diga si es positivo, negativo o
cero.
3.- Crear un algoritmo que pida al usuario 5 datos y muestre su suma.
4.- Crear un algoritmo que calcule la raíz cuadrada del número que introduzca el
usuario. Si se introduce un número negativo, debe mostrar un mensaje de error y volver
a pedirlo (tantas veces como sea necesario).
5.- Crear un algoritmo que pida al usuario un número y un símbolo, y dibuje un
cuadrado usando ese símbolo. El cuadrado tendrá el tamaño que ha indicado el
usuario. Por ejemplo, si el usuario introduce 4 como tamaño y * como símbolo, deberá
escribirse algo como:
****
****
****
****

b) Ejemplos de soluciones
1.- Crear un algoritmo que escriba "Hola" cinco veces.
// 1.- Crear un algoritmo que escriba "Hola" cinco veces.

Proceso Resuelto01
Para x <- 1 Hasta 5 Hacer

Escribir "Hola";
FinPara
FinProceso

2.- Crear un algoritmo que pida al usuario un número y le diga si es positivo, negativo o cero.
// 2.- Crear un algoritmo que pida al usuario un numero y le diga si es positivo, negativo o cero.

Proceso Resuelto02
Escribir "Dime un numero";
Leer x;
Si x > 0 Entonces
Escribir "Es positivo";
Sino
Si x < 0 Entonces
Escribir "Es negativo";
Sino
Escribir "Es cero";
FinSi
FinSi
FinProceso

3.- Crear un algoritmo que pida al usuario 5 datos y muestre su suma.


// 3.- Crear un algoritmo que pida al usuario 5 datos y muestre su suma.
// Forma (a), sin usar matrices

Introducción a la Programación 26/42


Introducción a la Programación – Curso de Ingreso

Proceso Resuelto03
suma <- 0
Para x <- 1 Hasta 5 Hacer
Escribir "Dime un dato";
Leer x;
suma <- suma + x;
FinPara
Escribir "Su suma es ", suma;
FinProceso
o de forma alternativa, usando matrices:
// 3.- Crear un algoritmo que pida al usuario 5 datos y muestre su suma.
// Forma (b), usando matrices

Proceso Resuelto03

Dimension dato[5]

Para x <- 1 Hasta 5 Hacer

Escribir "Dime un dato";


Leer dato[x];
FinPara

suma <- 0

Para x <- 1 Hasta 5 Hacer


suma <- suma + dato[x];
FinPara

Escribir "Su suma es ", suma;


FinProceso

4.- Crear un algoritmo que calcule la raíz cuadrada del número que introduzca el usuario.
Si se introduce un número negativo, debe mostrar un mensaje de error y volver a pedirlo
(tantas veces como sea necesario).
// 4.- Crear un algoritmo que calcule la raíz cuadrada del número
// que introduzca el usuario. Si se introduce un número negativo,
// debe mostrar un mensaje de error y volver a pedirlo
// (tantas veces como sea necesario).

Proceso Resuelto04

Repetir
Escribir "Dime un numero";
Leer x;
Si x < 0 Entonces

Escribir "No puede ser negativo";


FinSi
Hasta Que x >= 0

Escribir "Su raiz es ", rc(x);

FinProceso

Introducción a la Programación 27/42


Introducción a la Programación – Curso de Ingreso

5.- Crear un algoritmo que pida al usuario un número y un símbolo, y dibuje un


cuadrado usando ese símbolo.

El cuadrado tendrá el tamaño que ha indicado el usuario.


(Se puede plantear en pseudocódigo, pero no funcionará correctamente en PseInt -al menos
en la versión 2009.04- porque no permite escribir sin avanzar de línea)
// 5.- Crear un algoritmo que pida al usuario un número y un símbolo,
// y dibuje un cuadrado usando ese símbolo. El cuadrado tendrá el tamaño
// que ha indicado el usuario.

// No funciona con PseInt de 2009.04 porque no permite


// escribir sin avanzar de l&iacute;nea

Proceso Resuelto05
Escribir "Dime el lado";
Leer lado;

Escribir "Dime el simbolo de relleno";


Leer simbolo;

Para fila<-1 Hasta lado Hacer

Para columna <- 1 Hasta lado Hacer

EscribirSinAvanzar simbolo ; // Escribir sin bajar de línea


FinPara

Escribir ""; // Avance de línea tras cada fila


FinPara

FinProceso

BLOQUE CUATRO

INTRODUCCIÓN AL SOFTWARE SL
Bienvenidos a la página de SL
SL es un lenguaje diseñado para apoyar la formación profesional de estudiantes de
Informática. Las construcciones del lenguaje fueron cuidadosamente seleccionadas para que el
alumno se concentre en la búsqueda de las soluciones algorítmica apropiadas, obviando
detalles de implementación que seguramente tendrá ocasión de estudiar en otras etapas de su
aprendizaje.
El lenguaje presenta características que lo hacen apropiado para expresar algoritmos de las
etapas iniciales del aprendizaje, pero simultáneamente reúne un rico conjunto de
construcciones que posibilitan el tratamiento de tópicos más avanzados de estructuras de
datos y programación modular.
Las principales características del lenguaje se describen aquí. También puede encontrar
algunos ejemplos sencillos.

Introducción a la Programación 28/42


Introducción a la Programación – Curso de Ingreso

El entorno de desarrollo se llama SLE. La versión más reciente de SLE está disponible para
Windows (Windows 95/98, 2000, NT, XP) y Linux.

SL es gratuito
Si usted es docente y quiere utilizarlo como apoyo a su actividad educativa, simplemente
puede descargar el instalador y realizar las copias para sus alumnos, ya que SL es gratuito. Si
desea, puede enviar un email a soporte-sl@cnc.una.py con sus sugerencias y comentarios.
Quién usa SL
SL está en uso desde hace ya varios años en varias universidades del Paraguay (entre ellas la
UNA y la UCA). Además, varios colegios técnicos lo utilizan también como su lenguaje de
introducción a la programación.

Bienvenidos a la página de SL
SL es un lenguaje diseñado para apoyar la formación profesional de estudiantes de
Informática. Las construcciones del lenguaje fueron cuidadosamente seleccionadas para que el
alumno se concentre en la búsqueda de las soluciones algorítmica apropiadas, obviando
detalles de implementación que seguramente tendrá ocasión de estudiar en otras etapas de su
aprendizaje.
El lenguaje presenta características que lo hacen apropiado para expresar algoritmos de las
etapas iniciales del aprendizaje, pero simultáneamente reúne un rico conjunto de
construcciones que posibilitan el tratamiento de tópicos más avanzados de estructuras de
datos y programación modular.
Las principales características del lenguaje se describen aquí. También puede encontrar
algunos ejemplos sencillos.
El entorno de desarrollo se llama SLE. La versión más reciente de SLE está disponible para
Windows (Windows 95/98, 2000, NT, XP) y Linux.

SL es gratuito
Si usted es docente y quiere utilizarlo como apoyo a su actividad educativa, simplemente
puede descargar el instalador y realizar las copias para sus alumnos, ya que SL es gratuito. Si
desea, puede enviar un email a soporte-sl@cnc.una.py con sus sugerencias y comentarios.
Quién usa SL
SL está en uso desde hace ya varios años en varias universidades del Paraguay (entre ellas la
UNA y la UCA). Además, varios colegios técnicos lo utilizan también como su lenguaje de
introducción a la programación.

Principales características de SL
 Posee un conjunto simplificado de tipos de básicos: numéricos (enteros y reales, sin distinción),
cadenas y booleanos.
 Se acepta la ñ (mayúscula y minúscula) como carácter constituyente de un identificador.
 Pueden definirse registros y arreglos uni- y multidimensionales de cualquier tipo. Los arreglos
pueden tener un tamaño fijo o se declarados “abiertos”, en cuyo caso pueden ser
“dimensionados” durante la ejecución.
 Las cadenas son dinámicas, es decir, su longitud se ajusta automáticamente para contener la
secuencia de caracteres que se requiera, sin obligar a la definición explícita de una longitud
máxima.
 Los subprogramas comprenden funciones y subrutinas, los que pueden recibir parámetros por
valor o por referencia. Las funciones pueden retornar valores de cualquier tipo de datos,
incluyendo registros y arreglos.
 Los subprogramas no necesitan “prototipos” y pueden aparecer en cualquier orden dentro del
cuerpo del programa fuente.
 Las variables, nombres de tipos de datos y constantes pueden ser globales o pertenecer en
ámbito un subprograma en particular.
 La inicialización de las variables puede combinarse con su declaración. Incluso el tipo de dato
puede omitirse si los valores iniciales son expresiones que corresponden a uno de los tipos
primitivos.
 Cuenta con un rico conjunto de operadores aritméticos y relacionales lógicos. Además, se
soporta concatenación de cadenas y de acceso a cada carácter en forma individual y directa,
como si la cadena fuese un vector.

Introducción a la Programación 29/42


Introducción a la Programación – Curso de Ingreso

 Se provee una serie de funciones y subrutinas predefinidas que simplifican la programación


(funciones matemáticas varias, de manejo de cadenas, de generación de números
pseudoaleatorios, de transformación de datos, etc).
 La entrada/salida es muy simple y se adapta tanto a la lectura/grabación de archivos como a la
interacción con el usuario a través del teclado y la pantalla.

Novedades

A mediados de febrero del 2004 se ha publicado SLE versión 2. Esta versión está disponible
para Windows (Windows 95/98, 2000, NT, XP) y Linux.
SLE versión 2 incorpora todas las características presentes en la versión previa y agrega:
 Coloración de los elementos sintácticos del programa fuente, con lo que es más
sencillo identificar las estructuras del programa.
 Ayuda en línea, con capacidad de búsqueda. Los capítulos que inicialmente se
incluyen en la ayuda se refieren a las funciones y procedimientos incorporados.
Paulatinamente se incorporarán otros elementos del lenguaje y el entorno, como ser
las declaraciones, las sentencias, el uso del depurador y los mensajes de error.
 Impresión del programa fuente en modo gráfico, incluyendo soporte para
impresoras láser y a chorro de tinta. Nota: En Linux se requiere una impresora
PostScript o un conversor a este lenguaje de impresión.
 Ventana independiente para el programa SL en ejecución, con lo que resulta
mucho más sencillo ver los cambios que se van produciendo en la pantalla como
consecuencia de la ejecución del programa SL.
 Histórico de valores ingresados previamente, haciendo que la ejecución repetida de
un programa, por ejemplo cuando se lo está depurando, sea mucho más rápida, pues
los valores de prueba se tipean una sola vez.

SLE en acción
A continuación se muestra un ejemplo de SLE versión 2 durante la depuración de un
programa sobre Windows XP. En la imagen puede apreciarse el editor, el evaluador de
expresiones, la ventana de ejecución y la indicación de la línea que se ejecutaría a
continuación.

Introducción a la Programación 30/42


Introducción a la Programación – Curso de Ingreso

Programas fuente de ejemplo


Ejemplo 1. Cálculo del Máximo Común Divisor
/*
* Cálculo del máximo común divisor utilizando el algoritmo
* de Euclides.
*
* (c) jsegovia@cnc.una.py
*/
var
a, b : numerico
inicio
imprimir ("Ingrese dos enteros positivos:")
leer (a, b)
si ( (a < 1) or (b < 1) ) {
terminar (“\nLos valores ingresados deben ser positivos”)
}
mientras (a <> b ) {
si ( a > b ) {
a = a - b
sino
b = b - a
}
}
imprimir (“\nEl MCD es “, a)
fin

Ejemplo 2. Cálculo del Mínimo Común Múltiplo


/*
* Cálculo del mínimo común múltiplo, usando la relación
*
* a * b
* MCM(a,b) = ------------
* MCD (a, b)
*
* (c) jsegovia@cnc.una.py
*/
var
a, b : numerico
inicio
imprimir ("Ingrese dos enteros positivos:")
leer (a, b)
imprimir (“\nEl MCM de “, a, “ y “, b, “ es “,
(a*b) / MCD (a, b))
fin

sub MCD (a, b : numerico) retorna numerico


inicio
mientras (a <> b ) {
si ( a > b ) {
a = a - b
sino
b = b - a
}
}
retorna a
fin

Introducción a la Programación 31/42


Introducción a la Programación – Curso de Ingreso

Ejemplo 3. El clásico factorial


/*
* Este es el clásico ejemplo del cálculo del factorial
* de un entero positivo n.
*
* (c) jsegovia@cnc.una.py
*/
var
n : numerico
inicio
imprimir ("\nCALCULO DE FACTORIAL",
"\n--------------------",
"\nIngrese un numero (0-n):")
leer (n)
si ( n >= 0 && n == int (n) ) {
imprimir ("\n\n\n", n, "!=", fact (n))
sino
imprimir ("\nNo definido para ", n)
}
fin

sub fact (n : numerico) retorna numerico


/*
* Calcula el factorial de n. Imprime los valores que
* se usaron en la etapa del cálculo.
*/
var
r : numerico
inicio
si ( n == 0 ) {
r = 1
sino
imprimir ("\n", n, "! = ", n, " x (", n-1, "!)")
r = n*fact(n-1)
}
retorna r
fin

sub fact2 (n : numerico) retorna numerico


/*
* Una versión más compacta de fact(), que no imprime el
* “rastro” de los valores intermedios.
*/
inicio
retorna ifval ( n == 0,
1,
n*fact2(n-1))
fin

Ejemplo 4. Lectura y ordenación de un vector


/*
* Lee un vector de 10 elementos numéricos, ordena
* ascendentemente sus elementos y los imprime.
* La ordenación se hace con el algoritmo de la “burbuja”.
*

Introducción a la Programación 32/42


Introducción a la Programación – Curso de Ingreso

* (c) jsegovia@cnc.una.py
*/
var
A : vector [10] numerico
m, n : numerico
inicio
imprimir (“\nIngrese “, alen (A), “ números separados por
comas:\n”)
leer (A)
desde m=1 hasta alen(A)-1 {
desde n=m+1 hasta alen (A) {
si ( A [m] > A [n] ) {
intercambiar (A [m], A [n])
}
}
}
imprimir ("\nEl vector ordenado es:\n”, A)
fin

Ejemplo 5. Transpuesta de una matriz


/*
* Dado un arreglo bidimensional (matriz), genera e imprime
* su traspuesta.
*
* (c) jsegovia@cnc.una.py
*/
var
/*
* Las 3 últimas filas de M serán iguales.
*/
M : matriz [5, 3] = {{7, 12, 5},
{1, 4, 22},
{6, 20, 13},
...
}
T : matriz [*,*] numerico
inicio
impr_mat (“Matriz original:\n”, M)
transponer (M, T)
impr_mat (“\nLa traspuesta es:\n”, T)
fin

sub transponer ( M : matriz [*,*] numerico


ref R : matriz [*,*] numerico)
/*
* trasponer() produce la transpuesta de M y lo deposita
* en R.
* M puede tener cualquier tamaño, con tal de que
* sea bidimensional y rectangular (cantidad igual de
* elementos por cada fila).
* R debe ser un arreglo abierto.
*/
var
cant_filas = alen (M)
cant_cols = alen (M [1])
filas, cols : numerico
inicio
/*

Introducción a la Programación 33/42


Introducción a la Programación – Curso de Ingreso

* Nótese que las filas y columnas están en orden


* inverso en el siguiente dim().
*/
dim (R, cant_cols, cant_filas)
desde filas=1 hasta cant_filas {
desde cols=1 hasta cant_cols {
R [filas, cols] = M [cols, filas]
}
}
fin

sub impr_mat (msg : cadena; M : matriz [*,*] numerico)


var
k = 0
inicio
imprimir (msg)
desde k=1 hasta alen (M) {
imprimir (M [k], “\n”)
}
fin

Ejemplo 6. Conversión de decimal a hexadecimal


/*
* Lee un entero positivo e imprime el mismo número expresado
* en base 16.
*
* (c) jsegovia@cnc.una.py
*/
var
n = 0
hex = “”
k = 0
const
DIG_HEX = “0123456789ABCDEF”
inicio
imprimir (“Ingrese un entero positivo:”)
leer (n)
repetir
hex = DIG_HEX [n % 16 + 1] + hex
n = int (n/16)
hasta ( n == 0 )
imprimir (“\nHexadecimal=”, hex)
fin

Introducción a la Programación 34/42


Introducción a la Programación – Curso de Ingreso

Fuente: http://pseint.sourceforge.net/ PSEINT - PIPEH PSeudo Interprete

¿Para que sirve PSeInt?


PSeInt está pensado para asistir a los estudiantes que se inician en la construcción de
programas o algoritmos computacionales. El pseudocódigo se suele utilizar como primer
contacto para introducir conceptos básicos como el uso de estructuras de control, expresiones,
variables, etc, sin tener que lidiar con las particularidades de la sintaxis de un lenguaje real.
Este software pretende facilitarle al principiante la tarea de escribir algoritmos en este
pseudolenguaje presentando un conjunto de ayudas y asistencias, y brindarle ademas algunas
herramientas adicionales que le ayuden a encontrar errores y comprender la lógica de los
algoritmos.

Caracteristicas y Funcionalidades de PSeInt:


 Presenta herramientas de edición básicas para escribir algoritmos en pseudocodigo en
español
 Permite la edición simultánea de múltiple algoritmos
 Presenta ayudas para la escritura
o Autocompletado
o Ayudas Emergentes
o Plantillas de Comandos
o Coloreado de Sintaxis
o Indentado Inteligente
 Puede ejecutar los algoritmos escritos
 Permite ejecutar el algoritmo paso a paso controlando la velocidad e inspeccionando
expresiones
 Puede confeccionar automáticamente la tabla de prueba de escritorio
 Determina y marca los errores de sintaxis y en tiempo de ejecucion
 Genera diagramas de flujo a partir del algoritmo escrito
 Convierte el algoritmo de pseudocodigo a codigo C++
 Ofrese un sistema de ayuda integrado acerca del pseudocódigo y el uso del programa
(esta última, aún en construcción)
 Incluye un conjunto de ejemplos de diferentes niveles de dificultad
 Es multiplataforma (probado en Microsoft Windows y GNU/Linux)
 Es totalmente libre y gratuito (licencia GPL)

Introducción a la Programación 35/42


Introducción a la Programación – Curso de Ingreso

El Pseudo-código

Las características del este pseudolenguaje fueron propuestas en 2001 por el responsable de
la asignatura Fundamentos de Programación (Horacio Loyarte) de la carrera de Ingeniería
Informática de la FICH-UNL. Las premisas son:
Sintaxis sencilla
Manejo de las estructuras básicas de control
Solo 3 tipos de datos básicos: numérico, caracter /cadenas de caracteres y lógico
(verdadero-falso).
Estructuras de datos: arreglos

Todo algoritmo en pseudocógido tiene la siguiente estructura general:

Proceso SinTitulo
accion 1;
accion 1;
.
.
.
accion n;
FinProceso

Comienza con la palabra clave Proceso seguida del nombre del programa, luego le sigue una
secuencia de instrucciones y finaliza con la palabra FinProceso. Una secuencia de
instrucciones es una lista de una o más instrucciones, cada una terminada en punto y coma.

Las acciones incluyen operaciones de entrada y salida, asignaciones de variables,


condicionales si-entonces o de selección múltiple y/o lazos mientras, repetir o para.

Asignación

La instrucción de asignación permite almacenar una valor en una variable.

<variable> <- <expresión> ;

Al ejecutarse la asignación, primero se evalúa la expresión de la derecha y


luego se asigna el resultado a la variable de la izquierda. El tipo de la variable y
el de la expresión deben coincidir.
Entradas

La instrucción Leer permite ingresar información desde el ambiente.

Leer <variablel> , <variable2> , ... ,


<variableN> ;

Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los

Introducción a la Programación 36/42


Introducción a la Programación – Curso de Ingreso

asigna a las N variables mencionadas. Pueden incluirse una o más variables,


por lo tanto el comando leerá uno o más valores.
Salidas

La instrucción Escribir permite mostrar valores al ambiente.

Escribir <exprl> , <expr2> , ... , <exprN> ;

Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores
obtenidos de evaluar N expresiones. Dado que puede incluir una o más
expresiones, mostrará uno o más valores.
Dimensionamiento
La instrucción Dimension permite definir un arreglo, indicando sus dimensiones.

Dimesion <identificador> (<maxl>,...,<maxN>);

Esta instrucción define un arreglo con el nombre indicado en <indentificador> y


N dimensiones. Los N parámetros indican la cantidad de dimensiones y el valor
máximo de cada una de ellas. La cantidad de dimensiones puede ser una o
más, y la máxima cantidad de elementos debe ser una expresión numérica
positiva.
Se pueden definir más de un arreglo en una misma instrucción, separándolos
con una coma (,).

Dimension <ident1> (<max11>,...,<max1N>),..., <identM>


(<maxM1>,...,<maxMN>)

Es importante notar que es necesario definir un arreglo antes de utilizarlo.


Condicional Si-Entonces

La secuencia de instrucciones ejecutadas por la instrucción Si-Entonces-Sino


depende del valor de una condición lógica.

Si <condición>
Entonces
<instrucciones>
Sino
<instrucciones>
FinSi

Al ejecutarse esta instrucción, se evalúa la condición y se ejecutan las


instrucciones que correspondan: las instrucciones que le siguen al Entonces si
la condición es verdadera, o las instrucciones que le siguen al Sino si la

Introducción a la Programación 37/42


Introducción a la Programación – Curso de Ingreso

condición es falsa. La condición debe ser una expresión lógica, que al ser
evaluada retorna Verdadero o Falso.
La cláusula Entonces debe aparecer siempre, pero la cláusla Sino puede no
estar. En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y
la ejecución del programa continúa con la instrucción siguiente.
Selección Multiple

La secuencia de instrucciones ejecutada por una instrucción Segun depende


del valor de una variable numérica.

Segun <variable> Hacer


<número1>: <instrucciones>
<número2>,<número3>: <instrucciones>
<...>
De Otro Modo: <instrucciones>
FinSegun

Esta instrucción permite ejecutar opcionalmente varias acciones posibles,


dependiendo del valor almacenado en una variable de tipo numérico. Al
ejecutarse, se evalúa el contenido de la variable y se ejecuta la secuencia de
instrucciones asociada con dicho valor.
Cada opción está formada por uno o más números separados por comas, dos
puntos y una secuencia de instrucciones. Si una opción incluye varios números,
la secuencia de instrucciones asociada se debe ejecutar cuando el valor de la
variable es uno de esos números.
Opcionalmente, se puede agregar una opción final, denominada De Otro Modo,
cuya secuencia de instrucciones asociada se ejecutará sólo si el valor
almacenado en la variable no coincide con ninguna de las opciones anteriores.
Lazos Mientras

La instrucción Mientras ejecuta una secuencia de instrucciones mientras una


condición sea verdadera.

Mientras <condición> Hacer

Introducción a la Programación 38/42


Introducción a la Programación – Curso de Ingreso

<instrucciones>
FinMientras

Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta


verdadera, se ejecuta una vez la secuencia de instrucciones que forman el
cuerpo del ciclo. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar
la condición y, si es verdadera, la ejecución se repite. Estos pasos se repiten
mientras la condición sea verdadera.
Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si
al evaluar por primera vez la condición resulta ser falsa.
Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un
ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo deben
contener alguna instrucción que modifique la o las variables involucradas en la
condición, de modo que ésta sea falsificada en algún momento y así finalice la
ejecución del ciclo.
Lazos Repetir

La instrucción Repetir-Hasta Que ejecuta una secuencia de instrucciones hasta


que la condición sea verdadera.

Repetir
<instrucciones>
Hasta Que <condición>

Al ejecutarse esta instrucción, la secuencia de instrucciones que forma el


cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición. Si la
condición es falsa, el cuerpo del ciclo se ejecuta nuevamente y se vuelve a
evaluar la condición. Esto se repite hasta que la condición sea verdadera.
Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo
del ciclo serán ejecutadas al menos una vez.
Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna
instrucción que modifique la o las variables involucradas en la condición de
modo que en algún momento la condición sea verdadera y se finalice la
ejecución del ciclo.
Lazos Para

La instrucción Para ejecuta una secuencia de instrucciones un número


determinado de veces.

Introducción a la Programación 39/42


Introducción a la Programación – Curso de Ingreso

Para <variable> <- <inicial> Hasta <final> ( Con Paso <paso> )


Hacer
<instrucciones>
FinPara

Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta


la secuencia de instrucciones que forma el cuerpo del ciclo. Luego se
incrementa la variable <variable> en <paso> unidades y se evalúa si el valor
almacenado en <variable> superó al valor <final>. Si esto es falso se repite
hasta que <variable> supere a <final>. Si se omite la cláusula Con Paso
<paso>, la variable <variable> se incrementará en 1.
Operadores y Funciones
Este pseudolenguaje dispone de un conjunto básico de operadores y funciones
que pueden ser utilizados para la construcción de expresiones más o menos
complejas.

Las siguientes tablas exhiben la totalidad de los operadores de este lenguaje


reducido:
Operador Significado Ejemplo
Relacionales
> Mayor que 3>2
< Menor que 'ABC'<'abc'
= Igual que 4=3
<= Menor o igual que 'a'<='b'
>= Mayor o igual que 4>=5
Logicos
& Conjunción (y). (7>4) & (2=1) //falso
| Disyunción (o). (1=1 | 2=1) //verdadero
~ Negación (no). ~(2<5) //falso
Suma
Algebraicos

* Multiplicación
/ División
^ Potenciación

La jerarquíaa de los operadores matemáticos es igual a la del álgebra, aunque


puede alterarse mediante el uso de paréntesis.

A continuación se listan las funciones integradas disponibles:


Función Significado
RC(X) Raíz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X

Introducción a la Programación 40/42


Introducción a la Programación – Curso de Ingreso

EXP(X) Función Exponencial de X


SEN(X) Seno de X
COS(X) Coseno de X
ATAN(X) Arcotangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero más cercano a X

Algunas Observaciones
 Se pueden introducir comentarios luego de una instrucción, o en líneas
separadas, mediante el uso de la doble barra ( // ). Todo lo que precede a //,
hasta el fin de la línea, no será tomado en cuenta al interpretar el algoritmo.
 Note que no puede haber instrucciones fuera del programa, aunque si
comentarios.
 Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener
otras adentro, pero la estructura contenida debe comenzar y finalizar dentro de
la contenedora.
 Los identificadores, o nombres de variables, deben constar sólo de letras y
números, comenzando siempre con una letra.
 Las constantes de tipo carácter se escriben entre comillas ( " ).
 En las constantes numéricas, el punto ( . ) es el separador decimal.
 Las constantes lógicas son Verdadero y Falso.

AdivinaNumero.psc
// Juego simple que pide al usuario que adivine un numero en 10
intentos

Proceso Adivina_Numero

intentos<-9;
num_secreto <- azar(100)+1;

Escribir "Adivine el numero (de 1 a 100):";


Leer num_ingresado;
Mientras num_secreto<>num_ingresado & intentos>0 Hacer
Si num_secreto>num_ingresado Entonces
Escribir "Muy bajo";
Sino
Escribir "Muy alto";
FinSi
Escribir "Le quedan ",intentos," intentos:";
Leer num_ingresado;
intentos <- intentos-1;
FinMientras

Si intentos=0 Entonces
Escribir "El numero era: ",num_secreto;
Sino
Escribir "Exacto! Usted adivino en ",11-intentos,"
intentos.";
FinSi

FinProceso

Introducción a la Programación 41/42


Introducción a la Programación – Curso de Ingreso

BIBLIOGRAFÍA

 Manual del Programador – Lenguaje C. J. Carlos López Ardao


 Lenguaje, Fundamentos y Técnicas de Programación. Rubén Iglesias.
Editorial Computec – Rama.
 BASIC para Maestros. Antonio Bellido y Arsenio Sánchez. Editorial
Paraninfo.
 APRESTAMIENTO INFORMÁTICO. Elsa S. De Fernández de Durán.
Editorial Estrada.
 Material Teórico Curso de Ingreso 2008 y 2009, I.E.S. 9-012, Prof. Gustavo
Martínez, Ariel Villar.
 Material de Apuntes del Espacio ‘Diagramación Lógica’, I.E.S. 9-012, Prof.
Gustavo Martínez. Año 1996
 Sitio Web Oficial Aprender a Programar, Edición digital, 2010,
http://www.aprendeaprogramar.com/

Introducción a la Programación 42/42


Lecturas de Cátedra

Problemas
y algoritmos
Un enfoque práctico

Edith Lovos
Martín Goin
Problemas y algoritmos
Lecturas de Cátedra

Problemas y algoritmos
Un enfoque práctico

Edith Lovos
Martín Goin
Utilice su escáner de
código qr para acceder
a la versión digital
Índice

Dedicatorias................................................................................................9
Agradecimientos ........................................................................................10
Prólogo.........................................................................................................11
Capítulo 1. Conceptos básicos de programación.....................................13
1. 1. Etapas en la programación.......................................................15
1. 1. 1. Definición del problema ............................................................. 16
1. 1. 2. Análisis del problema ................................................................. 16
1. 1. 3. Diseño del algoritmo ................................................................... 16
1. 2. Pre y poscondiciones de un algoritmo....................................17
1. 3. Ejercicios propuestos................................................................18
1. 4. Expresión de algoritmos...........................................................19
Capítulo 2. Diagramación lógica...............................................................21
2. 1. Programa FreeDFD ...................................................................23
2. 2. ¿Qué son las variables?..............................................................27
2. 2. 1. Cómo darle valor a una variable ................................................ 28
2. 2. 2. Intercambio de variables ............................................................ 29
2. 3. Estructuras de control ..............................................................30
2. 3. 1. Estructura de control de decisión o selección.......................... 30
2. 3. 1. 1. Estructura de control de decisión simple......................... 30
2. 3. 1. 2. Estructura de control de decisión doble........................... 32
2. 3. 1. 3. Estructura de control de decisiones anidadas ................ 35
2. 3. 1. 4. Estructura de control de decisiones independientes.... 36
2. 4. Operadores de relación.............................................................37
2. 5. Operadores lógicos....................................................................37
2. 5. 1. Conjunción lógica o producto lógico «and»............................. 38
2. 5. 2. Disyunción lógica inclusiva o suma lógica «or»...................... 39
2. 5. 3. Negación o complemento lógico «not»..................................... 39
2. 6. Otros operadores matemáticos especiales.............................43
2. 7. Problemas: Diagramación lógica – Estructura de control
de decisión...............................................................................48
2. 8. Estructura de control de repetición.........................................50
2. 8. 1. Estructura de control de repetición (sentencia «para»)......... 53
2. 8. 2. Variables como acumuladores .................................................. 55
2. 8. 3. Variable contadora ...................................................................... 55
2. 8. 4. Máximos y mínimos................................................................... 62
2. 8. 5. Problemas: Diagramación lógica – Estructura de control
de repetición «para».................................................................... 65
2. 8. 6. Estructura de control de repetición (sentencia «mientras»).66
2. 8. 7. Problemas: Diagramación lógica – Estructura de control de
repetición «mientras»................................................................. 72
Capítulo 3. Pseudocódigo...........................................................................73
3. 1. PSeInt.........................................................................................73
3. 2. Operadores lógicos....................................................................80
3. 3. Ejercicios: pseudocódigo..........................................................87
Capítulo 4. Entorno de programación visual...........................................89
4. 1. Variables del programa DaVinci ..............................................93
4. 2. Conociendo la ciudad del robot ...............................................94
4. 2. Repetición..................................................................................97
4. 3. Modularización .........................................................................106
4. 4. Parámetros formales y reales...................................................110
4. 5. Variables globales y locales.......................................................112
4. 6. Ejercicios Da Vinci ....................................................................114
Dedicatorias

Se resume en el siguiente diagrama de Venn

Dedicatoria |9
Agradecimientos

Al Centro Interdisciplinario de Estudios sobre Derechos, Inclusión y Socie-


dad (ciedis), al área de Desarrollo Estudiantil y al Departamento de Asun-
tos Estudiantiles de la Universidad Nacional de Río Negro (unrn).

10 | Lovos y Goin
Prólogo

Este libro surge en el marco de una actividad de formación denominada Cur-


so virtual de resolución de problemas usando algoritmos. Un espacio para el desarrollo
de competencias (Res. 683/2016) que se lleva adelante a través del Programa de
Mejora de las Ciencias Exactas y Naturales en la Escuela Secundaria. Como
resultado de esa actividad, el libro busca promover en el lector el desarrollo
de su capacidad analítica y creadora, mejorando su destreza en el diseño de
algoritmos que sirven como base para el desarrollo de programas.
La enseñanza y aprendizaje de la programación es una actividad com-
pleja tanto para docentes como para estudiantes. En este sentido, este libro
busca ser una herramienta de apoyo. En él se exponen numerosos ejemplos y
se intenta ayudar y acompañar al lector a resolver los problemas planteados.
El libro funciona como un tutorial que explica paso a paso, las bases
de la programación de modo muy sencillo. Está orientado a los primeros
cursos de grado de carreras –ingenierías, profesorados, licenciaturas, tec-
nicaturas– que incluyan asignaturas vinculadas a la programación. De esta
forma, resulta ideal para aquellos estudiantes que incursionan por primera
vez en el mundo de la programación.
El material se divide en cuatro capítulos. El primero es un resumen
teórico en el que se abordan los conceptos básicos de la programación.
El segundo capítulo tiene por objetivo avanzar de modo progresivo en el
proceso de resolución de problemas con algoritmos usando como recurso
el diagrama de flujo para su representación. Con la intención de facilitar
el proceso cognitivo se utilizará el software FreeDFD, que es de uso libre
y gratuito. Este capítulo incluye cerca de 30 ejemplos prácticos que per-
miten probar el programa y verificar los resultados. Además aborda los
siguientes temas: variables, intercambio, estructuras de control de deci-
sión (simple, doble, decisiones anidadas e independientes), operadores
(de relación, lógicos, matemáticos especiales), estructuras de control e ite-
ración («para», «mientras»), variables contadoras y sumadoras, máximos
y mínimos. El tercer capítulo presenta el pasaje del diagrama de flujo al
pseudocódigo, si bien no es programable, la intención es aproximarnos
al lenguaje de programación realizando una traducción del modo gráfico
al código (texto). Se propone el uso del software PSeInt de carácter libre y
gratuito. Esta herramienta, al igual que FreeDFD, permite la ejecución de
los algoritmos posibilitando la autocorrección. Por último, se presenta un
capítulo especial dedicado a la resolución de problemas usando el aplica-
tivo visual DaVinci Concurrente.

Prólogo | 11
De esta forma se ofrecen diversas herramientas de asistencia en el
aprendizaje de los conceptos básicos de programación, sumado a un con-
junto de ejemplos.
En el libro se presentan ejemplos prácticos resueltos. Además se pro-
pone un conjunto de situaciones problemáticas que le permitirán al lector
desarrollar las habilidades de resolución de problemas usando algoritmos.

12 | Lovos y Goin
Capítulo 1
Conceptos básicos de programación

Aprender a programar
es programar para aprender
Mitchel Resnick (1956)
La frase pertenece al destacado profesor, físico,
informático, periodista y programador. Participó
del diseño y desarrollo del Scratch (lenguaje
de programación para educación, 2005).

Fuente: Joi Ito, 2011.

Vivimos en un mundo donde la tecnología tiene un protagonismo muy


importante en nuestra vida cotidiana. Usamos cajeros automáticos, reali-
zamos diferentes transacciones (bancarias, comerciales y otras) a través de
la web, buscamos información en Internet, nos mantenemos comunicados
a través de dispositivos móviles (celulares, tabletas, etcétera), nos ubicamos
y jugamos usando tecnología de geoposicionamiento (gps). La tecnología
está íntimamente relacionada a la programación; sin esta nada tiene sen-
tido, nada funciona. Cuando hablamos de programación, la asociamos a la
palabra informática.

La Real Academia Española, define la palabra informática como:


«El conjunto de conocimientos científicos y técnicas que hacen posible
el tratamiento automático y racional de la información por medio de
computadoras.»

Ahora bien, se deben precisar las respuestas a las siguientes preguntas:


¿Qué es información? ¿Qué significa tratar la información? ¿Qué significa
que una parte del tratamiento sea automático y otra racional?
Se entiende por información a los hechos y representaciones de una
situación, los cuales pueden o no tener relación. La información, para que
pueda ser tratada por una máquina (computadora), necesita ser codificada
en un lenguaje entendible por la máquina.
Entonces, hablar de tratamiento automático significa que será la má-
quina (autómata) la que llevará adelante el proceso. ¿Y cómo se logra esto?
Se logra codificando el razonamiento humano a través de una secuencia de
instrucciones (programa).

Conceptos básicos de programación | 13


En la actualidad, programar no es una actividad reservada solo a unas
pocas personas (técnicos, ingenieros, expertos, licenciados, etcétera), mu-
chas lo toman como un juego, un beneficio, un desafío y hasta una afición.
Como en toda disciplina, hay áreas que son más sencillas de aprender
y otras no tanto. Empezar por algo muy accesible nos dará el gusto de co-
menzar a programar. Luego, la creación de soluciones más elaboradas para
problemas más complejos nos ayudará a incorporar conocimientos.
Mientras existan la creatividad y las ganas de aprender tendremos la
libertad de programar.
Si tenemos que definir el término programación, decimos que es la ac-
ción y el efecto de programar.

Programar es lo más cercano que


tenemos a un superpoder
Drew Houston (1983)
Creador de Dropbox (almacenamiento de
archivos en la nube para trabajar y compartir).

Fuente: Adaptado de Financial Times, 2011.

Los programadores
son los magos del futuro
Gabe Newell (1962)
Director general de Valve Software (empresa
desarrolladora de videojuegos)

Fuente: Game Developers Choice Awards, 2010.

El verbo programar tiene varios usos. Se refiere a idear y ordenar las ac-
ciones que se realizarán en el marco de un proyecto, como por ejemplo la
preparación de máquinas para cumplir con una cierta tarea específica, la
preparación de un espectáculo deportivo o artístico, la preparación de da-
tos necesarios para obtener la solución de un cálculo a través de una calcu-
ladora, el diseño del sistema y la distribución de materias para una carrera
o de temas para un curso o asignatura, etcétera.
En la actualidad, la noción de programación se encuentra más asocia-
da a la programación en ciencias informáticas. En este sentido, programar

14 | Lovos y Goin
podría resumirse como el proceso por el cual un programador escribe,
prueba, depura y mantiene un código a partir del uso de un lenguaje de
programación. Así, aprender a programar implica aprender ciencia y tec-
nología. La tecnología puede verse como el conjunto de herramientas, téc-
nicas y estándares que permiten llevar adelante la programación. Al hablar
de ciencia se hace referencia a una teoría amplia y profunda que permite
entender la programación. Ambos conocimientos son importantes, ya que
posibilitan enfrentar los retos de la evolución tecnológica.
Por otra parte, en estos tiempos, como señalan Patricia Compañ-Rosique
y otros (2015), la programación es una vía posible para el desarrollo del pen-
samiento computacional. Es decir, hacer uso de conceptos fundamentales de
la informática para resolver problemas del quehacer cotidiano.

1. 1. Etapas en la programación

En la figura 1.1 se muestran las etapas para el desarrollo de un programa:

Figura 1. 1. Etapas de la programación

Conceptos básicos de programación | 15


En este libro abordaremos las tres primeras: definición del problema,
análisis del problema y diseño del algoritmo.

1. 1. 1. Definición del problema

Esta fase está dada por la especificación del problema, el cual requiere una
definición clara y precisa. Es importante saber lo que se desea que realice la
computadora; mientras esta definición no sea lo suficientemente clara, no
tiene mucho sentido continuar con la siguiente etapa.

1. 1. 2. Análisis del problema

Esta fase requiere de una clara definición en la que se contemple exacta-


mente qué debe hacer el programa y el resultado o la solución deseada. En-
tonces es necesario definir:
• datos de entrada (tipo y cantidad);
• datos de salida (tipo y cantidad);
• los métodos y las operaciones que se necesitan para procesar los datos.

En esta etapa se determina qué debe hacer el programa para resolver el


problema, es decir, la solución al mismo.
Una recomendación muy práctica es la de ponernos en el lugar de la
computadora y analizar qué es lo que necesitamos ordenar y en qué se-
cuencia, para producir los resultados esperados.

1. 1. 3. Diseño del algoritmo

En esta etapa se determina cómo debe ser el proceso que lleva a la resolución
del problema. La palabra algoritmo deriva del nombre de un matemático
árabe del siglo ix, llamado Al-Khuwarizmi, quien describió varios métodos
para resolver cierto tipo de problemas aritméticos.
El diseño de algoritmos es un recurso fundamental que permite resol-
ver problemas relacionados con casi todas las disciplinas.
La intención de este libro es que el lector adquiera las bases necesarias
para poder diseñar e implementar, de manera fácil y rápida, soluciones
algorítmicas.
Definición de algoritmo: es una secuencia no ambigua, finita y ordena-
da de pasos para poder resolver un problema.
• No ambigua implica que cada paso del algoritmo debe poder ser in-
terpretado de una única forma.
• Finita significa que la cantidad de pasos que componen el algoritmo
está limitada. El algoritmo empieza y termina.

16 | Lovos y Goin
• Orden. Los pasos del algoritmo deben seguirse en una determinada
secuencia para llegar a la solución del problema.

Resumiendo, un algoritmo se puede pensar como una receta, un


conjunto de instrucciones o de especificaciones sobre un proceso para
hacer algo, que cumple con las características antes mencionadas.

Ejemplos

Problema 1: Indique la manera de endulzar una taza que contiene café.


Algoritmo A: Ponerle un poco de azúcar a la taza y revolver
Algoritmo B: Agregarle una cucharadita de azúcar a la taza, revolver y
degustar. Repetir el proceso hasta que quede dulce.
El algoritmo A presenta una solución ambigua al problema planteado. ¿A
cuánto equivale un poco?
El algoritmo B presenta una solución adecuada al problema.

Problema 2: Desarrolle un algoritmo que describa la forma de determinar la


suma de todos los números naturales.
En este caso, no es posible encontrar un algoritmo que resuelva el problema.
Ya que una de las características de un algoritmo es alcanzar la solución
en un tiempo finito, situación que no se cumplirá en este caso, ya que los
números naturales son infinitos.

Problema 3: Llenar un pozo con piedras de un bolsón.


Algoritmo: Tomar una pala. Mientras haya piedras en el bolsón cargar la
pala con piedras y volcarla en el pozo. Dejar la pala.
Esta solución es un algoritmo, ya que cada paso es no ambiguo. Por otra
parte, se puede asegurar que en algún momento finalizará (es finito),
aunque no se sabe cuántas paladas serán necesarias.
¿Qué sucedería si no contamos con la pala? ¿Se podría llevar adelante el
proceso definido en el algoritmo?

1. 2. Pre y poscondiciones de un algoritmo

Precondición: es la información que se conoce como verdadera antes de


comenzar el algoritmo.

Conceptos básicos de programación | 17


Poscondición: es la información que se conoce como verdadera después de
finalizado el algoritmo, siempre que se cumpla con las precondiciones.

Problema 4: Determinar el resto de la división entera entre dos números enteros


N y M.
Precondición: N y M son números enteros. M debe ser distinto de 0.
Poscondición: el resultado será un valor entero comprendido entre 0 y M-1,
que representa el resto de aplicar la división entera entre N y M.

Problema 5: Indique la manera de endulzar una taza que contiene café.


Precondición: Contar con una cucharita y azúcar suficiente.
Poscondición: El café quedó dulce al finalizar el proceso.

Problema 6: Determinar si el número 437 es primo.


Algoritmo: Dividir el número 437 entre cada uno de los números 1, 2, 3, 4,...
436. Si una de las divisiones es exacta (resto 0), entonces el número 437 no
es primo, caso contrario es primo.
Precondición: No hay ningún requerimiento.
Poscondición: Se ha podido determinar si el número 437 es primo o no.

Preguntas: ¿Consideran que es una buena solución?


¿Qué otra/s podrían pensarse?

1. 3. Ejercicios propuestos

1. Escriba un algoritmo que permita cambiar una lámpara quemada.


Indique pre y poscondiciones.
2. Escriba un algoritmo que indique cómo hacer un huevo frito. Indi-
que pre y poscondiciones. ¿En qué cambiaría el algoritmo si quisié-
ramos cocinar 3 huevos en lugar de 1?
3. Escriba un algoritmo para comprar 1 kg de pan migñon en la pana-
dería de la esquina de casa.
4. Observe las dos soluciones que se presentan a continuación e indique
si son o no un algoritmo. Si no lo son, modifíquelas para que lo sean.

18 | Lovos y Goin
Algoritmo 1 Algoritmo 2
Me visto rápidamente. Traer las herramientas que voy a usar.
Me levanto por la mañana. Hacer el arreglo con esmero.
Tomo una ducha de 10 minutos. Localizar el desperfecto
Tomo un té con leche y me voy. del depósito.
Termino de ducharme a las 7:25. Pasar la factura por el trabajo hecho.
Llego temprano al colegio. Organizar cómo voy a hacer el trabajo.
El reloj marca las 7:15. Ver qué tipo de arreglo necesita.
Comprobar la eficiencia del arreglo.

1. 4. Expresión de algoritmos

Para el diseño de un algoritmo puede utilizarse la diagramación lógica (dl)


y/o el pseudocódigo.
La diagramación lógica se basa en la representación gráfica, esquemá-
tica de un algoritmo. Es altamente intuitiva y didáctica e implica la cons-
trucción de circuitos lógicos utilizando símbolos, mientras que el pseudo-
código es la representación descriptiva y textual (en lenguaje natural, por
ejemplo, el español) de las operaciones que realiza un algoritmo.
En este libro, vamos a trabajar con ambas, ya que consideramos que son
un buen complemento para iniciarnos en la actividad de programar solu-
ciones algorítmicas.
Para aquellos que incursionan por primera vez en el mundo de la progra-
mación es recomendable comenzar con la utilización del diagrama de flujo.
Recordemos que el procedimiento de desarrollo de algoritmos es inde-
pendiente del lenguaje de programación que utilicemos más adelante. Es
decir, una vez diseñado el algoritmo, este podrá ser luego escrito (traduci-
do) en diferentes lenguajes de programación.
Hasta aquí podemos resumir las características de un algoritmo:
• Debe tener un punto particular de inicio.
• Debe estar definido sin ambigüedades, es decir, no debe permitir
dobles interpretaciones.
• Debe ser general, es decir, soportar las variantes que puedan presen-
tarse en la definición del problema.
• Debe ser finito en tamaño y tiempo de ejecución.

Adicionalmente, los algoritmos pueden requerir de datos de entrada


para producir datos de salida.

Conceptos básicos de programación | 19


Figura 1. 2. Algoritmo

Datos de entrada: un algoritmo tiene cero o más entradas, es decir la


información que recibe el algoritmo al comenzar o, dinámicamente, mien-
tras el algoritmo se ejecuta.
Procesamiento de datos: incluye las operaciones aritmético-lógicas,
cuyo objetivo es obtener la solución del problema.
Salida de resultados: permite comunicar al exterior el resultado. Un al-
goritmo puede producir una o más salidas.

Entonces, la computadora es una máquina (herramienta) que por sí sola no


puede hacer nada, necesita ser programada, es decir, que se le suministren
instrucciones u órdenes indicándole aquello que debe hacer.
Un programa es la solución a un problema inicial, así que todo comien-
za allí: en el problema. Así, dado un determinado problema es necesario
idear una solución y expresarla algorítmicamente. Luego de esto, será ne-
cesario traducir el algoritmo (codificarlo) en un determinado lenguaje de
programación y, por último, ejecutar el programa en la computadora. Esto
es, a grandes rasgos, lo que hace el programador.
El diseño de algoritmos será tema de los próximos capítulos, comen-
zando con la diagramación lógica y luego con el pseudocódigo.

La computadora es el Proteo de
las máquinas. Su esencia es su
universalidad, su poder de simular.
Seymour Papert (1928-2016)
La frase pertenece al destacado científico
en computación, matemática y educación.
Es uno de los pioneros de la inteligencia
artificial y creador del Logo (lenguaje
de programación para educación).
Fuente: Adaptado de ak_mardini, 2006.

20 | Lovos y Goin
Capítulo 2
Diagramación lógica

Vamos a dar inicio a este capítulo con un ejemplo muy sencillo:

El algoritmo permite el ingreso de dos números, los suma y, por último,


muestra el resultado.
Para poder comprender el concepto de este gráfico es necesario deter-
minar el significado de cada uno de sus componentes.
A continuación se describen cada uno de los elementos utilizados en el
algoritmo:

Comienza el algoritmo.

Ingreso de datos (en estos casos se


trata de dos valores numéricos A y B).

Asignación (en este caso se le


asigna a la variable C la suma
de A y B, es decir C = A+B).

Diagramación lógica | 21
Salida de datos (en este caso se
imprime lo que contiene la variable C)

Termina el algoritmo.

Las flechas indican la dirección del


circuito (de ahí viene el nombre flujo).

La lectura de un diagrama se hace de la misma manera que la lectura de


un libro (de izquierda a derecha y de arriba abajo).

Problema 1: Hallar el perímetro y el área de un rectángulo ingresando la base


b y la altura h.

Es posible observar que en una misma caja de asignación se puede ha-


cer más de una operación (en este caso para asignar el resultado del cálculo
del perímetro y del área de un rectángulo).

22 | Lovos y Goin
Nota: En la salida se pueden alternar carteles (mensajes) y datos, mien-
tras los primeros estén entre comillas y ambos separados por comas. En
este caso será “El Perímetro es “,P,” y el Área es “,A.
Ejemplo: si ingresamos b y h como 3 y 5 entonces la salida imprime lo
siguiente: El Perímetro es 16 y el Área es 15
Atención: Las operaciones aritméticas en los algoritmos deben expresar-
se siempre en una línea, por ejemplo si queremos realizar la siguiente
operación:
−B + 9
C=
2A
es necesario escribirla de la siguiente manera: C = (-B+9)/(2*A). El asterisco *
representa la multiplicación y la barra inclinada a derecha / la división.

2. 1. Programa FreeDFD

Para trabajar con diagramas de flujos, se recomienda utilizar un software


libre y gratuito, FreeDFD 1.1. Este aplicativo fue desarrollado por estudian-
tes de la Universidad de Magdalena, Colombia, y se distribuye bajo la licen-
cia pública GNU (GPL).
Además de ofrecer un manejo muy sencillo, permite crear, editar, eje-
cutar y corregir (cuando se presentan errores) el diagrama de flujo para
verificar su funcionamiento.
El programa es muy intuitivo, por tratarse de una herramienta gráfica,
e incluye además un menú de ayuda muy completo.
En esta sección nos centraremos en el uso básico de las herramientas de
diseño y depuración.
El programa puede descargarse desde el sitio http://code.google.com/p/
freedfd. En Windows, el archivo comprimido llamado FreeDFD-1.1.zip, tie-
ne que ser descomprimido en una carpeta con su mismo nombre (esto es
automático). En el grupo de archivos de dicha carpeta aparecen tres ejecu-
tables (uno para cada idioma: portugués, inglés y español), el nuestro será
la aplicación ejecutable dfd-español. En sistemas operativos GNU/Linux
puede instalarse usando el software Wine.
Al ingresar al programa nos encontraremos con la siguiente pantalla:

Diagramación lógica | 23
Figura 1. 3. Pantalla FreeDFD

En la parte superior tenemos el menú principal para acceder a todas las op-
ciones posibles y, debajo, la barra de herramientas que funcionan como atajos.
Más abajo, el sector de edición de trabajo. Siempre comienza con los
conectores «inicio» y «fin».
Respecto a la barra de herramientas o botones:

Figura 1. 4. Botones FreeDFD

Los objetos son los elementos que permiten representar la solución al


problema. De izquierda a derecha son: cursor, asignación, ciclo «mientras»,
ciclo «para», decisión, lectura, salida y llamada.
Por ejemplo, si queremos construir el primer diagrama de flujo del
ejemplo del libro tendríamos que seguir los siguientes pasos:

24 | Lovos y Goin
1. Para introducir entre los conectores «inicio» y «fin» el símbolo de
ingreso, primero hacemos click en el ícono «lectura» de la barra «ob-
jetos» y luego nos acercamos con el mouse al destino deseado (a).
La mano nos indica el sector permitido para colocar el objeto, de lo
contrario aparecerá un cartel de prohibido (b).
Luego de elegir la ubicación del objeto aparecen las marcas que indi-
can que está seleccionado (c).

a b c

2. Haciendo doble click sobre el objeto aparece la siguiente ventana.

Dentro de la caja escribiremos las variables de entrada, para nuestro


caso: A,B
3. La entrada está lista y se verá así:

Diagramación lógica | 25
4. Luego de armar por completo el diagrama de flujo como se observa
en el primer ejemplo, hay que ponerlo a prueba, aunque se reco-
mienda primero guardar el archivo («Archivo» – «Guardar como»).

5. Hacemos un click en el botón «ejecutar» (barra de ejecución) y apa-


rece la ventana («entrada de valores por teclado»).
Ingresamos entonces los valores (uno por cada entrada).

6. Luego muestra la salida (el resultado final) con la siguiente pantalla:

26 | Lovos y Goin
7. Si el programa funcionó sin generar errores, FreeDFD nos mostrará
la siguiente ventana:

Error de ejecución: Si creamos el siguiente algoritmo y lo ejecuta-


mos, finalmente nos va a mostrar el error.

Y además nos va a indicar en color rojo el objeto donde se produjo


el inconveniente. En este caso lo va a marcar en el objeto de salida
porque la variable C no contiene valor alguno.

Nota: Sería beneficioso probar el ejemplo con el error y luego realizar y


ejecutar el problema 1.

2. 2. ¿Qué son las variables?

Una variable es un espacio en la memoria de la computadora que permite


almacenar temporalmente información (dato) durante la ejecución del al-
goritmo, y cuyo contenido puede cambiar mientras se ejecuta el algoritmo.
Para reconocer una variable es necesario darle un nombre o etiqueta,
que permita identificarla.
Los nombres o etiquetas de las variables siempre deben empezar con
una letra y no pueden contener espacios en blanco. Si usamos más de un
carácter para su identificación empezamos con una letra y luego podemos
seguir con números o letras. Está permitido usar “_” entre medio.

Diagramación lógica | 27
Ejemplos válidos: A, a , B1 , A20 , AA1 , Aa1 , B2B , Promedio , SUMATORIA
, A_1 , b1_2
Ejemplos no validos: 1B , 2c , _S , ¿A, La variable

Se recomienda que el nombre de una variable represente el dato en sí y


que no sea extenso, algunos ejemplos:
Para una sumatoria → S
Para dos sumatorias → S1 , S2
Para la sumatoria de edades → SE
Para contar → C
Para un promedio → P o Prom
Para el promedio de edades de mujeres → PEM

Atención: No puede existir más de una variable con el mismo nombre


(identificación) en un mismo algoritmo y con distinta finalidad.

Las variables pueden contener información numérica como alfanumé-


rica, es decir letras y símbolos, siempre y cuando estos últimos sean expre-
sados entre comillas.

Ejemplos: A1=”20” Nombre=”Sofía” Simbolo=”&”

En cambio, las variables que contienen números no necesitan de las comillas.

Ejemplos: G1=20 Precio=129,85 Temperatura = -0,3

Analizar la diferencia entre las variables G1 y A1 de los ejemplos anterio-


res. No representan la misma información, en un caso es un valor numérico
y en otro una expresión alfanumérica.

Ejemplos: Calle=”San Martin” Numero=”201” Domicilio=”Moreno 77”

Nota: Los nombres de las variables no se acentúan.

El valor de las variables y el tipo de operaciones que se puede realizar


con ellas dependerá de si estas son numéricas o alfanuméricas. En el caso
de las variables numéricas, las cuatro operaciones aritméticas básicas son:
suma (+), resta (–), división (/) y multiplicación (*).
En el caso de las variables alfanuméricas se puede utilizar el operador +,
para concatenar. Analicemos el problema 2.

28 | Lovos y Goin
2. 2. 1. Cómo darle valor a una variable

Existen dos formas de darle valor a una variable: a través de la asignación o


a través de la lectura de un valor.
En FreeDFD para asignarle un valor podemos usar el operador de asig-
nación ← o una funcionalidad propia del aplicativo que nos permite leer un
dato desde un dispositivo de entrada (ejemplo teclado).
Es importante recordar que una variable tiene un único contenido en
un momento dado, es decir, un valor actual. Este valor puede cambiar du-
rante la ejecución del programa, pero siempre será único y no quedará re-
gistro de cuáles fueron los contenidos anteriores de la variable.

Problema 2: Ingresar un nombre y un apellido en distintas variables y luego


mostrar en forma concatenada el nombre seguido del apellido. Por ejemplo,
si el nombre es Ana y el apellido Perez, la salida sería AnaPerez.

Atención: Si se ingresa N=”Manuel” y luego A=”Belgrano” el resultado de


la suma será “ManuelBelgrano” (falta separar el nombre y el apellido), en-
tonces podríamos dejar un espacio en blanco al final de “Manuel “, o bien al
principio de “ Belgrano” para solucionarlo. ¡Hagan la prueba!

Pregunta: ¿Qué sucedería si se quita la instrucción que permite la lectura


de A y N?

Diagramación lógica | 29
Importante: Una cuestión problemática con las variables es su va-
lor o contenido inicial. En algunos lenguajes si una variable se usa
sin antes haberle asignado un valor, se le dará un valor por defecto,
mientras que en otros lenguajes eso podría generar un error duran-
te la ejecución del programa. Entonces para evitar estas situacio-
nes, siempre que usemos una variable debemos darle un valor inicial.
Sugerencia: Editar y ejecutar los problemas propuestos en el software
FreeDFD para una mejor comprensión.

2. 2. 2. Intercambio de variables

El intercambio (swap) de los valores de dos variables no es un procedimien-


to que pueda hacerse en forma directa, es decir, por ejemplo: si A=8 y B=2
entonces si A=B (le asignamos a A el valor de B, se pierde el valor original
de A) y si luego hacemos B=A (le asignamos a B el valor de A), finalmente
los valores de A y B serán los mismos (en este caso ambos serán iguales a 2).
Para solucionar esta situación debemos usar una variable auxiliar.
Para el caso anterior será: C=A, A=B y B=C. Entonces ahora tendremos
A=2 y B=8. En este caso C será la variable auxiliar.
Recordemos que solo podemos intercambiar variables que tengan el
mismo tipo. ¿Qué sucede si dadas dos variables A=5 y B=7 intentamos llevar
adelante las siguientes operaciones: C=A, A=B, B=C?

Importante: El tipo de una variable especifica el conjunto de valores que


puede tomar y las operaciones que pueden hacerse con ella.

2. 3. Estructuras de control

Las estructuras de control permiten controlar el flujo de ejecución de las


instrucciones del programa: tomar decisiones, realizar acciones repeti-
tivas, etcétera, dependiendo de unas condiciones que nosotros mismos
establezcamos.
El concepto de flujo de control se refiere al orden en que se ejecutan las
sentencias o acciones (instrucciones) de un programa.
En los ejemplos anteriores se ha trabajado con un flujo lineal también
llamado estructura secuencial, así las estructuras de control (de selección y
repetición) permiten alterar este orden de ejecución secuencial.

30 | Lovos y Goin
2. 3. 1. Estructura de control de decisión o selección

También llamada de alternativa, permite bifurcar el flujo de ejecución del


programa en función de una expresión lógica o condición lógica.
Con frecuencia aparecen en algoritmos situaciones en las cuales se debe
elegir un camino dependiendo de los datos de entrada y la condición impuesta.

El símbolo es un rombo acostado que tiene dos


posibles salidas, como se observa en la figura.
Siempre tomará uno de los dos caminos (nunca
ambos al mismo tiempo)

Una decisión puede clasificarse en simple, doble, anidadas y/o independientes.

2. 3. 1. 1. Estructura de control de decisión simple

Veamos un ejemplo de un algoritmo que utiliza una decisión simple.

Problema 3: Mostrar el perímetro de una circunferencia, siempre y cuando el


radio que se ingresa sea mayor a cero (controlar dicho ingreso).

Diagramación lógica | 31
En este caso, si al ejecutar el algoritmo se ingresa un valor de radio
negativo o cero, el programa simplemente termina, ya que solo funciona
cuando la condición radio > 0 (expresión lógica) es verdadera.
Cuando se cumple la condición dentro del rombo el flujo de datos va
para el lado del Sí, caso contrario se dirige hacia el No.

Atención: La estructura de control de decisión debe tener como mí-


nimo una acción a ejecutar en caso que se cumpla la condición.
En el ejemplo anterior podríamos haber establecido la condición del SI
con (radio < = 0) en vez de (radio > 0), entonces nos quedaría de la si-
guiente manera:

Lo cual es incorrecto.

32 | Lovos y Goin
2. 3. 1. 2. Estructura de control de decisión doble

Esta estructura es similar a la anterior con la salvedad de que se indican


acciones no solo para la rama verdadera sino también para la falsa, es decir,
en caso de que la expresión lógica sea cierta se ejecuta una acción o grupo
de acciones y, en caso de ser falsa, se ejecuta otro grupo de acciones.

Problema 4: Ídem al ejemplo anterior pero en el caso de ingresar un radio


erróneo (cero o negativo) indicarlo con el cartel “Error”.

Cuando es falsa la expresión lógica (radio > 0) se ejecuta el camino que


va en dirección del No.

Nota: Los carteles en la salida siempre van entre comillas, en este caso
“ERROR”.

Diagramación lógica | 33
Veamos otro ejemplo.

Problema 5: Se pide ingresar dos números y luego mostrar por mensaje cuál es
el mayor.

En las salidas es posible combinar cartel y variable (texto y números).


Por ejemplo, probemos ingresar por pantalla los números 3 y 7, entonces el
camino que tomará el algoritmo será el No, al ser falsa la condición A>B, en
consecuencia su salida mostrará El mayor es 7.

Nota: ¿Qué sucede si ingresamos dos números iguales? ¿Cuál sería el re-
sultado? Lo verificamos ejecutando el algoritmo.

Para solucionar el problema anterior debemos utilizar decisiones anidadas.

En el objeto de salida del diagrama se pueden combinar


texto y variables como en el caso anterior, siempre y
cuando estén separados por comas.

34 | Lovos y Goin
2. 3. 1. 3. Estructura de control de decisiones anidadas

Existe la posibilidad de tener una decisión dentro de otra, a esto se lo llama


decisiones anidadas y se usa cuando tenemos más de una alternativa. Para
resolver el problema anterior (ingreso de dos números iguales), desarrolla-
mos las indicaciones en el siguiente problema.

Problema 6: Mostrar el número más grande (entre dos) ingresado por teclado.
Si los dos números son iguales mostrar el cartel “Son iguales”.

Nota: Y si la primera condición es A=B ¿Cómo cambiarías el algorit-


mo para que siga funcionando perfectamente? ¿Te animás a hacerlo?
Atención: La anidación también se puede hacer dentro del camino del Sí
y además se podría producir más de una vez.

Diagramación lógica | 35
2. 3. 1. 4. Estructura de control de decisiones independientes

Las decisiones independientes son aquellas que se establecen sin depender


una de otras, es decir, sin estar relacionadas. Simplemente se ubican una
debajo de la otra y en cualquier orden, ya que el orden no afectará su ejecu-
ción. Veamos un ejemplo.

Problema 7: Ingresar dos números por teclado y sumarlos. En caso que los
números sean negativos, previo a la suma se debe cambiar su signo.

Nota: En este caso tenemos dos decisiones simples que son independien-
tes (podrían estar en cualquier orden). La operación N = (-1)*N hace cam-
biar el signo de negativo a positivo.

36 | Lovos y Goin
2. 4. Operadores de relación

La siguiente tabla nos muestra los distintos operadores de relación entre


dos números:

Operador Significado Equivalente en


matemática
> Mayor que >
< Menor que <
>= Mayor o igual que ≥
<= Menor o igual que ≤
= Igual =
!= Distinto ≠

Nota: Es importante el orden en los símbolos cuando interviene el igual >=


y <=.

Estos operadores nos permiten establecer comparaciones entre variables.

Ejemplo: Establecer una comparación alfabética entre dos variables


alfanuméricas. Provincia1=”Neuquén” Provincia2=”Chubut” entonces
decimos que la expresión (Provincia1>Provincia2) es verdadera y la
expresión (Provincia1<Provincia2) es falsa.

2. 5. Operadores lógicos

Supongamos que quisiéramos saber si tres números son iguales utilizando


decisiones. Una solución posible sería:

Diagramación lógica | 37
Es decir que una decisión depende de la anterior.

Lo incorrecto es que suceda lo siguiente, ya que las


desigualdades siempre deben relacionarse de a pares.

Para solucionarlo es necesario trabajar con los operadores lógicos «and»,


«or» y «not».

2. 5. 1. Conjunción lógica o producto lógico «and»

El efecto del operador «and» es la evaluación simultánea del estado de ver-


dad de las variables lógicas involucradas.
Así por ejemplo la expresión lógica: A and B, será verdadera únicamen-
te si A y B lo son. Cualquier otro estado para ambas variables dará como

38 | Lovos y Goin
resultado el valor falso, puesto que basta con que una de las dos variables
tenga valor falso para que ambas no sean simultáneamente verdaderas.

Variables lógicas Resultado


A B A and B
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso

2. 5. 2. Disyunción lógica inclusiva o suma lógica «or»

El efecto de este operador es la evaluación no simultánea del estado de ver-


dad de las variables lógicas involucradas. Esto implica que al tener estado
verdadero por lo menos una de las variables afectadas, la operación dará un
resultado verdadero.
Así tendremos que la expresión: A or B, será falsa únicamente cuando
el estado de ambas variables sea falso. En cualquier otro caso, la operación
será verdadera.

Variables lógicas Resultado


A B A and B
Verdadero Verdadero Verdadero
Verdadero Falso Verdadero
Falso Verdadero Verdadero
Falso Falso Falso

2. 5. 3. Negación o complemento lógico «not»

El efecto de este operador es negar el valor de la expresión lógica, como se


indica en la siguiente tabla.

Variables lógicas A Resultado not A


Verdadero Falso
Falso Verdadero

Veamos algunos ejemplos para poder comprender un poco más el concepto


de operadores lógicos.

Diagramación lógica | 39
Problema 8: Solicitar al usuario un número natural y verificar que el número
ingresado se encuentre dentro de la primera docena de números naturales,
es decir entre el 1 y el 12.

Nota: La decisión podría reescribirse como: (N>=1) and (N<=12).


No es posible indicarlo como: 1<=N<=12. Esto generaría un error, porque
no sería una expresión lógica.

Ahora el problema de los tres números iguales se puede resolver usando


el operador lógico «and» de la siguiente manera:

40 | Lovos y Goin
Nota: Si al evaluar (A=B) se obtiene un resultado falso entonces no es
necesario evaluar la expresión (A=C). Esto se denomina evaluación de
circuito corto, si la primera expresión es falsa como el operador que las
vincula es un and aunque la segunda sea verdadera el resultado será falso,
de ahí que no tenga sentido realizar la evaluación.

Una condición puede expresarse en forma lógica, usando más de un


operador (o, y, negación). A continuación se presenta un ejemplo.

Problema 9: Se ingresa por teclado la categoría de un socio del club deportivo


Sol Naciente y su antigüedad en años. Las categorías posibles son A, B y C.
Luego se desea saber si el socio ingresado tiene categoría A o su antigüedad
se encuentra entre los 10 y 20 años, en esos casos se pide mostrar un cartel
que exprese lo siguiente: “Socio vip”.

Diagramación lógica | 41
La expresión lógica: (Cat=’A’)or((Ant>=10)and(Ant<=20)) permite ase-
gurar que el socio cumple con las condiciones impuestas.

Atención: En FreeDFD para expresar un valor alfanumérico es necesa-


rio usar comillas simples. Ejemplo: Cat ← ‘B’. En este caso a la varia-
ble Cat se le asigna el valor ‘B’. En cambio Cat=‘B’ expresa una com-
paración entre el valor de la variable y el carácter alfanumérico ‘B’.
Es un error en una asignación expresar ‘A’ ← Cat porque la varia-
ble debe ir a la izquierda y el valor asignado a la misma a la derecha,
pero si se tratara de una condición da lo mismo: Cat=‘A’ o ‘A’=Cat.
¿Qué pasaría si ingresa ‘a’ (minúscula)? ¿Nuestro socio será vip? Si no
funciona, ¿cómo podríamos solucionarlo?

42 | Lovos y Goin
Es común cometer errores usando operadores lógicos, por ejemplo:

(A>B) and (A=B)

(N<10) and (N>20)

¿Cuándo se cumplirán estas condiciones?

2. 6. Otros operadores matemáticos especiales

Además de los operadores básicos matemáticos como (+,-,/ y *) existen


otros operadores que se irán trabajando a lo largo del texto. En este capítulo
veremos los que son propios de la sintaxis de FreeDFD.
La siguiente tabla muestra algunos de los operadores matemáticos es-
peciales, para N, N1, N2 variables numéricas:

Operación Símbolo Sintaxis

Potencia ^ N1^N2

Raíz cuadrada sqrt sqrt(N)

Valor absoluto abs abs(N)

Seno sin sin(N)

Coseno cos cos(N)

Tangente tan tan(N)

Logaritmo neperiano ln ln(N)

Logaritmo decimal log log(N)

Exponencial e exp exp(N)

Número aleatorio random random(N)

Módulo mod N1 mod N2

A continuación se trabajarán unos ejemplos con los operadores analizados.

Diagramación lógica | 43
Problema 10: Se lee desde el teclado el valor de un ángulo en grados. Se desea
mostrar el coseno y el seno.

Nota: En el FreeDFD se puede optar por trabajar con ángulos en ra-


dianes o en grados simplemente clickeando en «Opciones» del menú.
Importante: No es posible utilizar como identificadores de variables las
palabras cos, sin, tan, abs, etcétera, por ser palabras reservadas del len-
guaje de FreeDFD.

44 | Lovos y Goin
Problema 11: Se ingresan por teclado los catetos de un triángulo rectángulo. Se
desea hallar y mostrar su hipotenusa.

Problema 12: Ingresar un número natural por teclado. Se desea saber y mostrar
si es par o impar.

Diagramación lógica | 45
El operador «mod» nos devuelve el resto de la división entre números
enteros. Para este caso cualquier número natural (1,2,3,..,∞) dividido 2 nos
da un 1 o un 0 (cero), entonces los números pares tendrán como resultado
un 0, mientras que los impares un 1.

Problema 13: Ingresar un número entero para saber si es divisible por 7 y es


mayor a 40.

Al tratarse de dos condiciones que se requiere que sean verdaderas, es


necesario utilizar el operador lógico «and».
El operador «random» sirve para generar números al azar. Por ejemplo,
si necesitamos generar números enteros entre el 0 y el 9 entonces la sinta-
xis será random(10), es decir que el valor N que se indica entre paréntesis
permitirá generar números entre el 0 hasta el N-1.
La siguiente tabla muestra algunas variantes para conseguir números
aleatorios:

46 | Lovos y Goin
Ejemplos Rango de valores obtenidos
random(2) 0y1
radom(10)+1 Del 1 al 10
random(21)-10 Del -10 al 10
random(100)/10 Del 0,0 al 9,9
random(101)/10 Del 0,0 al 10,0
random(1001)/100-5 Del -5,00 al 5,00
random(10)*2 0, 2, 4, 6, 8, 10,…,18

Problema 14: Mostrar en letras el número de la cara de un dado obtenido al azar.

Diagramación lógica | 47
Sabemos que son 6 las caras de un dado, entonces la expresión ran-
dom(6)+1 genera números del 1 al 6. ¿Qué podría suceder si cambiamos la
primera instrucción de asignación por dado ← random(7)?

Nota: La última decisión del ejercicio anterior funciona por descarte ya


que no necesita realizar otra consulta en el No, se da por descartado que
se trata de un 6. En estos casos cuando se tiene N casos posibles las deci-
siones serán N-1.

Problema 15: Generar aleatoriamente una temperatura entre los -20º y los 40º
y mostrar el resultado.

2. 7. Problemas: Diagramación lógica – Estructura


de control de decisión
1. Diseñar un algoritmo que, dados dos números, muestre por pantalla
su suma.
2. Realice un algoritmo que solicite dos datos: país y capital. Y luego
muestre la capital del país. El cartel debe ser como lo indica el si-
guiente ejemplo: “Katmandú es la capital de Nepal”.
3. Crear un algoritmo que muestre por pantalla el doble y el triple de
un número ingresado por teclado.
4. Diseñar un algoritmo que imprima el cuadrado y el cubo de un nú-
mero ingresado por teclado.

48 | Lovos y Goin
5. Diseñar un algoritmo que pida un número por teclado y luego im-
prima el número siguiente al ingresado.
6. Diseñar un algoritmo que genere un número aleatorio del 0 al 200,
lo muestre y luego calcule y muestre el mismo número aumentado
en un 30 %.
7. Diseñar un algoritmo que genere un número aleatorio del 10 al 50,
lo muestre y luego calcule y muestre el mismo número disminuido
en un 15 %.
8. Diseñar un algoritmo que, dados tres números enteros, calcule e im-
prima el promedio entre ellos.
9. Diseñe un algoritmo para ingresar dos palabras (A, B) y luego realice
el intercambio de sus valores. Finalmente mostrar el contenido de
A y de B.
10. Diseñar un algoritmo que imprima el área y el perímetro de un rec-
tángulo ingresando su base y altura.
11. Realice un algoritmo que calcule el volumen de un cilindro a partir
de los valores de su radio y altura.
12. Crear un algoritmo que convierta y muestre un valor ingresado en
centímetros a yardas, metros, pies y pulgadas.
13. Diseñar un algoritmo que convierta y muestre la temperatura en
Fahrenheit ingresando la temperatura en Celsius.
14. Diseñar un algoritmo que calcule el volumen de un cilindro dados su
radio y altura (primero el programa deberá verificar si son positivas).
15. Crear un algoritmo que calcule si dos números son divisibles. Para
ello, se piden un primer número y un segundo número, entonces
mostrar un cartel que diga “es divisible” si el segundo número es
divisible al primero.
16. Diseñar un algoritmo para calcular el porcentaje de hombres y de
mujeres que hay en un grupo, dados los totales de hombres y de
mujeres.
17. Diseñar un algoritmo que indique con carteles si el número ingresa-
do es negativo, positivo o nulo.
18. Ingresar tres números y mostrar el mayor (asuma que todos son dis-
tintos entre sí).
19. Realice un algoritmo para mostrar un cartel que indique si un trián-
gulo es «escaleno», «equilátero» o «isósceles» ingresando sus lados.
20. Diseñar un algoritmo que imprima con un cartel el número de do-
cena («primera», «segunda» o «tercera») dado el resultado de una
jugada de ruleta (del 0 al 36). Utilizar el operador lógico and.
21. Crear un algoritmo que permita obtener y mostrar la cantidad de dígi-
tos de un número ingresado, sabiendo que el máximo permitido es 4.

Diagramación lógica | 49
22. Crear un algoritmo que muestre cada uno de los dígitos de un nú-
mero ingresado por el usuario. El máximo permitido es de 4 dígitos.
Por ejemplo: si se ingresa el número 187, entonces debe mostrar en
un único cartel lo siguiente: “d1 = 0, d2 = 1, d3 = 8 y d4 =7”.
23. Ídem al anterior pero se pide que muestre la suma de los dígitos del
número ingresado (máximo 4 dígitos).
24. Diseñar un algoritmo que imprima con un cartel «Correcto» según
el siguiente caso: si el numero N es múltiplo de 5 y se encuentra en-
tre los 25 primeros números. N debe ser obtenido aleatoriamente
entre números del 1 al 1000. Primero debe mostrar N.
25. Diseñar un algoritmo que ingresando un numero de 5 dígitos detec-
te si es capicúa y muestre un cartel «Es capicúa» o «No es capicúa»
según el resultado.
26. Crear un algoritmo que muestre las soluciones de una ecuación cua-
drática (usando Bhaskara), a partir del ingreso de los valores de los co-
eficientes del polinomio. El polinomio tiene la forma: P(x) = ax2+bx+c
27. Probar con: a) P(x) = x2+3x+2 b) P(x) = 2x2+4x+2 c) P(x) = 3x2+2

2. 8. Estructura de control de repetición

Hasta el momento, se han presentado problemas que no requieren de re-


peticiones de sentencias o acciones. Sin embargo al momento de resolver
problemas, es muy común encontrarnos con situaciones repetitivas.
Pensemos en el siguiente problema: se desea determinar el promedio
de las edades de 5 personas. Una solución posible podría ser leer 5 edades
(variables) y luego calcular su promedio. Ahora bien, ¿qué sucede si en lugar
de 5 personas son 100 o un valor N que ingresa el usuario?
No es lo mismo hallar el promedio de tres números que el promedio
de 100 o de un valor N que ingresa el usuario. Veamos justamente cómo
podríamos resolver el problema propuesto con las herramientas trabajadas
hasta el momento para tener una mejor idea.

50 | Lovos y Goin
Problema 16: Ingresar 10 números (edades de personas) y luego hallar y
mostrar su promedio.

Solución 1

Diagramación lógica | 51
Solución 2

Nota: Por una cuestión de espacio se escribieron puntos suspensivos en


reemplazo de lectura A y la asignación S ← S + A.

52 | Lovos y Goin
La primera solución resuelve el problema en pocas líneas, pero utiliza
una gran cantidad de variables. La segunda solución utiliza pocas variables,
pero muchas líneas de comando que se repiten de a pares (leer y sumar).
Basta imaginar si el algoritmo en vez de resolver el promedio con diez
números debiera resolverlo para cien, necesitaríamos para la solución 1
cien variables y para la solución 2 más de doscientas líneas de trabajo.
Para poder tratar con este tipo de situaciones, existen las estructuras de
control de repetición: «para», «mientras» y «hacer-mientras».

2. 8. 1. Estructura de control de repetición (sentencia «para»)

Cuando se desea ejecutar un conjunto de acciones un determinado núme-


ro de veces, usamos la sentencia «para».
En estos casos se requiere que conozcamos por anticipado el número de
repeticiones. Para solucionar el problema del ejercicio anterior, hacemos lo
siguiente:

Diagramación lógica | 53
De esta manera todo lo que encierra desde Para hasta Fin (Para) se re-
pite tantas veces como lo indica el control de repetición.
La variable S funciona como sumador o acumulador de A.

La variable i comienza a contar los ciclos


(vueltas) desde 1 hasta 10 con saltos de
un paso.

Se repiten las instrucciones que se


encuentran entre el Para y el Fin (Para).

Problema 17: Hallar la sumatoria de 10 números generados al azar. Los números


deben comprender el siguiente rango de valores [1...20].

Preguntas: Esta solución, ¿resuelve el problema? ¿Cuántas veces se ejecu-


tan las instrucciones que se encuentran dentro del Para? ¿En qué cambia
el algoritmo si quisiéramos hacer esto para 200 números?

54 | Lovos y Goin
2. 8. 2. Variables como acumuladores

Es una variable que, como su nombre lo indica, va a ser usada para sumar
sobre sí misma un conjunto de valores. Cuando se utiliza dentro de un ciclo
de repetición Para, al finalizar el mismo, esta variable contendrá la suma-
toria de todos los valores que cumplen una determinada condición (tam-
bién puede servir para decrementar valores variables). Es necesario haber
inicializado su valor antes del comienzo de un ciclo de repetición «para».
La inicialización consiste en asignarle al sumador un valor inicial, es de-
cir el valor desde el cual necesitamos se inicie la sumatoria (por lo general
comienzan en cero).

Ejemplo: S = 0
S=S+N

2. 8. 3. Variable contadora

Es una variable que se encuentra en ambos miembros de una asignación


a la que se le suma un valor constante. Un contador es una variable cuyo
valor se incrementa o decrementa en una cantidad constante cada vez
que se produce un determinado suceso, acción o iteración. Los contadores
se utilizan con la finalidad de registrar la cantidad de sucesos, acciones o
iteraciones internas en un bucle, proceso, subrutina o donde se requiera
cuantificar. Como cualquier variable es necesario inicializarla antes del co-
mienzo de un ciclo de repetición.
La inicialización implica darle un valor inicial, en este caso, el número des-
de el cual necesitamos se inicie el conteo (por lo general comienzan en cero).

Ejemplos: C=0 (inicializa la variable C en 0)


C=C+1 (incrementar)
H=H-1 (decrementar).

Nota: La diferencia entre un sumador y un contador es que mien-


tras el primero va aumentando en una cantidad fija preestableci-
da, el acumulador va aumentando en una cantidad o valor variable.
Tanto si es una variable contadora sumadora o acumuladora, es necesario
asignarle un valor inicial antes de comenzar a utilizarla, por ejemplo en un
bucle. Cuando se desean calcular promedios o porcentajes se requiere de
ambos tipos de variables.

Diagramación lógica | 55
Problema 18: En una veterinaria se desea saber el promedio de edad de gatos
y perros (por separados) que fueron asistidos durante un mes. En total se
registraron 30 animales y la veterinaria solo atiende gatos y perros.

Atención: Es muy importante tomar en cuenta que los prome-


dios siempre deben ser calculados fuera del ciclo de repetición
Para - Fin (Para). ¿Qué sucedería si se calculan dentro del ciclo?
Recordar que el ingreso de caracteres, en este caso el tipo de animal (gato/
perro) debe estar entre comillas: “Gato” y “Perro”.

56 | Lovos y Goin
Problema 19: Se pide lo mismo que el problema anterior, pero la diferencia
radica en que no solo la veterinaria atiende gatos y perros, puede que sean
otros animales también. Justamente lo que se pide es además contar la
cantidad de esos animales que no son ni gatos y ni perros.

Diagramación lógica | 57
Es decir que, por descarte, otro tipo de animal caería en el último No de
la decisión y, entonces, incrementaría en uno la variable CA.

Importante: Todo contador y acumulador (sumador) debe iniciarse con un


número antes del comienzo del ciclo de repetición, en el caso anterior con cero.
Nota: Para una mejor comprensión en las respuestas, lo ideal sería en la sa-
lida combinar carteles y resultados, por ejemplo para el problema anterior.

La cantidad de iteraciones del bucle «para» también se puede determinar


ingresando el dato necesario. A continuación un ejercicio relacionado.

58 | Lovos y Goin
Problema 20: Solicitar al usuario que ingrese un número entero N, luego
generar en forma aleatoria N números enteros comprendidos entre 1 y 100
y determinar cuántos son pares y cuántos impares.

Diagramación lógica | 59
Pregunta: ¿Qué precondición debe cumplir N? ¿Qué sucede si el número
que ingresa el usuario es -1?

También podemos usar el ciclo decrementando el contador de vueltas


del Para. Desde N a 1 mientras el paso sea -1.

A continuación un ejemplo relacionado.

Problema 21: Solicitar al usuario que ingrese un valor N y mostrar todos los
valores comprendidos entre N y 1, comenzando desde N.

60 | Lovos y Goin
Problema 22: El factorial de un número entero se denota de la siguiente manera
«n!» y su resultado es n!=n*(n-1)*(n-2)*…*1. Por ejemplo: 5!=5*4*3*2*1
siendo el resultado 120. Se pide desarrollar un programa que lee un valor N
y determine su factorial.

Diagramación lógica | 61
2. 8. 4. Máximos y mínimos

Problema 23: Hallar la persona de mayor edad, sabiendo que se leen datos
correspondientes a 20 muestras.

El valor inicial de la variable EMAX es un número absurdo por ser una


edad de un número negativo (-1000). Cuando se ingresa el primer valor E
dentro del bucle, la condición (E > EMAX) se cumple por ser verdadera, en-
tonces el valor de EMAX cambia por el valor de la edad E.
A medida que se continúa ejecutando el bucle, la sentencia evalúa si
aparece un valor mayor o no a EMAX, en caso afirmativo se le asigna al
mismo el nuevo valor de E.

62 | Lovos y Goin
Tomar en cuenta que si se produce el caso de empate la condición es
falsa, por lo tanto, no sufre efecto.
Si el ejercicio además solicitara hallar la mínima edad entre las 20 per-
sonas, entonces será necesario agregar otra variable, por ejemplo EMIN
y asignarle un valor extremadamente grande de entrada (por ejemplo:
EMIN = 1000) y la condición (E < EMIN) para la decisión.
A continuación se muestra un ejemplo de cómo hallar el mínimo.

Nota: ¿Qué alternativa sugerís, de manera de evitar la asignación de valor


absurdo a EMAX y EMIN?

Problema 24: Hallar la persona de menor altura, sabiendo que se leen datos
correspondientes a las alturas de 30 personas. El ingreso es en números
enteros y en cm.

Diagramación lógica | 63
El valor absurdo de entrada será AMIN=1000 (ninguna persona mide 10 m).
¿Qué sucede si además de registrar la mínima altura de la persona, se
desea conocer en qué ubicación (orden dentro de la lista de valores leídos)
se encuentra tal persona?

Problema 25: Mostrar la mínima altura registrada de un grupo de 30 personas y


además en qué ubicación se encuentra.

64 | Lovos y Goin
A la variable UMIN se le asigna el valor de la variable de iteración i del
Para. Por ejemplo, si la altura mínima se produce en la vuelta 8 significa que
i es igual a 8.
De esta manera se tiene el registro de cuándo se produce la última con-
dición verdadera de la decisión.
En caso de empate, el único registro que se produce es el primero que llega.

2. 8. 5. Problemas: Diagramación lógica –Estructura de control


de repetición «para»

28. Mostrar por pantalla los números del 10 al 1.


29. Mostrar por pantalla las tres primeras potencias de los números del
1 al 5.
30. Dado un número, mostrar por pantalla su tabla de multiplicar (del
1 a 10).
31. Mostrar por pantalla la cantidad de personas mayores de edad (≥18)
de un total de N edades leídas desde teclado.
32. Mostrar por pantalla la cantidad de mujeres y hombres (M/H)
de un total de N valores leídos desde teclado. Mostrar también su
porcentaje.
33. Mostrar por pantalla la cantidad de mujeres mayores de edad y la
cantidad de hombres menores de edad de un total de N edades y
sexo leídos desde teclado.
34. A un grupo de 10 personas se les consulta la edad y se desea calcular
el promedio de edad del grupo. Mostrar el promedio y cuántas de las
10 personas son mayores de 18 años, leyendo la información desde
teclado.
35. Se desea conocer el peso acumulado de 10 personas. ¿En qué cam-
biaría la solución si ahora son 100 personas?
36. Se desea conocer el peso promedio de 5 personas.
37. Realice un algoritmo que permita ingresar 10 edades de personas
para luego hallar y mostrar el % de gente mayor de edad (≥ 18) y el %
de menores de edad.
38. Crear un algoritmo que genere al azar 5 números de la ruleta (del 0
al 36) y muestre el % de números pares, % de impares y % de ceros
generados.
39. Ingresar 10 temperaturas por teclado y mostrar la mayor.
40. Se ingresan 10 pares de temperaturas (T1 y T2). Hallar el promedio
de las temperaturas T1 y el promedio de las temperaturas T2.

Diagramación lógica | 65
2. 8. 6. Estructura de control de iteración (sentencia «mientras»)

Esta estructura de control permite repetir una instrucción o grupo de ins-


trucciones mientras una expresión lógica sea verdadera. De esta forma, la
cantidad de veces que se reiteran las instrucciones no necesita conocerse por
anticipado, sino que depende de una condición.
Lo primero que hace esta sentencia es evaluar si se cumple la condición.
En caso que se cumpla se ejecuta el bucle. Si la primera vez que se evalúa la
condición esta no se cumple, entonces no se ejecutará ninguna acción. En
otras palabras, mientras la condición se cumpla el bucle sigue iterando, por
eso es importante no caer en ciclos de repetición infinitos.
Veamos como ejemplo el siguiente problema.

Problema 26: Calcular la suma de los números ingresados por teclado hasta
que se ingrese un cero.

66 | Lovos y Goin
Es necesario leer el valor de la variable N antes de comenzar con el bucle
«mientras», porque se debe evaluar la condición al entrar al ciclo de repeti-
ción. Luego es importante no olvidarse de volver a leer N dentro del bucle,
porque si no lo hacemos caeremos en un ciclo de repetición infinito.
¿Cuál será el resultado si arrancamos ingresando un cero?

Mientras que la condición se cumpla el ciclo


se sigue ejecutando.
MQ (significa mientras que)

Se repite las instrucciones que se encuentran


entre el MQ y el Fin (MQ)

Problema 27: Hallar el promedio de números ingresados por teclado hasta que
se lea un número impar o uno menor a 20.

Diagramación lógica | 67
Nota: También se puede introducir en la salida la combinación de un car-
tel y un cálculo, como en el caso anterior donde se realiza el promedio S/C
sin depender de otra variable: prom ← S/C.

¿Qué pasaría si de entrada ingresamos un número que no cumple la


condición del «mientras»? Probemos con N=5 o con N=80.
Se produce el error que muestra la figura:

Esto es así porque estamos dividiendo por cero, ya que C nunca pudo
incrementarse. ¿Cómo podríamos solucionar este problema? ¿En qué casos
es posible hallar el promedio?

Nota: Para poder solucionar este problema tendremos que recurrir a una
decisión antes de efectuar la división, de la siguiente manera:

68 | Lovos y Goin
Problema 28: Se leen números que ingresa el usuario desde teclado, hasta que
llega un valor negativo. Se pide que determine cantidad de impares y pares
leídos. El cero no se cuenta.

Diagramación lógica | 69
Mientras la condición del ciclo de repetición cumpla con N mayor o
igual a cero, se determina si dicho número es distinto a 0 y luego si es par o
impar para incrementar CP o CI respectivamente.

Nota: No olvidarse de leer N antes del ciclo y dentro del mismo. ¿Qué
sucedería si no leemos dentro del ciclo?

Problema 29: Diseñar un algoritmo que calcule cuánto es el cociente entre dos
números (únicamente dos números pares). Si el usuario ingresa un número
impar, le pide otra vez el número hasta ingresar uno que sea par.

70 | Lovos y Goin
Nota: Se asignan al inicio del algoritmo a las variables N1 y N2 el valor 1
(uno) para que puedan entrar a los ciclos de repetición «mientras» y así
pedir el nuevo valor.
Prueben ingresar valores impares y verán como repite el ingreso hasta
que se lea un valor par.

Dentro de un ciclo de repetición pueden incluirse otros ciclos de repeti-


ción como el «mientras» o el «para» y/o condiciones de selección. Es decir,
las estructuras de control se pueden combinar para resolver un problema. A
continuación se presenta un ejercicio con dicha combinación.

Problema 30: Diseñar usando FreeDFD un algoritmo que muestre por pantalla
10 números impares generados al azar (del 1 al 9, solo impares). Si el número
obtenido al azar es par debe continuar hasta hallar un impar.

Diagramación lógica | 71
Nota: Antes de entrar al ciclo de repetición Para se le asigna a la variable N un
valor 2 obligando a entrar al ciclo «mientras» hasta encontrar un número N
impar. Esto sucede 10 veces porque se encuentra dentro del Para.

2. 8. 7. Problemas: Diagramación lógica – Estructura


de control de repetición «mientras»

41. Diseñar un algoritmo que genere números al azar múltiplos de 5,


mientras el usuario no ingresa la opción ‘S’ (Salir).
42. Diseñar un algoritmo que lea un número desde teclado y determine
si el mismo es primo o no.
43. Diseñar un algoritmo que lea desde teclado la información sobre
altura, edad, y sexo (F/M) de los participantes de un curso. La lectura
finaliza cuando se lee un valor de altura negativo. Luego calcule:
a. Promedio de altura de las mujeres.
b. Promedio de altura de los varones.
c. Promedio de edad de los participantes.
44. Se ingresan 10 números cuyos valores corresponden a los de la ru-
leta (0,1,2,…,36), se pide hallar y mostrar por pantalla lo siguiente:
a. Cantidad de números impares.
b. Promedio de los números pares (no contar los ceros).
c. Cantidad de números que se encuentran en la 2º docena (13 al 24).
d. El número más grande.
e. ¿En qué cambia la solución si en lugar de leer 10 números, ahora se
leen números hasta que llega el valor 36?
45. Se leen desde teclado pares de temperaturas (T1 y T2) hasta que T1
sea cero. Hallar el promedio de las temperaturas ingresadas que es-
tán comprendidas entre 5° y 15° (incluidos).
46. Se leen desde teclado números hasta que la suma de los mismos lle-
gue a 1000. Mientras tanto debe hallar:
a. La cantidad de números múltiplos de 6.
b. La suma de los números que se encuentran entre el 1 y el 10
(incluidos).

72 | Lovos y Goin
Capítulo 3
Pseudocódigo

Pseudo deriva del griego seudo, que significa ‘falso’, mientras que código pro-
viene del latín: codices, codex. Estos se empleaban para referirse a los docu-
mentos o libros donde los romanos tenían escritas todas y cada una de sus
leyes. En definitiva pseudocódigo significa ‘falso lenguaje’.
Como se explicó en el capítulo introductorio, el diseño del algoritmo es
independiente del lenguaje de programación, es decir, una solución a un
problema puede ser escrita en diferentes lenguajes. Así, el pseudocódigo
está diseñado para facilitar la comprensión de la solución algorítmica. En
pocas palabras, es una herramienta que facilita el proceso de programar.
Aunque no existe una sintaxis estándar para el pseudocódigo, las dife-
rentes versiones utilizan un lenguaje similar al lenguaje natural y, en gene-
ral, su escritura exige la indentación (sangría en el margen izquierdo) de
diferentes líneas. En el caso de este libro, se usará la sintaxis provista por el
aplicativo PSeInt.

3. 1. PSeInt

PSeInt es un software educativo libre y multiplataforma, dirigido a aquellos


que quieren comenzar a incursionar en la programación y el desarrollo de
la lógica. El software fue creado en el año 2003 por el ingeniero en informá-
tica Pablo Novara en la Facultad de Ingeniería y Ciencias Hídricas (fich)
de la Universidad Nacional del Litoral (unl) de la Argentina.
PSeInt se distribuye bajo licencia gpl (General Public License) y es uno
de los softwares más utilizados en las universidades latinoamericanas para
la construcción de algoritmos. Su manejo es simple e intuitivo a través de
un editor de programas escritos en un pseudolenguaje en español. Su in-
terfaz gráfica permite crear, almacenar, ejecutar y corregir fácilmente los
programas.
El objetivo es permitir centrar la atención en conceptos fundamenta-
les de aprendizaje sin detenerse en detalles para la interpretación de un
compilador. De esta forma, se facilita la tarea de escritura de algoritmos y
se proporciona un conjunto de ayudas y asistencias, junto a algunas herra-
mientas que asisten a un programador novato a encontrar errores y com-
prender la lógica de los algoritmos. El software no deja de actualizarse y
para descargarlo tenemos que dirigirnos al siguiente vínculo http://pseint.
sourceforge.net/

Pseudocódigo | 73
Una vez descargado e instalado se puede ejecutar a través del icono:

La primera ventana que aparece es la que muestra la figura 2. 1:

Figura 2. 1. Pantalla PSeInt

En la barra ubicada arriba de la pantalla figura el menú principal que


contiene el total de las opciones; en el panel derecho, los comandos para
armar el algoritmo; y, en el centro, aparece el sector de trabajo o edición.
A medida que avancemos incorporaremos los comandos necesarios
para abordar cada uno de los problemas vistos en el capítulo 2 (diagrama
de flujo).
A continuación, se muestra paso a paso cómo editar y probar el primer
ejercicio, en el que se ingresaban dos números enteros para hallar y mos-
trar la suma.

74 | Lovos y Goin
Se describen con detalle todos los pasos a seguir en PSeInt para resolver
el problema 1.

1. Escribir el nombre del programa


a la derecha de «Proceso», en el
espacio que dice “sin_titulo”
En este caso, recomendamos
que escriban “Problema1”
Nota: El título no debe contener
espacios en blanco.
2. Ubicamos el cursor en la línea 2
haciendo un click y luego elegimos
el comando «Leer».

En la lista de variables escribimos las variables A, B.


3. Insertamos en la línea 3 el Allí escribiremos en
comando de asignación. «variable<-expresión» lo siguiente:
C<-A+B

4. Para finalizar el algoritmo, Reemplazamos en la lista de expresiones la


insertamos en la línea 4 el variable C.
comando

Pseudocódigo | 75
Una vez terminado el programa en el sector de trabajo es necesario
probarlo ejecutándolo con el ícono o directamente con la tecla F9.

Se ingresa por teclado un número Enter y luego otro número Enter.


Finalmente el resultado será el siguiente:

En caso de error se muestra en un panel inferior el número del error


cometido y la información detallada.

Importante:
i) Evitar dejar líneas de comando en blanco.
ii) Tener en cuenta al nombrar variables que no se diferencian mi-
núsculas de mayúsculas.
iii) Las palabras reservadas del programa aparecen en negrita.
iv) Guardar los archivos.
v) Probar el funcionamiento de cada programa.
vi) Para empezar un nuevo algoritmo hacer un click en el ícono .
Nota: Realizar en PSeInt el problema 2 (del capítulo 2).

Con respecto a la estructura de control de decisión el comando del


PSeInt es:

76 | Lovos y Goin
Atención: Es muy importante tomar en cuenta las tabulaciones que se
presentan. En este caso, lo que va dentro del Si y Sino se tabula. Esta
acción tiene por nombre indentación y PSeInt la realiza automáticamente.
La indentación es lo que permite determinar un bloque de acciones que
se ejecutarán juntas. Luego, cada lenguaje de programación usará sus
propios símbolos para esto, por ejemplo, en el lenguaje C se usan las llaves
{}; en Pascal, las palabras reservadas «Begin-End». Es muy importante
acostumbrarse a escribir código indentado ya que facilita la lectura y la
detección de errores.

Problema 3 (del capítulo 2): Mostrar el perímetro de una circunferencia,


siempre y cuando el radio que se ingresa sea mayor a cero.

Pseudocódigo | 77
A continuación, se muestra el problema 4, donde se presenta un caso de
decisión doble.

Problema 4 (del capítulo 2): Igual al ejemplo anterior pero en el caso de ingresar
un radio erróneo (cero o negativo) indicarlo con el cartel “Error”.

En el problema 6 se presenta un caso de decisiones anidadas.

78 | Lovos y Goin
Problema 6 (del capítulo 2): Mostrar el número más grande (entre dos) ingresado
por teclado. Si los dos números son iguales mostrar el cartel “Son iguales”.

A continuación se exhibe un caso donde las decisiones son independientes.

Atención: Se recomienda directamente editar el algoritmo en el sector


de trabajo sin la necesidad de utilizar los comandos del panel derecho.
Importante: A partir de ahora se incorporan comentarios en el
algoritmo. Para ello, se inicia la línea con un par de barras inclinadas //.
Resulta importante que en cada algoritmo, en la cabecera, escriban todas
las variables en uso y el tipo al que pertenecen: alfanumérico, entero o
decimal. Por ejemplo, en el caso anterior (problema 6) el programa
quedaría de la siguiente manera:

Nota: Los comentarios en PSeInt se muestran siempre en color gris.

Pseudocódigo | 79
Problema 7 (del capítulo 2): Ingresar dos números por teclado y sumarlos, con
la condición de que cada uno sea positivo (de lo contrario cambiar el signo).
No olvidarse de comentar las variables en uso.

3. 2. Operadores lógicos

Los operadores lógicos en pseudocódigo se relacionan de la siguiente forma:

Diagrama de flujo Pseudocódigo Ejemplo


and & (N>10) & (M==’X’)
or | (R==0) | (R>=100)
not no no (C<1)

A continuación, se muestran algunos ejemplos relacionados con los


operadores lógicos.

80 | Lovos y Goin
Problema 8 (del capítulo 2): Verificar que el número ingresado por teclado se
encuentra dentro de la primera docena de números naturales, es decir entre
el 1 y el 12.

Realice el pseudocódigo del problema 9 (del capítulo 2).

Atención: Los operadores aritméticos básicos, los de relación (>, <, =,


<= y >=) y la mayoría de los operadores especiales se mantienen con
respecto al diagrama de flujo. A continuación se presentan aquellos que
se diferencian.

Operación Símbolo Sintaxis


Raíz cuadrada raiz raiz(N)
Seno sen sen(N)
Número aleatorio azar azar(N)

Importante: En PSeInt la desigualdad se escribe de la siguiente manera:


<>

El problema 12 es un ejemplo con un operador aritmético especial.

Pseudocódigo | 81
Problema 12 (del capítulo 2): Ingresar un número natural por teclado. Se desea
saber y mostrar si es par o impar.

Nota: Recuerde que el operador «mod» nos devuelve el resto de la división


entre números enteros.

Realice los ejercicios 13, 14 y 15 en pseudocódigo del capítulo anterior.

Atención: Recuerde que el operador especial «random» que se utiliza en


el FreeDFD, tiene su equivalente en PSeInt: «azar».

82 | Lovos y Goin
Para el caso de la estructura de control de repetición «para», el comando
del PSeInt es:

Para el problema 17 (del capítulo 2) que consistía en hallar la sumato-


ria de 10 números generados al azar, los números deben comprender el
siguiente rango de valores [1...20].

A continuación se presenta directamente el pasaje a pseudocódigo del


problema 18 (del capítulo 2). En el mismo se pedía lo siguiente: en una
veterinaria se desea saber el promedio de edad de gatos y perros (por se-
parados) que fueron asistidos durante un mes. En total se registraron 200
animales y la veterinaria solo atiende gatos y perros.

Pseudocódigo | 83
Nota: En el problema 18 se utilizan variables de diferentes tipos; entero,
decimales y alfanuméricos. Con la intención de mejorar la lectura del
código se han agrupados los tipos por línea.

Recordar que el problema 19 (del capítulo 2) pide lo mismo que el pro-


blema anterior, pero la diferencia radica en que no solo la veterinaria atien-
de gatos y perros, puede que sean otros animales también. Justamente lo
que se pide es además contar la cantidad de esos animales que no son ni
gatos y ni perros.

84 | Lovos y Goin
Nota: Realice los problemas 20, 21 y 22 directamente utilizando el programa
PSeInt sin depender del diagrama de flujo.

El siguiente es el problema 23 (del capítulo 2) de máximos y mínimos


en pseudocódigo.

Nota: Realizar los ejercicios 24 y 25.

Pseudocódigo | 85
Para el caso de la estructura de control de repetición «mientras» el co-
mando del PSeInt es:

Tomar el problema 26 (del capítulo 2) en diagrama y pseudocódigo para


comparar. En el mismo se pedía calcular la suma de números ingresados
por teclado hasta que se ingrese un cero.

Nota: Realizar los problemas 27, 28, 29 y 30 del capítulo anterior utilizando
directamente el software PSeInt (sin la necesidad de recurrir al diagrama
de flujo).

86 | Lovos y Goin
3. 3. Ejercicios: pseudocódigo

46. Se ingresan por teclado 10 pares de temperaturas (T1 y T2) para hallar
el promedio de las temperaturas que están entre 5° y 15° (incluidos).
47. Se ingresan 10 números por teclado para hallar tres datos:
a. La cantidad de números negativos.
b. La suma de los números que se encuentran entre el 1 y el 10 (no
incluidos).
c. El promedio de todos los números.
48. Se generan números enteros en forma aleatoria entre [0 y 200] hasta
que la sumatoria de los mismos sea mayor a 500. Al finalizar indicar:
a. La cantidad de números nulos (0) leídos.
b. La sumatoria de los números que se encuentran entre el 10 y el 100
(incluidos).
c. El promedio de los números menores a 150.
d. El número mayor generado.
49. La sucesión de Fibonacci genera la siguiente secuencia de números:
1, 1, 2, 3, 5, 8, etcétera. Es decir que se obtiene de sumar los dos nú-
meros anteriores.
El siguiente es el término general: an=an-1+an-2
Se pide que diseñe un programa que le solicite al usuario un número
entero positivo K y luego muestre en pantalla el K-ésimo término
de la sucesión de Fibonacci. Por ejemplo, si el usuario ingresa por
teclado el número 10 entonces el algoritmo debe mostrar el valor
correspondiente a a10
50. Realice los ejercicios 25, 37, 38, 43 y 46 del capítulo anterior en
pseudocódigo.

Pseudocódigo | 87
Capítulo 4
Entorno de programación visual

Existen otras formas de aprender a programar. Una de ellas consiste en uti-


lizar lenguajes visuales a través de entornos de desarrollo integrado (ide)
que, a diferencia de las herramientas anteriores, posibilitan la ejecución y
visualización de un algoritmo al mismo tiempo.
DaVinci Concurrente, la herramienta a la que vamos a dedicar este úl-
timo capítulo, es un entorno integrado de desarrollo (ide) que facilita la
comprensión de situaciones problemáticas y permite la visualización de
la ejecución de los algoritmos que se resuelven. Fue desarrollado original-
mente por un grupo de investigadores del Instituto de Investigación en
Informática lidi (iii-lidi) de la Facultad de Informática de la unlp, enca-
bezado por el licenciado Raúl Champredonde.
Luego, a través de un trabajo de tesis de grado (Aguil Mallea, 2012) de
la Universidad Nacional de la Patagonia San Juan Bosco (Ushuaia), se de-
sarrolló una segunda versión que permite la introducción a los conceptos
básicos de la programación concurrente. Y esta última versión es la que
vamos a utilizar aquí.
Este lenguaje está directamente ligado a la enseñanza de la programa-
ción estructurada, tanto para la etapa inicial de la programación secuencial
como para los conceptos básicos de la programación concurrente.
La versión actual del aplicativo está desarrollada en lenguaje de progra-
mación Java, por lo tanto, uno de los requisitos es tener instalado el plug-in
de Java en la computadora donde se va a ejecutar. El mismo se puede des-
cargar en el siguiente sitio: www.java.com/getjava y el enlace para descar-
gar el DaVinci es http://davinci-c.sourceforge.net/
Da Vinci se basa en la programación de un robot (Lubo-I) situado en una
ciudad cuadrada con avenidas y calles. Este puede realizar diferentes accio-
nes, desde movimientos dentro de los límites de la ciudad hasta interaccio-
nes con los objetos (flores, papeles y obstáculos) que se encuentran en ella.
DaVinci permite que los usuarios puedan programar los movimientos de
un robot abstracto en una ciudad también abstracta. La ciudad es un cuadra-
do que contiene 10 calles horizontales y 10 avenidas verticales, como se puede
observar en la figura 4.1. El robot camina de una esquina a la otra ejecutando
las instrucciones especificadas en el programa. Durante la ejecución, el robot
puede recoger o depositar dos tipos de objetos: flores y papeles. Para esto dis-
pone de dos bolsas, una para cada tipo de objeto. Cuenta además con la posi-
bilidad de incorporar obstáculos en las esquinas de manera de bloquear un ca-
mino, contar objetos y mostrar resultados. El lenguaje define las instrucciones

Entorno de programación visual | 89


primitivas que el robot ejecuta y las construcciones necesarias que permiten
una programación modular y estructurada. En Da Vinci Concurrente, un pro-
grama puede ser desarrollado en modo texto o visualmente. Cualquiera sea el
modo seleccionado, todo lo que se hace en una representación, simultánea y
automáticamente se reproduce en el otro modo. La verificación sintáctica y la
ejecución de los programas desarrollados se llevan a cabo sobre el código en
modo texto, de manera de independizar la eficiencia del lenguaje del formato
visual del algoritmo (Champredonde y otros, 2000).
En el presente capítulo, se trabajan conceptos básicos de lógica proposi-
cional vistos en capítulos anteriores, para representar condiciones comple-
jas utilizadas en las estructuras del ambiente, aplicadas específicamente en
este caso a problemas con el robot.
Ahora bien, para darle instrucciones al robot Lubo-I, es necesario cono-
cer a qué primitivas (instrucciones) responde.
La herramienta permite configurar la ciudad de manera manual o alea-
toria, para que aparezcan en las esquinas objetos como flores, papeles u
obstáculos.
Además, el robot puede acceder y modificar los valores de variables que
el sistema ofrece y dejar o no un rastro a medida que transita por la ciudad.
Al igual que PSeInt, el aplicativo DaVinci Concurrente nos brinda un
lenguaje sencillo para la incorporación y el manejo de conceptos básicos de
la programación estructurada y modular, empleando palabras clave, primi-
tivas, sentencias simples o compuestas, estructuras de control, expresiones
y constructores de subprogramas.
Podremos utilizar cero, uno o más robots en cada programa.
Primero empezaremos por el reconocimiento del entorno de trabajo del
DaVinci, integrado básicamente por cuatro paneles: 1) de edición de código
fuente, 2) el de resultados, donde se pueden visualizar los mensajes, 3) el de
estado de ejecución, 4) el de la ciudad donde transitan el/los robot/s y los
objetos que la componen.

90 | Lovos y Goin
Figura 4.1. Entorno gráfico del programa DaVinci

La franja superior es la barra de íconos que permiten crear, abrir y guar-


dar programas fuentes; dentro del programa se puede cortar, copiar y pegar
texto; ejecutar, pausar, continuar y frenar el funcionamiento del algoritmo,
así como también depurar.
Empecemos con nuestro primer ejemplo, sin utilizar el robot por ahora.
Al mismo tiempo indicaremos las diferencias con PSeInt en la escritura del
algoritmo.

Recomendación: Ir probando los ejercicios propuestos a medida que avan-


zamos.

Ejemplo 1: Pedimos que el usuario ingrese el nombre de su localidad para


mostrar por pantalla “Bienvenido a la ciudad _ _ _ _ _”, donde las líneas
representarían la ciudad o pueblo que se ha introducido previamente.
Escribimos el algoritmo en el sector 1 (editor de código fuente).

Entorno de programación visual | 91


Para ejecutar el programa se debe presionar el ícono de ejecución (barra de
botones octavo de izquierda a derecha), nos aparecerá la siguiente ventana
de carga:

Esto sucede gracias a la instrucción «pedir» del algoritmo.


Luego de ingresar la localidad (supongamos que ingresamos Comallo) y acep-
tar el paso, nos aparece en el sector 2 (panel inferior izquierdo) lo siguiente: Yo
vivo en la localidad de Comallo.

Recomendaciones: Es importante mantener la indentación (tabulación),


pues organiza y mejora la lectura del programa, aunque funcione sin ella.
Notarán cambios de colores en la fuente para diferenciar las palabras re-
servadas del lenguaje del resto.
El nombre del programa, en este caso “ejemplo1” no debe tener es-
pacios en blanco ni símbolos, salvo el guion de abajo “ejemplo_1”.
Se aconseja ir guardando el archivo con un nombre adecuado (identifi-
catorio) siendo la extensión punto j (es decir .j, tercer ícono de izquierda
a derecha).

La sintaxis del lenguaje es similar a la de PSeInt, a continuación se pre-


senta una tabla comparativa:

DaVinci PSeInt
Programa Proceso
Pedir Leer
Informar Mostrar por pantalla
Fin FinProceso

Además contiene las instrucciones «comenzar» y «variable» y utiliza los


paréntesis () para los ingresos por teclado y salida de mensajes a diferencia
de PSeInt. Para comentar una línea de código se utilizan los símbolos //. Las
variables son indiferentes a minúsculas o mayúsculas.
DaVinci nos obliga a definir todas las variables que vamos a usar en
nuestro programa previo a su uso. Veamos un ejemplo.

92 | Lovos y Goin
Ejemplo 2: Pedimos que el usuario ingrese los lados de un rectángulo para
mostrar el perímetro y área del mismo en un único cartel de salida “El períme-
tro es __ y el área es __“

Las asignaciones difieren en el símbolo “:=” (en PSeInt es) A ← L1*L2 (en Da-
Vinci es) A := L1*L2
Al igual que en el PSeInt se pueden alternar en la salida texto y variables con
la instrucción «informar».

4. 1. Variables del programa DaVinci

Se pueden utilizar las variables de tipo número, texto y lógico.

Operaciones
Tipo Contenido
Aritmética Comparación
Número Números enteros +-*/% <= >= ><<> =
Combinación entre +
Texto <= >= ><<> =
números y letras (para concatenar)
Lógico v/f (verdadero/falso) &|! = <>

Atención: Cuando operamos con enteros y obtenemos números decima-


les (no enteros) su salida o respuesta será truncada (solo la parte entera),
por ejemplo 30,8 será 30.

A continuación mostraremos ejemplos con la intervención del robot


(Lubo-I).

Entorno de programación visual | 93


4. 2. Conociendo la ciudad del robot

La ciudad de 81 cuadras está conformada por 10 avenidas y 10 calles, orien-


tadas de modo vertical y horizontal, respectivamente.
La avenida 1 y calle 1 se ubica en la parte inferior izquierda como se
muestra a continuación.

Figura 4.2. Ciudad DaVinci

Para una mejor orientación, la estrella está ubicada en la avenida 6 y la calle 3.


El robot siempre se mueve de esquina en esquina y podemos elegir des-
de donde parte.
Para configurar la ciudad y sus objetos vamos al menú superior:

Al acceder a «Configurar Ciudad» emerge la siguiente ventana:

94 | Lovos y Goin
Figura 4.3. Configuración de ciudad

En los espacios se agrega la cantidad y ubicación de flores, papeles y


obstáculos que quisiéramos de entrada. Por ejemplo, si la cantidad de flores
es 10, entonces debemos elegir la ubicación (avenida y calle) por cada una.
Lo mismo sucede con los papeles y los obstáculos.

Atención: En una esquina se puede depositar más de un objeto (del mis-


mo tipo o no) por ejemplo: en la avenida 4 calle 7, tres flores y dos papeles.

Ejemplo 3: Recorrer una cuadra entera desde la avenida 5 calle 7 en sentido


horario llegando hasta el punto de partida.

Entorno de programación visual | 95


En este programa no se utilizan variables. El comando «pos(5,7)» indica la po-
sición inicial del robot, es decir, de modo genérico «pos(avenida,calle)».
Atención: Si al ejecutar el programa no se alcanza a ver el movimiento del
robot, entonces podemos cambiar la velocidad con la opción de la barra
del menú superior «Configurar intérprete» dándole un mayor retardo.
Por defecto el robot siempre se dirige verticalmente hacia arriba.
Para activar el robot debemos escribir en el programa «iniciar» luego de
«comenzar».

Ejemplo 4: Hacer lo mismo que el ejercicio anterior pero en sentido contrario.

Dado que el robot solo puede girar a la derecha es necesario moverlo 3 veces a
derecha para orientar el robot a la izquierda y para eso utilizamos repetir 3.

Sin estructura de repetición Con estructura de repetición


derecha repetir 3
derecha derecha
derecha

Atención: la instrucción derecha, al estar dentro de la estructura de repe-


tición «repetir», se ubica indentada (tabulada).

96 | Lovos y Goin
Ejemplo 5: Recorrer en forma de escalera desde avenida 2 y calle 4, comenzando
horizontalmente hasta llegar a la avenida 7 y calle 8 e informar la posición final.

Los comandos posAV y posCA nos brindan la posición del robot, en este caso,
al finalizar el recorrido.

4. 2. Repetición

Volvamos al ejemplo 4, es posible observar que hay un conjunto de pasos


que se repiten:

Entonces es posible reescribir el algoritmo como sigue:

Entorno de programación visual | 97


De esta forma, no solo reducimos la cantidad de comandos, sino que es
más fácil determinar qué hace el programa.
Para el ejemplo 5 la solución será la siguiente:

Ejemplo 6: Recorrer el borde de la ciudad desde avenida 1 y calle 10, mientras


tanto debe contar la cantidad de esquinas en las que hay flores. Al finalizar
debe informar esa cantidad.

Atención: Para realizar este ejercicio primero tendremos que configurar


la ciudad poniendo flores en las esquinas. Podemos hacerlo ubicando
cada una en esquinas elegidas por el usuario o bien de modo aleatorio.
Supongamos que se colocan 10 flores de modo aleatorio, entonces ten-
dremos que ir a «Configurar Ciudad» y en la solapa «Flores» elegir «10»
en la sección «Aleatorias». Estas aparecerán recién cuando ejecutemos el
algoritmo.

La variable c de tipo número por defecto se inicializa con el valor cero


para luego ser usado como contador incrementando en uno c:=c+1 (cada
vez que encuentra una flor).

98 | Lovos y Goin
La primitiva hayflorenlaesquina devuelve verdadero si en la esquina
hay alguna flor o falso en caso contrario.

Atención: La distribución de flores aparecerá cuando ejecutemos el al-


goritmo y además hay que tomar en cuenta que en una esquina puede
haber más de una flor. En este caso, no contemplamos la cantidad que
debe haber en cada esquina, solo si existen o no flores.
Nota: Las instrucciones comenzar y fin no solo sirven para abrir y cerrar
el proceso del algoritmo, se utilizan también para delimitar las sentencias
dentro de las siguientes estructuras de control: «repetir», «mientras» y
«si», siempre y cuando haya más de una sentencia dentro de cada una.

Ejemplo 7: Igual al anterior pero tomando en cuenta la cantidad real de flores.


Puede pasar que en una esquina exista más de una flor.

Entorno de programación visual | 99


A diferencia del ejemplo anterior, reemplazamos el si por el control de
repetición mientras, que se ejecuta hasta que no haya más flores en la es-
quina y (para no caer en un bucle infinito) debemos ir juntando flores. Esta
primitiva se llama tomarflor y permite capturar de a una las flores para
depositarlas en una bolsa.

Atención: Antes de utilizar la primitiva tomarflor es necesario asegurar-


se que exista al menos una flor. Para averiguar la existencia de flores se
utiliza la primitiva hayflorenlaesquina.

Ejemplo 8: Recorrer el borde de la ciudad desde avenida 1 y calle 10, mientras


tanto debe contar la cantidad real de flores y papeles que encuentra en el ca-
mino. Al finalizar debe informar la cantidad hallada.
Atención: Antes de continuar, debemos agregar de modo aleatorio los
papeles en las esquinas de la ciudad, entrando por el menú «Opciones»
– «Configurar Ciudad» y luego en la solapa «Papeles» agregamos la canti-
dad en la sección «Aleatorias».

Se utilizan en este caso dos contadores: cf y cp (contador de flores y de


papeles, respectivamente).

100 | Lovos y Goin


Importante: Cuando un bloque de acciones tiene más de una acción es
necesario delimitar el bloque usando las palabras reservadas comen-
zar y fin, no siendo necesario cuando se trata de una sola instrucción.
Recuerden que en DaVinci no es necesario inicializar la variable conta-
dora/sumadora, alcanza con definirla en el sector «variables» y automá-
ticamente toma el valor 0. Sin embargo, como buena práctica de pro-
gramación, siempre que se declara una variable es importante darle un
valor inicial.

Ejemplo 8b: ¿Qué sucede si deseamos que el robot cuente la cantidad de flo-
res halladas pero sin alterar el estado de la ciudad? Es decir, dejando flores y
papeles en el mismo sitio.
El robot también puede moverse teletransportándose, es decir, sin la necesi-
dad de caminar a la esquina deseada, simplemente usando el comando pos.
A continuación, presentamos un ejemplo relacionado.

Ejemplo 9: Recorrer las avenidas de números impares (1, 3, 5, 7 y 9) de arriba


hacia abajo (desde la calle 10 a la 1).

Atención: Primero, para dirigir el robot hacia abajo debemos girar dos
veces 90º con derecha derecha. La estructura de repetición se efectúa 5
veces para recorrer las avenidas impares 1,3,5,7 y 9 que se incrementan de
dos en dos con la asignación avenida:=avenida+2.

Entorno de programación visual | 101


Ejemplo 10: Recorrer la diagonal principal de la ciudad (desde 1,1 a 10,10).

Nótese que a diferencia de los demás ejercicios donde interviene el mo-


vimiento del robot, este no pinta el trayecto ya que va saltando de esquina
en esquina.

Atención: Al ser la diagonal principal, se trata de recorrerla manteniendo


el mismo valor de avenida y calle pos(1,1) pos(2,2) …pos(10,10). Por lo tan-
to, podemos reducir las líneas de comandos de nuestro algoritmo usando
solo una variable numérica, por ejemplo x, entonces pos(x,x).

Ejemplo 11: Recorrer la calle 4 en avenidas pares (2,4,6,8 y 10) e informar la


cantidad de esquinas donde no hay flores.

102 | Lovos y Goin


Atención: Si el robot excede el límite de la ciudad, se le informa dicho
error en el sector 2 de resultados (panel inferior izquierdo).

En este ejemplo, el valor de la variable calle se mantiene en 4 mientras


que la variable avenida va incrementándose de a dos. El símbolo ! repre-
senta la negación o complemento de la respuesta de «hayflorenlaesquina».
DaVinci simboliza los operadores lógicos de forma similar al lenguaje
de programación C.

Símbolo Significado Ejemplo


(p>4 & p<10) el valor de p se encuentra entre 4 y
& Disyunción o División
10 (no incluidos)
(p>8 | p<=1) el valor de p es mayor a 8 o es menor
| Conjunción o Unión
o igual que 1
Negación o
! !haypapelenlaesquina → No hay papel
Complemento
A continuación, mostramos un ejemplo donde hay disyunción y nega-
ción al mismo tiempo.

Ejemplo 12: Recorrer todas las esquinas de las avenidas 4 y 8 e informar la can-
tidad de esquinas donde hay flores y no papeles.

En este caso, el robot recorre las dos avenidas dejando la marca porque
estamos usando la instrucción mover.

Entorno de programación visual | 103


El ultimo objeto que nos falta ver es el obstáculo. A diferencia de las flo-
res y papeles estos se deben ubicar en la ciudad de modo manual, para eso
debemos ir a «Opciones» – «Configurar Ciudad» y hacer click en la solapa
«Obstáculos».

Figura 4.4. Configurar obstáculos

En la figura 4. 4 hay un obstáculo en la avenida 3 y calle 5 generado a mano.

Nota: Podemos agregar una por esquina y el límite está determinado por
la cantidad total de esquinas de la ciudad.

104 | Lovos y Goin


Ejemplo 13: Recorrer la ciudad (avenida por avenida) desde la posición (1,1),
hasta encontrar un obstáculo, mientras tanto ir contando las esquinas que
tienen flores y mostrar el resultado.

Nota: Por cada paso que da el robot, se evalúa la estructura de control mien-
tras y se decide si avanza o no el ciclo dependiendo de dos situaciones:
a) Que no se pase del límite de la ciudad avenida<11.
b) Que no aparezca en su camino un obstáculo !hayobstaculo.
Atención: Para probar la solución, previo a la ejecución, agregar a la
ciudad por lo menos un obstáculo.

Entorno de programación visual | 105


Ejemplo 14: Recorrer la ciudad de modo aleatorio hasta encontrar 6 esquinas con
papeles o hasta toparse con un obstáculo. En cada paso, debe contabilizar y reco-
lectar los papeles que vaya encontrando, utilizar la instrucción tomarpapel.

Nota: La función aleatorio(N) devuelve un número entero entre 0 al


N-1, es decir que con aleatorio(10) retorna un valor entero compren-
dido entre 0 y 9. Si le sumamos 1 se convierte al rango entre 1 y 10, coin-
cidiendo con los posibles números de avenidas y calles de la ciudad.
Atención: El algoritmo finaliza cuando llega a 6 la cantidad de papeles o
cuando el robot se encuentra con un obstáculo. ¿Qué sucedería si se quita la
instrucción tomarpapel? ¿La salida del algoritmo sería la misma?

4. 3. Modularización

A lo largo de la historia de la ingeniería de sistemas de información se han


desarrollado diferentes técnicas para construir programas. El primer gran
avance se conoce como programación modular y complementa la progra-
mación estructurada. La programación modular utiliza abstracción de pro-
cedimientos (Di Mare, 1991). Ahora bien ¿qué significa abstraer y por qué
este concepto resulta tan importante en la ciencia informática?
La abstracción es un proceso mental que consiste en identificar los detalles
importantes cuando nos enfrentamos a un problema, mientras se ignoran los
detalles irrelevantes. Este proceso permite simplificar el problema ya que la
cantidad de información a manejar en un determinado momento disminuye.

106 | Lovos y Goin


La programación modular consiste en definir módulos, una especie de
cajas negras que tienen una forma de comunicarse (interfaz) claramente
definida. Usando abstracción de procedimientos el programador puede
separar el qué hace el módulo del cómo lo hace.
Así, es posible descomponer funcionalmente un programa en subpro-
gramas. El propósito es facilitar la resolución de problemas, dividiendo el
problema en subproblemas mas simples, basándose en la idea «divide y
vencerás». Una metodología de resolución de problemas con estas caracte-
rísticas es el diseño top -down.
Ejemplo: Se desea preparar una tarta de manzanas.

Figura 4.5. Ejemplo de modularización

En el ejemplo de la figura 4.5, cada caja (módulo) cumple una función


específica (qué hace) y, en algunos casos, comparte información con otras
(interfaz).
En general, en las soluciones modularizadas, un programa es también un
módulo, llamado programa principal (en el ejemplo: preparar tarta de man-
zana). Este módulo se encarga de controlar todo lo que sucede y es el respon-
sable de transferir el control a los submódulos de modo que ellos puedan lle-
var adelante su función y resolver el problema. Cada uno de los submódulos,
cuando finaliza su trabajo, devuelve el control al módulo que lo invocó.
Los invitamos a navegar una animación desarrollada por docentes
de la facultad de informática de la unlp sobre el concepto de modulari-
zación, siguiendo este vínculo: http://weblidi.info.unlp.edu.ar/catedras/
ingreso/material2013/IAI/Adicional/DemoModularizacion/MODULOS.
html.

Entorno de programación visual | 107


Hasta el momento, vimos ejemplos con programas a partir de la utiliza-
ción de una secuencia de instrucciones de modo lineal:

Muy útiles cuando trabajamos con problemas sencillos, pero cuando se


nos presentan problemas más complejos es conveniente subdividirlos de
acuerdo a las diferentes funcionalidades que encontramos en el problema.
De esta forma, la resolución del problema general se obtendrá resolviendo
cada uno de los subproblemas. Si logramos que la solución (algoritmo) a
cada uno de estos subproblemas maneje su propio conjunto de datos se
tendrán soluciones (algoritmos) independientes que podrán codificarse
por separado y reutilizarse en otros problemas
La estructura de un programa en DaVinci ahora sería la siguiente:

No es nuestra intención hacer un capítulo destinado en profundidad a


modularización, pero si consideramos importante clarificar algunos con-
ceptos. Existen dos tipos de módulos: procedimientos y funciones. En líneas
generales una función es un módulo que recibe uno o más datos (paráme-
tros) y produce un valor o resultado que es único y de alguno de los tipos
permitidos en el lenguaje. Por ejemplo, logaritmo(unNro, unaBase) es una
función que recibe un número entero y una base entera y retorna un valor
numérico que representa el logaritmo en base unaBase del número unNro.
Un procedimiento, en cambio, está formado por un conjunto de sen-
tencias o instrucciones que realizan una determinada tarea y que pueden
recibir 0, 1 o más datos (parámetros) y devolver 0, 1 o más resultados.
En el caso de Visual DaVinci solo trabaja con procedimientos denomi-
nados en su sintaxis como procesos.

108 | Lovos y Goin


Más arriba dijimos que los módulos pueden compartir información y
esto se logra a través del pasaje de parámetros. La interfaz del módulo indi-
ca qué parámetros (su tipo) y en qué orden serán recibidos.

Ejemplo 15: Juntar todas las flores de las esquinas de la avenida 6. Tenga en
cuenta que podría existir más de una flor.

Figura 4.6. Procedimiento juntarflores

Nota: Los procedimientos simplemente se invocan o llaman por su nom-


bre en el cuerpo del programa. Y deben estar declarados previo a su
uso. En este caso el procedimiento JuntarFlores no recibe parámetros.
Su acción es solo tomar las flores de las esquinas sin contabilizarlas.
Atención: Si quisiéramos retornar la cantidad de flores que se recogie-
ron, debemos utilizar parámetros en el procedimiento JuntarFlores. Esto
se hace agregando entre paréntesis el parámetro cantidad de tipo número.
En el próximo ejemplo lo detallamos.

Entorno de programación visual | 109


Ejemplo 16: Juntar todas las flores de las esquinas de la avenida 6. Informar en
cada esquina la cantidad juntada y al finalizar el recorrido informar el total de
flores que se recogieron. Tenga en cuenta que podría existir más de una flor
en cada esquina.

Nota: El procedimiento JuntarFlores ahora tiene un parámetro (de sali-


da) de tipo numero (sa cantidad:numero). El identificador sa indica que
el parámetro cantidad es un parámetro de salida.
Cada vez que se invoca o llama al procedimiento, la variable se limpia
comenzando nuevamente en cero y dentro del módulo cambiará depen-
diendo de lo que haga el programador con dicha variable.
Cuando se invoca el procedimiento en el cuerpo del programa se deben respe-
tar los parámetros, su tipo, cantidad y ubicación. En este caso, se trata de un
parámetro c, es decir JuntarFlores(c), siendo c el resultado de cantidad.

4. 4. Parámetros formales y reales

Cuando se declara un procedimiento se habla de parámetros formales y


cuando se lo invoca se habla de parámetros reales o actuales. En el ejem-
plo 16 el procedimiento JuntarFlores(sa cantidad:numero) contiene el

110 | Lovos y Goin


parámetro formal cantidad que está en la definición del procedimiento,
mientras que JuntarFlores(c) contiene el parámetro real “c”.
En general, los lenguajes de programación exigen que el número de pará-
metros reales y formales coincidan en tipo y cantidad. DaVinci Concurrente
chequea esta condición y en caso de no cumplirse, no permite que se ejecute el
programa.

Ejemplo 17: El robot debe recorrer un circuito rectangular dentro de la ciudad


cuyos parámetros deben ser ingresados por el usuario (coordenada inicial y
tamaño). Debe dejar la huella y comenzar a moverse hacia arriba desde el
punto inicial.

Nota: El procedimiento MovRectan solo recibe parámetros de entrada, y


en DaVinci esto se indica usando el identificador en para cada parámetro
de entrada (en AVini:numero; en CAini:numero;…).
Atención: Recordar que los parámetros reales, los que se usan en la in-
vocación deben coincidir en tipo y orden con la especificación de los
parámetros formales. Así mismo, para que funcione correctamente un
módulo es importante verificar previo a la invocación del mismo que los
valores de los parámetros cumplan con las precondiciones establecidas.
En este caso, el módulo MovRectan no especifica ninguna precondición,
entonces el módulo deberá validar que el robot no exceda los límites de la

Entorno de programación visual | 111


ciudad. ¿Cómo lo resolverían?

4. 5. Variables globales y locales

Las variables que se encuentran dentro del procedimiento se llaman locales


y tiene su alcance limitado al mismo, mientras las variables que se designan
fuera de los procedimientos son globales, y son visibles en todo el programa.
De esta forma, en cualquier subprograma podría referenciarlas o modifi-
carlas. Es importante para preservar la independencia de los módulos que
si necesitan compartir información, se haga a través del pasaje de paráme-
tros y no referenciando a variables globales.
Los parámetros de un procedimiento pueden funcionar como entrada
exclusiva, salida exclusiva o entrada/salida usando para cada caso el pre-
fijo: en, sa o es. En el caso del procedimiento MovRectan (del ejercicio 17)
usamos solo parámetros de entrada.
Veremos un caso de procedimiento con parámetros de salida.

Ejemplo 18: El robot se dirige a una esquina elegida por el usuario para contar la
cantidad de papeles y flores. Además, indique pre y poscondiciones para el módulo.

Nota: El robot primero solicita la esquina elegida por el usuario y luego llama
(invoca) al procedimiento ContarPapelFlor que tiene dos parámetros de en-
trada (av, calle) y dos parámetros de salida (Papeles, Flores). ¿Cuáles son las
precondiciones que deben cumplir los parámetros de entrada?

112 | Lovos y Goin


Ahora veremos cómo se pueden hacer llamadas de procedimientos den-
tro de procedimientos.

Ejemplo 19: Se pide diseñar e implementar un programa modularizado, don-


de el robot recorra un rectángulo de 4 x 4 a partir de una coordenada inicial
indicada por el usuario. Se pretende que el robot deje la huella de su recorrido
y que comience a moverse hacia arriba desde el punto inicial, contando la
cantidad de papeles y flores de cada esquina.

Pregunta: ¿Cuáles serían la pre y poscondiciones de cada módulo?

Nota: Cuando se realiza la invocación a un módulo con parámetros de entra-


da-salida o salida, los parámetros reales deben ser siempre variables, ya que
no se copia un valor sino una referencia a una posición en memoria.

Entorno de programación visual | 113


4. 6. Ejercicios Da Vinci

51. Diseñe e implemente un programa que permita que el robot recorra


la ciudad completa (pasando por todas las esquinas) y dejando la
huella. El robot debe comenzar su recorrido en la coordenada (1,1).
52. Igual al ejercicio anterior pero informando al final del recorrido la
cantidad de esquinas que tienen flores.
53. Diseñe e implemente un programa que permita que el robot recorra
la diagonal inversa desde (1,10) hasta (10,1) sin dejar marca.
54. Diseñe e implemente un programa para que el robot dibuje (dejan-
do huella) la palabra LES. Las letras deben tener la misma altura que
la ciudad.
55. Diseñe e implemente un programa que permita que el robot realice
un recorrido en modo escalera desde la posición (1,10) bajando has-
ta (10,1) dejando huella.
56. Diseñe e implemente un programa que permita al usuario ingresar
la coordenada de partida (Avenida, Calle) y luego el robot realice un
recorrido en un rectángulo de 3x3 en sentido contrario al movimien-
to del reloj y dejando la huella.

Nota: El programa principal debe controlar que el robot no sobre-


pase los límites de la ciudad.

57. Igual ejercicio anterior, pero además el programa deberá informar al


finalizar la cantidad de esquinas que no tienen objetos (papel o flores).
58. Diseñe e implemente un programa que permita que el robot recorra
solo las calles pares dejando huellas e informe al finalizar la cantidad
(por separado) de flores y papeles que ha encontrado en las esquinas
durante su recorrido.

Nota: Tenga en cuenta que en una esquina podría haber más de un


elemento (flor/papel).

59. Diseñe e implemente un programa que permita que el robot reco-


rra solo las calles impares dejando huellas e informe al finalizar la
cantidad de esquinas que tienen la misma cantidad de flores que de
papeles a excepción de las que están vacías.

114 | Lovos y Goin


60. Diseñe e implemente un programa que permita que el robot recorra
la ciudad con dirección al azar comenzando desde la posición (3,4),
sin dejar huella y sin saltar. El azar se determina en cada esquina y el
programa finaliza cuando llegue a la posición (7,7).

Nota: Si el robot intenta irse fuera de los límites de la ciudad debe


hacer un paso hacia atrás (dirección contraria al último paso).

61. Se tienen ubicados en la ciudad cuatro obstáculos en las posicio-


nes: (2,2); (2,8); (8,2) y (8,8). Diseñe e implemente un programa, que
permita que el robot recorra la ciudad al azar usando el mismo crite-
rio que el ejercicio anterior. Cuando se encuentra con un obstáculo
debe saltar hacia otro lugar también al azar. El algoritmo termina
cuando se encuentra con más de dos obstáculos.

Nota: Recordar que para ubicar los obstáculos se debe ir a «Opcio-


nes» – «Configurar ciudad» – «Obstáculos».

62. Igual al ejercicio anterior pero informando la cantidad total de flo-


res y papeles (por separado) al finalizar el recorrido.

Entorno de programación visual | 115


Listas de referencias

Lista de referencias bibliográficas

Champredonde, R., Ainchil, V., y Palacios, A. (2000). Teaching experiences in program-


ming using the visual Da Vinci language. En First International Congress on Tools
for Teaching Logic: proceedings: University of Salamanca, June 2000 (pp. 17-21). Uni-
versidad de Salamanca.
Compañ-Rosique, P., Satorre-Cuerda, R., Llorens-Largo, F. y Molina-Carmona, R. (2015).
Enseñando a programar: un camino directo para desarrollar el pensamiento
computacional. Revista de Educación a Distancia, (46).
De Giusti, A. E., Madoz, M. C., Bertone, R. A. y Naiouf, R. M. (2001). Algoritmos, datos y
programas: con aplicaciones en Pascal, Delphi y Visual Da Vinci. Prentice Hall.
Depetris, B. O., Aguil Mallea, D., Pendenti, H., Tejero, G., Feierherd, G. E. y Prisching,
G. (2015). La enseñanza y el aprendizaje de la programación y la programación
concurrente con DaVinci Concurrente. En x Congreso sobre Tecnología en Educa-
ción & Educación en Tecnología (te & et). Corrientes.
Di Mare, A. (1991). Tipos abstractos de datos y programación por objetos, Reporte Técnico
pibdc-03-91, proyecto 326-89-019, Escuela de Ciencias de la Computación e Infor-
mática, ucr, 1991. Revisión 2010. http://www.di-mare.com/adolfo/p/oop-adt.htm
García, C. E. (2012). Algoritmos y programación I. Guía para docentes. Fundación Gabriela
Piedrahita Uribe.
Guerrero, M., Guamán, D. S. y Caiza, J. C. (2015). Revisión de herramientas de apoyo en el
proceso de enseñanza-aprendizaje de programación. Revista Politécnica, 35(1), p. 84.
Goin, M. (2016). Caminando junto al lenguaje C. Editorial unrn.
Joyanes Aguilar, L. (2008). Fundamentos de programación. McGraw-Hill Interamericana.
López, L. M., Amaro, S., Alonso de Armiño, A. C., Godoy, I., Leiva, M. y Piñero, J. C. (2016,
May). Aplicando nuevos aspectos en la Programación de Computadoras. En
xviii Workshop de Investigadores en Ciencias de la Computación wicc 2016, Entre Ríos,
Argentina.
Mallea Aguil, D. E. (2012). Un intérprete multiplataforma para la iniciación a la progra-
mación estructurada y concurrente. Da Vinci Concurrente. [Tesis de grado de
Licenciatura]. Facultad de ingeniería de la Universidad Nacional de la Patago-
nia. San Juan Bosco. Ushuaia, Tierra del Fuego.
Polya, G. (2004). How to Solve It. Princeton Science Library Edition.

Listas de referencias | 117


Lista de figuras

Financial Times. (2011). Drew Hoston [Fotografía]. https://www.flickr.com/photos/


financialtimes/6478266407/in/photostream. cc-by-2.0
Game Developers Choice Awards. (2010). Gabe Newell [Fotografía]. https://www.flickr.
com/photos/officialgdc/4427575126/. cc-by-2.0
Joi Ito. (2011). Mitchel Resnick [Fotografía]. https://commons.wikimedia.org/wiki/File:Mitchel_
Resnick.jpg. cc-by-2.0
Usuario: ak_mardini. (2006). Seymour Papert [Fotografía]. https://www.flickr.com/photos/
mardinix/152833938/. cc-by-sa-2.0

118 | Lovos y Goin


Problemas y algoritmos : un enfoque práctico
Edith Lovos y Martin Goin.
Primera edición. Viedma: Universidad Nacional de Río Negro, 2021.
120 p. ; 23 x 15 cm. Lecturas de cátedra
isbn 978-987-4960-31-3
1. Algoritmo. 2. Sistemas de Información. I. Lovos, Edith. II. Título.
cdd 005.01

© Universidad Nacional de Río Negro, 2021.


editorial.unrn.edu.ar
© Edith Lovos y Martin Goin, 2021.

Queda hecho el depósito que dispone la Ley 11.723.

Diseño de colección: Dirección de Publicaciones-Editorial de la unrn


Dirección editorial: Ignacio Artola
Coordinación de edición y edición de textos: Diego Martín Salinas
Corrección de textos: Verónica García Bianchi
Diagramación y diseño: Sergio Campozano
Imagen de tapa: Editorial unrn, 2021.

Licencia Creative Commons


Usted es libre de: compartir-copiar, distribuir, ejecutar y comunicar
públicamente esta obra bajo las condiciones de:
Atribución – No comercial – Sin obra derivada
Problemas y algoritmos
Un enfoque práctico
fue compuesto con la familia tipográfica Alegreya en sus diferentes variables.
Se editó en abril de 2021 en la Dirección de Publicaciones-Editorial de la unrn.
Problemasyyalgoritmos
Problemas algoritmos
Unenfoque
Un enfoquepráctico
práctico
ElEldesarrollo
desarrollodedelalacapacidad
capacidadanalítica
analíticayycreadora
creadorapara
pararesolver
resolver
problemas
problemasconstituye
constituyeelelpunto
puntode departida
partidapara
paraquienes
quienesdesean
desean
incursionar
incursionaren enelelmundo
mundode delalaprogramación
programacióninformática.
informática.Es Es
esa
esacapacidad
capacidadlalaquequepermite
permiteenfocar
enfocarelelelemento
elementoclave
clavedel
del
pensamiento
pensamientocomputacional:
computacional:elelalgoritmo.
algoritmo.
Como
Comoun untutorial
tutorialquequeavanza
avanzapaso
pasoaapaso
pasoaatravés
travésdedeejercicios
ejerciciosyy
ejemplos,
ejemplos,este
estelibro
librobusca
buscaayudar
ayudaralallector
lectorinteresado
interesadoaaadquirir
adquirirlas
las
destrezas
destrezasnecesarias
necesariasparaparapoder
poderdiseñar
diseñareeimplementar,
implementar,de demanera
manera
fácil
fácilyyrápida,
rápida,soluciones
solucionesalgorítmicas
algorítmicasbásicas,
básicas,previo
previoaalalainmersión
inmersión
en
eneleluso
usode
deuno
unooomás máslenguajes
lenguajesde deprogramación
programaciónen enparticular.
particular.
Es
Espor
porello
elloque
queProblemas algoritmosesesun
Problemasyyalgoritmos unvalioso
valiosomaterial
materialde de
apoyo
apoyotanto
tantopara
paradocentes
docentescomo
comopara
paraestudiantes
estudiantesde denivel
nivelmedio
medioyy
superior,
superior,eneneste
esteúltimo
últimocaso,
caso,que
quecursen
cursenlas
lasasignaturas
asignaturasiniciales
inicialesde
de
tecnicaturas,
tecnicaturas,ingenierías,
ingenierías,profesorados
profesoradosyylicenciaturas
licenciaturasorientadas
orientadasoo
vinculadas
vinculadasaalalainformática.
informática.
Perfil profesional del
Técnico Superior en
Desarrollo de Software
IES 9-012 DE INFORMÁTICA
El Técnico Superior en Desarrollo de Software
estará Capacitado para producir:

“Productos o Artefactos de software”

• Análisis
• Diseño detallado
• Verificación
• Construcción • Depuración
• Reutilización de elementos
existentes • Optimización

• Mantenimiento
• Programación nueva y completa

Integrara Equipos de trabajo o como Freelance


Trabajara por Metodología de Proyectos
Desempeñara en forma continua o alternada las siguientes tareas:
Descriptas en forma general

Analizar

Autogestionar Modelizar

Documentar Verificar

Desarrollar
Perfil profesional – Según resolución 501-DGE-19

 Analizar sistemas de información para determinar especificaciones funcionales


estableciendo las características de una solución que las satisfaga,
considerando el contexto en que se integra.

 Modelizar y desarrollar artefactos de software que implementen el modelo


diseñado, aplicando patrones o reutilizando código existente.

 Verificar el correcto funcionamiento y los resultados del desarrollo de los


artefactos de software propios o ajenos, teniendo en cuenta las necesidades de
cobertura de prueba, diseño y ejecución de los mismos, y registrando datos
junto con los miembros del equipo para realizar acciones correctivas sobre el
código.
Perfil profesional - Capacidades

 Desarrollar en forma sinérgica y creativa el liderazgo, la comunicación


activa y el trabajo en equipo, en los múltiples ámbitos de desempeño que
plantea el mundo laboral.

 Documentar todas las actividades y productos obtenidos atendiendo al


aseguramiento de la calidad en proyectos, productos y procesos,
considerando normas y estándares preexistentes.

 Autogestionar sus actividades, las de su sector dentro de la organización,


o emprendimiento propio.
Desempeñar las siguientes tareas:
Descriptas en forma general
Analizar - Modelizar - Verificar - Desarrollar - Documentar - Autogestionar

Analizar
Examinar detalladamente una cosa (elemento, objeto,
situación, tarea), separando o considerando por separado
sus partes, para conocer sus características o cualidades,
o su estado, y extraer conclusiones.

Se denomina analizar a la acción de comprender un


determinado fenómeno hasta el momento desconocido.
La acción de analizar comprende un tipo de
proceder que descompone una situación concreta en una
suma de sus elementos, de modo tal de poder dar cuenta
de cómo estos se interrelacionan.
 Analizar sistemas de información para determinar especificaciones funcionales
estableciendo las características de una solución que las satisfaga, considerando
el contexto en que se integra.

 Relevar e interpretar requerimientos, procedimientos y estructuras de información.

Estudiar Problema Persona que se van a Aplicaciones


Investigar Inquietudes relacionar con el Procedimientos
Averiguar Tareas sistema Tareas
Sistemas de información
Interpretar Necesidades Usuarios
Requerimientos

 Analizar sistemas de información interpretando críticamente el entrono y los requerimientos.

Estudio, investigo, Funcionales, utilizables,


Estudio, investigo,
indago, interpreto, aprovechables, útiles,
indago, interpreto,
profundizo, busco logrados, al “sistema”
profundizo, busco
(producto de sistema)
Desempeñar las siguientes tareas:
Descriptas en forma general
Analizar - Modelizar - Verificar - Desarrollar - Documentar - Autogestionar

Modelizar

Establecer un modelo, conjunto de procedimientos


requeridos para realizar un modelo.

Lenguaje, dibujo, esquema que permite describir alguna


cosa, objeto, situación, tarea.

Se refiere a la búsqueda de regularidades


(características) que nos permiten describir lo que se
observa en realidad.
 Modelizar y desarrollar artefactos de software que implementen el modelo
diseñado, aplicando patrones o reutilizando código existente.

 Modelizar-diseñar artefactos y sistemas de información.


• Patrones de diseño - Catálogos de patrones de diseño.
• Diseñar (trazar, esbozar, bosquejar  herramienta) procedimientos que satisfagan los
requerimientos de información (formando, creando una solución optima).
• Diseñar rutinas y procedimientos (tareas, actividades, pasos) del proyecto
• Cómo: utilizando lenguajes y herramientas de representación y modelización

 Controlar el diseño realizado.


• Lo establecido, propuesto, (especificado) en el diseño elaborado.
• Tener en cuenta y aplicar criterios de confidencialidad y de seguridad informática.
Desempeñar las siguientes tareas:
Descriptas en forma general
Analizar - Modelizar - Verificar - Desarrollar - Documentar - Autogestionar

Verificar

Comprobar o ratificar que es verdadera una cosa, por


ejemplo, los resultados del experimento verificaron las
hipótesis del científico.

Probar que una cosa (que se dudaba) es verdadera.

Comprobar que un aparato, instalación, tarea,


procedimiento, funciona correctamente.
 Verificar el correcto funcionamiento y los resultados del desarrollo de los artefactos
de software propios o ajenos, teniendo en cuenta las necesidades de cobertura de
prueba, diseño y ejecución de los mismos, y registrando datos junto con los
miembros del equipo para realizar acciones correctivas sobre el código.

 Interpretar el código.
• Analizar sistemáticamente el código.
• Identificar partes relacionadas con posibles malfuncionamientos (errores, problemas).
• Revisar detalladamente las partes.

 Diagnosticar defectos.
• Determinar las causas de posibles defectos, considerando su corrección.
• Corregir defectos a partir del diagnostico de las causas.

 Depurar defectos.
• Ejecutar acciones correctivas (criterio de calidad).
• Cumplir con buenas prácticas de programación.
• Aplicar normas de calidad vigentes para el proceso de desarrollo de software (adecuada documentación)
 Diseñar los casos de pruebas y pruebas unitarias.

• Diseñar casos de prueba teniendo en cuenta la estructura del producto diseñado.


• Asegurar la calidad del proyecto.
• Establecer los puntos de control.
• Preparar el entrono de pruebas (archivos por lotes y datos necesarios).
• Utilizar el concepto de testeo y sus herramientas.
• Identificar las clases de datos, considerando el diseño de los casos de prueba.
• Establecer, de ser necesario, las acciones correctivas para solucionar las fallas encontradas.
• Realizar pruebas unitarias, registrando los datos y resultados alcanzados.
Desempeñar las siguientes tareas:
Descriptas en forma general
Analizar - Modelizar - Verificar - Desarrollar - Documentar - Autogestionar

Desarrollar

Llevar a cabo una idea, un proyecto, etc., que necesita


cierto tiempo.

Hacer que una cosa o persona pase por una serie de


estados sucesivos, de manera que crezca, aumente o
progrese.

Realizar, ejecutar, llevar a cabo, orientar, poner a efecto,


llevar adelante, adelantar
 Desarrollar artefactos de software que implementen el modelo diseñado, aplicando patrones o reutilizando
código existente..

 Desarrollar y construir artefactos y sistemas de información, o módulos de los mismos.


• Desarrollar e integrar módulos del “sistema” diseñado.
• Reutilizar código existente (adaptar o completar) y/o se redactar código nuevo.
• Controlar cambios y versiones, según las especificaciones técnicas (opinión del líder, equipo, pares).
• Aplicar pautas, normas y criterios de buenas prácticas que aseguren la calidad del proyecto.
• Comunicar (transferir, trasmitir, entregar) al usuario los resultados.
Desempeñar las siguientes tareas:
Descriptas en forma general
Analizar - Modelizar - Verificar - Desarrollar - Documentar - Autogestionar

Documentar

Proporcionar documentos para acreditar algo que se dice


o se escribe.
Informar a alguien, proporcionándole documentos, sobre
un asunto en el que se va intervenir.

La documentación de procesos consiste en llevar un


registro de un proceso durante la ejecución de un
proyecto. El objetivo es aprender de la implementación
para adaptar la estrategia y mejorar el procedimiento. La
gestión de procesos de forma proactiva puede:
eliminar errores
 Documentar todas las actividades y productos obtenidos atendiendo al
aseguramiento de la calidad en proyectos, productos y procesos, considerando
normas y estándares preexistentes.

• Documentar todos los productos de su labor, incluyendo la registración e informes de los


procesos y productos.
• Se diagraman los procesos, clases y datos del producto de software.
• Se informan y documentan todas las novedades halladas durante l proceso.
• Se documentan los desarrollos efectuados, considerando la precisión y facilitación de su
mantenimiento.
• Se registran las decisiones relevantes de diseño, así como las limitaciones de los artefactos
producidos aplicando criterios de legibilidad.
• Se aplican normas de calidad vigentes para el proceso de desarrollo de software
considerando la adecuada documentación del mismo.
Desempeñar las siguientes tareas:
Descriptas en forma general
Analizar - Modelizar - Verificar - Desarrollar - Documentar - Autogestionar

Autogestionar

La autogestión significa la gestión por uno mismo. Así,


puede aplicarse otros campos como la administración, la
economía, los proyectos.

La autogestión es un sistema de organización social y


económico donde las personas que desarrollan una
actividad son las mismas que administran ese negocio.

Sistema de organización de una empresa en el que los


trabajadores participan activamente en las decisiones
sobre su desarrollo o funcionamiento.
 Desarrollar en forma sinérgica y creativa el liderazgo, la comunicación activa y el
trabajo en equipo, en los múltiples ámbitos de desempeño que plantea el mundo
laboral.
• Favorecer procesos activos de intercomunicación.
• Se desarrolla la escucha interactiva.
• Se discuten los temas de forma personal, uno a uno.
• Se producen diálogos constantes, sin caer en la acumulación de opiniones negativas.
• Se prioriza la especificidad, evitando generalizaciones en el diálogo.
• Se desarrollan momentos de comunicación grupal para encontrar dinamismo en el grupo de trabajo.
• - Conformar equipos de trabajo dinámicos.
• Se favorece el desarrollo de interacciones grupales colaborativas.
• Se motiva la creatividad y la producción personal y grupal.
• - Demostrar capacidad creativa para la resolución de situaciones problemáticas.
• Se afronta de forma crítica cada situación problema.
• Se analiza la situación, ya sea de forma inductiva o deductiva.
• Se proponen soluciones que consideren todos los puntos conflictivos de la problemática.
• Se consideran distintos tipos de seguimientos para la concreción de la solución.
• - Promover el desarrollo de proyectos dentro y fuera de la organización.
• Se desarrollan vinculaciones con el contexto internacional, nacional y regional.
• Se fomenta la generación de capacidades emprendedoras para ser aplicadas en los diferentes ámbitos
de concreción.
• Se consideran diferentes estructuras de proyectos.
 Autogestionar sus actividades, las de su sector dentro de la organización, o
emprendimiento propio.
• Planificar y controlar el tiempo de desarrollo de las actividades.
• Se reconocen prioridades y urgencias.
• Se evalúan la capacidad y las limitaciones de recursos disponibles.
• Administrar las actividades que realiza, considerando el registro y reflexión sobre lo realizado.
• Se asignan prioridades a los distintos problemas que se pueden presentar.
• Se organizan y programan actividades.
• Reportar avances y dificultades.
• Se generan documentos de registro.
• Se registran las actividades y los resultados de las mismas.
• Se analizan los registros para extraer conclusiones y experiencias a partir de los mismos.
• Anticipar problemas derivados de los cambios de la tecnología y de las necesidades de los usuarios.
• Se indaga la información sobre los cambios tecnológicos o de mercado.
• Se preparan estrategias para enfrentar los cambios.
• Se observan situaciones y conductas de usuarios que indiquen necesidades potenciales de los
mismos.
• Se mantienen, analizan y extraen conclusiones a partir de los registros de las bases de sistemas
atendidos, desarrollados y administrados.
• Se relacionan las potenciales necesidades con las oportunidades de desarrollo.
• Se ofrecen equipos o servicios que respondan a las necesidades detectadas.
INGLES
1
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Los Verbos en Inglés. Generalidades


Este tema, es la columna vertebral del apunte, sin restarle la importancia que tienen los demás
temas. Remarcamos que, es imprescindible adquirir el dominio de los verbos, porque el idioma,
como herramienta de comunicación, transmite principalmente Acciones o Estados (a través de
los Verbos), que involucrarán al Sujeto de la oración, función cumplida por Sustantivos (Juan, María,...)
o, por losPronombres (El, ella,...)que reemplazan a estos sustantivos.
Por lo tanto, cuando se logra el manejo de los verbos, se encuentra la clave para construir
cualquier frase y luego, con el tiempo, se aprende lo que llamamos, “el relleno,” que forman las demás
palabras.
En el inglés, podemos encuadrar a los verbos en diferentes categorías:
1. Verbos copulativos (o de unión), por su función de vínculo entre:

She is Young (Ella es joven)


Sujeto + Verbo copulativo + Adjetivo

2. Verbos auxiliares: No se puede conjugar un verbo en todos sus tiempos sin la ayuda de los
verbos auxiliares, que sirven para construir las formas compuestas.
He is working
(El está trabajando)
Sujeto + auxiliar + verbo conjugado
Los auxiliares más utilizados son: To Be (Ser, estar), To Do (Hacer), To Have (Tener,
haber), Shall , Will (Querer).
3. Verbos auxiliares modales: llamados así porque, expresan un modo o forma en que se realiza
la acción (posibilidad, probabilidad, certeza, obligación, etc).
También se los llama “Defectivos”, porque les falta conjugación en algunos tiempos. Se los
estudia por separado porque presentan diferencias.
o He may come (Él puede ser que venga) (Existe la posibilidad que venga).

o They must do it (Ellos tienen que hacer eso) (Es necesario que lo hagan).

Las características de los tiempos verbales en Inglés, son las siguientes:


a. Los Tiempos verbales: Se denominan Tenses, es la forma en que se nombra a las distintas
formas o variaciones que presenta un verbo, en función al tiempo (time) que transcurre.
Pueden ser:
 Presente: Indefinido y Perfecto
2
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

 Pasado (ó Pretérito): Indefinido y Perfecto

 Futuro: Indefinido y Perfecto

En Inglés encontramos cuatro formas para conjugar un verbo:


 La forma Simple, que se utiliza para las cosas comunes rutinarias, etc.

 La forma Pasiva, que utiliza el verbo en voz pasiva (passive voice).

 La forma Continua o Progresiva (o forma en- ing), que se utiliza para acciones que

están/estaban o estarán sucediendo en el momento, con el verbo en voz activa (active voice).
 La forma Enfática, utilizada cuando se quiere poner énfasis o acentuación en la acción,

(remarcándola o resaltándola).

Sintetizando…
En español, la forma "básica" o "más neutra" de los verbos siempre termina en -ar, -er o -
ir (tradicionalmente, esta forma se llama infinitivo).
Ejemplos de verbos:
caminar, ayudar, ser, trabajar, asustar, perder, gustar, imaginar, amar, tener, partir...
En español (como en muchos idiomas), los verbos tienen (entre otras) varias características:
 cambian de forma para reflejar o indicar el tiempo:
lo hice (ayer)
lo haré (mañana)
 cambian de forma para reflejar o indicar el sujeto (informalmente, la "cosa" o "persona" que
provoque la acción indicada por el verbo1):
lo hago (yo)
lo haces (tú)
 existen varias formas sintéticas, en que varios sufijos se juntan en una sola palabra; por
ejemplo, en la forma podríamos se juntan la raíz pod-, el elemento -r- (="futuro"), el elemento -ía-
(="pasado") y -mos (designa el sujeto nosotros);
 existen igualmente varias formas compuestas o analíticas, en que uno o varios
verbos auxiliares "ayudan" en la construcción:
me dijiste que ibas a poder venir
no lo hemos terminado
En general, los verbos del inglés tienen características similares, pero:

3
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

 en inglés, los verbos tienen pocas formas (sintéticas) distintas: por ejemplo, no existen en
inglés ni forma de "futuro" (caminarás) ni forma de "condicional"/"futuro-en-el-pasado" (caminarías),
ni forma de "imperfecto" (caminabas)— en casos así, la única opción en inglés es utilizar
una construcción con verbo auxiliar;
 en inglés, y a diferencia del español, muy pocas veces la forma del verbo refleja el sujeto: el
inglés tiene sólo un sufijo para indicar éste, utilizado en el tiempo presente cuando el sujeto es de la
tercera persona singular (él/ella)...
 ...entonces, con pocas excepciones, se usa siempre el pronombre para indicar el sujeto si éste
no está representado por alguna otra palabra (es decir, por un sustantivo). Por
ejemplo, I = yo, you =tú/usted(es) etc.

Verbos Auxiliares
El verbo to be
- El verbo "to be" significa ser o estar.
Entre los usos del verbo to be están:
 Indicar profesión
I am a pilot . / yo soy piloto
 Expresar sentimientos
I am tired. / yo estoy cansado
 Informar sobre precios/dinero
How much is the car? / ¿Cuándo cuesta el coche?
 Informar sobre la edad
I am ten years old. / tengo diez años
- To be es uno de los verbos auxiliares en inglés junto con to do, to have . Se usa de auxiliar en los
siguientes tiempos verbales:
 Presente continuado (present continuous)
 Pasado continuado (past continuous)
 Pasado perfecto continuado (past perfect continuous)
 Futuro continuado (future continuous)
Adicionalmente se usa como auxiliar para construir la voz pasiva.
4
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Gramática
El verbo to be es el único verbo copulativo pleno en inglés, lo que significa que utiliza adjetivos en
lugar de adverbios para completar el significado del verbo:
My boss is good. / Mi jefe es bueno.

Conjugación del verbo "to be"


El verbo to be es muy irregular, afortunadamente en inglés los tiempos verbales simples son pocos
(los que son necesarios aprender de memoria), la mayoría de los tiempos verbales son compuestos
donde el verbo "to be" es regular.

Presente Simple del vebo TO BE ( Present Simple)


La estructura es:
[SUJETO] + am/are/is

Conjugación Significado

I am yo soy/ estoy

you are tú eres/ estás

he is él es/ está
she is ella es/ está
it is ello es/ está

we are nosotros somos/ estamos

you are vosotros sois/ estais

they are ellos son/ están

La mayoría de verbos usa el verbo to do como auxiliar ('do/does').


Pero el verbo to be en present simple forma la negación y la interrogación de manera distinta al
resto al resto de verbos. Am/are/is actúan como auxiliar:
Oraciones interrogativas:
Are you a student? / ¿Eres un estudiante?
Oraciones negativas:
He is not your teacher / Él no es tu profesor

5
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Presente Continuo ( Present Continuous)


Este tiempo tiene la forma:
[SUJETO] + am/are/is + being

Conjugación Significado

I am being yo estoy siendo

you are being tú estás siendo

he is being él está siendo


she is being ella está siendo
it is being ello está siendo

we are being nosotros estamos siendo

you are being vosotros estáis siendo

they are being ellos están siendo

Pasado Simple (Past simple)


La construcción de este tiempo es:
SUJETO + was/were

Conjugación Significado

I was yo fui/ estuve

you were tú fuiste/ estuviste

he was él fue/ estuvo


she was ella fue/ estuvo
it was ello fue/ estuvo

we were nosotros fuimos/ estuvimos

you were vosotros fuisteis/ estuvisteis

they were ellos fueron/ estuvieron

NOTA: La interrogación y la negación del verbo to be no se forma con el auxiliar did en el "past
simple" como el resto de verbos sino que was/were hace las veces de auxiliar:
Oración interrogativa:
Where were you last night? / ¿Dónde estabas anoche?

6
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Oración negativa:
You weren't in class / Tú no estabas en clase.

Subjuntivo
El verbo to be es el único verbo en inglés que tiene subjuntivo.
La estructura es:
SUJETO + were

Conjugación Significado

I were yo fuera

you were tú fueras

he were él fuera
she were ella fuera
it were ello fuera

we were nosotros fuéramos

you were vosotros fuerais

they were ellos fueran

Interrogación con el verbo "to be"


La interrogación se forma invirtiendo el orden del sujeto y del verbo.
La oración afirmativa siguiente:
You are a student. / Tú eres un estudiante.
Se convierte en interrogativa, intercambiando el orden del sujeto y del verbo:
Are you a student? / ¿Eres estudiante?
La formación de la interrogación es diferente para el verbo "to be" que para los verbos normales (para
los tiempos simples se usa un auxiliar para formar la interrogación).

La negación con el verbo "to be"


La negación se construye añadiendo el adverbio "not":
La oración afirmativa siguiente:
He is a teacher / Él es profesor.
Se convierte en negativa añadiendo "not":

7
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

He is not a teacher / Él no es profesor.

Contracciones con el verbo "to be"


Con una frecuencia muy elevada los pronombres personales y el verbo "to be" se contraen:

Contracciones del Presente Simple (afirmación)


Sin contraer Contraído

I am I'm

you are you're

he is he's
she is she's
it is it's

we are we're

you are you're

they are they're

Contracciones del Presente Simple (negación)


Sin contraer Contraído

I am not I'm not

you are not you're not


you aren't

he is not he's not o he isn't


she is not she's not o she isn't
it is not it's not o it isn't

we are not we're not o we aren't

you are not you're not o you aren't

they are not they're not o they aren't

Como se puede observar para todas las personas, menos para la primera del singular, existen 2
posibilidades de contracción. Por ejemplo:

8
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

you are not se contrae en you're not si se quiere destacar el not o en you aren't si se quiere
destacar you.

Contracciones del Pasado Simple (negación)


Sin contraer Contraído

I was not I wasn't

you were not you weren't

he was not he wasn't


she was not she wasn't
it was not it wasn't

we were not we weren't

you were not you weren't

they were not they weren't

EJERCICIOS
 LEER LAS ORACIONES:
1- Subrayar el verbo “ To Be”.
2- Decir si actúa como verbo principal o auxiliar.
3- Traducir.
1. He is very tall.
2. She was eating.
3. It is horrible.
4. Are you crazy?
5. They are kind of weird.
6. We are too smart.
7. She is pretty.
8. They weren’t funny.

El Verbo 'to do' en Inglés

9
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Significados:
1.- El verbo "to do" significa hacer
I usually do my homework with my girlfriend / Normalmente hago mis deberes con mi novia
2.- To do es uno de los verbos auxiliares en inglés junto con to have, to be . Cuando "To do"
funciona con el rol de verbo auxiliar no tiene significado.

“to do” se usa como auxiliar en los tiempos verbales:


 Presente simple (present simple)
 Pasado simple (past simple)

NOTA: se usa sólo en la negación e interrogación.


Why did you study law? ¿Por qué estudiaste derecho?
Expresiones:
I don’t do my best / No doy lo mejor de mí

Conjugación del verbo 'to do'


El verbo to do es irregular.

Presente Simple
La estructura es:
SUJETO + do/does

Conjugación Significado

I do yo hago

you do tú haces

he does él hace
she does ella hace
it does ello hace

we do nosotros hacemos

you do vosotros hacéis

they do ellos hacen

10
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Pasado Simple
La estructura es:
SUJETO + did

Conjugación Significado

I did yo hice

you did tú hiciste

he did él hizo
she did ella hizo
it did ello hizo

we did nosotros hicimos

you did vosotros hiciste

they did ellos hicieron

Interrogación con el verbo 'to do'


Para formar la interrogación con el verbo 'to do' también se utiliza el auxiliar 'to do' en los
tiempos present simple y past simple. Por lo que el verbo 'to do' aparece 2 veces en la oración.
Oración Interrogativa con 'to do' como auxiliar:
What do you do? / ¿Qué haces?
Con los demás tiempos verbales se forma como es habitual invirtiendo el orden de sujeto y verbo.
(“to do” como verbo principal conjugado)
What are you doing? / ¿Qué estas haciendo?

La negación
Como en la interrogación, con los tiempos present simple y past simple puede aparecer 2 veces:
I didn't do a good job / No hice un buen trabajo

Contracciones con el verbo "to do"


Con una frecuencia muy elevada el verbo "to do" en todas sus formas y el adverbio "not" se
contraen:
11
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Sin contraer Contraído

do not don't

does not doesn't

did not didn't

EJERCICIOS
 LEER LAS ORACIONES:
1- Subrayar el verbo “ To do”.
2- Decir si actúa como verbo principal o auxiliar.
3- Traducir.
1.- I do many things.
2.- Do you have any homework?
3.- She doesn’t write a letter .
4.- Did you buy four chairs?
5.- They do not find any pens and pencils.
6.- She did rice pudding.
7.-He does his homework in his room
8.-Did she cook pizza?

El Verbo 'to have' en Inglés


Significados:
1.- El verbo "to have" significa haber o tener
I have a car. / Yo tengo un coche.
2.- To have es uno de los verbos auxiliares en inglés junto con to do, y to be . To have se usa de
auxiliar para tiempos verbales:
 Presente perfecto (present perfect)
 Pasado perfecto (past perfect)
3.- To have to significa tener que siendo un sinónimo del verbo modal must.

12
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

To have got
En el Reino Unido se usa el verbo to have got como sinónimo del verbo to have con el sentido de
posesión.
En Estados Unidos se dice:
I have a dog. / Yo tengo un perro.
En Reino Unido:
I have got a dog / Yo tengo un perro.
NOTA: Hay que destacar to have got se usa únicamente en presente. En los demás tiempos verbales su uso
es poco habitual.

Conjugación del verbo to have

Presente Simple
La estructura es:
Sujeto + have/has

Conjugación Significado

I have yo tengo

you have tú tienes

he has él tiene
she has ella tiene
it has ello tiene

we have nosotros tenemos

you have vosotros tenéis

they have ellos tienen

Pasado Simple
La estructura es:
SUJETO + was/were

Conjugación Significado

I had yo tuve

you had tú tuviste

13
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

he had él tuvo
she had ella tuvo
it had ello tuvo

we had nosotros tuvimos

you had vosotros tuvisteis

they had ellos tuvieron

Interrogación con el verbo to have: Do you have?, Have you?,


Have you got?
Para definir como se forma la interrogación hay que distinguir si el verbo "to have" actúa como
verbo auxiliar o no:

"To have" actuando como verbo auxiliar


Cuando have es un verbo que acompaña a otro (auxiliar), la interrogación se construye cambiando
el orden de sujeto y verbo have:
Oración Afirmativa:
You have eaten too much / Tú has comido demasiado
Oración Interrogativa:
Have you eaten too much? / ¿Has comido demasiado?
 En este apartado entraría las interrogaciones con el verbo "to have got":
Oración Afirmativa:
You have got a pencil / Tú tienes un lápiz
Oración Interrogativa:
Have you got a pencil? / ¿Tienes un lápiz?

"to have" actuando como verbo no auxiliar


 en inglés moderno se construye la interrogación con el auxiliar do:
Do you have a pencil?
 antes en inglés se decía (actualmente esta construcción está en desuso):
Have you a pencil? (Británico en desuso)

La negación con el verbo "to have"


14
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Al igual que en la interrogación hay que distinguir 2 casos:

"To have" actuando como verbo auxiliar


Si to have cumple funciones de verbo auxiliar entonces se añade el adverbio not después del have:
Oración Afirmativa:
I have studied in England / Yo he estudiado en Inglaterra
Oración Negativa:
I have not studied in England / Yo no he estudiado en Inglaterra

"To have" actuando como verbo principal


Si to have no es auxiliar se utiliza el verbo to do como auxiliar
Oración Afirmativa:
He has a girlfriend / Él tiene novia
Oración Negativa:
He does not have a girlfriend / Él no tiene novia

Contracciones con el verbo "to have"


Con una frecuencia muy elevada los pronombres personales y el verbo to have se contraen:

Contracciones del Presente Simple (afirmación)


Sin contraer Contraído

I have I've

you have you've

he has he's
she has she's
it has it's

we have we've

you have you've

they have they've

NOTA: Confusión he's puede ser o he is o he has


Desgraciadamente he's puede ser o he is o he has, se tiene que determinar que es un caso u otro
por el contexto. Lo mismo ocurre con she's y it's.

15
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Contracciones del Presente Simple (negación)


Sin contraer Contraído

I have not I've not o I haven't

you have not you've not o you haven't

he has not he hasn't


she has not she hasn't
it has not it hasn't

we have not we've not o we haven't

you have not you've not o you haven't

they have not they've not o they haven't

 Como se ve en la tabla, esxisten 2 formas de contracción. Por ejemplo:


you have not se puede contraer en you've not si se quiere destacar el not o en you haven't si se
quiere destacar you, siendo mucho más frecuente you haven't

Contracciones del Pasado Simple (afirmación)


Sin contraer Contraído

I had I'd

you had you'd

he had he'd
she had she'd
it had it'd

we had we'd

you had you'd

they had they'd

NOTA: Confusión "I'd" puede ser o "I had" o "I would"


"I'd" puede querer decir "I had" o "I would", se sabe cual es, por el contexto. Esto pasa también con el resto
de los pronombres personales.

Contracciones del Pasado Simple (negación)


Sin contraer Contraído

I had not I hadn't

16
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

you had not you hadn't

he had not he hadn't


she had not she hadn't
it had not it hadn't

we had not we hadn't

you had not you hadn't

they had not they hadn't

Existe otra fórmula posible: I had not también se puede contraer en I'd not pero se usa con poca
frecuencia que I hadn't.

EJERCICIOS
 LEER LAS ORACIONES:
1- Subrayar el verbo “To have”.
2- Decir si actúa como verbo principal o auxiliar.
3- Traducir.
1.- I had breakfast at 8 o’clock yesterday morning.
2.- She has a bath every day.
3.- Has he got a nice dream every night?
4.- I didn’t have a conversation with my father yesterday.
5.- I have a game of tennis twice a week.
6.- He has been in the bar the whole night.
7.- Had your father travelled to India?
8.- Has he ever written something?

Los Tiempos Verbales en Inglés

Tiempos verbales de presente

Tiempo Verbal Ejemplo

Presente Simple (Present Simple) I sing

17
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Presente Continuado (Present Continuous) I am dancing

El Condicional Simple (Conditional simple) I would dance

El Condicional Continuo (Conditional Continuous) I would be dancing

Tiempos verbales de pasado

Tiempo Verbal Ejemplo

Presente Perfecto (Present Perfect) I have danced

Presente Perfecto Continuo (Present Perfect Continuous) I have been dancing

Pasado Simple (Past Simple) I danced

Pasado Continuo (Past Continuous) I was dancing

Pasado perfecto (Past Perfect) I had danced

Pasado perfecto Continuo (Past Perfect Continuous) I had been dancing

Condicional Perfecto (Conditional Perfect) I would have danced

Condicional Continuo Perfecto (Conditional Continuous Perfect) I would have been dancing

Tiempos verbales de futuro

Tiempo Verbal Ejemplo

Futuro Simple (Future Simple) I will dance

Futuro Continuado (Future Continuous) I will be dancing

Futuro going to (Future going to) I am going to dance

Futuro Perfecto (Future Perfect) I will have danced

Futuro Perfecto Continuo (Future Perfect Continuous) I will have been dancing

Otros Tiempos verbales


18
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Tiempo Verbal Ejemplo

Imperativo (Imperative) Dance

El Presente Simple en Inglés


El "present simple" es el tiempo verbal más sencillo e importante de la lengua inglesa. En esta
lección vamos a explicar como se forma y cuando se usa:

Conjugación del presente simple

La construcción del presente simple (Present Simple) en inglés es realmente fácil, tiene la
estructura:
[SUJETO] + [VERBO] (en infinitivo sin to)
A tener en cuenta:
Si el sujeto es 3ª persona del singular se le añade una "-s" al verbo.
Veamos como ejemplo la conjugación del verbo to live (vivir) en presente simple:

Conjugación Significado

I live yo vivo

you live tú vives

he / she / it lives él / ella / ello vive

we live nosotros vivimos

you live vosotros vivís

they live ellos/ellas viven

19
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Caso especial: "-es" en lugar de "-s" para la 3ª persona


Para los verbos acabados en "-o","-sh", "-ch" , "-ss", "-x" , "-z", "-y" se añade "-es" en lugar de "-
s para la 3ª persona del singular".
Veamos a continuación algunos ejemplos:

Verbo Tercera persona

to go he goes

to wish he wishes

to reach he reaches

to express he expresses

to fix he fixes

to kiss he kisses

to buzz he buzzes

Adicionalmente, los verbos acabados en "-y" cuando la "y" no es precedida de una vocal, forman la
tercera persona en "-ies".

Verbo Tercera persona

to ocuppy he ocuppies

to study he studies

La negación en el presente simple


La negación con los verbos plenos (esto es no modales y no auxiliares) también es fácil:
[SUJETO] + do(es) + not + [VERBO]
I do not sing / Yo no canto
He does not sing / Él no canta
They do not play / Ellos no juegan

En inglés el do + not se contrae a don't y does + not se contraen a doesn't.


I don't sing / Yo no canto
He doesn't sing / Él no canta
They don't play / Ellos no juegan
20
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

La interrogación en el presente simple


En las oraciones interrogativas también se hace uso del verbo auxiliar to do. Anteponiendolo al sujeto.
La estructura de las preguntas cerradas o de yes/no (es decir aquellas que no tienen partícula interrogativa)
es:
do(es) + [SUJETO] + [VERBO] ?
Do you like music? / ¿Te gusta la música?
Does he speak English? / ¿ Habla él inglés?
La estructura de las preguntas abiertas (es decir aquellas que tienen partícula interrogativa) es:
[PARTÍCULA INTERROGATIVA] + do(es) + [SUJETO] + [VERBO] ?
Why do you like music? / ¿Por qué te gusta la música?
When do you come back? / ¿Cúando vuelves?

Uso del presente simple


El "presente simple" se usa para:
 Rutinas
I work in a silver mine / Trabajo en una mina de plata
 Situaciones permanentes
She has a car / Ella tiene un coche
 Leyes naturales o físicas
The Sun appears in the East / El Sol sale por el este

EJERCICIOS

1- Completar las oraciones dadas con la forma correcta del verbo en presente simple.
2- Pasar las mismas a las formas posteriormente solicitada.
3- Traducir sólo el verbo conjugado.
1.- Aff: I (travel) ...........to Buenos Aires every week.
Neg:
Int:
2.- Aff: They (run) .......... in the park every Saturday.
Neg:
Int:
3.- Aff: My boss (work)..........hard.
Neg:

21
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Int:
4.- Aff: Mary (work) ...........in a bank.
Neg:
Int:
5.- Aff: You (study) ......... English.
Neg:
Int:

El Pasado Simple en Inglés

Conjugación del pasado simple

La estructura del "pasado simple" (Past Simple Tense) en inglés es:


[SUJETO] + [VERBO EN PASADO, TERMINACIÓN "-ed"]

Conjugación Significado

I worked yo trabajé

you worked tú trabajaste

he worked él trabajó

we worked nosotros trabajamos

you worked vosotros trabajasteis

they worked ellos trabajaron

Construcción del pasado


Como norma general, para formar el pasado en inglés se añade "-ed" a un verbo.
work➜worked
Aunque hay que tener en cuenta unas consideraciones:

22
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Verbos irregulares
Para los verbos irregulares hay que memorizar su forma de pasado.
Veamos ejemplos de verbos irregulares:

Verbo Pasado Significado

to go Went Ir

to buy Bought Comprar

to have Had Tener

to be was/were ser o estar

I went to the Oxford University / Fui a la universidad de Oxford

Pasado de verbos terminados en "-e"


Para formar el pasado se sustituye la "-e" final por "-ed".

Verbo Pasado

Use used

Die died

La negación en el pasado simple


La formación de la negación en "past simple" es más sencilla que la afirmación.
Su estructura es:
[SUJETO] + did + not + [VERBO EN INFINITIVO]
Os mostramos un par de ejemplos:
I did not sing / yo no canté
he did not sing / él no cantó

La interrogación en el pasado simple


Para construir la interrogación se utiliza el verbo auxiliar to do en pasado (did).
La Estructura es:
Did + [SUJETO] + [VERBO EN INFINITIVO] ?
23
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Conjugación Significado

did I sing? ¿canté?

did you sing? ¿cantaste?

did he sing? ¿cantó?

did we sing? ¿cantamos?

did you sing? ¿cantasteis?

did they sing? ¿cantaron?

Si la interrogación tuviera una partícula interrogativa la estructura sería


[PARTÍCULA INTERROGATIVA] + did + [SUJETO] + [VERBO EN INFINITIVO]?
What did you sing? / ¿Qué cantabas?

Uso del pasado simple


El "past simple" se usa para:
 Acciones que comenzaron en el pasado y ya estan terminadas.
I ate an apple yesterday / Me comí una manzana ayer.

Complementos Temporales
Usualmente con las oraciones en "pasado simple" es necesario detallar cuando se realizó la acción
(de manera explícita o por el contexto).
Por ejemplo:
I played a match last week / Jugé un partido la semana pasada
Enumeramos algunos otros complementos temporales de este tiempo verbal a modo de ejemplo:

Complemento Significado

yesterday ayer

two years ago hace dos años

in 2008 en 2008

last year el año pasado

24
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

on 01/01/2000 el 01/01/2000

in July en julio

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en pasado simple.
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

1.- Aff: We (live) .......... Mendoza.


Neg:
Int:
2.- Aff: George (sell)......... software and hardware.
Neg:
Int:
3.- Aff: Alice (go) ......... to the gym.
Neg:
Int:
4.- Aff: He (pay) ......... the tickets.
Neg:
Int:
5.- Aff: The man (use) ......... A facemask.
Neg:
Int:

El Futuro Simple en Inglés

Conjugación

El futuro simple (Future Simple) en inglés se forma con la estructura:


SUJETO + will/shall + VERBO

25
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Nota: El auxiliar shall sólo se utiliza para la primera persona de singular ( I) y del plural (We) .
Mientras que el auxiliar will se puede utilizar en todos los casos.
Como ejemplo de la conjugación del futuro simple, veamos el verbo to work (trabajar):

Conjugación Significado

I will/shall work yo trabajaré

you will work tú trabajarás

he will work él trabajarás

we will/shall work nosotros trabajaremos

you will work vosotros trabajareis

they will work ellos trabajaran

En inglés son muy frecuentes las contracciones. Los pronombres y el auxiliar will se contraen en las
siguientes formas:

Conjugación Significado

I'll work yo trabajaré

you'll work tú trabajarás

he'll work él trabajarás

we'll work nosotros trabajaremos

you'll work vosotros trabajareis

they'll work ellos trabajaran

Negación en el Futuro simple


La negación del futuro se realiza simplemente añadiendo la partícula not entre el auxiliar will y el
verbo:
SUJETO + will + not + VERBO

Conjugación Significado

I will/shall not work yo no trabajaré

26
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

you will not work tú no trabajarás

he will not work él no trabajará

we will/shall not work nosotros no trabajaremos

you will not work vosotros no trabajareis

they will not work ellos no trabajaran

 Nota sobre contracciones:


will not se contrae en won't y shall not se contrae en shan't

Interrogación en el futuro simple


La interrogación se forma, como es habitual, invirtiendo el verbo y el sujeto:
will + SUJETO + VERBO?

Conjugación Significado

will/shall I work? ¿trabajaré?

will you work? ¿trabajarás?

will he work? ¿trabajará?

will/shall we work? ¿trabajaremos?

will you work? ¿trabajareis?

will they work? ¿trabajaran?

Uso del futuro simple


 Se utiliza para realizar promesas
I will write you soon / Te escribiré pronto
 Se utiliza para decisiones tomadas mientras se está conversando
Ok, I will call customer service again / Vale, llamaré otra vez a atención al cliente

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en futuro simple.

27
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

b- Pasar las mismas a las formas posteriormente solicitadas.


c- Traducir sólo el verbo conjugado.

1.- Aff: I (see) ......... Peter tomorrow morning.


Neg:
Int:
2.- Aff: Jane and Paul (come) .........to Argentina next year.
Neg:
Int:
3.- Aff: It (take) ........... two hours to get home.
Neg:
Int:
4.- Aff: Sarah (sing) ............ at the concert tonight.
Neg:
Int:
5.- Aff: We (go)......... to the cinema when I finish my homework.
Neg:
Int:

El Presente continuado

Conjugación del presente continuo

La estructura del presente continuo (Present Continuous) en inglés es sencilla:


[SUJETO] + am/are/is (verbo to be) + [ VERBO CON -ING ( gerundio)]

Conjugación Significado

I am singing yo estoy cantando

28
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

you are singing tú estás cantando

he is singing él está cantando

we are singing nosotros estamos cantando

you are singing vosotros estáis cantando

they are singing ellos están cantando

La negación en el presente continuo


La negación con los verbos plenos (esto es no modales y no auxiliares) es muy simple:
[SUJETO] + am/are/is (verbo "to be") + not + [VERBO CON -ING ( gerundio)]
I am not singing / yo no estoy cantando
he is not singing / él no está cantando
Nota: Es habitual contraer el verbo "to be" y "not"

La interrogación en el presente continuo


Para construir la interrogación simplemente hay que invertir el orden del sujeto y del verbo to be:
Estructura de la interrogación:
am/are/is + [SUJETO] + [VERBO CON "-ing"]?

Conjugación Significado

am I singing? ¿estoy cantando?

are you singing? ¿estás cantando?

is he singing? ¿está cantando?

are we singing? ¿estamos cantando?

are you singing? ¿estáis cantando?

are they singing? ¿están cantando?

Uso del presente continuo


El "present continuous" se usa para:
 Acciones que se están haciendo en el mismo momento que se habla

29
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

I am eating an Apple / Me estoy comiendo una manzana


 Situaciones cíclicas en un periodo de tiempo definido
I am getting up early this month / Me estoy levantando pronto este mes

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en presente continuado.
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

1.- Aff: It ........... in Cordoba. (rain)


Neg:
Int:
2.- Aff: Peter and Susan … … in an office. (work)
Neg:
Int:
3.- Aff: I … … French. (study)
Neg:
Int:
4.- Aff: You ...... maths. (learn)
Neg:
Int:
5.- Aff: We........the party. (organize)
Neg:
Int:

El Pasado Continuo en Inglés

Conjugación del pasado continuado

30
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

La estructura del Pasado Continuo (Past Continuous Tense) es:


[SUJETO] + was/were + [VERBO con terminación -ing (gerundio)]

Conjugación Significado

I was working yo estaba trabajando

you were working tú estabas trabajando

he was working él estaba trabajando

we were working nosotros estabamos trabajando

you were working vosotros estabais trabajando

they were working ellos estaban trabajando

La negación en el pasado continuado


La negación se forma añadiendo simplemente la partícula "not" entre el verbo "to be" (was/were) y
el verbo principal de la oración:
Estructura:
[SUJETO] + was/were not + [VERBO con la terminación -ing ( gerundio)]
I was not singing / yo no estaba cantando
he was not singing/ él no estaba cantando

La interrogación en el pasado continuo


Para construir la interrogación, se invierte el verbo "to be" y el sujeto:
Estructura de la interrogación:
was/were + [SUJETO]+ [VERBO con la terminación -ing ( gerundio)]?

Conjugación Significado

31
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

was I singing? ¿estaba cantando?

were you singing? ¿estabas cantando?

was he singing? ¿estaba cantando?

were we singing? ¿estabamos cantando?

were you singing? ¿estabais cantando?

were they singing? ¿estaban cantando?

Si la interrogación tuviera una palabra interrogativa la estructura sería


[PALABRA INTERROGATIVA] + was/were + [SUJETO] + [VERBO con la terminación -ing
( gerundio)]
What were you singing? / ¿Qué estabas cantando?

Uso del pasado continuado


El "past continuous" se usa para:
 Acciones que comenzaron en el pasado y se quiere remarcar que tuvieron una cierta duración
I was eating an apple, when I fell to the ground / Me estaba comiendo una manzana cuando caí al
suelo
En esta oración se describe con el pasado continuo que la acción de comer la manzana tuvo una
cierta duración pero que la caída fue instantanea.

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en pasado continuado.
b- Pasar las mismas a las formas posteriormente solicitada.
c- Traducir sólo el verbo conjugado.

1.- Aff: The students (play) ...... football during the week.
Neg:
Int:
2.- Aff: Peter (practise) ...... English conversation before the exam.
Neg:
Int:
3.- Aff: Susan (drive) .......... when the accident happened.
Neg:
Int:
4.- Aff: My friends (study) ............. during the whole night.

32
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Neg:
Int:
5.- Aff: Mr. Robinson (teach) .............. language for ten hours.
Neg:
Int:

El Futuro Continuado
Conjugación del futuro continuado
La construcción del futuro continuo progresivo en inglés es:
SUJETO + will be + VERBO CON TERMINACIÓN-ing ( gerundio)

Conjugación Significado

I will be walking yo estaré caminando

you will be walking tú estarás caminando

he will be walking él estará caminando

we will be walking nosotros estaremos caminando

you will be walking vosotros estáis caminando

they will be walking ellos estarán caminando

La negación en el futuro continuado


Para la negación, simplemente se añade la partícula "not" después del verbo auxiliar "will":
Estructura:
SUJETO + will not be + gerundio del verbo
I will not be working next week / yo no estaré trabajando la semana que viene
Tom will not be playing on Sunday / Tom no estará jugando este domingo

La Interrogación
Como en el resto de los tiempos verbales, la interrogación se construye invirtiendo el orden del
sujeto y del verbo auxiliar "will":
will SUJETO + be + gerundio
will you be studying tomorrow? / ¿estarás estudiando mañana?

33
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Uso del futuro continuado


El "future continuous" se usa para:
 Acciones que se realizaran en el futuro y tienen una cierta duración
Tomorrow I will be travelling to Los Angeles / Mañana estaré viajando a Los Ángeles

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en futuro continuado.
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

1.- Aff: Mary (attend) … … a meeting next Friday.


Neg:
Int:
2.- Aff: I (work) ............. the whole evening in this project.
Neg:
Int:
3.- Aff: Next Saturday, I (listen) ............. to the interview on the radio.
Neg:
Int:
4.- Aff: Margaret (finish) ............... her career the next month.
Neg:
Int:
5.- Aff: Sophia and Paul (move) ..................to Spain next year.
Neg:
Int:

El Futuro “going to”


Conjugación del futuro: "going to"
El futuro going to se forma:
SUJETO + am/are/is going to +VERBO EN INFINITIVO

34
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Conjugación Significado

I am going to eat yo iré a comer

you are going to eat tú irás a comer

he is going to eat él irá a comer

we are going to eat nosotros iremos a comer

you are going to eat vosotros iréis a comer

they are going to eat ellos irán a comer

Contracciones
En argot se contrae going to en gonna:
Un ejemplo claro es la oración:
Tonight is going to be a good night / hoy va a ser una buena noche
se convierte en:
Tonight is gonna be a good night
también puede contraerse “ tonight “ con “ is”, quedando:
Tonight gonna be a good night

La negación en el futuro “going to”


Para formar la negación se añade not después del am/are/is:
Estructura:
SUJETO + am/are/is not going to + VERBO EN INFINITIVO
I am not going to dance tonight / Yo no voy a ir a bailar esta noche
I'm not going to use the computer for around four hours / No voy a usar la computadora por
aproximadamente cuatro horas

La Interrogación en el futuro "going to"


Para formar la interrogación se invierte el orden del sujeto y del verbo auxiliar to be, esto es:
am/are/is + SUJETO + going to + VERBO EN INFINITIVO ?
Are you going to dance tonight? / ¿Vas a bailar esta noche?

Uso del futuro going to


El "futuro going to" se usa para:

35
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

 Acciones que se ha planificado realizar en el futuro, usualmente en un futuro cercano.


He is going to sing tomorrow night / Él va a ir a cantar mañana por la noche
Recordad que si la acción no es planificada (decisión espontanea) se usa el futuro simple

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en futuro “going to”
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

1.- Aff: I (see) ................. him today.


Neg:
Int:
2.- Aff: They (launch)….......... the product next month.
Neg:
Int:
3.- Aff: We (have) ................... lunch in the office
Neg:
Int:
4.- Aff: She (see)… .............. what can she do.
Neg:
Int:
5.- Aff: I (talk)… ........ for a very long time.
Neg:
Int:

El Presente Perfecto (Present perfect)


Conjugación del presente perfecto

La estructura del present perfect en inglés es:

36
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

[SUJETO] + have/has + [PARTICIPIO DEL VERBO]

Conjugación Significado

I have played yo he jugado

you have played tú has jugado

he has played él ha jugado

we have played nosotros hemos jugado

you have played vosotros habéis jugado

they have played ellos han jugado

Como pueden observar el auxiliar "has" se utiliza en la tercera persona del singular y el auxilar
"have" en los demás casos.

Construcción del participio


Los verbos regulares forman el participio añadiendo "-ed", como regla general.
play➜played
Aunque hay que tener en cuenta algunas consideraciones:

Verbos irregulares
Para los verbos irregulares hay que memorizar su forma de pasado y de participio.

Verbo Participio

to go Gone

to make Made

Participio en verbos terminados en "-e"


Los verbos regulares terminados en "-e" forman su participio añadiendo simplemente una "-d".

Verbo Participio

to hope Used

to excuse Excused

La negación en el presente perfecto

37
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

La negación en el present perfect no tiene ninguna complicación. Su estructura es simplemente:


[SUJETO] + have/has + not + [VERBO EN PARTICIPIO]
He has not played well / Él no ha jugado bien
I have not eaten in 2 days / (Yo) no he comido en 2 días

La interrogación en el presente perfecto


Se construye la interrogación invertiendo el orden de sujeto y verbo to have. Es decir:
Have/has + [SUJETO] + [VERBO EN PARTICIPIO]?

Conjugación Significado

have I done? ¿he hecho?

have you done? ¿has hecho?

has he done? ¿he hecho?

have we done? ¿hemos hecho?

have you done? ¿habéis hecho?

have they done? ¿han hecho?

Si la oración tuviera una partícula interrogativa la forma sería:


[PARTÍCULA INTERROGATIVA] + have + [SUJETO] + [VERBO EN PARTICIPIO]?
What have you done? / ¿Qué has hecho?

Uso del presente perfecto


El present perfect es usado para:
 Acciones que comenzaron en el pasado y que no han terminado aún en el presente
I have not slept in the past two days / No he dormido en los últimos 2 días
 Acciones que comenzaron y acabaron en el pasado pero que su efecto continúa en el
presente.
I am not hungry because I have eaten an Apple / No tengo hambre porque he comido una
manzana
El matiz del ejemplo anterior es, que aunque hemos terminado de comer la manzana, esta acción tiene
repercusión en el presente (no tenemos hambre en el presente por habernos comido la manzana)
I have bought a car/ (Yo) he comprado un coche

38
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

El matiz de este segundo ejemplo es, que aunque la acción de comprar terminó, el coche nos sigue
perteneciendo en el presente (continua el efecto de la acción).
 Acciones que comenzaron y acabaron en el pasado pero que el intelocutor ha situado la
acción en un intervalo de tiempo no acabado. Esta situación de la acción en un intervalo temporal no
finalizado obliga a construir la oración en presente perfecto:
Intervalo temporal no finalizado (Present Perfect):
I have been in USA this year / He estado este año en Estados Unidos
Intervalo temporal finalizado (Past Simple):
I was in USA last year / Estuve el año pasado en Estados Unidos

Partículas usadas en "Present Perfect"

Just (acabar de)


Just se usa en "Present Perfect" para decir que una acción acaba de ser terminada:
we have just eaten and we are not hungry / Nosotros acabamos de comer y no tenemos hambre

Already (ya)
Already significa "ya", pero sólo con oraciones afirmativas y en Present Perfect:
I have already ordered the books / ya he pedido los libros

Yet (ya o todavía)


Yet en "Present Perfect" significa "ya" en oraciones interrogativas y "todavía" en negativas :
Have you ordered her book yet? / ¿Ya has pedido su libro?
No, I have not ordered her book yet / No, todavía no he pedido el libro

Ever (alguna vez)


Ever se usa en oraciones interrogativas con la estructura "Have you ever ...?" (¿has alguna vez ...?)
Have you ever seen a camel crying? / ¿Has visto alguna vez un camello llorando?

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en presente perfecto.
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

39
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

1.- Aff: Sue ……… (lose) the key of her car.


Neg:
Int:
2.- Aff: Peter has saved almost $70000 for a new motorcycle.
Neg:
Int:
3.- Aff: That boy (break) ............... the windows.
Neg:
Int:
4.- Aff: Martha (think) ................. very carefully her situation.
Neg:
Int:
5.- Aff: Factories (contaminate) .................... too many rivers.
Neg:
Int:

El Pasado perfecto en Inglés


Conjugación del pasado perfecto

La estructura del pluscuamperfecto en inglés es:


Sujeto + had + verbo con terminación -ed (participio)

Conjugación Significado

I had worked yo había trabajado

you had worked tú habías trabajado

40
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

he had worked él había trabajado

we had worked nosotros habíamos trabajado

you had worked vosotros habíais trabajado

they had worked ellos habían trabajado

La negación del pasado perfecto


La negación se construye colocando el adverbio "not" entre el "had" y el participio:
Estructura:
Sujeto + had + not + verbo en participio
I had not sung / yo no había cantado
he had not eaten / él no había comido

La interrogación en el pasado perfecto


Para construir la interrogación se utiliza invierte el orden del sujeto y del verbo:
Estructura de la interrogación:
Had + sujeto + verbo en participio?

Conjugación Significado

had I sung? ¿había cantado?

had you sung? ¿habías cantado?

had he sung? ¿había cantado?

had we sung? ¿habíamos cantado?

had you sung? ¿habíais cantado?

had they sung? ¿habían cantado?

Si la interrogación tuviera una palabra interrogativa la estructura sería


Partícula interrogativa + had + sujeto + verbo conjugado
What had you sung? / ¿Qué habías cantado?

Uso del pasado perfecto


El past perfect se usa para:
 Acciones que terminaron en el pasado y fueron anteriores a otras se hace referencia.

41
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

The film had not started when I arrived / La película no había empezado cuando yo llegué

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en pasado perfecto.
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

1.- Aff: Astronauts (fly) ......................... through space for hours.


Neg:
Int:
2.- Aff: The secretary (finish) .................... the report.
Neg:
Int:
3.- Aff: The police (find) ...........................the lost boy.
Neg:
Int:
4.- Aff: The postman (deliver) .................... my letter .
Neg:
Int:
5.- Aff: He (retire) .......................... from political life.
Neg:
Int:

El Futuro Perfecto en Inglés


Conjugación

El futuro perfecto (Future Perfect) en inglés se construye con esta estructura:


42
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

SUJETO + will/shall have + PARTICIPIO DEL VERBO

Nota: Como en el caso del futuro simple, el auxiliar shall sólo se utiliza para la primera persona
tanto del singular y como del plural. Mientras que el auxiliar will se puede utilizar siempre.
Para aclarar un poco la estructura veamos por ejemplo como se conjuga el verbo to
finish (terminar):

Conjugación Significado

I shall have finished/ I will have finished yo habré terminado

you will have finished tú habrás terminado

he/she/it will have finished él/ella/ello habrá terminado

we shall have finished/ we will have finished nosotros habremos terminado

you will have finished vosotros habréis terminado

they will have finished ellos habrán terminado

Como hemos visto en el futuro simple los pronombres personales y el auxiliar "will" se pueden
contraer:
I will ➜ I'll

Negación del Futuro Perfecto


La negación se forma fácilmente añadiendo el adverbio not entre el auxiliar will y el verbo:
SUJETO + will/shall not have+ PARTICIPIO DEL VERBO

Conjugación Significado

I will not have completed/ I shall not have completed yo no habré completado

you will not have completed tú no habrás completado

he will not have completed él no habrá completado

we will not have completed/ we shall not have completed nosotros no habremos completado

you will not have completed vosotros no habréis completado

they will not have completed ellos no habrán completado

Como ya habíamos comentado en el futuro simple will not se contrae en won't y shall not se
contrae en shan't

43
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Interrogación en el futuro perfecto


La interrogación se construye invirtiendo el verbo auxiliar y el sujeto:
will/shall + SUJETO + have + PARTICIPIO DEL VERBO?

Conjugación Significado

will I have studied?/ shall I have studied? ¿habré estudiado?

will you have studied? ¿habrás estudiado?

will he have studied? ¿habrá estudiado?

will we have studied?/ shall we have studied? ¿habremos estudiado?

will you have studied? ¿habréis estudiado?

will they have studied? ¿habrán estudiado?

Uso del futuro perfecto


El futuro perfecto se utiliza en inglés para expresar un suceso que se terminará en el futuro
I will have paid off my mortgage in less than 3 years
Habré pagado mi hipoteca en menos de 3 años
By 2025, my company will have created over 1000 new Jobs
Para 2025, mi empresa habrá creado más de 1000 nuevos empleos

EJERCICIOS
a- Completar las oraciones dadas con la forma correcta del verbo en futuro perfecto.
b- Pasar las mismas a las formas posteriormente solicitadas.
c- Traducir sólo el verbo conjugado.

1.- Aff: By the end of the month, she .............................. (decorate) her new office.
Neg:
Int:
2.- Aff: Before 9 o’clock, the student (present) ....................... the job.
Neg:
Int:
3.- Aff: I (understand) ......................... the problem by the time you explain it.

44
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Neg:
Int:
4.- Aff: Before he leaves the room, he (turn off) ........................ the computer.
Neg:
Int:
5.- Aff: After the accident, a crowd of people (gather) ..................... in the corner.
Neg:
Int:

¿Qué hemos aprendido?


Pasar las oraciones a los tiempos verbales y formas solicitadas y luego traducir el
verbo en forma correcta.
FORMA AFIRMATIVA

1) Presente Simple: The system GENERATES sentences grammatically correct. (GENERA)

Pasado Simple: …………………………………………………………………………………………………………

Futuro Simple: …………………………………………………………………………………………………………

Presente Continuado: …………………………………………………………………………………………………

Futuro Continuado: ……………………………………………………………………………………………………

Pasado Continuado: …………………………………………………………………………………………………...

Futuro Going To: ……………………………………………………………………………………………………..

Presente Perfecto: ……………………………………………………………………………………………………..

Pasado Perfecto:

Futuro Perfecto:

…………………………………………………………………………………………………..

FORMA INTERROGATIVA

2) Presente Simple:

Pasado Simple:

45
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

Futuro Simple: WILL Artificial Intelligence INDICATE the capacity of a device to carry out

the same types of functions that characterize to the human thought?

(INDICARÁ)

Futuro Continuado:

Presente Continuado:

Pasado Continuado:

Futuro Going To:

Presente Perfecto:

Pasado Perfecto:

Futuro Perfecto:

……………………………………………………………………………………………………

FORMA NEGATIVA

3) Presente Simple:

Pasado Simple:

Futuro Simple:

Futuro Continuado:

Presente Continuado:
Pasado Continuado:

Futuro Going To:

Presente Perfecto:
Pasado Perfecto: The expert system HADN’T TRIED to reproduce the human reasoning in

a symbolic form. (NO HABÍA TRATADO)

Futuro Perfecto: it won’t have tried

46
DIRECCIÓN GENERAL DE ESCUELAS - DIRECCIÓN DE EDUCACIÓN SUPERIOR

INSTITUTO DE EDUCACIÓN SUPERIOR Nº 9-012 “SAN RAFAEL EN INFORMÁTICA”

47

También podría gustarte