Está en la página 1de 100

Desarrollo del Pensamiento Analítico y

Sistémico

1 CONCEPTOS BÁSICOS DE ALGORITMOS

Introducción

La lógica de programación no es algo extraño en nuestro diario vivir, ya que las


actividades que realizamos día a día conllevan una serie de pasos tan estructurados y
lógicos, los cuales son efectuados de forma casi automática, sin la necesidad de un
proceso mental complejo, tales como: preparar un café, tomar una ducha, cambiar una
bombilla, seleccionar un programa en la televisión, entre otros.

Justificación

Con el pasar de los tiempos ha evolucionado la industria y con ésta lo han hecho los
procesos, ya sea para elaborar productos o para brindar un servicio a un cliente, por tal
motivo, se requiere cada vez optimizar las tareas y funciones que realizan las personas en
las empresas para satisfacer las necesidades del mundo moderno, es así como la
programación cobra vital importancia, ya que sin su ayuda nos tomaría más tiempo
elaborarlas. Por ejemplo, imagine la cantidad de empleados que necesitaría contratar una
empresa para liquidar la nómina quincenal de sus 800 empleados, y luego tener que
despedirlos hasta la nueva quincena, sin contar con los posibles errores que podrían
cometer entre un cálculo y otro.

Objetivo General

Introducir al estudiante en los conceptos teóricos de la algoritmia, a fin de facilitar su


inmersión en la programación, evitando profundizar demasiado en la teoría y logrando
avanzar en la solución de problemas.

1
Luis Norberto Zapata Puerta

Competencias Específicas

Cognitivas (Saber):

1. Definir los conceptos básicos de algoritmos.


2. Identificar los pasos para la solución de problemas con programas de computador.
3. Distinguir los símbolos o diagramas de flujo más empleado en la solución de
problemas.
4. Reconoce los tipos de datos más empleados en la solución de problemas.
5. Conocer la metodología para resolver problemas por medio del computador en cada
una de sus etapas.

Procedimentales /Instrumentales (Saber hacer):

1. Explicar con sus propias palabras los conceptos básicos de algoritmos.


2. Implementar diagramas de flujo en la solución de problemas de la vida cotidiana.
3. Distinguir el orden de prioridad de los operadores en expresiones aritméticas.
4. Abstraer los datos de entrada, de proceso y de salida a partir de un problemas
propuestos.
5. Esbozar la solución de problemas implementando estructuras secuenciales.

Actitudinales (Ser):

1. Trabajar en equipo.
2. Participar activamente en clase.
3. Demostrar responsabilidad y organización en la entrega de trabajos asignados.
4. Demostrar interés, motivación y curiosidad e inquietud investigativa.
5. Aceptar recomendaciones y tolerar a los demás.

Resultados de Aprendizaje

1. Plantear las operaciones aritméticas del problema o caso de estudio propuesto.


2. Esbozar soluciones a problemas de la vida cotidiana por medio de diagramas de flujo.
3. Identificar los datos (de entrada, proceso y salida) del planteamiento del problema.
4. Resolver problemas simples implementando estructuras secuenciales.
Desarrollo del Pensamiento Analítico y
Sistémico

Estrategias Metodológicas

1. Trabajo Presencial.
a. Clase magistral.
El profesor explica los conceptos fundamentales y orienta el desarrollo
temático.
b. Actividades dinámicas en clase.
El profesor plantea y dirige las actividades a desarrollar:
- Lectura de documentos
- Consultas
- Taller
- Autoevaluación
- Desarrollo de pequeños retos (prácticas) en relación con cada temática.
c. Clase práctica (Laboratorio).
El profesor desarrolla los algoritmos más representativos y busca aterrizar el
manejo de las estructuras algorítmicas en el lenguaje seleccionado.

2. Trabajo Asistido:
a. Tutorías.
Los estudiantes asisten a las tutorías que imparte el docente en el horario
acordado.
b. Trabajo Individual asesorado.
El profesor orienta consultas, lecturas y prácticas en el espacio individual de
asesorías.
c. Trabajo en grupo.
El profesor propone, orienta, asesora y evalúa el avance de cada caso de
estudio (proyecto) sobre el cual deben trabajar los equipos conformados desde
la primera semana de clase.

Sugerencias para el Docente

1. Propiciar actividades dinámicas en clase:


- Lecturas de documentos
- Socializar consultas
- Talleres
- Autoevaluación
- Desarrollo de pequeños retos (prácticas) (incentivar con nota).
2. Resolver ejercicios en clase por parte de los estudiantes (incentivar con nota).
3. Revisar y socializar la realización de consultas y talleres (incentivar con nota).
4. Desarrollar los algoritmos más representativos en el laboratorio.

3
Luis Norberto Zapata Puerta

Medios de apoyo y recursos a utilizar

1. Aula de clase: Tablero, Marcadores.


2. Laboratorio de cómputo: Computadores, Vídeo Beam, Internet.
3. Documentación complementaria del tema: Folletos, documentos digitales.
4. Sitio Web del curso: Material multimedial, Applets.
5. Talleres.
6. Guía de laboratorios.
7. Bibliografía.
Desarrollo del Pensamiento Analítico y
Sistémico

Contenido

1. Definición de conceptos básicos de algoritmos


La lógica
El padre de la lógica
Planear
Programar
Programa
Algoritmo
Pseudocódigo
Diagrama de flujo
Lenguaje de programación
Tipos de lenguajes de programación más comunes
Programa fuente
Programa objeto
Periféricos de entrada y salida de información
Memoria RAM
Memoria ROM
Pasos para la solución de problemas con programas de computador
Símbolos más utilizados en la diagramación libre y estructurada
Campo de memoria
2. Solución de problemas de la vida cotidiana por medio de diagramas de flujo
3. Tipos de datos
4. Operadores y expresiones
Variable
Constante
Expresión aritmética
Declaración de campos de memoria
Sintaxis
Sentencia de asignación
5. Solución de algoritmos implementando la “Estructura Secuencial”

5
Luis Norberto Zapata Puerta

1. Definición de conceptos básicos de algoritmos

La lógica

La lógica es una disciplina que estudia la estructura o formas del pensamiento (tales como
conceptos, proposiciones y razonamientos) con el objetivo de obtener razonamientos
válidos (Contreras, 2007).

La lógica es la «ciencia que estudia la validez formal de las inferencias». Para


comprender esta definición necesitamos entender qué es una inferencia y qué se entiende
por „validez formal‟ (Deaño, 1999).

Inferencia: es un razonamiento o una argumentación. Lo característico de esta forma


pensamiento es que en él pasamos de un conjunto de afirmaciones a las que
denominamos premisas a otra afirmación a la que llamamos conclusión.

La validez de un razonamiento es independiente de la verdad o falsedad de sus premisas.


Lo fundamental es comprender que para que un razonamiento sea válido (formalmente
válido), no puede darse el caso que si sus premisas son verdaderas, la conclusión sea
falsa.

¿Quién es el padre de la lógica?

Aristóteles es considerado el Padre de la Lógica. El surgimiento de la lógica tuvo grandes


aportes, en orden cronológico tenemos a Sócrates y Platón, quienes lograron desarrollar
la semiótica y la retórica; posteriormente en la historia de la lógica aparece Aristóteles,
quien con sus estudios hace que por primera vez se sistematice como una ciencia
(Contreras, 2007).

Planear: Consiste en definir las metas, establecer una estrategia general para alcanzarlas
y trazar planes exhaustivos para integrar y coordinar el trabajo, éste se ocupa tanto de
los fines (qué hay que hacer) como de los medios (cómo hay que hacerlo) (Stephen,
2005).

Programar: Es pasar un algoritmo a un lenguaje de programación determinado teniendo


en cuenta los estándares del lenguaje a utilizar (Garrido, 2006).

Programa: Es un conjunto ordenado de instrucciones que se dan al computador


indicándole las operaciones o tareas que se desea que realice (Prieto et al., 2006).

Algoritmo: Es un método para resolver un problema mediante una serie de pasos


precisos, definidos y finitos. La palabra algoritmo se deriva de la traducción al latín de la
palabra árabe Alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió
un tratado sobre manipulación de números y ecuaciones en el siglo IX. (Joyanes, 1993).
Desarrollo del Pensamiento Analítico y
Sistémico

Características de un algoritmo:

Preciso : Indicar el orden de realización en cada paso.


Definido : Si se sigue dos veces, se obtiene el mismo resultado cada vez.
Finito : Tiene fin; un número determinado de pasos.

Pseudocódigo: Es una herramienta de programación en la que las instrucciones se


escriben en palabras similares en inglés o español, que facilita tanto la escritura como la
lectura de programas. En esencia, el pseudocódigo se puede definir como un lenguaje de
especificaciones de algoritmos (Joyanes, 1993).

Diagrama de flujo: Representa la esquematización gráfica de un algoritmo, muestra


gráficamente los procesos o pasos a seguir para la solución de un problema (Cairó,
2006).

Lenguaje de programación: Es todo lo relativo a los símbolos y reglas para construir o


redactar con ellos un programa (Prieto et al., 2006).

Los principales tipos de lenguajes utilizados son: (Joyanes, 1996)

Lenguaje máquina
Lenguaje de bajo nivel (ensamblador)
Lenguaje de alto nivel

Lenguaje máquina: Los lenguajes máquina son aquellos que están escritos en lenguajes
directamente inteligibles por la máquina, ya que sus instrucciones son cadenas binarias
que especifican una operación, y las posiciones de memoria implicadas en la operación
se denominan instrucciones de máquina o código máquina.

Lenguaje de bajo nivel: El lenguaje de bajo nivel por excelencia es el ensamblador. Las
instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos,
ejemplo de instrucciones nemotécnicas: ADD, SUB, DIV. Una instrucción típica sería:
ADD M, N, P.

Lenguaje de alto nivel: Los lenguajes de alto nivel son los más utilizados por los
programadores. Están diseñados para que las personas escriban y entiendan los
programas de un modo mucho más fácil que los lenguajes máquina y ensambladores.

Los siguientes son algunos de los lenguajes de programación más populares: java, c++,
c#, visual basic, php, cobol, pascal, lisp, Python, entre otros.

Programa fuente: Conjunto de instrucciones escritas en un lenguaje de programación y


que supuestamente sirven para modelar y solucionar un problema. Decimos
”supuestamente”, porque en realidad los programas fuente escritos por seres
humanos
casi nunca consideran todos los detalles y entonces el problema se resuelve con una
iteración de este esquema: programa fuente, compilación y corrección de errores (Lavine,
1990).

7
Luis Norberto Zapata Puerta

Programa objeto: Conjunto de instrucciones escritas en un lenguaje de máquina. Los


humanos ya no escribimos programas objetos, porque delegamos esta tara a los
programas traductores: ensambladores y compiladores. Para que un objeto sea ejecutado
debe llevarse del disco donde generalmente está almacenado. (Lavine,1990)

Periféricos o dispositivo de entrada / salida (E/S): Estos dispositivos permiten al


usuario comunicarse con la computadora. Algunos dispositivos típicos de E/S son el
teclado, la impresora monitor (Joyanes, 1996).

Unidad de entrada (E): Es un dispositivo por el que se introduce en el computador los


datos e instrucciones. En estas unidades se transforma las informaciones de entrada en
señales binarias de naturaleza eléctrica (Prieto et al., 2006). Ejemplo: escáner, cámara
digital, mouse, teclado.

Unidad de salida (S): Es un dispositivo por el que se obtienen los resultados de los
programas ejecutados en el computador. La mayor parte de estas unidades (un
computador suele tener varias de ellas) transforman las señales eléctricas binarias en
información perceptible por el usuario (Prieto et al., 2006). Ejemplo: parlantes, impresora,
monitor,

Memoria RAM: Random Access Memory - Memoria de Acceso Aleatorio.


Es una memoria de lectura, escritura y borrado, y está destinada para que los
usuarios la utilicen
Es temporal, cuando se apaga el computador los datos almacenados en dicha
memoria se pierden
Los datos no se almacenan en forma secuencial, por el contrario, el computador
elige en forma aleatoria un segmente de memoria para guardarlos

Memoria ROM: Read Only Memory – Memoria de solo lectura.


Es una memoria de lectura, es decir, que el computador sólo podrá leer la
información almacenada en ella.
Contiene información del fabricante, y también instrucciones necesarias para el
arranque de la máquina.
No es temporal, la información contenida en esta memoria no se pierde cuando se
apaga o se reinicia la máquina

Campo: espacio en la memoria para almacenar temporalmente un dato durante el


proceso: su contenido varía durante la ejecución del programa (Lozano, 1986).

Dato: Cualquier objeto manipulable por el computador. Un dato puede ser un carácter
leído de un teclado, información almacenada en un disco, un número que se encuentra en
memoria principal (Prieto et al., 2006).

Compilador: Es un programa que traduce los programas fuente escritos en lenguaje de


alto nivel (Pascal, FORTRAN), a lenguaje de máquina (Joyanes, 1996).

Sintaxis: Forma correcta de escribir una instrucción u orden para el computador.


Desarrollo del Pensamiento Analítico y
Sistémico

Sentencia de Asignación: Es el modo de darle valores a una variable. La operación de


asignación se representa con el símbolo u operador .

Sintaxis: Var = Expresión o Var Expresión

9
Luis Norberto Zapata Puerta

Pasos para la solución de problemas con programas de computador (Lozano, 1986)

Para resolver un problema con programas de computador es necesario realizar una serie
de pasos, los cuales se describen a continuación:

a. Definición del problema: Es el enunciado del problema, el cual debe ser lo


suficientemente claro y preciso. Una vez leído el enunciado del problema debe quedar
claro lo que se desea obtener del computador, es decir, conocer el objetivo que se
desea alcanzar, de no ser así, no tiene sentido continuar con los siguientes pasos.

b. Análisis del programa: Es la etapa más importante en la solución de un problema de


computador, ya que de ésta dependerá en gran medida el alcanzar o no los resultados
que se desean obtener. Por lo general, muchos estudiantes no le prestan mucha
importancia a esta etapa, lo que conlleva a soluciones parciales o erradas; a veces no
hay tiempo para hacer bien las cosas, pero sí, para repetirlas.

Se considera una buena práctica de programación dedicar el tiempo que sea necesario
para realizar un buen análisis del problema.

Una vez entendido lo que se desea obtener del computador, se procede a determinar
lo siguiente:

Los datos de entrada: Son los datos de entrada, los cuales son suministrados
generalmente en el enunciado del problema de forma explícita o implícita.
Los datos de proceso: Son los cálculos u operaciones aritméticas que se deben
realizar para obtener los resultados deseados.
Los datos de salida: Son los resultados que se desean obtener

Es importante aprender las siguientes dos reglas:

Lo que se calcula no se ingresa, es decir, los datos que se deben calcular no deben
ser ingresados por el usuario.

Y, lo que se ingresa no se calcula, es decir, los datos que son ingresados por el
usuario no se calculan.

Una recomendación para aquellos que inician el proceso para aprender a programar,
es que se pongan en el lugar del computador y analicen lo que el usuario requiere de la
máquina y en consecuencia producir los resultados esperados.

c. Selección de la mejor Alternativa: Cuando se analiza un problema es probable que


se pueda resolver de múltiples formas, por lo tanto, se debe elegir la más viable, la de
menor tiempo y la de menor costo. Sonará un poco raro pero en principio lo más
importante es obtener cualquier solución, ya sea buena o mala, porque muy rara vez,
cuando se es principiante, se logra desarrollar una solución aceptable, puesto que
tomará tiempo poder lograrlo.
Desarrollo del Pensamiento Analítico y
Sistémico

d. Diseño del algoritmo: Consiste en la elaboración del algoritmo, el cual puede ser
representado por medio de:

Diagrama de flujo: Es la representación gráfica de la secuencia de pasos lógicos.

Pseudocódigo: Es la secuencia de pasos lógicos escritos en un lenguaje natural,


es decir, en el lenguaje nativo de cada persona.

e. Prueba de escritorio: Permite detectar posibles errores cometidos por el programador


en la elaboración del algoritmo. Consiste en suministrar datos de entrada al algoritmo,
luego se sigue la secuencia de pasos lógicos hasta llegar al final, y determinar si los
resultados arrojados son los esperados, en caso de que no sean correctos, se debe
regresar y revisar los pasos anteriores.

No tiene sentido continuar con el siguiente paso si la prueba de escritorio no arroja los
resultados esperados.

f. Codificación: Consiste en transcribir o pasar la secuencia de pasos lógicos (algoritmo)


a un lenguaje de técnico reconocible por el computador.

Las instrucciones escritas en un lenguaje técnico de mediano o alto nivel constituyen el


programa fuente.

g. Compilación: El proceso de compilación consiste en traducir las líneas del programa


fuente a programa objeto (lenguaje de máquina), es decir, cada lenguaje de
programación trae consigo un compilador, cuya función consiste en verificar que las
instrucciones estén bien escritas sintácticamente para luego traducirlas a lenguaje de
máquina. Durante este proceso, el compilador puede generar un listado con los errores
de sintaxis localizados y sus posibles causas, y hasta tanto no se corrijan, no se podrá
continuar con la siguiente etapa.

La sintaxis Es la forma correcta de escribir una instrucción para el computador.

h. Ejecución: Es el proceso mediante el cual el computador ejecuta (pone en


funcionamiento) una a una cada línea del programa desde el inicio hasta el final.

A veces suelen presentarse errores en tiempo de ejecución, dichos errores no son


detectados por el compilar y generalmente obedecen a problemas de lógica de
programación.

i. Pruebas de computador: Las pruebas de computador son similares a las pruebas de


escritorio, pero con la diferencia, que se realizan directamente en el computador y con
datos más reales. Inicialmente se hacen las pruebas con los mismos datos ingresados
en la prueba de escritorio, dando resultados iguales, en caso contrario, es un indicador
que algo se hizo mal entre las etapas intermedias.

En caso que las pruebas no sean correctas, se deberá regresar a la etapa de


codificación para corregir los posibles errores.

11
Luis Norberto Zapata Puerta

j. Documentación: La documentación de los programas (software) se clasifica en:

Documentación interna: Es la que se realiza al interior de los programas con el


propósito de que sean más legibles. Esta documentación consiste en insertar
comentarios y mensajes para dar claridad a los procesos y variables.

Documentación externa: Está compuesta por los manuales de usuario y del


sistema.

- Manual del usuario: Es un documento que describe el funcionamiento del


sistema el cual permite facilitar el manejo por parte del usuario.

- Manual del sistema: Es un documento que describe la arquitectura y el diseño


del sistema, permitirá que otros arquitectos puedan realizar modificaciones o
mejoras al mismo.

k. Mantenimiento: Se lleva a cabo después de terminado el programa, cuando se


requiere realizar algún cambio, ajuste o complemento al programa para que siga
trabajando de manera correcta.

Símbolos más utilizados en la diagramación libre y estructurada (Lozano, 1986)

Diagramas de flujo libre:

Símbolo Descripción

Inicio/Fin: para indicar inicio o final del programa

Operación/procesos: para realizar procesos


u operaciones.
Desarrollo del Pensamiento Analítico y
No/Si Sistémico
? Condicional: para toma de decisiones o alternativas.

Si/No

Líneas de flujo: indica la secuencia o dirección de


las instrucciones.
Desarrollo del Pensamiento Analítico y
Sistémico

Entrada de datos: para solicitar el ingreso de datos


desde el teclado.

Salida de datos por pantalla: para mostrar datos por


pantalla.

Salida de datos por impresora: para mostrar datos


por impresora.

Estructura ciclo: para repetir instrucciones un


número de veces determinado.

? Si/No

Si/No

Conector en la misma página.

Conector a otra página.

Recomendaciones para el diseño de diagramas de flujo

 Se debe usar solamente líneas de flujos horizontales y/o verticales.


 Se deben evitar el cruce de líneas utilizando los conectores.
 Se deben utilizar conectores solo cuando sea necesario.
 No deben quedar líneas de flujo sin conectar.
 Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo
y de izquierda a derecha.
 Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el
uso de muchas palabras.

13
Luis Norberto Zapata Puerta

Diagramas de flujo estructurado o rectangular (Nassi - Schneiderman)

Este tipo diagramación trabaja básicamente con los siguientes tres símbolos:

a.) Operación/procesos: para realizar procesos u operaciones.

b.) Condicional: para toma de decisiones o alternativas.

?
Si/No No/Si

Acciones A Acciones B

c.) Ciclo: para repetir instrucciones o acciones un número de veces determinado

Mientras (Condición) Haga

Acción 1
Acción 2
….
….
Acción N
Desarrollo del Pensamiento Analítico y
Sistémico

2. Solución de problemas de la vida cotidiana por medio de diagramas de flujo

Para el estudio formal de un problema de cualquier tipo es necesario seguir una serie de
pasos que lleven a su entendimiento y solución, es decir, es necesaria la utilización de un
algoritmo por medio del cual se resuelva dicho problema; esta herramienta es útil aun en
problemas cotidianos. Uno de los conceptos más aceptados de “algoritmo” es, "un
procedimiento para la resolución de problemas de cualquier tipo por medio de una
determinada secuencia de pasos simples y no ambiguos".

Representación de los pasos lógicos por medio de diagramas de flujo

Los diagramas de flujo son una manera de representar visualmente el flujo de datos a
través de sistemas de tratamiento de información. Los diagramas de flujo describen que
operaciones y en que secuencia se requieren para solucionar un problema dado.

Ejemplo 1

Algoritmo para cambiar una llanta pinchada de un auto que se desplaza de una
ciudad a otra (Lozano, 1986)

1. Definición del problema

Supongamos que hemos programado un autómata (Robot), para que conduzca un auto
de una ciudad a otra; indudablemente debemos considerar muchas situaciones, pero por
ahora nos concentraremos un solo problema: el cual consiste en cambiar una llanta
cuando pinche durante el viaje. Como conductores precavidos se ha dotado el auto con la
llanta de repuesto, señales de tránsito y con la herramienta necesaria para estos casos.

2. Análisis del problema

- Datos de entrada: Herramientas, llanta de repuesto bueno y señales de transito.

- Datos de proceso: No hay datos de proceso (no hay cálculos matemáticos).

- Datos de salida: Cambiar la llanta pinchada.

15
Luis Norberto Zapata Puerta

3. Diagrama de flujo libre

Inicio
Desarrollo del Pensamiento Analítico y
Sistémico
Herramientas Bloque declarativo
Repuesto
Señales

Disminuir velocidad
Colocar direccionales
Orillarse

Colocar estacionarias
Detener el auto
Apagar el auto

Poner emergencia
Engranar el auto
Quitarse el cinturón

Abrir la puerta
Bajar del auto
Cerrar la puerta

Abrir el baúl
Sacar y colocar señales
Sacar repuesto

Sacar herramienta
Bloquear el auto
Ir a la llanta pinchada

Colocar el gato
Aflojar las tuercas
Subir el auto

Quitar las tuercas


Quitar la llanta
Poner el repuesto

Colocar los pernos


Apretar los pernos
Bajar el gato
Desarrollo del Pensamiento Analítico y
Sistémico

Requintar los pernos


Guardar herramienta
Guardar llanta pinchada

Guardar tacos
Guardar señales
Cerrar baúl

Abrir la puerta
Subir al auto
Cerrar la puerta

Ponerse el cinturón
Desengranar el auto
Encender el auto

Quitar emergencia
Arrancar con cuidado
Quitar estacionarias

Reanudar el viaje

Fin

Ejemplo 2

Algoritmo para realizar una llamada telefónica

1. Definición del problema

En relación con el problema anterior, considere la posibilidad de un segundo pinchazo, en


tal caso, se les suministrará una moneda de 200 pesos, un número telefónico y un
mensaje a transmitir. El autómata deberá marcar el número señalado y transmitir el
mensaje; no espera respuesta alguna y regresa al auto a esperar ayuda.

Algunas consideraciones:

Si el teléfono público se encuentra dañado, deberá buscar otro (por lo menos debe
encontrar un teléfono bueno en toda la localidad).

17
Luis Norberto Zapata Puerta

Si hay personas en la cola, el autómata deberá esperar su turno.


Puede ocurrir que no entra la llamada o está ocupado, por lo tanto deberá hacer
otro intento, hasta un máximo de tres (3).
Si en uno de los intentos el teléfono no le devuelve la moneda, deberá regresar al
auto y esperar ayuda.

No se preocupe porque el autómata:

Olvidó el número telefónico o el mensaje.


Marco un número equivocado.
Encontró que todos los teléfonos de la ciudad están dañados.
Lo atropelló un auto al cruzar una calle.

2. Análisis del problema

- Los datos de entrada: Herramientas, repuesto bueno, señales de tránsito,


moneda de 200 pesos, número telefónico y mensaje a trasmitir.

- Los datos de proceso: int = int + 1 (contador de intentos)

- Los datos de salida: Cambiar la llanta pinchada por segunda vez


Desarrollo del Pensamiento Analítico y
Sistémico

3. Diagrama de flujo libre

Inicio

herramientas, repuesto, Bloque declarativo


señales, moneda=200
numtel, mensaje, int=0

19
Luis Norberto Zapata Puerta

20
Desarrollo del Pensamiento Analítico y
Sistémico

21
Luis Norberto Zapata Puerta

22
Desarrollo del Pensamiento Analítico y
Sistémico

23
Luis Norberto Zapata Puerta

24
Desarrollo del Pensamiento Analítico y
Sistémico

25
Luis Norberto Zapata Puerta

26
Desarrollo del Pensamiento Analítico y
Sistémico

27
Luis Norberto Zapata Puerta

28
Desarrollo del Pensamiento Analítico y
Sistémico

29
Luis Norberto Zapata Puerta

30
Desarrollo del Pensamiento Analítico y
Sistémico

31
Luis Norberto Zapata Puerta

32
Desarrollo del Pensamiento Analítico y
Sistémico

33
Luis Norberto Zapata Puerta

34
Desarrollo del Pensamiento Analítico y
Sistémico

35
Luis Norberto Zapata Puerta

36
Desarrollo del Pensamiento Analítico y
Sistémico

37
Luis Norberto Zapata Puerta

repuesto No
bueno

Si
Asegurar el auto
Sacar herramienta
Bloquear el auto
Ir a la llanta pinchada Buscar teléfono público

Colocar el gato
Aflojar las tuercas encontró No
Subir el auto Tel?

Si

38
Quitar la llanta Hacer fila
Poner el repuesto Hay fila Si

Colocar los pernos No


Apretar los pernos
Bajar el gato Verificar estado
No
Requintar los pernos
Guardar herramienta Tel No
Guardar llanta pinchada bueno?

Si 2
Guardar tacos
Guardar señales Descolgar la bocina
Cerrar baúl Insertar moneda
Marcar número telef.
Abrir la puerta
Subir al auto
Cerrar la puerta entró No
llamada?

Ponerse el cinturón Si
Desengranar el auto
Encender el auto Transmitir el mensaje 1
Colgar la bocina
Quitar emergencia
Arrancar con cuidado
Quitar estacionarias

Reanudar el viaje

Regresar al auto
Esperar ayuda

Fin
Desarrollo del Pensamiento Analítico y
Sistémico

21
Luis Norberto Zapata Puerta

22
Desarrollo del Pensamiento Analítico y
Sistémico
Luis Norberto Zapata Puerta

Enteros (integer): Ej. edad, mes(1,…,12), dia(1,…,7)


Numéricos
Reales (float): Ej. peso, estatura

Caracter (char): Ej. „a‟,...,‟z‟, „A‟,..,‟B‟,‟0‟,…,‟9‟,‟$‟,‟>‟,‟@‟


Alfanuméricos
Cadena (string): Ej. “20 de julio de 1810”, “juan es >
Datos
de tipo maria”
Simple Lógicos
(boolean) Falso (false) / No
Verdadero (true) / Si
Desarrollo del Pensamiento Analítico y
Sistémico
Luis Norberto Zapata Puerta

mes / dia / año; MM/DD/AA; dia-mes-año


Fecha
(date) MM / DD / AA HH:MM.Sg.Cs

Datos numéricos: Estos tipos de datos permiten almacenar valores numéricos, además
de realizar operaciones aritméticas comunes. Se clasifican a su vez en:

- Enteros (integer): son datos numéricos que no admiten parte decimal, por
ejemplo: edad (20 años), mes (1 a 12), día (1 a 7)

- Reales (float): son datos numéricos que admiten parte entera y parte decimal,
también denominados números de punto flotante, por ejemplo: altura (1,75 mtr),
peso (45,4 kg)

Datos Alfanuméricos: están compuestos por letras, números, espacios en blanco y


símbolos especiales. Se clasifican a su vez en:

- Carácter (char): está representado por cualquier caracter de la tabla ASCII. Los
caracteres se escriben dentro de comillas simples, ejemplo: „a‟,…,‟z‟; „A‟,
…,‟Z‟;
„0‟,‟1‟,…,‟9‟; ‟@‟, „>‟, „$‟, „#‟

- Cadena (string): está compuesta por un conjunto de caracteres que pueden ser
letras, números, espacios en blanco y símbolos especiales; las cadenas de
caracteres suelen encerrarse entre comillas dobles, aunque algunos lenguajes de
programación suelen encerrar las cadenas entre comillas simples: ejemplo: “20
de
julio de 1810”, “Juan es > que Maria”,
Desarrollo del Pensamiento Analítico y
Sistémico

Datos lógicos (boolean): son aquellos datos que sólo pueden tomar dos valores
(verdadero o falso), (si o no). Por ejemplo: usted trabaja (solo admite si o no), usted fuma
(si o no).

Datos fecha (date): son datos que permiten almacenar fechas. Las fechas se pueden
representar en diferentes formatos, por ejemplo: mes / dia / año; MM/DD/AA; dia-mes-
año; MM / DD / AA HH:MM.Sg.Cs

b. Datos de tipo compuesto o estructurados

Los tatos de tipo compuesto, son datos estructurados definidos por el usuario, y como su
nombre lo dice, están compuestos a su vez por datos de tipo simple. Algunos lenguajes
de programación como Java y C++ permiten definir estructuras de datos a partir de los
datos simples.

Arreglos (arrays): vectores y matrices


Listas enlazadas (list)
Pilas (stack)
Colas (queue)
Datos de
tipo Árboles
compuesto Grafos
Archivos (file)
Registros (record)
Punteros

23
Luis Norberto Zapata Puerta

24
Desarrollo del Pensamiento Analítico y
Pilas (stack): Es una estructura de datos queSistémico
funciona con filosofía LIFO (Last Input, First
Output), la cual consiste en que el último elemento en entrar a la pila, será el primer en
salir de ella.

25
Colas (queue): Es una estructura de datos que funciona con filosofía FIFO (First Input,
First Output), la cual consiste en que el primer elemento en entrar a la cola, será el
primero en salir de ella.

Árboles: Intuitivamente el concepto de árbol implica una estructura en la que los datos se
organizan de modo que los elementos de información están relacionados entre sí a través
de ramas. El árbol genealógico es el ejemplo típico más representativo del concepto de
árbol general (Joyanes, programación en c++, 2000)

Grafos: Los grafos están compuestos por un conjunto de nodos (vértices), y un conjunto
de arcos, los cuales establecen relaciones entre los nodos.

Archivos: Es una colección de registros relacionados entre sí con aspectos en común y


organizados para un propósito específico. Por ejemplo, un fichero (archivo) de una clase
escolar contiene un conjunto de registros de los estudiantes de esa clase. (Joyanes,
fundamentos de programación, 1996)

Registros: Un registro es una colección de información, normalmente relativa a una


cantidad particular. Un registro es una colección de campos lógicamente relacionados,
que pueden ser tratados como una unidad por algún programa. Ejemplo: un registro de
estudiante, el cual puede contener los siguientes campos como documento de identidad,
nombres, apellidos, dirección, teléfono, edad y grado que cursa, entre otros. (Joyanes,
fundamentos, 1996).

Punteros (apuntadores): Un puntero es una variable cuyo valor es la dirección o


posición de otra variable. En las listas enlazadas no es necesario que los elementos de la
lista sean almacenados en posiciones físicas adyacentes, ya que el puntero indica dónde
se encuentra el siguiente elemento de la lista (Joyanes, fundamentos, 1996).
Desarrollo del Pensamiento Analítico y
Sistémico

Variable: Es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo
del algoritmo o ejecución del programa (Joyanes, 1996). Ejemplo: la temperatura (32°C),
la velocidad (80 km/h), la TRM, entre otras.

Constante: Es una partida de datos (objetos) que permanecen sin cambios durante todo
el desarrollo del algoritmo o durante la ejecución del programa (Joyanes, 1996). Ejemplo:
Pi=3,1416.

Expresión aritmética: Las expresiones son combinaciones de constantes, variables,


símbolos de operación, paréntesis y nombres de funciones especiales. Las expresiones
aritméticas son análogas a las fórmulas matemáticas (Joyanes, 1996). Ejemplo: costo =
precio * 1.16 + increm .

Operadores aritméticos

De la tabla anterior hay que prestar especial atención a los siguientes operadores:

25
Luis Norberto Zapata Puerta

Operador ( / ) siempre produce un resultado real independiente del tipo de los operandos:
Ejemplo:
15 / 2 = 7.5
15.0 / 2 = 7.5
15 / 2.0 = 7.5
15.0/2.0 = 7.5

En las operaciones con (div y mod) los operandos deben ser enteros y el resultado
siempre dará un entero. Ejemplo:

15 div 2 = 7
15 mod 2 = 1

Ejercicios:

15.9 / 3 = 5.3 6 div 8 =0


6/2 = 3.0 6 mod 8 =6
6/8 = 0.75 15 div 3 =5
12 / 3 = 4.0 15 mod 3 =0
1/4 = 0.25 7 div 2 =3
2/2 = 1.0 7 mod 2 =1

Prioridad de las operaciones aritméticas

Las expresiones aritméticas compuestas por varios operadores aritméticos son evaluadas
según el orden de prioridad que ejecute primero el computador. A continuación se
presenta el orden de prioridad de estos operadores:

Prioridad de los operadores aritméticos

Símbolo Java / C++ Orden de Prioridad


evaluación
^ ^ de Izq a der Mayor
*, /, div, mod *, /, % de Izq a der
+, - +, - de izq a der Menor
Desarrollo del Pensamiento Analítico y
Sistémico

Reglas de prioridad:

1. Si una expresión contiene paréntesis, éstos se evaluarán primero. Si existen


paréntesis anidados, es decir, unos dentro de otros, las expresiones más internas
encerradas entre paréntesis se evaluarán primero.
2. El operador de mayor prioridad es la exponenciación, y el de menor prioridad es la
suma y la resta.
3. Los operadores que tienen igual nivel de prioridad tal como (*, /, div, mod), y (+, -), se
evalúan de izquierda a derecha cuando se presentan en una expresión aritmética.

Ejemplos:

a.)

5 /2 *5 / 3^2
5 /2 *5 / 9
2.5 * 5 / 9
12.5 / 9
1.38

b.)

3 + 2 ^ 3 * (10 - (2 + 4) mod 8 )
3 + 2 ^ 3 * (10 - 6 mod 8 )
3 + 2 ^ 3 * (10 - 6)
3+2^3*4
3+8*4
3 + 32
35

c.)

2 ^ 3 / 2 * 6 – ( 6 div 4 mod 8 ) div 6 / 2


2 ^ 3 / 2 * 6 – ( 1 mod 8 ) div 6 / 2
2 ^ 3 / 2 * 6 – 1 div 6 / 2
8 / 2 * 6 – 1 div 6 / 2
4.0 / 2 * 6 – 1 div 6 / 2
2.0 * 6 – 1 div 6 / 2
12.0 – 1 div 6 / 2
11.0 div 6 / 2
No es posible (los operandos deben ser enteros con el operador div)

27
Luis Norberto Zapata Puerta

Expresiones lógicas

Las expresiones lógicas son aquellas que pueden tomar dos valores falso o verdadero,
son utilizadas en las estructuras de control de los programas. Estas expresiones reciben
el nombre de expresiones Booleanas en honor al matemático George Boole (Joyanes,
1990).

Operadores relacionales

Son utilizados para expresar condiciones o relaciones de comparación entre operandos,


el fruto de dicha comparación es un resultado booleano (falso o verdadero). Los
operadores relacionales actúan sobre datos del mismo tipo, es decir, al hacer la
comparación los operandos deben coincidir en sus tipos (numéricos con numéricos,
alfanuméricos con alfanuméricos y lógicos con lógicos); un error común suele ocurrir al
tratar de comparar un dato numérico con uno alfanumérico.

Operadores relacionales

Operador Ejemplo Significado Java / C++ Ejemplo


= Si (a = b) Igual a == If ( a == b)
<> Si (a <> b) Diferente de != If (a != b)
<= Si (a <= b) Menor o igual que <= If (a <= b)
>= Si (a >= b) Mayor o igual que >= If (a >= b)
< Si (a < b) Menor que < If (a < b)
> Si (a > b) Mayor que > If (a > b)

Tenga en cuenta que:

Se emplea el operador == para efectuar comparaciones:

Ejemplo: pseudocódigo Java / C++

Si ( a= b) entonces if (a==b)

Ejemplos:

Si a = 3, b = 5 y c = 7

(a + b) < c : Falso
(a – b) < c : Verdadero
(a – b) = c : Falso
(a * b) < > c : Verdadero
Desarrollo del Pensamiento Analítico y
Sistémico

Operadores Lógicos

Los operadores lógicos son utilizados para construir condiciones compuestas, es decir
para unir condiciones. Estos operadores se utilizan para establecer relaciones entre
valores lógicos.

Operador Significado Java / C++


and Y (conjunción) &&
or O (disyunción) ||
not Negación !

Ejemplos:

(3 < 5) or (5 > 7)
V or F

.V.
Resumen de prioridad de los operadores:

Símbolo Prioridad Java / C++


() Mayor ()
^ ^
*, /, div, mod *, /, %
+, - +, -
=,<>,<,>,<=,>= <,>,<=,>=
not ==, !=
and &&
or Menor ||

Tabla de verdad

P Q (P and Q) (P or Q) not (P) not (P and Q)


V V V V F F
F V F V V V
V F F V F V
F F F F V V

29
Luis Norberto Zapata Puerta

Ejemplos:

a. ((3 > 5) or (3 < 7)) and not((3 = 7) or ( 3 >= 5))


( F or V ) and not( F or F )
V and not( F )
V

a. (not (3 > 5) and (3 < 7)) or ((3 = 7) or not( 3 <> 5))


( not( F ) and V ) or ( F or not( V ))
( V and V ) or ( F or F )
( V and V ) or ( F or F )
( V or F)
V
Desarrollo del Pensamiento Analítico y
Sistémico

Identificadores

Los identificadores son los datos de un programa, como variables, constantes o tipos de
datos.

Reglas para definir los identificadores:

a. Los nombres de identificadores deben ser nombres nemotécnicos, es decir, nombres


que sean significativos que ayuden al programador a recordar el tipo de dato
almacenado en los campos de memoria.

b. Deben comenzar con una letra, los demás dígitos pueden ser letras o números.

c. No deben contener espacios en blanco; en caso de nombrar identificadores con


nombres compuestos, se recomienda el guión bajo, ejemplo: nombre_empleado,
precio_bruto

d. No puede contener caracteres especiales, por ejemplo: $, >, @, ! ,%. Las tildes y la ñ
se consideran caracteres especiales.

e. La longitud de identificadores depende del lenguaje de programación, por lo general


suele emplearse una longitud de 12 o 15 caracteres como máximo.

f. Los identificadores no deben ser nombradas con palabras reservadas, por ejemplo:
EXIT, WHILE, RETURN, VALUE, FOR, LOOP, RUN, SAVE, entre otras.

Ejemplo de identificadores:

Nombres significativos Nombres NO significativos

PrecioNeto PN (PrecioNeto)
HorasTrabajadas HR (Horas trabajadas)
Iva i (iva)
NombreEstudiante NEst (NombreEstudiante)

31
Luis Norberto Zapata Puerta

Creación de variables o campos de memoria

Un campo de memoria es un espacio físico reservado en memoria para el


almacenamiento de un dato o información. A continuación se ilustra la forma como se
definen o se crean los campos de memoria:

1. Entero a,b,c // Se definen (crean) tres variables o campos de memoria


Desarrollo del Pensamiento Analítico y
Memoria R.A.M Sistémico

c Los campos de memoria creados


@ !# inicialmente contienen basura
FA01

a b
Cuando se define un campo de
Luis Norberto Zapata Puerta

@ !# @!# memoria, la máquina (pc) le


FH11 AC03 asigna una dirección a cada uno
de ellos
Desarrollo del Pensamiento Analítico y
Sistémico

2. Entero a=2,b=5,c=3 // Se definen tres variables o campos de memoria, y


se inicializan con valores

Memoria R.A.M
c Los campos de memoria creados
son inicializados con valores
3
FA01

a b
Luis Norberto Zapata Puerta

2 5
FH11 AC03
Desarrollo del Pensamiento Analítico y
Sistémico

3. Entero a=2,b=5,c=3
a = b^2 – 4*c // Se evalúa la expresión aritmética
a 25 – 12 // y el resultado se le asigna a a
a 13
a = b^2 – 4*c
Memoria R.A.M
c
3
FA01

a b

33
Luis Norberto Zapata Puerta

13 5
FH11 AC03

34
Desarrollo del Pensamiento Analítico y
Sistémico

Sintaxis: Para definir campos de memoria

Tipo NomVariable

Nombre del identificador o variable

Tipo de dato (entero, real, booleano, lógico)

35
Estructura secuencial

La estructura secuencial puede relacionarse con una serie de pasos o secuencias de


acciones para realizar una actividad en particular, es decir, cada secuencia (paso)
conduce a lograr el objetivo que se desea alcanzar. El ejemplo más típico de una
estructura secuencial es la elaboración de una receta de cocina. A continuación se
presentan usa serie de ejemplos ilustrando la estructura secuencial:

Ejemplo 1

a. Problema
Desarrollar un algoritmo (secuencia de pasos lógicos) que conduzcan a la elaboración de
una torta de chocolate.
b. Análisis
Datos de entrada
- Ingredientes: chocolate=7barras, mantequilla=150grs, huevos=6,
harina=250grs, Levadura, azúcar=225grs, sal, vainilla=cucharada
Datos de proceso
- Se hacen múltiples procesos o cálculos:
- Calcular el tiempo de cocción
- Calcular que la preparación tome punto
- Calcular que las claras queden bien batidas

Datos de salida
- Torta lista para consumir

c. Diseño de algoritmo Bloque declarativo


Inicio
Ingredientes: chocolate=7barras, mantequilla=150grs,
huevos=6, harina=250grs, Levadura, azúcar=225grs, sal,
vainilla=cucharada
Batir mantequilla con el azúcar (hasta que esté cremosa)
Tomar huevos, separar las claras de las yemas
Agregar las yemas de a una batiendo bien
Rallar las barras de chocolate (rallado grueso)
Adicionar el chocolate
Agregar la harina
Batir las claras de huevo
Agregar las claras y la vainilla
Engrasar un molde con la mantequilla
Poner la preparación en el molde
Introducir el molde con la preparación al horno
Graduar el horno a 220°C
Esperar 50 minutos
Retirar el model
Fin
Desarrollo del Pensamiento Analítico y
Sistémico

Ejemplo 2

a. Problema

Desarrollar un programa que calcule el área de un triángulo rectángulo, cuya base y la


altura deben ser suministrados por el usuario.

b. Análisis
Datos de entrada
- base y altura

35
Luis Norberto Zapata Puerta

Datos de proceso
- área = ( base * altura) / 2

Datos de salida
- área

c. Diseño de algoritmo

Inicio
0. Bloque declarativo Real: base, altura, área
Imprima: “Ingrese la base : “
1. Entrada Lea base
Imprima: “Ingrese la altura : “
Lea altura
2. Entrada area = (base * altura) / 2
3. Salida Imprima: “El área del triángulo rectángulo es=”, area
Fin

36
Desarrollo del Pensamiento Analítico y
Sistémico

Pseudocódigo
1: Inicio
2: Real: base, altura, área
3: Imprima: “Ingrese la base : “
4: Lea base
5: Imprima: “Ingrese la altura : “
6: Lea altura
7: area=(base * altura) /2
8: Imprima: “El área del triángulo rectángulo es=”, area
9: Fin

37
d. Prueba de escritorio

Prueba uno (P1):

base altura área Imprime


3 5 (3 * 5)/2 = 7.5 “El area del triángulo rectángulo es=” 7.5

Prueba dos (P2):

base altura área Imprime


2.7 3.5 (2.7 * 3.5)/2 = 4.73 “El area del triángulo rectángulo es=” 4.73

e. Codificación

Plantilla Inicial (java)

import java.io.*;
class NombrePrograma
{
public static void main(String args[ ]) // Aquí inicia el programa principal

{
try
{

InputStream in = System.in; InputStreamReader


manejador = new InputStreamReader(in); BufferedReader entrada
= new BufferedReader (manejador);

// Aquí se declaran las variables locales

// Aquí se escribe el cuerpo del programa principal

}
catch(Exception e)
{
System.out.println("Error en el Programa Principal");
}

} // fin del programa principal

// Aquí se escriben los subprogramas


}
Desarrollo del Pensamiento Analítico y
Sistémico

Plantilla Inicial (C++)

#include <librerias.h> Archivos de cabecera

using namespace std;

37
Luis Norberto Zapata Puerta

main() // Aquí inicia el programa principal


{

// Aquí se declaran las variables locales


……
……

// Aquí se escribe el cuerpo del programa principal

// Aquí se escriben los subprogramas

38
Laboratorio 1.1

Codificación en Java

Desarrollar un programa que calcule el área de un triángulo rectángulo, cuya base y la


altura deben ser suministrados por el usuario.

import java.io.*;

class AreaTriangulo
{
public static void main(String args[])
1: {
try
{
InputStream in = System.in; InputStreamReader
manejador = new InputStreamReader(in); BufferedReader entrada
= new BufferedReader (manejador);
2: float base,altura,area;
3: System.out.print(“Ingrese la base:");
4: base=Integer.parseFloat(entrada.readLine());
5: System.out.print(“Ingrese la altura:”);
6: altura=Integer.parseInt(entrada.readLine());
7: area=(base*altura)/2;
8: System.out.print(“El area del triangulo rectangulo es=" +area);
}
catch(Exception e)
{
System.out.println("Error en el Programa Principal");
}
}
9: }
Desarrollo del Pensamiento Analítico y
Sistémico

Laboratorio 1.2

Codificación en C++

Desarrollar un programa que calcule el área de un triángulo rectángulo, cuya base y la


altura deben ser suministrados por el usuario.

#include <iostream>

1: using namespace std;

main(){
system(“cls”);
2: float base,altura;
3: cout<<"Ingrese la base :";
4: cin>>base;
5: cout<<" Ingrese la altura :";
6: cin>>altura;
7: a=(base*altura)/2;
8: cout<<" El área del triángulo rectángulo es=" <<area;

system(“pause”);
9: }

39
Actividades de enseñanza y aprendizaje
Actividad 1:

Actividad 1:

Descripción actividad: Desarrollar un programa que calcule la nota definitiva de un


estudiante en una asignatura, se sabe que durante el semestre académico se manejan
tres notas con sus respectivos porcentajes, así: seguimiento (50%), parcial 1 (25%), y
parcial 2 (25%).

Competencias a desarrollar:

a. Aplicar prueba de escritorio


b. Abstraer los datos del problema
c. Implementar la estructura secuencial

Lugar : Casa o ambiente de aprendizaje.

Duración : 10 minutos

Número de participantes : Máximo 2.

Materiales requeridos : Papel, lápiz, libro guía del curso y documentos de apoyo.

Cierre de la actividad: en la próxima clase el docente podrá elegir según lo considere


varios estudiantes que socialicen la solución del problema planteado, esta actividad podrá
ser valorada en la evaluación del capítulo.

Actividad 2:

Descripción actividad: Desarrollar un programa que calcule el área de un círculo, se


2
sabe que: AreaCirculo= Pi * r

Competencias a desarrollar:

a. Aplicar prueba de escritorio


b. Abstraer los datos del problema
c. Implementar la estructura secuencial

Lugar : Casa o ambiente de aprendizaje.

Duración : 10 minutos

Número de participantes : Máximo 2.

Materiales requeridos : Papel, lápiz, libro guía del curso y documentos de apoyo.
Desarrollo del Pensamiento Analítico y
Sistémico

Cierre de la actividad: En la próxima clase el docente podrá elegir, según lo considere,


varios estudiantes que socialicen la solución del problema planteado, esta actividad podrá
ser valorada en la evaluación del capítulo.

Actividad 3:

Descripción actividad: Desarrollar un programa que calcule el área y volumen de un


cilindro.

Competencias a desarrollar:

a. Aplicar prueba de escritorio


b. Abstraer los datos del problema
c. Implementar la estructura secuencial
d. Consultar información

Lugar : Casa o ambiente de aprendizaje.

Duración : 15 minutos

Número de participantes : Máximo 2.

Materiales requeridos : Papel, lápiz, libro guía del curso y documentos de apoyo.

Cierre de la actividad: En la próxima clase el docente podrá elegir, según lo considere,


varios estudiantes que socialicen la solución del problema planteado; esta actividad podrá
ser valorada en la evaluación del capítulo.

41
Luis Norberto Zapata Puerta

Taller

1. Evaluar las siguientes expresiones según su orden de prioridad:

a. (6 * 5) / (10 * 2 + 10) / 8 * 2^ 3
b. 3 * ( 8 * (6 / 3)) + 2^4/(2 * 2)^3
c. (6+4 div 2 * ( 9 * 2 / 3)) + 2^4
d. (((5 + 1) / 2 * 4 + 10) * 3 * 5) – 6
e. 2 + 3^(-3) * sqrt(49) /(2*3) * (-5)
f. 14 + 1 / 2 – 5 * 4 + 3 > 2 / 5 * 8
g. 8 / 5 * 2 – 1 mod 5 * 5 + 2 / 4
h. 4 / 2 * 3 / 6 + 6 / 2 / 1 / 5 * (sqrt(81) / 3 * 2)
i. 3 * X^4 – 5 * X^3 + X * 12 - 17
j. ( 7 * (10 – 5) mod 3) * 4 + 9
k. ( 7 * (10 – 5 ) div 3) * 4 + 9
l. (( 12 + 3) div 2) / (8 – (5 + 1))
m. (a * ( b + c)) – 2 * a + (4 * d – f)
n. 7 * 8 (160 mod 3 ** 3) div 5 * 13 – 28 * (-3)^3 * (-2)^4

2. Evaluar las siguientes expresiones lógicas e indique su resultado:

a. 3 > 5 OR 8 <= 9
b. NOT (4 * 2 > 8 AND 7 < 2 * 3)
c. (2 >= 3 OR 5 > 1 + 3) AND !(6 >=5)
d. Si x = 6 y B = 7.8; (x * 5 + B^3 / 4) <= x ^3 / B)
e. ((1580 mod 6 * 2 ^ 7) > (7 + 8 * 3 ^4)) > ((15 * 2) = (60 * 2 / 4))
f. NOT(15 >= 7 ^ 2) OR ( 43 – 8 * 2 div 4 <> 3 * 2 div 2)
g. (15 >= 7 * 3^2 AND 8 > 3 AND 15 > 6) OR NOT(7 * 3 < 5 + 12 * 2 DIV 3^2)
h. NOT ((7 * 3 DIV 2 * 4) > (15/2 * 6 >=15 * 2 / 17 = 15))

3. Calcular el resultado de las siguientes operaciones:

a) 12 div 7 = g) 2 mod 7 =
b) 22 div 6 = h) 20 mod 5 =
c) 47 div 50 = i) 3 mod 5 =
d) 23 div -3 = j) 10 mod 7 =
e) 13 div -4 = k) 13 mod 4 =
f) 11 div 3 = l) 15 mod 3 =
Desarrollo del Pensamiento Analítico y
Sistémico

4. Convertir las siguientes expresiones algebraicas a expresiones algorítmicas:

n 5 15
2
m 2 2
a.) b b 4ac b.) p2 c.) 3 d.) ab 3 4ab

43
Luis Norberto Zapata Puerta
r
2a
q

44
Desarrollo del Pensamiento Analítico y
Sistémico s

45
Luis Norberto Zapata Puerta

2 3 2a 2
ab

5. Escribir las siguientes expresiones algorítmicas como expresiones algebraicas:

a. b^2–a*a*c
b. 3 * x ^ 4 – 5 * x ^ 3 + x * 12 – 17
c. (b + d) / (c + 4)
d. (x ^ 2 + y ^ 2) ^ (1 / 2)

6. Diseñe un algoritmo para cada uno de los problemas planteados, con su respectiva
prueba de escritorio:

a. Construir un programa que calcule la prima de servicios de un empleado; la prima se


paga en dos cuotas (primera: 30 / junio y la segunda: 20 / diciembre aprox); la fórmula
para calcular la prima es = (salario básico * días trabajados) / 360. Suponga que el
empleado ingresó a trabajar 15 de septiembre de 2009.

b. Desarrollar un programa que calcule las cesantías de un empleado; las cesantías se


pagan por año, y se calcula con base a la siguiente fórmula = (Salario básico * días
trabajados durante el año) / 360. Suponga que el empleado ingresó a trabajar el 1 de
marzo de 2009.

c. Elabore un programa que calcule el área de un trapecio de base a y c, y de altura h,


es igual: A = (a + c) * h (semisuma de las bases por la altura)
2
d. Desarrollar un programa que calcule el área de un cuadrado, donde:
2
AreaCuadr= L (lado al cuadrado)

e. Construya un programa que calcule el área de un rectángulo, donde: AreaRectang=


base * altura

f. Un vendedor de autos recibe el 10% del valor de la venta de un auto, elabore un


programa que imprima el valor a pagar de la venta de un auto.

46
Autoevaluación
TEST: Cada respuesta correcta vale 0.25.
1. Qué es sintaxis? 6. Evalúe la siguiente expresión:

A. Traduce a lenguaje de Máquina 3 * ( 8 * (6 / 3)) + 2^4/(2 * 2)^2


B. Permite compilar un proceso
C. Es traducir el Programa a un Lenguaje A. 50
Natural B. 49
D. Es la forma correcta de compilar un C. 16
programa D. 48
E. Ninguna de las anteriores E. 47

2. Instrucción de Asignación correcta: 7. Evalúe la siguiente expresión:

A. AB+C (2 >= 3 or 5 >1+3) or not(6 >=5) = 2


B. A >= 2 + A
A. F
C. 3B B. V
D. B >= IVA + Prec * 0.16 C. Indeterminado
E. Prec  Prec * 1.16 + INCR D. No se puede realizar
E. Ninguna de las anteriores
3. Son datos compuestos:
8. Convierta a expresión algorítmica:
A. int, float, arreglo, lista, string
B. string, float, pila, int, char b 5 4ac
C. char, string, date, boolean 2a
D. int, flota, string, archivo, char
E. char, string, float, Int, Boolean A. (–b + sqrt(5) – 4*a*c) / 2 *a
B. (–b + sqrt(5 – 4*a*c) )/ (2 *a)
4. Cuál es la secuencia correcta? C. –b * sqrt(5 – 4*a*c) / (2 *a)
D. (–b * sqrt(5 – 4*a*c) / (2 *a))
1. Análisis E. (–b * sqrt(5)– 4*a*c)) / (2 *a)
2. Compilación
3. Prueba de escritorio
9. Cuál es el resultado de evaluar:
4. Definición del problema
5. Pruebas de computador
6. Codificación 6/2 div 4/2
7. Diseño del algoritmo
8. Ejecución A. 1
B. 1.5
9. Selección mejor alternativa C. 0
D. No se puede realizar
A. 4,2,5,1,3,6,8,9,7 E. Ninguna de las anteriores
B. 4,1,7,9,5,2,6,3,8
C. 4,1,7,5,3,2,6,9,8 10. Qué son las pruebas de computador?
D. 4,1,9,7,3,6,2,5,8
E. 4,1,9,7,3,2,6,5,8 A. Determinar la sintaxis de las instrucciones
B. Comprueba el funcionamiento del algoritmo
5. Qué es compilación? C. Suministra datos de entrada al algoritmo
D. Se valida el programa directamente en el PC
A. Ejecuta el programa desde el inicio al E. Ninguna de las anteriores
final
B. Pasa el programa natural a programa
técnico
C. Pasa el programa técnico a programa
natural
D. Pasa el programa natural programa de
máquina
E. Pasa el programa técnico a programa de
máquina
Desarrollo del Pensamiento Analítico y
Sistémico

Criterios de evaluación

CUMPLIÓ
CRITERIOS OBSERVACIONES
SI NO

Criterios Generales:

1. ¿Es organizado, metódico y sistémico para


organizar la información?

2. ¿Trabaja en equipo aportando ideas?

3.¿Participa activamente en clase?

4.¿Demuestra capacidad de aprendizaje


autónomo?

5.¿Realiza las actividades propuestas por el


profesor a conciencia y con interés?

6.¿Asiste a las asesorías impartidas por el


profesor?

Criterios Específicos:

1. ¿Identifica y abstrae los datos del enunciado


del problema?

2. ¿Determina las operaciones o cálculos a


realizar del caso de estudio o problema a
resolver?

3. ¿Implementa adecuadamente los pasos que


se requieren para resolver un problema
mediante programas de computador?

4. ¿Detecta y corrige errores de algoritmos por


medio de pruebas de escritorio?

5. ¿Codifica algoritmos y corrige errores de


sintaxis en el lenguaje seleccionado?

6. ¿Demuestra capacidad de análisis y síntesis


en la solución de problemas?

7. ¿Comprueba el funcionamiento del algoritmo


mediante pruebas de escritorio?

8. ¿Ejecuta en detalle cada operación o


cálculo?

45
Luis Norberto Zapata Puerta

9. ¿Busca e identifica la mejor solución?

10. ¿Es capaz de depurar el algoritmo hasta


quedar funcional?
Desarrollo del Pensamiento Analítico y
Sistémico

Evidencia de Desempeño

La evaluación a realizar estará compuesta de:

1. Evaluación teórica tipo ECAES


El objetivo de este tipo de evaluación, es analizar el nivel de comprensión que ha
alcanzado el estudiante dentro de una temática en particular.

2. Solución de problemas por medio de algoritmos y elaboración de prácticas de


laboratorio.
El objetivo principal es determinar la adquisición de competencias en la solución de
problemas simples en la que se efectúa el análisis de un caso determinado, se diseña
el algoritmo y se implemente mediante la codificación en el lenguaje seleccionado,
utilizando las técnicas y metodologías vistas en el curso.

3. El estudiante deberá resolver los ejercicios propuestos por docente en cada una de las
clases. La prueba de validación de competencias sobre el taller permitirá saber el nivel
de desempeño alcanzado.

47
Luis Norberto Zapata Puerta

Bibliografía

Alcalde, E., García, M. Informática Básica. 2da Edición. ISBN: 84-481-1851-0. págs: 393,
Ed. McGraw Hill. 1994

Cairó, O. Metodología de la Programación. Algoritmos, diagramas de flujo y programas.


3ra Edición. ISBN: 970-15-1100-X, págs: 464, Ed. Alfaomega, 2005

Cerezo, Y. Iniciación a la Programación en C#. 6ta edición. ISBN: 9788496477537, págs:


304, Ed. Delta Publicaciones Universitarias, 2006

Correa, G. Desarrollo de Algoritmos y sus Aplicaciones en Basic, Pascal, Cobol y C: con


su respectivo pseudocódigo. 3ra Edición. ISBN: 9586001091, págs: 251, Ed. McGraw-Hill,
1992

Beekman, G. Introducción a la Información. 6ta edición. Ed. Prentice-Hall.l, 2004

Becerra, C. Algoritmos: Conceptos básicos. 4ta Edición. págs: 401. Ed. Kimpres Ltda.,
1998

Garrido, A. Fundamentos de programación en C++. 1ra edición. ISBN: 8496477118. págs:


230, Ed. Delta Publicaciones Universitarias. 2006

González, L., Monsalve, J., López, E., Osorno, L. Algoritmos 1. Articulación Media Técnica
en Sistemas e Informática grado 10, ISBN: 1900-2351, vol. 1, págs:1 - 100, Ed. Editorial
Politécnico Colombiano Jaime Isaza Cadavid. 2007

Guevara, C. Sentencias Básicas Usadas en la Programación de Computadores. 1ra


Edición. ISBN: 978-958-8351-7-5. págs: 105. Ed. Fondo Editorial ITM. 2008

Joyanes, L. Fundamentos de Programación. Algoritmos y Estructuras de Datos. ISBN: 84-


481-3664-0, págs: 1004, Ed. McGraw Hill, 2da edición, 1996

Joyanes, L. Problemas de Metodología de la Programación. 1ra Edición. ISBN: 84-7615-


462-3, págs: 500, Ed. McGraw Hill, 1990

Joyanes, L. Programación en C++. Algoritmos, Estructuras de Datos y Objetos. 1ra


Edición. ISBN: 84-481-2487-1, págs: 710, Ed. McGraw Hill, 2000

Joyanes, L. Programación en Turbo Pascal: Versiones 5.5, 6.0 Y 7.0. 2ª Edición. ISBN:
84-481-0127-8, págs: 914, Ed. McGraw Hill, 1993

Levine, G. Introducción a la Computadora y a la Programación estructurada. 2da edición.


págs:424 . Ed. McGrawHill. 1989

Lozano, L. Diagramación y Programación Estructurada y Libre. 3ra edición. ISBN:968-


422-042-1, págs: 380, Ed. McGrawHill, 1986
Desarrollo del Pensamiento Analítico y
Sistémico

Martín, G.; Martínez, F. Introducción a la programación estructurada en C. 1ra Edición.


ISBN: 8437056667. págs: 256. Ed. Universidad de Valencia, Servicio de Publicaciones.
McGrawHill. 2003

Oviedo, E. Lógica de Programación. 1ra Edición. ISBN: 958-648-308-8, págs: 317, ed.
Ecoe Ediciones, 2002

Prieto, A., LLoris, A., Torres, J. Introducción a la informática. 3ra edición. ISBN: 84-481-
1627-5. págs: 832. Ed. McGrawHill. 2006

Ríos, F. Soluciones secuenciales. 1ra Edición. ISBN: 958-655-081-8, págs: 200, ed.
Universidad de Antioquia,1995

Tremblay, J. Introducción a la Ciencia de las Computadoras. 1ra Edición. ISBN:


38827441Z, págs: 486, Ed. McGraw-Hill, 1982

Vásquez, G. Lógica para Programación de Computadores. 2da Edición. págs: 163, Ed.
Gráficas Ltda. 1985

Universidad Nacional de Colombia. Programación de computadores. Curso virtual.


Consultado el 20 de enero de 2010 en:
http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html

49

También podría gustarte