Вы находитесь на странице: 1из 205

Hermosillo, Sonora, enero de 2018

Flor Aldama Nieblas


Genaro Rodríguez Rojo
Grisell Rocío Morales Leyva
Amalia Infante López
Adrián Francisco Salazar Robles
Juan Pablo Soto Zazueta
Ramón Alberto Leyva Rodríguez
Bertha Evelia Torres Torres
Raymundo Fon Galaviz
Samuel Eliu Hurtado Anaya
Luis Samuel Dávila Reprieto

Miguel Ángel Velasco González


Directorio

Lic. Amós Benjamín Moreno Ruiz


Director General

Mtro. Jorge Alfonso Rascón Enríquez


Director Académico

Lic. Marco Octavio Hilton Reyes


Director Administrativo

C.P. Genaro Gómez Carranza


Director de Finanzas

Lic. Arnoldo Rafael Molina Borboa


Director de Planeación

Lic. Lauro Grijalva Abreu


Director de Vinculación

C.P. José Jesús Cañez Valdez


Director del Órgano de Control
Formación Profesional Programación

20 10

4
CONTENIDO

UNIDAD I Conceptos generales de la programación para la


10
solución de problemas cotidianos.
FASES DE LA
METODOLOGÍA DE LA Metodología de la lógica computacional para la
47
LÓGICA solución de problemas cotidianos.
COMPUTACIONAL
PARA LA SOLUCIÓN DE
PROBLEMAS Diagramas de flujo lineales y modulares en la
COTIDIANOS 66
solución de problemas.
Pág. 7

Estructuras del pseudocódigo para la solución de


84
problemas
UNIDAD II
Estructuras de control en la elaboración de
DESARROLLO 88
pseudocódigos para la solución de problemas.
PSEUDOCÓDIGO Y
PROGRAMACIÓN Elementos de la programación estructurada en el
LINEAL proceso de codificación para la solución de 113
problemas reales.
Pág. 81
Entorno del lenguaje estructurado C++ 136

UNIDAD III Sentencias de entrada y salida durante la 150


codificación de programas estructurados.
DESARROLLO DE
PROGRAMAS
MEDIANTE
ESTRUCTURAS DE
CONTROL. Codificación de programas mediante estructuras
173
de control
147

5
INTRODUCCIÓN
El presente Submódulo I Desarrolla software utilizando programación estructurada, tiene como
propósito desarrollar en el alumno la lógica computacional, con el fin de que éste pueda dar
solución a problemas por medio de lenguajes de programación estructurada,

Este libro es de gran utilidad en tu proceso de aprendizaje, contiene actividades que deberás
realizar de manera individual mientras que en algunas otras, colaborarás con otros compañeros
formando equipos de trabajo bajo la guía de tu profesor. No abarca todos los temas pero si los
principales, por lo que se requiere, consultar otras fuentes de información para una mayor
profundidad de cada uno de ellos.

El libro está estructurado en tres unidades, en la primera unidad se describen las fases de la
metodología de la lógica computacional para la solución de problemas cotidianos.

En la unidad dos se abordan tanto el desarrollo de pseudocódigos como la programación lineal.


Posteriormente en la última unidad se desarrollan los programas utilizando las diferentes
estructuras de control.

En el contenido de estas unidades, se relaciona la teoría con la práctica, a través de lecturas,


ejercicios, actividades de aprendizaje, instrumentos de evaluación y prácticas de laboratorio de
cómputo, encaminados a apoyarte en el desarrollo de las competencias requeridas para los
alumnos que cursan esta asignatura.

Seguros de que harás de este material, una herramienta de aprendizaje, te invitamos a realizar
siempre tu mayor esfuerzo y dedicación para que logres adquirir las bases necesarias, para tu
éxito académico.

6
Unidad I
METODOLOGÍA DE LA
LOGICA COMPUTACIONAL
COMPETENCIAS DISCPLINARES
C1 Identifica, ordena e interpreta las ideas, datos y conceptos explícitos e implícitos en un texto, considerando el
contexto en el que se generó y en el que se recibe.
M1 Construye e interpreta modelos matemáticos deterministas o aleatorios mediante la aplicación de procedimientos
aritméticos, algebraicos, geométricos y variacionales, para la comprensión y análisis de situaciones reales o
formales.
M8 Interpreta tablas, gráficas, mapas, diagramas y textos con símbolos matemáticos y científicos.
CE9 Diseña modelos o prototipos para resolver problemas, satisfacer necesidades o demostrar principios científicos.
COMPETENCIAS GENÉRICAS
4.1 Expresa ideas y conceptos mediante representaciones lingüísticas, matemáticas o gráficas.
4.2 Aplica distintas estrategias comunicativas según quienes sean sus interlocutores, el contexto en el que se
encuentra y los objetivos que persigue
8.2 Aporta puntos de vista con apertura y considera los de otras personas de manera reflexiva
8.3 Asume una actitud constructiva, congruente con los conocimientos y habilidades con los que cuenta dentro de
distintos equipos de trabajo
7
 Identifica los términos básicos de la programación estructurada (programa, lenguaje de
programación, ventajas de la programación y características de un buen programa) para
la solución de problemas de la vida cotidiana.
 Identifica los lenguajes de programación máquina, bajo nivel y alto nivel para la solución
de problemas de la vida cotidiana.
 Describe la lógica computacional (tipos de datos, zonas de memoria, clasificación de
operadores y su jerarquía) para la solución de problemas.
 Identifica los conceptos de las fases de Metodología de la lógica computacional para la
solución de problemas
 Identifica las estructuras de control selectivas simples en el diseño de algoritmos para la
solución de problemas por computadora.
 Aplica algoritmos para la solución de problemas cotidianos.
 Conoce el concepto, reglas y simbología de los diagramas de flujo para la solución de
problemas cotidianos.
 Identifica las estructuras de control selectivas simples en el diseño de diagramas de flujo.
 Utiliza diagramas de flujo lineales y modulares para la solución de problemas.

8
A continuación se presentan una serie de preguntas de opción múltiple relacionadas con las fases
de la metodología de la lógica computacional para la solución de problemas cotidianos mismas
que profundizarás con más detalle a lo largo de las actividades.
1.- Secuencia de pasos para resolver un problema.
a) Algoritmo b) Programa c) Tecnología d) Diagrama de flujo e) Lenguaje

2.- Representación gráfica de un algoritmo.


a) Programa b) Algoritmo c) Diagrama de flujo d) Lenguaje e) Tecnología

3.- Instrucción que realiza una operación específica.


a) Lenguaje b) Tecnología c) Algoritmo d) Diagrama de flujo e) Programa

4.- Dispositivo electrónico que permite almacenar, recuperar y procesar grandes cantidades de
información en un tiempo muy pequeño comparado con el tiempo del ser humano.
a) Impresora b) Mouse c) Computadora d) Programa e) Sistema

5.- Sistema de símbolos y reglas que permite la construcción de programas con los que la
computadora puede operar así como resolver problemas de manera eficaz.
a) Mouse b) Impresora c) Programa d) Sistema e) Computadora

6.- Son aquellos cuyas instrucciones son directamente entendibles por la computadora. Se
manejan por 0 y 1;
a) Lenguaje máquina b) Impresora c) Programa d) Sistema e) Computadora

7.- En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como
mnemotécnicos para las operaciones y direcciones simbólicas.
a) Lenguaje b) Impresora c) Programa d) Lenguaje de e) Lenguaje de
máquina programación bajo nivel.

8.- Secuencia de instrucciones mediante las cuales se ejecutan diferentes acciones de acuerdo
con los datos que se estén procesando.
a) Lenguaje b) Comando c) Programa d) Lenguaje de e) Lenguaje de
máquina programación bajo nivel.

9.- Son aquellos en los que las instrucciones o sentencias a la computadora son escritas con
palabras similares a los lenguajes humanos (en general en inglés), lo que facilita la escritura y
comprensión del programa.
a) Lenguaje b) Lenguaje de c) Programa d) Lenguaje de e) Lenguaje de
máquina alto nivel programación bajo nivel.

10.- Colección de instrucciones muy detallada que controla la circuitería interna de la máquina.
a) Lenguaje b) Lenguaje de c) Programa d) Lenguaje de e) Lenguaje de
máquina alto nivel programación bajo nivel.

9
Conceptos generales de la programación para la solución de problemas cotidianos.
Términos básicos de la programación estructurada (programa, lenguaje de programación,
ventajas de la programación y características de un buen programa) para la solución de
problemas de la vida cotidiana.

En el grupo con tu maestro, realiza una lluvia de ideas de los siguientes cuestionamientos:

CONCEPTOS GENERALES DE PROGRAMACIÓN


Podemos definir como informática al conjunto de conocimientos científicos y técnicos que hacen
posible la resolución de forma automática de problemas por medio de las computadoras. La
informática es, en definitiva, una rama del saber que abarca todos los aspectos del diseño y uso
de las computadoras y como consecuencia, debería cubrir todos aquellos problemas con los que
nos encontramos a la hora de realizar una tarea con una máquina de forma automática.
Los primeros lenguajes de programación surgieron de la idea de Charles Babbage, la cual se le
ocurrió a este hombre a mediados del siglo XIX. Era un profesor matemático de la universidad de
Cambridge e inventor inglés, que al principio del siglo XIX predijo muchas de las teorías en que se
basan los actuales ordenadores. Consistía en lo que él denominaba la maquina analítica, pero que
por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada
Lovedby, la cual es considerada como la primera programadora de la historia, pues
realizo programas para aquélla supuesta máquina de Babbage, en tarjetas perforadas. Como la
maquina no llego nunca a construirse, los programas de Ada, lógicamente, tampoco llegaron a
ejecutarse, pero si suponen un punto de partida de la programación, sobre todo si observamos
que en cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por
Charles Babbage, y Ada, que consistían entre otras, en la programación mediante tarjetas
10
perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se
dice por tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual describe
la inteligencia de la que se hallaban dotados.
En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un
dispositivo mecánico para efectuar sumas repetidas. Pero Babbage se dedicó al proyecto de la
máquina analítica, abandonando la máquina de diferencias, que se pudiera programar con tarjetas
perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un fabricante
de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos,
leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido.
Entonces Babbage intento crear la máquina que se pudiera programar con tarjetas perforadas
para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no
bastaba para hacer realidad sus ideas. Si bien las ideas de Babbage no llegaron a materializarse
de forma definitiva, su contribución es decisiva, ya que los ordenadores actuales responden a un
esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades
básicas:
Unidad de entrada, para introducir datos e instrucciones.
Memoria, donde se almacenaban datos y resultados intermedios.
Unidad de control, para regular la secuencia de ejecución de las operaciones.
Unidad Aritmético-Lógica, que efectúa las operaciones.
Unidad de salida, encargada de comunicar al exterior los resultados.
Charles Babbage, conocido como el "padre de la informática" no pudo completar en aquella época
la construcción del computador que había soñado, dado que faltaba algo fundamental:
la electrónica. El camino señalado de Babbage, no fue nunca abandonado y siguiéndolo, se
construyeron los primeros computadores.
Cuando surgió el primer ordenador, el famoso ENIAC (Electronic Numerical Integrator And
Calculator), su programación se basaba en componentes físicos, o sea, que se programaba,
cambiando directamente el Hardware de la máquina, exactamente lo que sé hacia era cambiar
cables de sitio para conseguir así la programación de la máquina. La entrada y salida de datos se
realizaba mediante tarjetas perforadas.
LENGUAJE DE PROGRAMACIÓN.
Es un conjunto de reglas, notaciones, símbolos y/o caracteres que permiten a un
programador poder expresar el procesamiento de datos y sus estructuras en la computadora.
Cada lenguaje posee sus propias sintaxis. También se puede decir que un programa es un
conjunto de órdenes o instrucciones que resuelven un problema específico basado en un lenguaje
de programación.
CARACTERISTICAS DE UN LENGUAJE DE PROGRAMACIÓN
 Legibilidad: consiste en si el lenguaje tiene una sintaxis sencilla, fáciles de leer y fáciles de
compilar
 Ortogonalidad: permite combinar en una sola instrucción diversas características del lenguaje,
de esta manera se consiguen programas más cortos y más compactos.
 Naturalidad para la aplicación: consiste en el lenguaje proporcione herramientas adecuadas
para el fin para el que está pensado.
 Soporte a la abstracción: Solucionar tipos de problemas y no problemas concretos. Debe
permitir que el programador pueda crear funciones y procedimientos.

11
 Entorno de programación: Los lenguajes han de ir acompañados de un entorno donde
programar.
 Portabilidad de los programas: Es un lenguaje que permite crear programas que funcionen en
cualquier maquina pertenezca a la plataforma que quiera, distinto fabricante, etc.

Criterios de evaluación de lenguajes de programación


Al momento de evaluar un lenguaje de programación se debe tener en cuenta, además de las
características mencionadas, las siguientes:
Variedad de tipos de datos: Un buen lenguaje de programación debe contar con un variado
número de tipos de datos, que le permitan todo tipo de procesos.
Programación estructurada: Consiste en desarrollar programas en los cuales cada proceso o parte
del programa está claramente definido y no colisiona con los demás procesos. Esto quiere decir
que el programa debe estar desarrollado de una manera organizada que nos permita entenderlo
con facilidad para poder hacer correcciones futuras sin muchas complicaciones. Un buen lenguaje
de programación debe permitir programación estructurada.
Programación Orientada a objeto (OOP): Son los que permiten aumentar la productividad del
programador, incrementando la extensibilidad y reutilización del software, así como también
controlar la complejidad y costo del mantenimiento del software.
Transportabilidad: Un lenguaje es transportable, si es posible escribir un programa en un tipo o
modelo de computador, usando una versión del lenguaje diseñada para ese computador y luego
poder usar el mismo programa en otro modelo o tipo de computador, con su respectiva versión del
mismo lenguaje, sin necesidad de hacer cambios en el programa o quizás muy pocos.
Generación de código: Los programas objeto y ejecutables logrados a través de un lenguaje deben
ser compactos y óptimos en su velocidad de proceso.
Flexibilidad: Un buen lenguaje de programación, debe permitir la realización de correcciones,
modificaciones o mejoras, en los programas que se escriben con él, de una forma flexible y sin
complicaciones.
Acceso a bajo nivel: La ejecución de rutinas escritas haciendo uso del bajo nivel, permitiendo ganar
velocidad en el procesamiento, por esta razón un buen lenguaje debe permitir algunas formas de
acceso hacia este nivel.
Fácil de aplicar: Un lenguaje debe ser un método entendible y práctico, que brinde facilidades al
programador, para el desarrollo de aplicaciones.
Enlace con otros lenguajes: Un buen lenguaje de programación, debe contener características que
le permitan ejecutar rutinas escritas en otros lenguajes de programación. Esta posibilidad es muy
importante cuando se realizan grandes proyectos de programación, en los cuales es común el uso
de rutinas o programas escritos en diferentes lenguajes.
Generación de librerías: Un buen lenguaje debe permitir agrupar en librerías o archivos, las rutinas
que va desarrollando el programador durante la realización de un programa, de tal forma que le
sea posible hacer uso de ellas en nuevos programas, sin ser necesario reescribirlas, sino
simplemente agregarlas de forma inmediata en el código del nuevo programa.

PROGRAMADOR.
Se encarga de implementar un algoritmo mediante un lenguaje de programación. El término
programador también puede asociarse al ingeniero de software, al científico de la computación, al

12
desarrollador de software y al analista, aunque estas personas tienen otras habilidades y
propósitos.
Las características esenciales que permitan a un programador mantenerse en la industria por un
largo periodo de tiempo y al mismo tiempo ser exitoso en su profesión. A continuación se muestran
algunas de las características que todo programador debe tener para ser exitoso en el híper
competitivo campo de la industria del software.
Curiosidad: Un buen programador siempre está ávido de conocimientos. Hasta que no conoce el
problema en profundidad no se detiene de trabajar. Es esta característica la que permite que un
programador pueda adquirir el conocimiento y habilidades para entender cualquier tecnología
subyacente en la que necesite escribir código.
Pensamiento claro: Un pensamiento claro es un ejercicio de lógica. Por esta razón es que los
programadores con excelente bases matemáticas superan en rendimiento en la mayoría de las
veces a sus pares que carecen de estos conocimientos.
Leer y comprender rápido: La rapidez en la lectura y compresión de la información es vital para la
productividad de cualquier programador. Un programador NO sólo escribe código, parte de su
trabajo incluye la lectura de código, documentación y especificaciones de proyectos. Los
programadores que leen de manera lenta son improductivos pero los que no tiene buena lectura
comprensiva son peligrosos.
Atención a los detalles: He notado que la característica de atención a los detalles está
estrechamente relacionada con la curiosidad. Un programador que no presta atención a los
detalles principalmente en el proceso de escritura de código es altamente improductivo. La falta
de esta habilidad se refleja en aquellos que escriben código desordenado, sin comentarios y no
implementan las medidas de seguridad adecuadas para garantizar la integridad del software.
Aprender rápido temas fuera de la programación: Exceptuando que seas un programador
trabajando dentro de una compañía de software desarrollando herramientas únicamente para
programadores, es necesario que estés en comunicación con otras personas fuera del mundo del
código binario. Esto incluye conversar con contadores, abogados, financieros, etc. Por lo tanto, un
programador debe adquirir conocimientos en las áreas con la que se relaciona en el trabajo. Así
como un periodista debe poseer el conocimiento mínimo necesario para escribir un artículo sobre
economía, de esta misma forma un programador debe tener conocimientos mínimos de finanzas
para poder ayudar a un director financiero a resolver un problema de software.
Autodidacta: El programador que depende que su empleador para que financie los entrenamientos
está condenando al fracaso. La realidad es que en las empresas casi nunca hay presupuesto para
entrenamientos en el área de tecnología. Un excelente programador es autodidacta. La habilidad
de aprender por sí mismo paga en el largo plazo. El mundo del desarrollo de software es muy
amplio y no se detiene, el programador actual debe estar en constante evolución aprendiendo
nuevas herramientas y lenguajes. Un programador que dure dos años sin capacitación está
desfasado.
Pasión: Existen programadores de 9-5. Estos son aquellos que escriben código de forma rutinaria
en su trabajo. Fuera de su trabajo no existe el código. Esto no está mal pero es un reflejo de falta
de pasión. Los mejores programadores respiran código las 24 horas. Esta “pasión” es la que
permite aplicar trucos y buscar soluciones creativas al momento de enfrentar
problemas complejos.
Adaptabilidad: Es muy difícil que un proyecto de software termine con las mismas especificaciones
que se delinearon al comienzo del proyecto. Las cosas cambian y los grandes proyectos también.

13
Un programador debe saber cómo adaptarse a los cambios. Los programadores que no se
adaptan fracasan.
Comunicación efectiva: Comunicación efectiva no es sinónimo que hables perfectamente tu
idioma; es más que eso. Es necesario que un programador tenga la capacidad de comunicar las
ideas de forma clara y precisa. Los programadores que NO logran que sus ideas sean
comprendidas principalmente por aquellas personas no técnicas, tienden a tener dificultades en
sus carreras. Una persona que no comunique efectivamente NO puede escalar a posiciones
gerenciales en una empresa.
Explora código: Un forma rápida y eficiente de incrementar tus habilidades en programación es a
través de la exploración de código escrito por otros. Algunos de los mejores programadores del
mundo colaboran en proyectos Open Source. Involúcrate y aprender de los gurúes.
PROGRAMACIÓN.
Se llama programación a la creación de un programa de computadora, un conjunto concreto de
instrucciones que una computadora puede ejecutar. El programa se escribe en un lenguaje de
programación, aunque también se pueda escribir directamente en lenguaje de máquina. Un
programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes distintos.
Software es el sustantivo que denomina a los programas y datos de computadora. Programas y
Algoritmos Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han
de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un
lenguaje de programación concreto) un algoritmo. Puede haber programas que no se ajusten a un
algoritmo (pueden no terminar nunca), en cuyo caso se denomina procedimiento a tal programa.
Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad
algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al
desarrollo del programa. Según Niklaus Wirth un programa está formado por algoritmos y
estructura de datos. Se han propuesto diversas técnicas de programación, cuyo objetivo es
mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas se pueden
mencionar las programaciones estructurada, modular y orientada a objetos. Compilación El
programa escrito en un lenguaje de programación (comprensible por el ser humano, aunque se
suelen corresponder con lenguajes formales descritos por gramáticas independientes del
contexto) no es inmediatamente ejecutado en una computadora. La opción más común es compilar
el programa, aunque también puede ser ejecutado mediante un intérprete informático El código
fuente del programa se debe someter a un proceso de transformación para convertirse en lenguaje
máquina, interpretable por el procesador. A este proceso se le llama compilación. Normalmente la
creación de un programa ejecutable (un típico .exe para Microsoft Windows) conlleva dos pasos.
El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un
lenguaje de programación almacenado en un archivo a código en bajo nivel, (normalmente en
código objeto no directamente al lenguaje máquina). El segundo paso se llama enlazado (del inglés
link o linker) se junta el código de bajo nivel generado de todos los ficheros que se han mandado
compilar y se añade el código de las funciones que hay en las bibliotecas del compilador para que
el ejecutable pueda comunicarse con el sistemas operativo y traduce el código objeto a código
máquina.
Estos dos pasos se pueden mandar hacer por separado, almacenando el resultado de la fase de
compilación en archivos objetos (un típico .obj para Microsoft Windows, .o para Unix), para
enlazarlos posteriormente, o crear directamente el ejecutable con lo que la fase de compilación se
almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes
(generalmente C, C++ y Asm), que se podrían compilar de forma independiente y enlazar juntas
para formar un único ejecutable. Pseudocódigo Un pseudocódigo o falso lenguaje, es una serie
de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación, pero

14
sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial. Esto permite codificar
un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez
semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio
de un algoritmo. Forma parte de las distintas herramientas de la ingeniería de software. No hay
ningún compilador o intérprete de pseudocódigo informático, y por tanto no puede ser ejecutado
en un computador, pero las similitudes con la mayoría de los lenguajes informáticos lo hacen
fácilmente convertible. El pseudocódigo describe un algoritmo utilizando una mezcla de frases en
lenguaje común, instrucciones de programación y palabras clave que definen las estructuras
básicas. Su objetivo es permitir que el programador se centre en los aspectos lógicos de la
solución, evitando las reglas de sintaxis de los lenguajes de programación convencionales. No
siendo el pseudocódigo un lenguaje formal, varían de un programador a otro, es decir, no hay una
estructura semántica ni arquitectura estándar. Es una herramienta ágil para el estudio y diseño de
aplicaciones, veamos un ejemplo, que podríamos definir como: lenguaje imperativo, de tercera
generación, según el método de programación estructurada.
Programación Estructurada La programación estructurada es una forma de escribir programas
para computadoras de forma clara, para ello utiliza únicamente tres estructuras: secuencial,
selectiva e iterativa; siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones
de transferencia incondicional (GOTO). A finales de los años sesenta surgió una nueva forma de
programar que no solamente daba lugar a programas fiables y eficientes, sino que además
estaban escritos de manera que facilitaba su comprensión posterior. Un famoso Teorema de
Dijkstra, demostrado por Edsger Dijkstra en los años sesenta, comprueba que todo programa
puede escribirse utilizando únicamente las tres instrucciones de control siguientes:
• Secuencial de instrucciones.
• Instrucción condicional.
• Iteración, o bucle de instrucciones.
Sólo con estas tres estructuras se puede hacer un programa informático, si bien los lenguajes de
programación, y sus compiladores, tienen un repertorio de estructuras de control mayor.
Ventajas de la Programación Estructurada.
Elaborar programas de computador sigue siendo una labor que demanda esfuerzo, creatividad,
habilidad y cuidado. Sin embargo, con este nuevo estilo se pueden obtener las siguientes ventajas:
1. Los programas son más fáciles de entender. Un programa estructurado puede ser leído en
secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica, lo
cual es típico de otros estilos de programación. La estructura del programa es más clara puesto
que las instrucciones están más ligadas o relacionadas entre sí, por lo que es más fácil comprender
lo que hace cada función.
2. Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal
en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas se facilita debido a
la lógica más visible, de tal forma que los errores se pueden detectar y corregir más fácilmente.
3. Reducción de los costos de mantenimiento.
4. Programas más sencillos y más rápidos.
5. Aumento de la productividad del programador.
6. Se facilita la utilización de las otras técnicas para el mejoramiento de la productividad en
programación.
7. Los programas quedan mejor documentados internamente.
15
Inconvenientes de la Programación Estructurada
El principal inconveniente de este método de programación, es que se obtiene un único bloque de
programa, que cuando se hace demasiado grande puede resultar problemático su manejo, esto
se resuelve empleando la programación modular, definiendo módulos interdependientes
programados y compilados por separado, cada uno de los cuales ha podido ser desarrollado con
programación estructurada. Un método un poco más sofisticado es la programación por capas, en
la que los módulos tienen una estructura jerárquica muy definida y se denominan capas.
Programación por Capas
La programación por capas es un estilo de programación en la que el objetivo primordial es la
separación de la lógica de negocios de la lógica de diseño. Un ejemplo básico de esto es separar
la capa de datos de la capa de presentación al usuario. La ventaja principal de este estilo, es que
el desarrollo se puede llevar a cabo en varios niveles y en caso de algún cambio sólo se ataca al
nivel requerido sin tener que revisar entre código mezclado. Un buen ejemplo de este método de
programación seria: Modelo de interconexión de sistemas abiertos. Además permite distribuir el
trabajo de creación de una aplicación por niveles, de este modo, cada grupo de trabajo está
totalmente abstraído del resto de niveles, simplemente es necesario conocer la API que existe
entre niveles. En el diseño de sistemas informáticos actual se suele usar las arquitecturas
multinivel o programación por capas. En dichas arquitecturas a cada nivel se le confía una misión
simple, lo que permite el diseño de arquitecturas escalables (que pueden ampliarse con facilidad
en caso de que las necesidades aumenten). El diseño más en boga actualmente es el diseño en
tres niveles (o en tres capas).
Capas o Niveles
1. Capa de presentación: es la que ve el usuario, presenta el sistema al usuario, le comunica la
información y captura la información del usuario dando un mínimo de proceso (realiza un filtrado
previo para comprobar que no hay errores de formato). Esta capa se comunica únicamente con la
capa de negocio.
2. Capa de negocio: es donde residen los programas que se ejecutan, recibiendo las peticiones
del usuario y enviando las respuestas tras el proceso. Se denomina capa de negocio (e incluso de
lógica del negocio) pues es aquí donde se establecen todas las reglas que deben cumplirse. Esta
capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los
resultados, y con la capa de datos, para solicitar al gestor de base de datos para almacenar o
recuperar datos de él.
3. Capa de datos: es donde residen los datos. Está formada por uno o más gestor de bases de
datos que realiza todo el almacenamiento de datos, reciben solicitudes de almacenamiento o
recuperación de información desde la capa de negocio. Todas estas capas pueden residir en un
único ordenador, si bien lo más usual es que haya una multitud de ordenadores donde reside la
capa de presentación (son los clientes de la arquitectura cliente/servidor). Las capas de negocio y
de datos pueden residir en el mismo ordenador, y si el crecimiento de las necesidades lo aconseja
se pueden separar en dos o más ordenadores. Así, si el tamaño o complejidad de la base de datos
aumenta, se puede separar en varios ordenadores los cuales recibirán las peticiones del
ordenador en que resida la capa de negocio. Si por el contrario fuese la complejidad en la capa de
negocio lo que obligase a la separación, esta capa de negocio podría residir en uno o más
ordenadores que realizarían solicitudes a una única base de datos. En sistemas muy complejos
se llega a tener una serie de ordenadores sobre los cuales corre la capa de datos, y otra serie de
ordenadores sobre los cuales corre la base de datos.

16
Programación Modular
Es la propiedad de los programas de computación en la cual están compuestos de partes
separadas llamadas módulos. Los programas que tienen muchas relaciones directas entre 2
partes del código al azar son menos modulares que programas donde esas relaciones ocurren
principalmente en interfaces bien definidas para los módulos.
Programación Imperativa
En contraposición a la programación declarativa, es un paradigma de programación que describe
la programación en términos del estado del programa y sentencias que cambian dicho estado. Los
programas imperativos son un conjunto de instrucciones que le indican al computador cómo
realizar una tarea. La implementación de hardware de la mayoría de computadores es imperativa;
prácticamente todo el hardware de los computadores está diseñado para ejecutar código de
máquina, que es nativo al computador, escrito en una forma imperativa. Esto se debe a que el
hardware de los computadores implementa el paradigma de las Máquinas de Turing. Desde esta
perspectiva de bajo nivel, el estilo del programa está definido por los contenidos de la memoria, y
las sentencias son instrucciones en el lenguaje de máquina nativo del computador (por ejemplo el
lenguaje ensamblador). Los lenguajes imperativos de alto nivel usan variables y sentencias más
complejas, pero aún siguen el mismo paradigma. Las recetas y las listas de revisión de procesos,
a pesar de no ser programas de computadora, son también conceptos familiares similares en estilo
a la programación imperativa; cada paso es una instrucción, y el mundo físico guarda el estado.
Los primeros lenguajes imperativos fueron los lenguajes de máquina de los computadores
originales. En estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la implementación
de hardware fácil, pero obstruyendo la creación de programas complejos. El Fortran (FORmula
TRANslator) cuyo desarrollo fue iniciado en 1954 por John Backus en IBM, fue el primer gran
lenguaje de programación en superar los obstáculos presentados por el código de máquina en la
creación de programas complejos. La lista de lenguajes imperativos incluye al Basic, Pascal, C,
C++, Java, C# y Perl.
Programación Funcional
Es un paradigma de programación declarativa basado en la utilización de funciones matemáticas.
Sus orígenes provienen del Cálculo Lambda, una teoría matemática elaborada por Alonzo Church
como apoyo a sus estudios sobre computabilidad. Un lenguaje funcional es a grandes rasgos, un
azúcar sintáctico del Cálculo Lambda. El objetivo de la programación funcional es conseguir
lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario bajar al nivel de
la máquina para describir el proceso llevado a cabo por el programa, y evitando el concepto de
estado del cómputo. La secuencia de computaciones llevadas a cabo por el programa se regiría
única y exclusivamente por la reescritura de definiciones más amplias a otras cada vez más
concretas y definidas, usando lo que se denominan "definiciones dirigidas". Los programas
escritos en un lenguaje funcional están constituidos únicamente por definiciones de funciones,
entendiendo éstas no como subprogramas clásicos de un lenguaje imperativo, sino como
funciones puramente matemáticas, en las que se verifican ciertas propiedades como la
transparencia referencial (el significado de una expresión depende únicamente del significado de
sus subexpresiones), y por tanto, la carencia total de efectos laterales.
Otras características propias de estos lenguajes son la no existencia de asignaciones de variables
y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la
práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones
recursivas). Existen dos grandes categorías de lenguajes funcionales: los funcionales puros y los
híbridos. La diferencia entre ambos estriba en que los lenguajes funcionales híbridos son menos
dogmáticos que los puros, al admitir conceptos tomados de los lenguajes imperativos, como las
secuencias de instrucciones o la asignación de variables. En contraste, los lenguajes funcionales
17
puros tienen una mayor potencia expresiva, conservando a la vez su transparencia referencial,
algo que no se cumple siempre con un lenguaje funcional híbrido. Entre los lenguajes funcionales
puros, cabe destacar a Haskell y Miranda. Los lenguajes funcionales híbridos más conocidos son
Lisp, Scheme, Ocaml y Standard ML (estos dos últimos, descendientes del lenguaje ML).
Programación Lógica
Consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de
programación. La programación lógica comprende dos paradigmas de programación: la
programación declarativa y la programación funcional. La programación declarativa gira en torno
al concepto de predicado, o relación entre elementos. La programación funcional se basa en el
concepto de función (que no es más que una evolución de los predicados), de corte más
matemático. Históricamente, los computadores se han programado utilizando lenguajes muy
cercanos a las peculiaridades de la propia máquina: operaciones aritméticas simples,
instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede ocultar
totalmente su propósito a la comprensión de un ser humano, incluso uno entrenado. Hoy día, estos
lenguajes pertenecientes al paradigma de la programación imperativa han evolucionado de
manera que ya no son tan crípticos. Sin embargo, aún existen casos donde el uso de lenguajes
imperativos es inviable debido a la complejidad del problema a resolver. En cambio, la lógica
matemática es la manera más sencilla, para el intelecto humano, de expresar formalmente
problemas complejos y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De
ahí que el concepto de "programación lógica" resulte atractivo en diversos campos donde la
programación tradicional es un fracaso. La programación lógica encuentra su hábitat natural en
aplicaciones de inteligencia artificial o relacionadas:
• Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto
sobre algún dominio de conocimiento.
• Demostración automática de teoremas, donde un programa genera nuevos teoremas sobre una
teoría existente.
• Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con
limitaciones) la información contenida en una expresión lingüística humana.
La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy
limitada, ya que la programación tradicional es más adecuada a tareas de propósito general. La
mayoría de los lenguajes de programación lógica se basan en la teoría lógica de primer orden,
aunque también incorporan algunos comportamientos de orden superior. En este sentido,
destacan los lenguajes funcionales, ya que se basan en el cálculo lambda, que es la única teoría
lógica de orden superior que es demostradamente computable. El lenguaje de programación lógica
por excelencia es el Prolog.
Programación Orientada a Objetos. (POO u OOP según siglas en inglés)
Es un paradigma de programación que define los programas en términos de "clases de objetos",
objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es,
procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). La
programación orientada a objetos expresa un programa como un conjunto de estos objetos, que
colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles
de escribir, mantener y reutilizar. De esta forma, un objeto contiene toda la información, (los
denominados atributos) que permite definirlo e identificarlo frente a otros objetos pertenecientes a
otras clases (e incluso entre objetos de una misma clase, al poder tener valores bien diferenciados
en sus atributos). A su vez, dispone de mecanismos de interacción (los llamados métodos) que
favorecen la comunicación entre objetos (de una misma clase o de distintas), y en consecuencia,
el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades
18
indivisibles, en las que no se separan (ni deben separarse) información (datos) y procesamiento
(métodos). Dada esta propiedad de conjunto de una clase de objetos, que al contar con una serie
de atributos definitorios, requiere de unos métodos para poder tratarlos (lo que hace que ambos
conceptos están íntimamente entrelazados), el programador debe pensar indistintamente en
ambos términos, ya que no debe nunca separar o dar mayor importancia a los atributos en favor
de los métodos, ni viceversa. Hacerlo puede llevar al programador a seguir el hábito erróneo de
crear clases contenedoras de información por un lado y clases con métodos que manejen esa
información por otro (llegando a una programación estructurada camuflada en un lenguaje de
programación orientado a objetos). Esto difiere de los lenguajes imperativos tradicionales, en los
que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca
es el procesamiento de unos datos de entrada para obtener otros de salida. La programación
estructurada anima al programador a pensar sobre todo en términos de procedimientos o
funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. Los
programadores de lenguajes imperativos escriben funciones y después les pasan datos. Los
programadores que emplean lenguajes orientados a objetos definen objetos con datos y métodos
y después envían mensajes a los objetos diciendo que realicen esos métodos en sí mismos.
Algunas personas también distinguen la POO sin clases, la cual es llamada a veces programación
basada en objetos. Los conceptos de la programación orientada a objetos tienen origen en Simula
67, un lenguaje diseñado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard
del Centro de Cómputo Noruego en Oslo. Según se informa, la historia es que trabajaban en
simulaciones de naves, y fueron confundidas por la explosión combinatoria de cómo las diversas
cualidades de diversas naves podían afectar unas a las otras. La idea ocurrió para agrupar los
diversos tipos de naves en diversas clases de objetos, siendo responsable cada clase de objetos
de definir sus propios datos y comportamiento. Fueron refinados más tarde en Smalltalk, que fue
desarrollado en Simula en Xerox PARC (y cuya primera versión fue escrita sobre Basic) pero
diseñado para ser 10 un sistema completamente dinámico en el cual los objetos se podrían crear
y modificar "en marcha" en lugar de tener un sistema basado en programas estáticos. La
programación orientada a objetos tomó posición como la metodología de programación dominante
a mediados de los años ochenta, en gran parte debido a la influencia de C++, una extensión del
lenguaje de programación C. Su dominación fue consolidada gracias al auge de las Interfaces
gráficas de usuario, para los cuales la programación orientada a objetos está particularmente bien
adaptada. En este caso, se habla también de programación orientada a eventos. Las
características de orientación a objetos fueron agregadas a muchos lenguajes existentes durante
ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, y otros. La adición de estas características a los
lenguajes que no fueron diseñados inicialmente para ellas condujo a menudo a problemas de
compatibilidad y a la capacidad de mantenimiento del código. Los lenguajes orientados a objetos
"puros", por otra parte, carecían de las características de las cuales muchos programadores
habían venido a depender. Para saltar este obstáculo, se hicieron muchas tentativas para crear
nuevos lenguajes basados en métodos orientados a objetos, pero permitiendo algunas
características imperativas de maneras "seguras". El Eiffel de Bertrand Meyer fue un temprano y
moderadamente acertado lenguaje con esos objetivos pero ahora ha sido esencialmente
reemplazado por Java, en gran parte debido a la aparición de Internet, y a la implementación de
la máquina virtual de Java en la mayoría de navegadores. Diferencias con la Programación
Imperativa Aunque la programación imperativa (a veces llamada procedural o procedimental)
condujo a mejoras de la técnica de programación secuencial, tales como la programación
estructurada y "refinamientos sucesivos", los métodos modernos de diseño de software orientado
a objetos incluyen mejoras entre las que están el uso de los patrones de diseño, diseño por
contrato, y lenguajes de modelado (ej: UML).
Las principales diferencias entre la programación imperativa y la orientada a objetos son:

19
• La programación orientada a objetos es más moderna, es una evolución de la programación
imperativa que plasma en el diseño de una familia de lenguajes conceptos que existían
previamente con algunos nuevos.
• La programación orientada a objetos se basa en lenguajes que soportan sintáctica y
semánticamente la unión entre los tipos abstractos de datos y sus operaciones (a esta unión se la
suele llamar clase).
• La programación orientada a objetos incorpora en su entorno de ejecución mecanismos tales
como el polimorfismo y el envío de mensajes entre objetos. Erróneamente se le adjudica a la
programación imperativa clásica ciertos problemas como si fueran inherentes a la misma. Esos
problemas fueron haciéndose cada vez más graves y antes de la programación orientada a objetos
diversos autores encontraron soluciones basadas en aplicar estrictas metodologías de trabajo.
De esa época son los conceptos de cohesión y acoplamiento. De esos problemas se destacan los
siguientes:
• Modelo mental anómalo. La imagen del mundo se apoya en los seres, a los que se asignan
nombres sustantivos, mientras la programación clásica se basa en el comportamiento,
representado usualmente por verbos.
• Es difícil modificar y extender los programas, pues suele haber datos compartidos por varios
subprogramas, que introducen interacciones ocultas entre ellos.
• Es difícil mantener los programas. Casi todos los sistemas informáticos grandes tienen errores
ocultos, que no surgen a la luz hasta después de muchas horas de funcionamiento.
• Es difícil reutilizar los programas. Es prácticamente imposible aprovechar en una aplicación
nueva las subrutinas que se diseñaron para otra.
• Es compleja la coordinación y organización entre programadores para la creación de aplicaciones
de media y gran envergadura. En la programación orientada a objetos pura no deben utilizarse
llamadas de subrutinas, únicamente mensajes. Por ello, a veces recibe el nombre de programación
sin CALL, igual que la programación estructurada se llama también programación sin GOTO. Sin
embargo, no todos los lenguajes orientados a objetos prohíben la instrucción CALL (o su
equivalente), permitiendo realizar programación híbrida, imperativa y orientada a objetos a la vez.
La programación orientada a objetos es una nueva forma de programar que trata de encontrar
solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos
antiguos ya conocidos. Entre ellos destacan los siguientes:
• Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento
o funcionalidad ("métodos"). Corresponden a los objetos reales del mundo que nos rodea, o a
objetos internos del sistema (del programa).
• Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La
instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
• Método: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se
desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es
lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto,
o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema.
• Evento: un suceso en el sistema (tal como una interacción del usuario con la máquina, o un
mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al
objeto pertinente.
• Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos
con ciertos parámetros asociados al evento que lo generó.
20
• Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de
objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser alterado por la
ejecución de algún método.
• Estado interno: es una propiedad invisible de los objetos, que puede ser únicamente accedida y
alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para
el objeto (o clase de objetos). En comparación con un lenguaje imperativo, una "variable" no es
más que un contenedor interno del atributo del objeto o de un estado interno, así como la "función"
es un procedimiento interno del método del objeto.
Características de la Programación Orientada a Objetos Hay un cierto desacuerdo sobre
exactamente qué características de un método de programación o lenguaje le definen como
"orientado a objetos", pero hay un consenso general en que las características siguientes son las
más importantes (para más información, seguir los enlaces respectivos):
• Abstracción: Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede
realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin
revelar cómo se implementan estas características. Los procesos, las funciones o los métodos
pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para
ampliar una abstracción.
• Encapsulamiento: también llamado "ocultación de la información". Cada objeto está aislado del
exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que
específica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las
propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas,
solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que
otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas,
eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto,
permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando
el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
• Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el
mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al
objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos
pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una
referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando
esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o
asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de
compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.
• Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía
de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a
las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento
permitiendo a los objetos ser definidos y creados como tipos especializados de objetos
preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que 13
reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en
clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto
pertenece a más de una clase se dice que hay herencia múltiple; esta característica no está
soportada por algunos lenguajes (como Java).
La lista de lenguajes orientados a objeto incluye al Ada, C++, C#, Visual Basic.net, Clarion, Delphi,
Eiffel, Java, Lexico, Objective-C, Ocaml, Oz, PHP, PowerBuilder, Pitón, Ruby y Smalltalk.
Programación Orientada a Aspectos La Programación Orientada a Aspectos (POA) es un
paradigma de programación relativamente reciente cuya intención es permitir una adecuada
modularización de las aplicaciones y posibilitar una mejor separación de conceptos. Gracias a la
21
POA se pueden capturar los diferentes conceptos que componen una aplicación en entidades bien
definidas, de manera apropiada en cada uno de los casos y eliminando las dependencias
inherentes entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los
conceptos, se elimina la dispersión del código y las implementaciones resultan más
comprensibles, adaptables y reusables. Varias tecnologías con nombres diferentes se encaminan
a la consecución de los mismos objetivos y así, el término POA es usado para referirse a varias
tecnologías relacionadas como los métodos adaptativos, los filtros de composición, la
programación orientada a sujetos o la separación multidimensional de competencias.
Código fuente: Conjunto de sentencias entendibles por el programador que componen el
programa o una parte de ello. Suele estar almacenado en un fichero del tipo texto como los que
se pueden abrir por ejemplo, con el bloc de notas o Wordpad en los entornos Windows. El código
fuente estará escrito en un lenguaje de programación determinado, elegido por el programador,
como pueden ser: Basic, C, C++, C#, Java, Perl, Python, PHP. Es el programa que escribió el
programador. Ello se realiza a través de un editor de textos.

Código objeto: Conjunto de instrucciones y datos escritos en un lenguaje que entiende el


ordenador directamente: binario o código máquina. Provienen de la traducción de cierto código
fuente, es un fragmento del programa final y es específico de la plataforma de ejecución.

Es el resultado de convertir el programa fuente hacia el lenguaje de máquina. Este proceso es


realizado por el compilador. El proceso se denomina compilación y el código resultado, objeto o
compilado.
Código ejecutable: Reúne diferentes códigos u objetos generados por los programadores junto
con las “librerías de uso general” (propias del entorno o del lenguaje de programación)
componiendo el programa final. Este es el código que ejecutan los usuarios del sistema, y es
específico para una plataforma concreta: Windows, Linux, Mac OS, o cierto sistema Hardware.

Es el resultado de agregar al programa objeto: definiciones, datos, procesos y direcciones reales


de ejecución que permitan al programa comportarse de forma conveniente en la memoria de la
computadora durante su procesamiento. Esta labor la realiza el montador (linkeador)
Algoritmo. Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo una
tarea específica, como la solución de un problema. Los algoritmos son independientes tanto del
lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada
problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse
en una computadora distinta; sin embargo el algoritmo será siempre el mismo.

Por ejemplo en una analogía con la vida diaria, una receta de un plato de cocina se puede
expresar en español, inglés o francés, pero cualquiera que sea el lenguaje, los pasos para la
elaboración del plato se realizaran sin importar el cocinero.

En la siguiente página se muestra una tabla, donde se aplican los conceptos adquiridos, lee con
cuidado las instrucciones y realiza lo que se te pide.

De manera individual identifica las características de la columna izquierda y relaciónala con el


concepto en la columna izquierda.

22
Características Definiciones
Un lenguaje debe ser un método entendible y
1 Flexibilidad ( ) práctico, que brinde facilidades al programador, para
el desarrollo de aplicaciones.
Un buen lenguaje de programación, debe permitir la
realización de correcciones, modificaciones o
2 Transportabilidad ( )
mejoras, en los programas que se escriben con él,
de una forma flexible y sin complicaciones.
Esta característica define que es posible escribir un
programa en un tipo o modelo de computadora,
usando una versión del lenguaje diseñada para ésa
Generación de
3 ( ) y luego poder usar el mismo programa en otro
librerías
modelo o tipo de computadora, con su respectiva
versión del mismo lenguaje, sin necesidad de hacer
cambios en el programa o quizás muy pocos.
La ejecución de rutinas escritas de esta manera,
Enlace con otros permiten ganar velocidad en el procesamiento, por
4 ( )
lenguajes esta razón un buen lenguaje debe permitir algunas
formas empleando esta metodología.
5 Fácil de aplicar ( ) Conjunto de instrucciones y datos escritos en un
lenguaje que entiende el ordenador directamente:
binario o código máquina

Un buen lenguaje de programación, debe contener


características que le permitan ejecutar rutinas
escritas en otros lenguajes de programación. Esta
6 Código objeto ( ) posibilidad es muy importante cuando se realizan
grandes proyectos de programación, en los cuales
es común el uso de rutinas o programas escritos en
diferentes lenguajes.
Un buen lenguaje debe permitir agrupar o archivar
las rutinas que va desarrollando el programador
durante la realización de un programa, de tal forma
Acceso a bajo
7 ( ) que le sea posible hacer uso de ellas en nuevos
nivel
programas, sin necesidad de reescribirlas, sino
simplemente agregarlas de forma inmediata en el
código del nuevo programa

23
Complementa el esquema según la información referente al programador y sus características.

24
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante la secuencia.
Contesta los enunciados subrayando la respuesta que consideres correcta.

1. Representan un conjunto de instrucciones que le indican a la computadora las tareas a realizar.


a) Diseño b) Sistema c) Programa d) Lenguaje e) Función

2. Durante el proceso de compilación, las instrucciones son traducidas a este lenguaje para su
ejecución.
a) Estructurado b) Máquina c) Objeto d) Visual e) Modular

3. El programa o archivo de texto que se genera, también es conocido como:


a) Archivo fuente b) Archivo destino c) Archivo base d) Sistema experto e)
Usuario

4. Es el tipo de programación que consiste en desarrollar programas en los cuales cada proceso
o parte del programa está claramente definido y no interfiere con los demás procesos.
a) Visual b) Estructurada c) Orientada a objetos d) Modular e) Virtual

5. Es quien escribe, examina, depurar y mantener el código de programación de los


programas.
a) Analista b) Programador c) Diseñador d) Capturista e) Verificador

6. Es la habilidad que se refiere a la creación de soluciones factibles, rápidas y sencillas a


problemas complicados.
a) Auto-exigencia b) Disciplinado c) Conocimiento d) Empático e) Creatividad

7. Característica del programa que se refiere a la facilidad para realizar modificaciones o mejoras,
sin complicaciones.

a) Transportabilidad b) Fácil de c) Acceso a d) Flexibilidad e) Enlace a otros


Aplicar bajo nivel lenguajes

8. Tipo de programación que Consiste en desarrollar programas en los cuales cada proceso o
parte del programa está claramente definido y no colisiona con los demás procesos
a) Estructurada b) Funciones c) Bloques d) Lineal e) Modular

9. Conjunto de sentencias entendibles por el programador que componen el programa o una parte
de ello.
a) Código fuente b) Código objeto c) Código ejecutable d) Compilador e) Algoritmo

10. Serie de pasos que nos permiten resolver un problema o una tarea específica
a) Diagrama b) Programa c) Algoritmo d) Lenguaje e) Programa fuente
de flujo

25
Lenguajes de programación máquina, bajo nivel y alto nivel para la solución de problemas
de la vida cotidiana.

Realiza un debate con tus compañeros de clase y en el grupo con tu maestro, contesta
las siguientes preguntas:

LENGUAJE DE PROGRAMACIÓN
Un programa es la plasmación de un algoritmo en una secuencia de sentencias o instrucciones
pertenecientes a un determinado lenguaje de programación, susceptibles de ser eventualmente
interpretadas y ejecutadas por el ordenador. Se trata, pues, de la realización práctica de un
algoritmo en un ordenador.
Como hemos mencionado en páginas anteriores, podemos definir lenguaje de programación,
como el conjunto de símbolos y reglas que conforman un programa, y que nos permiten
comunicarnos con la máquina. De acuerdo a lo cercano o lejano que esté del lenguaje de la
máquina, podemos establecer la siguiente clasificación en los lenguajes de programación:
Una computadora es una máquina que solo comprende las instrucciones que se le den en un
determinado formato. Cada máquina reconoce y ejecuta un número de instrucciones diferentes
que se agrupan en los distintos lenguajes de programación.
Un lenguaje de programación es un conjunto limitado de palabras y de símbolos que
representan procedimientos, cálculos, decisiones y otras operaciones que pueden ejecutar una
computadora. A pesar de que en este trabajo parte de la división de lenguajes de
programación en imperativos y declarativos (los cuales a su vez se dividen en numerosos
subgrupos), la clasificación más común y básica que suele hacerse de los lenguajes de
programación es la que los divide en lenguajes de bajo y de alto nivel.

26
LENGUAJES DE BAJO NIVEL
Los lenguajes de programación de bajo nivel fueron los primeros que surgieron y se llaman así
porque están directamente relacionados con el hardware del computador, es decir, el usuario
introduce una serie de códigos numéricos que la máquina va a interpretar como instrucciones.
Para usar este lenguaje, el programador tenía que conocer el funcionamiento de la máquina al
más bajo nivel y los errores de programación eran muy frecuentes.
Se caracterizan por poseer una estructura demasiado compleja, lo cual los hace difíciles de
aprender, entender y aplicar. Ello se debe a su relación directa con el funcionamiento real de cada
uno de los elementos internos del computador: µP, RAM, periféricos etc.
Son los lenguajes propios o naturales de las computadoras y por ello los programas escritos en
bajo nivel nos permiten obtener la máxima velocidad de proceso y un control total de todo el
hardware del computador.

LENGUAJES MÁQUINA
El lenguaje máquina de una computadora consta de cadenas de números binarios (ceros y unos)
y es el único que "entienden" directamente los procesadores. Todas las instrucciones preparadas
en cualquier lenguaje de máquina tienen por lo menos dos partes. La primera es
el comando u operación, que dice a la computadora cuál es la función que va a realizar. Todas
las computadoras tienen un código de operación para cada una de sus funciones.
La segunda parte de la instrucción es el operando, que indica a la computadora dónde hallar o
almacenar los datos y otras instrucciones que se van a manipular; el número de operandos de
una instrucción varía en las distintas computadoras. Según los estándares actuales, las primeras
computadoras eran poco tolerantes. Los programadores tenían que traducir las instrucciones de
manera directa a la forma de lenguaje de máquina que comprendían las computadoras. Por
ejemplo, un programador que escribiera la instrucción "SUMAR 0814" para una de las primeras
máquinas IBM hubiera escrito:
000100000000000000000000000010111000
Además de recordar las docenas de códigos numéricos para los comandos del conjunto de
instrucciones de la máquina, el programador tenía que conocer las posiciones donde se
almacenan los datos y las instrucciones. La codificación inicial muchas veces requería meses,
por lo que era costosa y era frecuente que originara errores. Revisar las instrucciones para
localizar errores era casi tan tedioso como escribirlas por primera vez. Además, si era necesario
modificar un programa posteriormente, la tarea podía llevarse meses.

LENGUAJES ENSAMBLADORES
A principios de la década de 1950, y con el fin de facilitar la labor de los programadores, se
desarrollaron códigos nemotécnicos para las operaciones y direcciones simbólicas. La palabra
nemotécnico se refiere a una ayuda para la memorización. Uno de los primeros pasos para
mejorar el proceso de preparación de programas fue sustituir los códigos de operaciones
numéricos del lenguaje de máquina por símbolos alfabéticos, que son los códigos nemotécnicos.
Todas las computadoras actuales tienen códigos nemotécnicos aunque, naturalmente, los
símbolos que se usan varían en las diferentes marcas y modelos. La
computadora sigue utilizando el lenguaje de máquina para procesar los datos, pero los
programas ensambladores traducen antes los símbolos de código de operación especificados a
sus equivalentes en lenguaje de máquina.

27
LENGUAJES DE ALTO NIVEL
Los primeros programas ensambladores producían sólo una instrucción en lenguaje de máquina
por cada instrucción del programa fuente. Para agilizar la codificación, se desarrollaron
programas ensambladores que podían producir una cantidad variable de instrucciones en
lenguaje de máquina por cada instrucción del programa fuente. Dicho de otra manera, un
solo macroinstrucción podía producir varias líneas de código en lenguaje de máquina. Por
ejemplo, el programador podría escribir "LEER ARCHIVO", y el programa traductor produciría
una serie detallada de instrucciones al lenguaje de máquina previamente preparadas, con lo que
se copiaría un registro del archivo que estuviera leyendo el dispositivo de entrada a la
memoria principal. Así, el programador no se tenía que ocupar de escribir una instrucción por
cada operación de máquina realizada.
El desarrollo de las técnicas nemotécnicas y las macroinstrucciones condujo, a su vez, al
desarrollo de lenguajes de alto nivel que a menudo están orientados hacia una clase determinada
de problemas de proceso. Por ejemplo, se han diseñado varios lenguajes para procesar
problemas científico-matemático, asimismo han aparecido otros lenguajes que hacen hincapié en
las aplicaciones de proceso de archivos.
A diferencia de los programas de ensamble, los programas en lenguaje de alto nivel se pueden
utilizar con diferentes marcas de computadores sin tener que hacer modificaciones
considerables. Esto permite reducir sustancialmente el costo de la reprogramación cuando se
adquiere equipo nuevo. Otras ventajas de los lenguajes de alto nivel son:

 Son más fáciles de aprender que los lenguajes ensambladores.


 Se pueden escribir más rápidamente.
 Permiten tener mejor documentación.
 Son más fáciles de mantener.

Un programador que sepa escribir programas en uno de estos lenguajes no está limitado a utilizar
un solo tipo de máquina. A continuación se mencionan algunos ejemplos de lenguajes de alto
nivel
LENGUAJE DE MEDIO NIVEL
Lenguaje de medio nivel es un lenguaje de programación informática como el lenguaje C, que se
encuentran entre los lenguajes de alto nivel y los lenguajes de bajo nivel.
Suelen ser clasificados muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel.
Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten
un manejo abstracto (independiente de la máquina, a diferencia delensamblador), pero sin perder
mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.
Una característica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel y
al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si
fueran números (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas
de caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el
responsable de llamar a las funciones correspondientes).

28
Complementa el mapa conceptual escribiendo dentro de cada recuadro el concepto de cada
elemento según la clasificación de los lenguajes de programación.

LENGUAJES DE PROGRAMACIÓN

Definición:

Bajo nivel Alto nivel

Definición: Definición:

Lenguaje máquina Lenguaje ensamblador

Definición: Definición:

29
De manera individual desarrolla la siguiente actividad para evaluar los aprendizajes logrados
durante la secuencia.

Contesta los enunciados subrayando la respuesta que consideres correcta.

1. ¿Cuál es el lenguaje que la computadora utiliza, el cual consiste en 0´s y 1´s y lo


utiliza para codificar y ejecutar cualquier acción?
a) Binario b) HTML c) Hexadecimal d) Decimal e) Inglés

2. Son lenguajes totalmente dependientes de la máquina, es decir, los programas de


computadora que se generan utilizando este código no se pueden migrar o utilizar en
otros equipos o dispositivos.
a) Alto nivel b) Ensamblador c) Bajo nivel d) Nivel medio e) Máquina

3. Este lenguaje ordena a la máquina las operaciones fundamentales para su


funcionamiento. Consiste en la combinación de 0's y 1's para formar las órdenes
entendibles por el hardware de la maquina
a) Máquina b) Alto nivel c) Bajo nivel d) Ensamblador e) Nivel medio

4. Este es un derivado del lenguaje máquina y está formado por abreviaturas de letras
y números llamadas mnemotécnicos.
a) Alto nivel b) Ensamblador c) Bajo nivel d) Nivel medio e) Estructurado

5. Es un conjunto limitado de palabras y de símbolos que representan procedimientos,


cálculos, decisiones y otras operaciones que pueden ejecutar una computadora.
a) Lenguaje de b) Programa c) Alto nivel d) Nivel medio e) Estructurado
Programación

6. Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje
máquina. Están dirigidos a solucionar problemas mediante el uso de estructuras
dinámicas de datos.
a) Máquina b) Alto nivel c) Bajo nivel d) Ensamblador e) Nivel medio

7. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que
permiten un manejo abstracto (independiente de la máquina, a diferencia del ensamblador),
pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.
a) Máquina b) Alto nivel c) Bajo nivel d) Ensamblador e) Medio nivel

8. Es una máquina que solo comprende las instrucciones que se le den en un determinado
formato.
a) Computadora b) Alto nivel c) Bajo nivel d) Ensamblador e) Medio nivel

9. es un lenguaje de programación informática como el lenguaje C, que se encuentran entre


los lenguajes de alto nivel y los lenguajes de bajo nivel.
a) Computadora b) Alto nivel c) Bajo nivel d) Ensamblador e) Medio nivel

30
Lógica computacional (tipos de datos, zonas de memoria, clasificación de operadores y su
jerarquía) para la solución de problemas.

En plenaria grupal con tus compañeros de clase y en el grupo con tu maestro, contesta las
siguientes preguntas:

Investigar los tipos de datos, tipos de operadores y zonas de memoria. Citar un ejemplo para
cada caso. Entregar reporte al maestro.

31
TIPOS DE DATOS, OPERADORES Y ZONAS DE MEMORIA
Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede tomar),
qué operaciones se le pueden aplicar y cómo es representado internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
El propósito general de toda computadora es manejar datos. Un dato es una colección de
resultados compuesta por caracteres, números y símbolos almacenados en el procesador de
manera que puedan ser procesados.
Los tipos de datos simples son:
 Numéricos (enteros, reales)
 Lógicos (booleanos)
 Carácter (caracteres, cadenas de caracteres)
El tipo de dato numérico es el conjunto de los valores numéricos.
Se pueden representar de dos formas:
Enteros (números completos que no tienen componentes fraccionarios)
Ejemplos: 16, 3868, -1256, 0
Reales (consta de una parte entera y una parte decimal)
Ejemplos: -123.0, 0.1, 4.9827, -0.002
Lógicos (sólo puede tomar uno de dos valores)
Verdadero (true) Falso (false)
Carácter (conjunto finito y ordenado de caracteres que la computadora reconoce)
Los caracteres reconocidos por los diferentes computadores por lo general no son estándar, pero
la mayoría reconoce los tipos los siguientes tipos de caracteres:
Caracteres Alfabéticos: {A, B, C, … , Z} {a, b, c, … , z}
Caracteres Numéricos: {0, 1, 2, … , 9}
Caracteres Especiales: {+, -, *, /, ^, ., ;, <, >, $, …}
Ejemplos: ‘a’ ‘A’ ‘0’ ‘_’
Cadenas de caracteres (sucesión de caracteres o conjunto ordenado de caracteres)
Por lo general se encuentran delimitados por comillas dobles “” (algunos lenguajes de
programación usan comillas simples ‘’), la longitud de una cadena de caracteres es el número de
los mismos comprendidos entre los separadores.

Identificador.
Un identificador es un conjunto de caracteres alfanuméricos de cualquier longitud que sirve para
identificar las entidades del programa (clases, funciones, variables, tipos compuestos) Los
identificadores pueden ser combinaciones de letras y números. Cada lenguaje tiene sus propias
reglas que definen como pueden estar construidos. Cuando un identificador se asocia a una entidad
concreta, entonces es el “nombre” de dicha entidad, y en adelante la representa en el programa.
Nombrar las entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo
de procesamiento simbólico.

32
Constantes y variables
Una Constante es aquélla que no cambia de valor durante la ejecución de un programa (o
comprobación de un algoritmo en este caso). Se representa en la forma descrita para cada
categoría.
Es un dato numérico o alfanumérico que no cambia durante todo el desarrollo del algoritmo o
durante la ejecución del programa. Es un objeto de valor invariable. Para expresar una constante
se escribe explícitamente su valor.
Tipos de Constantes:
Constantes Numéricas (Enteras y Reales)
Constantes Alfanuméricas
Constantes Lógicas (Boolenas)
Las constantes pueden ser:
Constantes sin nombre: Es una expresión numérica donde se puede utilizar directamente el valor.
Constantes con nombre: Se hace una reserva de memoria en la cual se guarda el valor que será
utilizado como constante.
Ejemplo:
a) PI = 3.1416
b) E = 2.718228
c) Iva = 0.13
Las Variables son aquéllas que pueden modificar su valor durante la ejecución de un programa.
Su representación se da a través de letras y símbolos generalmente numéricos a los que se les
asigna un valor.
Son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de información.
Tipos de variables:
Variables Numéricas (Enteras y Reales)
Variables Alfanuméricas
a) Caracteres alfabéticos
b) Dígitos
c) Caracteres especiales
Variables Lógicas (Boolenas)
Son las que únicamente pueden contener dos valores, los cuales son:
Valor Verdadero ó 1. Valor Falso ó 0
Estos tipos de variables pueden tomar únicamente valores del mismo tipo, es decir si la variable es
entera solamente puede almacenar datos enteros.
Ejemplo:
Una variable declarada como cadena solo puede tomar valores correspondientes a ese tipo.
Nombre = "Manuel López"

33
Almacenamiento de datos en una computadora
 Una computadora almacena datos en clústeres en el disco duro. Cada clúster es un área del
sector con aspecto de porción circular que tiene una cierta cantidad de datos. La cantidad de
datos que pueden almacenarse en cada clúster es dependiente del sistema operativo.
 Los sistemas informáticos pueden almacenar los datos tanto interna (memoria) como
externamente (dispositivos de almacenamiento).
 Los Dispositivos de Almacenamiento de un computador Son dispositivos periféricos del
sistema, que actúan como medio de soporte para grabar los programas de usuario, y de los
datos y ficheros que va a manejar la CPU durante el proceso en curso, de forma permanente o
temporal mediante sus propias tecnologías, ya sea electrónica u ópticamente.
 Estos dispositivos son clasificados de acuerdo al modo de acceso a los datos que contienen y
entren estos se tienen: Acceso Aleatorio y Acceso Secuencial.
 Existen diversos tipos de dispositivos de almacenamiento, entre estos se
tienen: Memorias (RAM, ROM y Auxiliares), Dispositivos Magnéticos, Dispositivos ópticos y los
dispositivos extraíbles.

Con base en la lectura anterior, describe las características a considerar para utilizar una variable
con respecto al identificador, contenido y tipo de dato.

Característica Descripción

Identificador

Contenido

Tipo de dato

34
Elemento de la lógica
computacional Definición

Dato

Operador

Zona de memoria

Constante

Variable

Identificador

A continuación se te presentan una serie de fórmulas utilizadas en geometría, identifica


cada valor e indica si se refiere a un valor constante o un valor variable.

FIGURA FÓRMULA ELEMENTOS ZONAS DE MEMORIA

Variable (s)
l = lado 1
P=l+m+n m = lado 2
n = lado 3 Constante (s)
P=Perímetro
Variable (s)
A= bXh
b = Base
TRIÁNGULO 2 h = Altura Constante (s)
A=Área

35
FIGURA FÓRMULA ELEMENTOS ZONAS DE MEMORIA
Variable (s)

P = 4a Constante (s)

Variable (s)
a = Lado
A=a
2 P=Perímetro
CUADRADO A=Área Constante (s)

Variable (s)

P = 2b + 2h
Constante (s)
b = Base
h = Altura
P=Perímetro Variable (s)
A=Área
RECTÁNGULO A= bxh
Constante (s)

Variable (s)

P = 4a a = Lado Constante (s)


P=Perímetro
Variable (s)
A= D x d
d=diagonal menor
2 D=diagonal mayor Constante (s)
ROMBO A=Área

Variable (s)

A= πr2 A= Area Constante (s)

R= Radio
Variable (s)

Constante (s)

36
A continuación se te presenta una sopa de letras con términos de las zonas de memoria y los
tipos de datos, complétala identificando la respuesta de la serie de preguntas que vienen al inicio
del ejercicio.

1.- Es la zona de memoria que cambia en la ejecución del programa

2.- Está representado por los toda la numeración compuesta por los dígitos del 0 al 9

3.- Es el nombre que se le asignará a la variable


4.- Es la zona de memoria que no cambiará en el transcurso de la ejecución del programa

5.- Este tipo de dato está compuesto por partes fraccionadas por lo tanto incluyen el punto
decimal

6.- Está representada por las comillas y se utilizan en los datos alfanuméricos para indicar a un
carácter o una cadena de caracteres _________________________

37
TIPOS DE OPERADORES

Asociativos

El único operador asociativo es el paréntesis ( ), el cual permite indicar en qué orden deben
realizarse las operaciones. Cuando una expresión se encuentra entre paréntesis, indica que las
operaciones que están adentro de ellos deben realizarse primero. Si en una expresión se
utilizan más de un paréntesis se deberá proceder primero con los que se encuentran más hacia
el centro de la expresión.

Si tenemos la expresión ((2 + 8) * 2 / 5) * 2 ; en esta expresión primero se realizaría la suma 2 +


8 porque es la operación con operadores asociativos que se tiene más al centro, enseguida se
realizaría con el primer resultado que es 10 * 2, ya que es la siguiente operación,
posteriormente el resultado de esta que es 20 lo dividiría entre 5 (20 / 5) y por último el
resultado de esta que es 4 lo multiplicaría por 2 obteniendo como resultado 8.

Aritméticos
Estos operadores nos permitirán operaciones aritméticas entre operadores: números,
constantes o variables. El resultado de una operación aritmética será un número. A
continuación se te presentan los operadores aritméticos, las operaciones que se pueden
realizar, un ejemplo del uso y el resultado de dicho ejemplo.

1. Si una expresión contiene subexpresiones con operadores asociativos, estos se deberán


de evaluar primero, respetando la jerarquía de los operadores aritméticos en esta
subexpresión, si las expresiones se encuentran anidadas por paréntesis, primero se
evalúan las que se encuentren en el último nivel de anidamiento es decir las que
se encuentren en el centro de los paréntesis.

2. En el caso de que se tenga dos operadores con la misma jerarquía, se procederá de


a evaluar de izquierda a derecha.

Relacionales
Estos operadores permiten comparar dos operandos. Los
operandos pueden ser: numérico, alfanumérico,
constantes o variables. El resultado que se va a obtener
al utilizar en una expresión con estos operadores será
verdadero o falso. Es necesario mencionar que la
comparación entre un dato numérico y un alfanumérico
no puede llevarse a cabo.

Lógicos
Estos operadores permiten formular condiciones complejas a partir de condiciones simples. Los
operadores lógicos son de conjunción AND (Y), disyunción OR (O) y negación NOT (NO).

La jerarquía de los cuatro tipos de operadores, considerando que en una expresión se tengan
todos esto o una parte de ellos es la siguiente:

38
A continuación se muestra una expresión matemática donde se identifica el orden en que se
aplica el proceso de solución

𝑅: − (4 ∗ (6 − 1)) + [52 ∗ (3 + 7)]


Procedimiento para resolver la expresión anterior:

1. 𝑅: − (4(5) + [25 ∗ (10)]


2. R: -20 + [250]
3. R: -20 + 250
4. R: 230

A continuación se muestra una expresión matemática donde se identifica el orden en que se


aplica el proceso de solución
10
𝑅: [4 ∗ 22 ] − {7 − (5 ∗ 4) + }
2
1. R: [ 4 * 4 ] – { 7 – (20) + 5 }
2. R: [ 16 ] – { 7 – 20 + 5 }
3. R: [ 16 ] – { - 8 }
4. R: [ 16 ] + 8
5. R: 16 + 8
6. R: 24

39
A continuación se te presenta una tabla con expresiones matemáticas, indica en cada una de
ellas la operación que se realizaría primero y sucesivamente hasta obtener un resultado.

Expresión matemática Prioridad de las operaciones


1.-

2.-
( 5 + 10 ) * 3 / ( 57 - 2^2 *2)
3.-

4.-

1.-

50-( ( 2 + 3 )^2 – 1 ) * 2 2.-

3.-

1.-

( (4- ( 8 – 2 ) + 2 ) * 8 )^2 2.-

3.-

1.-

42 + ( 3 – 2^3 ) * 5+10
2.-

3.-

1.-
( 50 + 2^3 * ( 6 – 4*2 )) / 3
2.-

3.-

40
Lista los operadores aritméticos por orden de su jerarquía, es decir la prioridad que tendrían al
encontrarse en una expresión.

LISTA DE OPERADORES
OPERADORES ARITMÉTICOS DE MAYOR JERARQUIA A LA MENOR

1.-

+, - , * , Mod, /, ** ó ᶺ, Div 2.-

3.-

Define cada característica de los operadores aritméticos, según lo siguiente:

Tipo de operandos: Entero, real, o Entero y Real

Tipo de resultado: Entero, real, o Entero y Real

Significado: Exponenciación, Resta, Modulo, División entera, Multiplicación y Suma.

Operador Operación Tipo de operando Tipo de resultado

*
Div

Mod

41
A continuación se te presentan una serie de expresiones con operadores relacionales,
indica en cada una si la expresión es VERDADERA o es FALSA y su justificación.

50 * 2 = 5 * 9 + 13 ( 5 * 2 / 2^2 ) Ӊ ( 2 * 5 )

Resultado: Resultado:
Justificación: Justificación:

10 / 5 * 4 ӈ 5 *9 2 * 3 Ӊ= 10 - 4

Resultado: Resultado:

Justificación: Justificación:

15 – 3 ӈӉ 4 * 3 (25 * 3 – 50 ) Ӊ 5 * 6 - 2

Resultado: Resultado:

Justificación: Justificación:

6*5ӈ8*7-6 9 * 5 – 3 = 10 * 5 - 8

Resultado: Resultado:

Justificación: Justificación:

42
En equipo de tres personas, completen las tablas de verdad de los operadores lógicos NOT,
AND y OR.

OR
Verdadero Verdadero
Falso
Verdadero
Falso

AND
Verdadero Falso
Falso
Verdadero
Falso

AND
Falso
Falso

43
Evalúa las siguientes listas de expresiones sobre los cuatro tipos de operadores, indicando
el resultado. Toma en cuenta la jerarquía de cada uno de ellos, las reglas que
representan, considera la tabla de verdad para los operadores lógicos, indicando si la
expresión es verdadera o falsa según sea el caso y justifica tu respuesta.

44
Relaciona cada expresión con su respuesta correcta colocando la clave que corresponda y
justifica tu respuesta.

RESPUESTAS
ACR) VERDADERO ARC) 50

CAR) 33 ACB) FALSO

BCR) 11 BDR) 67
OPERACIONES

NOT ( 25 ‫ ޓ‬2 * 7 ) AND ( 5 * 3 ‫ ޒ‬6 + 5 )


_______
R=

Justificación:
________

2 * 8 / 4 + 2 ‫ ޓ‬27 / 9 * 2 –

5 Justificación:
R=
________

(2*3+3*(5+2)/9+8)

Justificación:
R=

( 6 + ( 4 * 12 ) / 2 – 2 ) + 5

Justificación:
R=

45
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante la secuencia.
A continuación se te presenta una serie de reactivos los cuales deberás contestar subrayando la
respuesta que consideres correcta.

1. Consiste en emplear y aplicar los fundamentos de las matemáticas para determinar las
funciones de una computadora.
a) Lógica computacional b) Diseño gráfico c) Diseño modular
d) Lógica administrativa e) Diseño de sistemas

2. Es la expresión general que describe los objetos con los cuales opera el programa. Por ejemplo,
la edad y el domicilio de una persona, forman parte de sus datos.
a) Dato b) Función c) Variable d) Constante e) Información

3. Son zonas de memoria cuyo contenido cambia durante la fase de procesamiento de


información. Son objetos en los que el valor puede ser modificado a lo largo de la ejecución de un
programa.
a) Función b) Variable c) Datod) Identificadores e) Constante

4. Es un símbolo o palabra que significa que se ha de realizar cierta acción entre uno o dos valores
que son llamados operandos.
a) Constantesb) Operador c) Variable d) Constante e) Información

5.- Es el tipo de dato que está representado por cualquier carácter o conjunto de caracteres, ya
sean letras del abecedario (a, b, c, … z), números (0, 1, 2, 3 … 9) o símbolos especiales (%, $,#).
a) Numérico b) Entero c) Real d) Alfanumérico e) comillas

6.- A los tipos de datos que agregan el punto decimal se les conoce como:
a) Alfanuméricos b) Reales c) Enteros d) Numéricos e) Caracteres
7.- Es el ejemplo de un dato alfanumérico:
a) Dirección b) Edad c) Precios d) Cantidades e) Importes

8.- Patricia está elaborando un reporte de los tipos de datos, indícale cual es el ejemplo que
corresponde a los tipos de datos reales:
a) 25.32 b) 125 c) “Sonora” d) “# 203” e) “12.12”

9.- Si tienen la expresión (8 – 2 * ( 2 + 1 ) ) / 2 , ¿Cuál es la operación que se realizaría


primero?:
a) 8 – 2 b) 2 + 1 c) 2 * 2 d) 1 / 2 e) 3 * 2

10.- Son algunos de los operadores aritméticos excepto:


a) + b) * c) ‫ޓ‬ d) / e) -
11. Son las operaciones aritméticas con la más baja jerarquía al encontrarse en una expresión,
estas se evaluarían al final
a) Suma y resta b) División c) Resta y multiplicación d) Mod y Div e) Suma y div
y suma

46
12.- Es el tipo de operadores formulan condiciones complejas a partir de condiciones simples:
Relacional b) Lógica c) Asociativa d) Aritmética e) Acumulativa

13.- Es el operador lógico que para tener como resultado verdadero ambas premisas deberán ser
verdaderas, lo representa el operador de conjunción.
OR b) MOD c) AND d) NOT

Metodología de la lógica computacional para la solución de problemas cotidianos.


Conceptos de las fases de Metodología de la lógica computacional para la solución de
problemas.

Realiza un debate con tus compañeros de clase y en el grupo con tu maestro, contesta
las siguientes preguntas:

47
Metodología para la solución de problemas.
El proceso de resolución de un problema con una computadora conduce a la escritura de un
programa y la ejecución de la misma. Aunque el proceso de diseñar programas es
esencialmente un proceso creativo, se pueden considerar una serie de fases o pasos comunes,
que generalmente deben seguir todos los programas

Dentro de la disciplina de la programación siempre es necesario que el


programador de computadoras lleve a cabo una serie de fases al
elaborar un programa de computadora, esto implica que se lleve a cabo
una serie de pasos secuenciales y cronológicos comenzando con la
detección y definición del problema y conduce a la implantación del
programa que lo soluciona.

Estas fases son las siguientes:


1. Definición del problema.
2. Planeación de la solución (análisis del problema).
3. Algoritmo.
4. Diagrama de flujo.
5. Codificación y edición del problema.
6. Implantación, prueba y depuración del programa.
7. Documentación y mantenimiento.

1. Definición de problema: Es el enunciado del problema, el cual debe ser claro y completo. Es
fundamental conocer y delimitar por completo el problema, saber qué es lo que se desea que
realice la computadora, mientras esto no se conozca del todo, no tiene caso continuar con el
siguiente paso.
2. Análisis de la solución: Consiste en establecer una serie de preguntas acerca de lo que
establece el problema, para poder determinar si se cuenta con los elementos suficientes para
llevar a cabo la solución del mismo.
3. Diseño de la solución: Una vez definido y analizado el problema, se produce a la creación del
algoritmo (Diagrama de flujo o pseudocodigo) en el cual se da la serie de pasos ordenados que
nos proporcione un método explicito para la solución del problema.
4. Codificación: Consiste en escribir la solución del problema (de acuerdo al pseudocodigo); en
una serie de instrucciones detalladas en un código reconocible por la computadora; es decir un
lenguaje de programación (ya sea de bajo o alto nivel), a esta serie de instrucciones se le conoce
como PROGRAMA.
5. Prueba y depuración: Prueba es el proceso de identificar los errores que se presenten durante
la ejecución de programa.
La depuración consiste en eliminar los errores que se hayan detectado durante la prueba, para
dar paso a una situación adecuada y sin errores.
6. Documentación: Es la guía o comunicación escrita que sirve como ayuda para usar el
programa, o facilitar futuras modificaciones. A menudo, un programa escrito por una persona es
usado por muchas otras, por ello la documentación es muy importante; esta debe presentarse en
tres formas: EXTERNA, INTERNA y al USUARIO FINAL.
-Interna: Consiste en los comentarios o mensajes que se agregan al código de programa, que
aplican las funciones que realizan ciertos procesos, cálculos o formulas, para el entendimiento
del mismo.
-Externa: Está integrada por los siguientes elementos: Descripción del problema, nombre del
autor, diagrama de flujo y/o pseudocodigo, listas de variables y constantes, y codificación del
programa, esto con la finalidad de permitir su posterior adecuación a los cambios.

48
- Usuario Final: es la documentación que se le proporciona al usuario final, es una guía que indica
al usuario como navegar en el programa, presentando todas las pantallas y menús que se va a
encontrar y una explicación de los mismos, no contiene información de tipo técnico.
7. Mantenimiento: Se lleva a cabo después de terminado el programa, cuando se ha estado
trabajando un tiempo, y se detecta que es necesario hacer un cambio, ajuste
y/o complementación al programa para que siga trabajando de manera correcta. Para realizar
esta función el programa debe estar debidamente documentado, lo cual facilitará la tarea.

Elabora el cuadro sinóptico indicando en qué consisten los datos de entrada, de salida y
adicionales.

Dato de
Salida

Son los datos que nos hacen falta y


DEFINICIÓN con base en éstos se puede
DEL determinar la solución del
PROBLEMA problema.

49
Anota en el paréntesis el número de la fase de la metodología para la solución de problemas
que corresponda, una vez hecho, anota en la columna derecha el orden que le corresponde a
cada una.

NOMBRE DE LAS FASES

1.- Planeación de la solución 5.- Codificación y edición del programa


2.- Algoritmo 6.- Pruebas y depuración
3.- Definición del problema 7.- Documentación y mantenimiento
4.- Diagrama de flujo

Orden
DESCRIPCIÓN DE LAS FASES
secuencial
Es la representación gráfica, utilizando bloques o figuras
( )
para indicar las acciones en la solución del problema.

Aquí se definen los procesos al que se requieren someter


( )
los datos identificados a fin de obtener los resultados
esperados.

Se pretende que toda la información se recabe en un escrito


( )
para si en algún caso se encuentren errores estos se pueden
modificar.

Está representada por el enunciado del problema, permitirá


( )
saber qué es lo que se pretende solucionar el cual debe ser
claro y completo.

Es una secuencia ordenada y cronológica de pasos que


( ) llevan a la solución de un problema o a la ejecución de una
tarea.

Se escribe el problema en un lenguaje de


( )
programación introduciendo el programa por medio de un
editor de textos.

( ) Se checará el programa ejecutándolo hasta concluir que los


resultados son los deseados, de lo contrario se inspeccionará
detenidamente hasta encontrar el error.

50
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante el desarrollo
de la secuencia.

A continuación se te presentan una serie de preguntas con cinco opciones de respuesta. Subraya
la respuesta correcta.

1. Joaquín necesita elaborar un programa de computadora que le permita obtener el área de un


triángulo, indica que datos de entrada debe de solicitar.

a) área y lado1 b) lado1 y lado2 c) lado2 y área d) lado3 y lado1 e) base y altura

2. En una casa de cambio necesitan elaborar un programa para convertir una cantidad de dólares
a una cantidad en pesos, en este problema los datos de entrada se refiere a
(representada como una variable)

a) cant_dolars b) cant_pess c) tipo_cambio d) divisas e) mul_dolpes

3. Considerando que en una tienda comercial ofrecen un 15% de descuentos en las compras que
se realizan siempre y cuando el total de la compra sea mayor a $1,000, identifica el dato adicional
que ayuda a resolver el problema.

a) total_pagar b) total_compra c) descuento d) 1000 e) t_pag ‫ ޓ‬1000–15 %

Estructuras de control selectivas simples en el diseño de algoritmos para la solución de


problemas por computadora

Un algoritmo es un conjunto finito de pasos específicos y organizados para realizar una labor.
También se define como una secuencia de pasos lógicos necesarios para llevar a cabo una
tarea específica, como la solución de un problema.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como
de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un
lenguaje diferente de programación y ejecutarse en una computadora distinta.

Cuando se diseñan algoritmos para ejecutar ciertas tareas, se deben considerar estas. Las
acciones que se pueden llevar a cabo en un algoritmo son las siguientes: pedir datos, desplegar
datos, evaluar condiciones, y ejecutar operaciones.

Características de los Algoritmos:

Las características fundamentales que debe cumplir todo algoritmo son:

ð Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.

51
ð Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.

ð Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o
sea, debe tener un numero finito de pasos.

La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo
de receta de cocina citado anteriormente se tendrá:

Entrada: ingrediente y utensilios empleados.

Proceso: elaboración de la receta en la cocina.

Salida: terminación del plato (por ejemplo, cordero).

Las características fundamentales que debe cumplir todo algoritmo son:


Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido.
Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez
Un algoritmo debe ser finito.
Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe de tener un número
finito de pasos

Realiza la captura de dos números, realiza la suma y despliega en pantalla el resultado de esta
operación.
En este enunciado encontramos a simple vista los datos principales del problema, el dato de
salida será la suma, los datos de entrada son los valores de los números y no contamos con
datos adicionales.
Los algoritmos como hemos mencionado, son instrucciones no ambiguas que nos permiten la
solución de un problema. Existen 3 tipos de algoritmos: Secuenciales, selectivos (simples y
compuestos) y Repetitivos (Cíclicos).
Secuenciales: Son en los que para su solución se llevan a cabo de manera serial, es decir un
paso tras otro, sin condición alguna.
Selectivos simples: Son aquellos en los que se requiere una condición para su solución
Selectivos compuestos: Son los que para resolverse ocupan de dos o más condiciones.
Repetitivos o cíclicos: Este último tipo de algoritmo puede involucrar cualquiera de los dos casos
anteriores, haciendo hincapié que se repiten las instrucciones un determinado número de veces.

52
Problema secuencial (lineal)
Algoritmo para asistir a clases:
Desarrollo:
0. Inicio
1. Levantarse
2. Bañarse
3. Vestirse
4. Desayunar
5. Cepillarse los dientes
6. Salir de casa
7. Tomar el autobús
8. Llegar a la universidad.
9. Buscar el aula
10. Ubicarse en un asiento
11. Fin

Problema secuencial (lineal)


Algoritmo que lea dos números, calculando y escribiendo el valor de su suma, resta,
producto y división
Desarrollo:
1 Var numero1, numero2, resultado: numérica
1. Inicio
2. Escribir "Introduce el primer número"
3. Leer numero1
4. Escribir "Introduce el segundo número"
5. Leer numero2
6. resultado<-numero1+numero2
7. Escribir resultado
8. resultado<-numero1-numero2
9. Escribir resultado
10. resultado<-numero1*numero2
11. Escribir resultado
12. resultado<-numero1/numero2
13. Escribir resultado
14. Fin

53
1. Elabora el algoritmo para calcular el área de un cuadrado.

2. Elabora para convertir una distancia dada en kilómetros a metros.

Problemas selectivos simples

1. Un cliente ejecuta un pedido a una fábrica. Esta examina en su banco de datos la ficha
del cliente; si el cliente es solvente entonces la empresa acepta el pedido; en caso
contrario rechazara el pedido. Redactar el algoritmo correspondiente.
Los pasos del algoritmo son:
1. inicio
2. leer el pedido
3. examinar la ficha del cliente
4. si el cliente es solvente aceptar pedido; en caso contrario, rechazar pedido
5. fin

54
2. Un cliente de una tienda de electrónica tiene descuento del 10% en su compra si esta
excede los $3000; en caso contrario solo un 5%. Redactar el algoritmo
correspondiente

Los pasos del algoritmo son:

1. inicio
2. leer la compra
3. evaluar la compra
4. si la compra es mayor de 3000 hacer un 10% de descuento, de lo contrario un 5% de
descuento
5. fin

3. Una persona es contratado para cierto puesto en una empresa si su edad es igual o
mayor a 18 años.

Los pasos del algoritmo son:

1. Inicio
2. Leer edad
3. Es edad >= 18 si se cumple se acepta; caso contrario se rechaza
4. Fin

Aplica algoritmos para la solución de problemas cotidianos


Como hemos visto en puntos anteriores, para dar solución a un problema a través de un
algoritmo, se debe considerar el siguiente procedimiento.

Datos de entrada: Valores que necesitamos conocer, es decir se deben capturar


Proceso: Fórmulas a utilizar. Estas fórmulas utilizan normalmente los datos de entrada
Datos de Salida: Reporte o impresión de valores de variables a calcular

Identifica los datos de entrada, salida y adicionales de los siguientes problemas.

55
Datos de Datos
Definición del problema Datos de salida
entrada adicionales
1. Una persona se dirige al banco y deposita
dinero, logrando un 20% de interés
mensual a ganar, determina la cantidad
de dinero que recibirá a fin de mes.

2. En una empresa de la región se requiere


obtener los sueldos de cada uno de sus
empleados, considera que la hora
trabajada se paga a $80.

3. Una persona compró una estancia en un


país sudamericano. La extensión de la
estancia está especificada en acres,
obtén a cuántas hectáreas corresponde,
considera que 1 acre es igual a .4047
hectáreas.
4. En una papelería se ofrece un 15%
sobre el total de la compra, obtén la
cantidad de dinero que tendrá que pagar
un cliente.
5. Conversión de la temperatura de grados
Centígrados a: Fahrenheit y Kelvin.
F=9/5 C + 32, K=C + 273

Diseña un algoritmo para hallar el área de un triángulo rectángulo cuya Base mide 3 cm, la
Altura 4 cm y la Hipotenusa 5 cm.

56
Diseña un algoritmo para hallar el área de un triángulo rectángulo cuya Base mide 3 cm, la
Altura 4 cm y la Hipotenusa 5 cm.

Identifica el problema que se plantea en los pasos de la columna de la derecha. Anota en el


paréntesis el número correspondiente a cada concepto de los paréntesis de la izquierda.

1. El área de un triángulo rectángulo.

( ) Formular el problema 2. Ya se encuentra claramente planteado.

3. Base, Altura, Hipotenusa, tipo de triángulo.

( ) Resultados esperados 4. La incógnita es el área y todos los valores son


constantes.

5. El valor de la hipotenusa se puede omitir.


( ) Datos disponibles
6. Utilizar las medidas dadas.

7. Debe preguntarse si sus conocimientos


( ) Determinar las restricciones actuales de matemáticas le permiten resolver
este problema; de no ser así, debe plantear
una estrategia para obtener los conocimientos
( ) Procesos necesarios requeridos.

8. Guardar en dos variables (BASE y ALTURA)


los valores de Base y Altura; Guardar en una
constante (DIV) el divisor 2; aplicar la fórmula
BASE*ALTURA/DIV y guardar el resultado en
la variable AREA; comunicar el

9. resultado (AREA).

57
De los siguientes casos identifica los tipos de datos así como el proceso de solución. Además,
desarrolla el algoritmo correspondiente.
1. Calcula el área de un círculo, considerando que para obtenerlo se requiere multiplicar
2
¶ (3.1416) por radio al cuadrado. Área=¶ * r
Entradas:
ALGORITMO
Salidas:

Adicionales:

Proceso de solución

2. Calcula el número de pulsaciones que una persona debe tener por cada 10 segundos
de ejercicio, tomando en cuenta la siguiente fórmula:
Numpul= (220-edad)/10.

Entradas: ALGORITMO

Salidas:

Adicionales

Proceso de solución:

58
3. En una tienda de abarrotes cuentan con la siguiente promoción; Si el cliente compra
más de $1000.00, éste recibirá un 30% de descuento, en caso contrario, solo recibe
un 5% de descuento sobre el valor de la compra. ¿Cuánto pagará un cliente por su
compra?

Entradas: ALGORITMO

Salidas:

Adicionales:

Proceso de solución:

4. En una llantera anuncian la siguiente promoción, si el cliente compra más de 2


llantas, estas se cobran con un 15% de descuento, en caso contrario no obtienen
descuento.
¿Cuánto pagará un cliente por su compra?
Entradas:
ALGORITMO
Salidas:

Adicionales:

Proceso de solución:

59
Realiza los siguientes algoritmos, analizando primero el planteamiento del problema.

Problema 2 Problema 3
Un vendedor desea calcular su comisión Ingresar por teclado el nombre, la edad y el
total sobre la venta de varios artículos. Al Sexo de cualquier persona e imprima, solo si
vendedor le corresponde el 5% de su la persona es de sexo masculino y mayor de
comisión sobre artículos cuyo precio es edad, el nombre de la persona. NOTA:
menor de $100 y el 7.5 % de comisión sobre suponga que en el campo denominado sexo
aquellos artículos cuyo precio es de $100 o el número 1 es masculino o el número 2 es
más. Suponga que el vendedor hizo femenino.
N ventas.

Algoritmo Algoritmo

60
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante el desarrollo de
la secuencia
De los siguientes casos realiza las primeras tres fases de la metodología para la solución de
problemas: a) Definición del problema b) Planeación de la solución y c) Algoritmo.
Caso 1. En un concurso de veleros, se desea determinar la velocidad promedio de cada nave,
conociendo la distancia y el tiempo, encuentra su solución.
Planeación de la
Definición del problema Algoritmo
solución

Caso 2. Requieres conocer a cuántos megabytes equivale cada archivo dado en bytes, por lo
que se necesita calcular la conversión de bytes a megabytes.
Considera que 1 Megabyte= 1’ 048,576 bytes
Estructura su solución a partir de las fases que se te solicitan a continuación.
Planeación de la
Definición del problema Algoritmo
solución

61
A continuación se te presentan una serie de preguntas con cinco opciones de respuesta. Subraya
la respuesta correcta que corresponda a cada una de ellas.

1. Se le define como un conjunto de operaciones y procedimientos que tienen un orden lógico


y que deben seguirse para resolver un problema.
a) Pruebas b) Mantenimiento c) Documentación d) Depuración e) Algoritmo
2. Juan Pablo tiene que exponer sobre las características de los algoritmos, a continuación
aparece un listado de ellas, excepto:
a) Ser preciso y claro
b) Estar bien definido
c) Representarse gráficamente
d) Llevar un orden lógico
e) Ser finito
3. Para poder realizar los algoritmos se deben de definir los siguientes datos:
a) Entrada b) Almacenamiento c) Salida d) Adicionales e) Validación
4. Es el enunciado del problema, el cual debe ser claro y completo. Es fundamental conocer y
delimitar por completo el problema, saber qué es lo que se desea que realice la computadora,
mientras esto no se conozca del todo, no tiene caso continuar con el siguiente paso.
a) Definición del b) Planeación de c) Salida d) Adicionales e) Validación
problema la solución

5. Consiste en establecer una serie de preguntas acerca de lo que establece el problema, para
poder determinar si se cuenta con los elementos suficientes para llevar a cabo la solución del
mismo.

a) Definición del b) Análisis de c) Salida d) Adicionales e) Validación


problema la solución

6. Una vez definido y analizado el problema, se produce a la creación del algoritmo (Diagrama de
flujo o pseudocodigo) en el cual se da la serie de pasos ordenados que nos proporcione
un método explicito para la solución del problema.
a) Definición del b) Análisis de c) Salida d) Adicionales e) Diseño de la solución
problema la solución

62
Problemas Selectivos Simples.
En binas resolver los siguientes planteamientos. Con ayuda del profesor despejar las dudas
correspondientes a cada ejercicio.

1) Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre la cantidad
que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos
excedan a $7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.
2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio
de tres calificaciones es mayor o igual a 70; reprueba en caso contrario.
3) En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000
¿Cuál será la cantidad que pagara una persona por su compra?
4) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. manera:
Si trabaja 40 horas o menos se le paga $16 por hora
Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada
hora extra.
5) Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre la cantidad
que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos
excedan a $7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.
6) Que lea dos números y los imprima en forma ascendente
7) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber cuántas calorías
consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que
tiene permitido realizar son únicamente dormir o estar sentado en reposo. Los datos que tiene son
que estando dormido consume 1.08 calorías por minuto y estando sentado en reposo consume
1.66 calorías por minuto.
8) Hacer un algoritmo que imprima el nombre de un artículo, clave, precio original y su precio con
descuento. El descuento lo hace en base a la clave, si la clave es 01 el descuento es del 10% y si
la clave es 02 el descuento en del 20% (solo existen dos claves).
9) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se compran tres
camisas o más se aplica un descuento del 20% sobre el total de la compra y si son menos de tres
camisas un descuento del 10%
10) Una empresa quiere hacer una compra de varias piezas de la misma clase a una fábrica de
refacciones. La empresa, dependiendo del monto total de la compra, decidirá qué hacer para pagar
al fabricante.
Si el monto total de la compra excede de $500 000 la empresa tendrá la capacidad de invertir de
su propio dinero un 55% del monto de la compra, pedir prestado al banco un 30% y el resto lo
pagará solicitando un crédito al fabricante.
Si el monto total de la compra no excede de $500 000 la empresa tendrá capacidad de invertir de
su propio dinero un 70% y el restante 30% lo pagara solicitando crédito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crédito.

63
Problemas Selectivos Simples.
Realizar para entregar los ejercicios que el maestro considere pertinentes, pares o impares
1) Calcular el total que una persona debe pagar en una llantera, si el precio de cada llanta es de
$800 si se compran menos de 5 llantas y de $700 si se compran 5 o más.
2) En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento
dependiendo de un número que se escoge al azar. Si el numero escogido es menor que 74 el
descuento es del 15% sobre el total de la compra, si es mayor o igual a 74 el descuento es del
20%. Obtener cuánto dinero se le descuenta.
3) Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos de
ejercicio aeróbico; la fórmula que se aplica cuando el sexo es femenino es:
Num. Pulsaciones= (220-edad)/10 y si es masculino:
Num. Pulsaciones = (210-edad)/10
4) Una compañía de seguros está abriendo un depto. De finanzas y estableció un programa para
captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es menor
que $50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor que $50 000 la
cuota a pagar será el 2% del monto. La afianzadora desea determinar cuál será la cuota que debe
pagar un cliente.
5) En una escuela la colegiatura de los alumnos se determina según el número de materias que
cursan. El costo de cualquier materia es el mismo.
Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente: si
el promedio obtenido por un alumno en el último periodo es mayor o igual que 9, se le hará un
descuento del 30% sobre la colegiatura y no se le cobrara IVA; si el promedio obtenido es menor
que 9 deberá pagar la colegiatura completa, la cual incluye el 10% de IVA. Obtener cuanto debe
pagar un alumno
6) Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes condiciones:
Si los ingresos del comprador son menores de $8000 o más el enganche será del 15% del costo
de la casa y el resto se distribuirá en pagos mensuales, a pagar en diez años. Si los ingresos del
comprador son menos de $8000 o más el enganche será del 30% del costo de la casa y el resto
se distribuirá en pagos mensuales a pagar en 7 años.
La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y cuanto
por cada pago parcial.
7) El gobierno ha establecido el programa SAR (Sistema de Ahorro para el Retiro) que consiste
en que los dueños de la empresa deben obligatoriamente depositar en una cuenta bancaria un
porcentaje del salario de los trabajadores; adicionalmente los trabajadores pueden solicitar a la
empresa que deposite directamente una cuota fija o un porcentaje de su salario en la cuenta del
SAR, la cual le será descontada de su pago.
Un trabajador que ha decidido aportar a su cuenta del SAR desea saber la cantidad total de dinero
que estará depositado a esa cuenta cada mes, y el pago mensual que recibirá.
8) Una persona desea iniciar un negocio, para lo cual piensa verificar cuánto dinero le prestara el
banco por hipotecar su casa. Tiene una cuenta bancaria, pero no quiere disponer de ella a menos

64
que el monto por hipotecar su casa sea muy pequeño. Si el monto de la hipoteca es menor que
$1 000 000 entonces invertirá el 50% de la inversión total y un socio invertirá el otro 50%. Si el
monto de la hipoteca es de $ 1 000 000 o más, entonces invertirá el monto total de la hipoteca y
el resto del dinero que se necesite para cubrir la inversión total se repartirá a partes iguales entre
el socio y el.
9) El gobierno del estado de México desea reforestar un bosque que mide determinado número
de hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá
sembrar de la siguiente manera:
Porcentaje de la superficie del bosque tipo de árbol
70% pino, 20% oyamel, 10% cedro.
Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá
sembrar de la siguiente manera:
Porcentaje de la superficie del bosque de tipo de árbol
50% pino, 30% oyamel, 20% cedro
El gobierno desea saber el número de pinos, oyameles y cedros que tendrá que sembrar en el
bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15
oyameles y en 18 metros cuadrados caben 10 cedros. También se sabe que una hectárea equivale
a 10 mil metros cuadrados.
10) Una fábrica ha sido sometida a un programa de control de contaminación para lo cual se
efectúa una revisión de los puntos IMECA generados por la fábrica. El programa de control de
contaminación consiste en medir los puntos IMECA que emite la fábrica en cinco días de una
semana y si el promedio es superior a los 170 puntos entonces tendrá la sanción de parar su
producción por una semana y una multa del 50% de las ganancias diarias cuando no se detiene
la producción. Si el promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá
ni sanción ni multa. El dueño de la fábrica desea saber cuánto dinero perderá después de ser
sometido a la revisión.
11) Una persona se encuentra con un problema de comprar un automóvil o un terreno, los cuales
cuestan exactamente lo mismo. Sabe que mientras el automóvil se devalúa, con el terreno sucede
lo contrario. Esta persona comprara el automóvil si al cabo de tres años la devaluación de este no
es mayor que la mitad del incremento del valor del terreno. Ayúdale a esta persona a determinar
si debe o no comprar el automóvil.

65
Diagramas de flujo lineales y modulares en la solución de problemas
Concepto y la simbología de los diagramas de flujo para la solución de problemas
cotidianos
Estructuras de control selectivas simples en el diseño de diagramas de flujo.
Utilizar diagramas de flujo en la programación representa una serie de beneficios, tales como:
 Favorecer la comprensión del proceso al presentarlo visualmente.
 Mejorar la rapidez con la que se comprenden las relaciones entre los procesos.
 Permitir un análisis efectivo de las diferentes secciones del programa.
 Ofrecer una documentación más adecuada de los programas.
 Facilitar la codificación de los programas.
 Al momento de realizar las pruebas a los programas permite llevar a cabo una
depuración más efectiva al analizar su estructura de una manera más simplificada.

Investiga: a) los bloques que se utilizan para realizar un diagrama de flujo, explicando la función
de cada una de ellas y b) las reglas para la construcción de diagramas de flujo.
Entrega de manera impresa a tu maestro
DIAGRAMA DE FLUJO
Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de
diversos símbolos para representar operaciones específicas, es decir, es la representación gráfica
de las distintas operaciones que se tienen que realizar para resolver un problema, con indicación
expresa el orden lógico en que deben realizarse.
Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas
para indicar la secuencia de operación. Para hacer comprensibles los diagramas a todas las
personas, los símbolos se someten a una normalización; es decir, se hicieron símbolos casi
universales, ya que, en un principio cada usuario podría tener sus propios símbolos para
representar sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que sólo
aquel que conocía sus símbolos, los podía interpretar. La simbología utilizada para la elaboración
de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente.
El diagrama de flujo representa la forma más tradicional y duradera para especificar los detalles
algorítmicos de un proceso. Se utiliza principalmente en programación, economía y procesos
industriales.
IMPORTANCIA DE LOS DIAGRAMAS DE FLUJO
Los diagramas de flujo son importantes porque nos facilita la manera de representar visualmente
el flujo de datos por medio de un sistema de tratamiento de información, en este realizamos
un análisis de los procesos o procedimientos que requerimos para realizar un programa o
un objetivo.
A continuación se muestran los bloques que se utilizan para elaborar diagramas de flujo

66
Cada símbolo normal de diagrama de flujo tiene un significado especial.

Expresa Inicio o Fin de un Programa.

Expresa operación algebraica o de asignación.

Expresa condiciones y asociaciones alternativas de una decisión lógica.

Expresa condición y acciones alternativas de una decisión numérica.

Entrada / Salida: Representa cualquier tipo de Fuente de entrada y salida

Entrada: Lectura de datos por tarjeta perforadas.

Conector dentro de página.

Representa resultado mediante un reporte impreso

67
Conector fuera de página.

Expresa operación cíclica repetitiva.

Expresa proceso de llamada a una subalterna.

Representa datos grabados en una cinta magnética.

Almacenamiento en línea Disco Magnético.

REGLAS PARA LA CREACIÓN DE DIAGRAMAS


1. Los diagramas de flujo deben escribirse de arriba hacia abajo y/o de Izquierda a derecha.
2. Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica su
dirección que fluye la información procesos, se deben utilizar solamente líneas de flujo
horizontal o vertical (nunca diagonales).
3. Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a
un sitio distinto, se pudiera realizar utilizando los conectores, se debe tener en cuenta que
solo se van a utilizar conectores cuando sean estrictamente necesario.
4. No deben quedar líneas de flujo sin conectar.
5. Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de
muchas palabras.
6. Todos los símbolos pueden tener más de una línea de entrada, a excepto del símbolo final.
7. Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida.

68
Considerando la información anterior, completa la siguiente tabla:

Bloques: Función:

Reglas para la elaboración de diagramas de flujo:

1.-
2.-

3.-

4.-

5.-

6.-

7.-

8.-

Referencias bibliográficas:

Direcciones de internet consultadas:

69
Completen la siguiente tabla con el nombre y función de los bloques que se te presentan a
continuación, es importante que empleen la información recabada en la tarea de investigación
no. 1 para la solución del ejercicio.

Bloque Nombre Función

70
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante el desarrollo
de la secuencia.

A continuación se te presentan una serie de preguntas con cinco opciones de respuesta.


Subraya la respuesta correcta.

1. A Carmen Sofía, en su examen de submódulo 1, le solicitan que identifique un esquema


para representar gráficamente un algoritmo, ¿Cuál sería las respuesta correcta?

a) Diagrama de flujo b) Árbol de decisión c) Tablas de decisión d)Warnier

2. Para construir un diagrama de flujo, ¿Cuál es el bloque que debes de emplear para
imprimir el resultado?

a) b) c) d) e)

3. ¿Cuál es el bloque que emplearías para representar una condición o decisión?

a) b) c) d) e)

4. De los siguientes esquemas de diagrama de flujo que se te presentan, identifica


la representación correcta.

a) b) c) d) e)

5. A continuación se presenta un listado de reglas a considerar para construir un diagrama


de flujo, todas son correctas, excepto:
a) Puede llegar más de una línea a un símbolo determinado
b) Las líneas utilizadas deben ser rectas: horizontales u verticales
c) Todas las líneas del flujo deben de estar conectadas
d) Debe de desarrollarse de arriba hacia abajo y de izquierda a derecha
e) En caso de requerir más de una hoja el diagrama de flujo, emplear conectores

71
Diagrama de flujo lineales y modulares para la solución de problemas

En subtemas anteriores aprendiste a identificar los bloques y funciones de los diagramas de


flujo, así como las reglas para su construcción, los cuales te servirán para su elaboración, pero
te pueden surgir los siguientes cuestionamientos: 1. ¿Cuál es el bloque que debes emplear
cuando vas a realizar varios procesos alternos?, 2.¿Y si no me alcanza la hoja para el diagrama
de flujo, que conector debo de utilizar?, 3.¿Puede haber más de una línea que conecte un
símbolo (bloque)? y 4. ¿Se puede desarrollar el diagrama de flujo de derecha a izquierda?

Los diagramas de flujo permiten crear una estructura gráfica flexible que ilustran los pasos a
seguir, facilitando la escritura del programa, por lo que en esta sección desarrollaremos
diagramas de flujo lineales y modulares. A continuación elabora en tu cuaderno un diagrama
con las figuras que aquí se te dan, asegúrate de ordenarlas en el orden correcto.

1. Obtén la fuerza que se ejerce sobre un cuerpo, conociendo su masa y la aceleración con la
que se desplaza.

Figuras a utilizar:
Fuerza= masa x aceleración
f
fin
f= m * a Inicio

m,a

72
De los siguientes casos, realiza el algoritmo del problema y desarrolla su diagrama de flujo
correspondiente.

1. En una planta de alimentos, se cuenta con un contenedor de granos en forma


cilíndrica, se desea obtener su capacidad, considera que su v= π r2 h, donde
r=radio, h=altura y v=volumen.

Algoritmo Diagrama de flujo

2. Obtén de una cantidad de horas el equivalente en minutos, segundos y días.

Algoritmo Diagrama de flujo

73
3. Calcula el peso ideal de acuerdo al índice de Broca considerando que el peso ideal=
altura en cm - 100.

Algoritmo Diagrama de flujo

4. Que lea una cantidad de dólares a comprar y el tipo de cambio, lo convierta en yenes
y pesetas e imprima ambos resultados.

Algoritmo Diagrama de flujo

74
A continuación se presenta el diagrama de flujo, encierra los errores que existen. Es
importante indicar que hay 5 errores en el diagrama.
A una secretaria se le paga según el número de oficios que realiza al día. Si realiza más de 49
oficios se le paga $2 por c/u, si no, se le paga $1.50 por cada uno de ellos. Obtener el sueldo de
hoy tomando en cuenta el número de oficios elaborados

75
A continuación se te presentan unos cuestionamientos, cada uno con cinco opciones de
respuesta. Subraya la respuesta correcta.
1. Es la representación gráfica de un algoritmo que facilita la estructuración de la solución de
problemas
A) Operadores B) Algoritmo C) Programa
D) Lenguaje E) Diagrama

2. De los siguientes bloques, ¿Cuál indica el inicio o fin de un diagrama?


A) B) C)

D) E)

3.- ¿Este bloque permite solicitar los datos a utilizar en el programa?


A) B) C)

D) E)

4. De los siguientes bloques cuál indica las condiciones o decisiones:

A) B) C)

D) E)

5. Uno de los beneficios de desarrollar diagramas de flujo es:

A) Favorece la comprensión B) Permite un análisis efectivo C) Codifica la


del proceso al presentarlo de las diferentes secciones del solución del
visualmente. programa. problema en
D) Mejora la rapidez con la que E) Ofrece una documentación forma efectiva.
se comprenden las relaciones más adecuada de los
entre los procesos. programas.

76
A continuación, lee el planteamiento del siguiente problema, en base a éste, analiza diagrama de
flujo siguiente y una vez hecho, selecciona la respuesta correcta de las opciones mostradas al final.
Una universidad selecciona estudiantes de acuerdo a su promedio, al porcentaje de dominio de
inglés y al porcentaje de dominio de computación.
Si un estudiante cuenta con promedio de 9, domina el inglés 80% y domina computación al 70%
de dominio ¿Cuál será su la decisión de la institución educativa?
Considera que:

prom=promedio
ing= % dominio
inglés com=% dominio computación

Inicio

prom,ing,c

no si
prom>=8

“se requiere
no si
mayor promedio” ing>=70 y

“falta com>=80
“bienvenido”
capacitarse”

fin

a) Se requiere mayor promedio


b) Falta capacitarse
c) Bienvenido
d) Se requiere mayor promedio y falta capacitarse
e) Bienvenido, pero falta capacitarse

77
Problemas Selectivos Simples.
En binas elaborar los diagramas de flujo correspondientes para cada ejercicio. Resolver las
dudas pertinentes con tu maestro.

1) Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre la cantidad que
tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a
$7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.
2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de
tres calificaciones es mayor o igual a 70; reprueba en caso contrario.
3) En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 ¿Cuál
será la cantidad que pagara una persona por su compra?
4) Un obrero necesita calcular su salario semanal, el cual se obtiene de la sig. Manera:
Si trabaja 40 horas o menos se le paga a $16 por hora.
Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada
hora extra.
5) Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre la cantidad que
tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a
$7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta.
6) Que lea dos números y los imprima en forma ascendente
7) Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber cuántas calorías
consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que
tiene permitido realizar son únicamente dormir o estar sentado en reposo. Los datos que tiene son
que estando dormido consume 1.08 calorías por minuto y estando sentado en reposo consume 1.66
calorías por minuto.
8) Hacer un algoritmo que imprima el nombre de un artículo, clave, precio original y su precio con
descuento. El descuento lo hace en base a la clave, si la clave es 01 el descuento es del 10% y si la
clave es 02 el descuento en del 20% (solo existen dos claves).
9) Hacer un algoritmo que calcule el total a pagar por la compra de camisas. Si se compran tres
camisas o más se aplica un descuento del 20% sobre el total de la compra y si son menos de tres
camisas un descuento del 10%
10) Una empresa quiere hacer una compra de varias piezas de la misma clase a una fábrica de
refacciones. La empresa, dependiendo del monto total de la compra, decidirá qué hacer para pagar
al fabricante.
Si el monto total de la compra excede de $500 000 la empresa tendrá la capacidad de invertir de su
propio dinero un 55% del monto de la compra, pedir prestado al banco un 30% y el resto lo pagara
solicitando un crédito al fabricante.
Si el monto total de la compra no excede de $500 000 la empresa tendrá capacidad de invertir de su
propio dinero un 70% y el restante 30% lo pagara solicitando crédito al fabricante.
El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crédito.

78
Problemas Selectivos Simples.
Realizar los diagramas de flujo para entregar los ejercicios que el maestro considere
pertinentes, pares o impares
1) Calcular el total que una persona debe pagar en una llantera, si el precio de cada llanta es de $800
si se compran menos de 5 llantas y de $700 si se compran 5 o más.
2) En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento
dependiendo de un número que se escoge al azar. Si el numero escogido es menor que 74 el
descuento es del 15% sobre el total de la compra, si es mayor o igual a 74 el descuento es del 20%.
Obtener cuánto dinero se le descuenta.
3) Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos de ejercicio
aeróbico; la fórmula que se aplica cuando el sexo es femenino es:
Num. Pulsaciones= (220-edad)/10 y si es masculino:
Num. Pulsaciones = (210-edad)/10
4) Una compañía de seguros está abriendo un depto. De finanzas y estableció un programa para
captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es menor que
$50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor que $50 000 la cuota a
pagar será el 2% del monto. La afianzadora desea determinar cuál será la cuota que debe pagar un
cliente.
5) En una escuela la colegiatura de los alumnos se determina según el número de materias que
cursan. El costo de las materias es el mismo
Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente: si el
promedio obtenido por un alumno en el último periodo es mayor o igual que 9, se le hará un
descuento del 30% sobre la colegiatura y no se le cobrara IVA; si el promedio obtenido es menor que
9 deberá pagar la colegiatura completa, la cual incluye el 10% de IVA. Obtener cuanto debe pagar
un alumno
6) Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes condiciones: Si
los ingresos del comprador son menores de $8000 o más el enganche será del 15% del costo de la
casa y el resto se distribuirá en pagos mensuales, a pagar en diez años. Si los ingresos del
comprador son menos de $8000 o más el enganche será del 30% del costo de la casa y el resto se
distribuirá en pagos mensuales durante 7 años.
La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y cuanto
por cada pago parcial.
7) El gobierno ha establecido el programa SAR (Sistema de Ahorro para el Retiro) que consiste en
que los dueños de la empresa deben obligatoriamente depositar en una cuenta bancaria un
porcentaje del salario de los trabajadores; adicionalmente los trabajadores pueden solicitar a la
empresa que deposite directamente una cuota fija o un porcentaje de su salario en la cuenta del
SAR, la cual le será descontada de su pago.
Un trabajador que ha decidido aportar a su cuenta del SAR desea saber la cantidad total de dinero
que estará depositado a esa cuenta cada mes, y el pago mensual que recibirá.
8) Una persona desea iniciar un negocio, para lo cual piensa verificar cuánto dinero le prestara el
banco por hipotecar su casa. Tiene una cuenta bancaria, pero no quiere disponer de ella a menos

79
que el monto por hipotecar su casa sea muy pequeño. Si el monto de la hipoteca es menor que $1
000 000 entonces invertirá el 50% de la inversión total y un socio invertirá el otro 50%. Si el monto
de la hipoteca es de $ 1 000 000 o más, entonces invertirá el monto total de la hipoteca y el resto del
dinero que se necesite para cubrir la inversión total se repartirá a partes iguales entre el socio y el.
9) El gobierno del estado de México desea reforestar un bosque que mide determinado número de
hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces decidirá
sembrar de la siguiente manera:
Porcentaje de la superficie del bosque tipo de árbol
70% pino, 20% oyamel, 10% cedro.
Si la superficie del terreno es menor o igual a un millón de metros cuadrados, entonces decidirá
sembrar de la siguiente manera:
Porcentaje de la superficie del bosque de tipo de árbol
50% pino, 30% oyamel, 20% cedro
El gobierno desea saber el número de pinos, oyameles y cedros que tendrá que sembrar en el
bosque, si se sabe que en 10 metros cuadrados caben 8 pinos, en 15 metros cuadrados caben 15
oyameles y en 18 metros cuadrados caben 10 cedros. También se sabe que una hectárea equivale
a 10 mil metros cuadrados.
10) Una fábrica ha sido sometida a un programa de control de contaminación para lo cual se efectúa
una revisión de los puntos IMECA generados por la fábrica. El programa de control de contaminación
consiste en medir los puntos IMECA que emite la fábrica en cinco días de una semana y si el
promedio es superior a los 170 puntos entonces tendrá la sanción de parar su producción por una
semana y una multa del 50% de las ganancias diarias cuando no se detiene la producción. Si el
promedio obtenido de puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. El
dueño de la fábrica desea saber cuánto dinero perderá después de ser sometido a la revisión.
11) Una persona se encuentra con un problema de comprar un automóvil o un terreno, los cuales
cuestan exactamente lo mismo. Sabe que mientras el automóvil se devalúa, con el terreno sucede
lo contrario. Esta persona comprara el automóvil si al cabo de tres años la devaluación de este no
es mayor que la mitad del incremento del valor del terreno. Ayúdale a esta persona a determinar si
debe o no comprar el automóvil.

80
UNIDAD II
Desarrolla pseudocódigo y
programación lineal

COMPETENCIAS DISCILINARES BÁSICAS


C1 Identifica, ordena e interpreta las ideas, datos y conceptos explícitos e implícitos en un texto,
considerando el contexto en el que se generó y en el que se recibe.
M1 Construye e interpreta modelos matemáticos deterministas o aleatorios mediante la aplicación de
procedimientos aritméticos, algebraicos, geométricos y variacionales, para la comprensión y análisis de
situaciones reales o formales.
M8 Interpreta tablas, gráficas, mapas, diagramas y textos con símbolos matemáticos y científicos.
CE9 Diseña modelos o prototipos para resolver problemas, satisfacer necesidades o demostrar
principios científicos.
COMPETENCIAS GENÉRICAS
4.1 Expresa ideas y conceptos mediante representaciones lingüísticas, matemáticas o gráficas.
4.2 Aplica distintas estrategias comunicativas según quienes sean sus interlocutores, el contexto en el
que se encuentra y los objetivos que persigue
8.2 Aporta puntos de vista con apertura y considera los de otras personas de manera reflexiva
8.3 Asume una actitud constructiva, congruente con los conocimientos y habilidades con los que cuenta
dentro de distintos equipos de trabajo

81
 Identifica el concepto de pseudocódigo como fase importante en la solución de problemas.
 Conoce las características del pseudocódigo y sus partes para la solución de problemas.
 Genera pseudocódigos secuenciales para la solución de problemas cotidianos.
 Produce pseudocódigos selectivos para la solución de problemas.
 Construye pseudocódigos cíclicos para la solución de problemas.
 Lista las palabras reservadas del lenguaje de programación estructurado.
 Reconoce la estructura de datos (declaración de constantes y variables, tipos de datos en
C++ e identificadores) del lenguaje de programación estructurado.
 Emplea los tipos de operadores (aritméticos, unarios, condicional, de asignación
relacionales y lógicos) del lenguaje de programación estructurado para la solución de
problemas cotidianos.
 Identifica la partes que integran un programa en lenguaje estructurado
 Identifica los conceptos de programa fuente, objeto y compilador.
 Identifica comandos básicos del entorno de Code:Blocks: Compilar(Build) y ejecutar(Run),
Panel administrador (Manager) y Logs(Resultado de ejecución del programa)
 Creación y ejecución de proyectos en C++ ( Edición, compilación y enlazado, ejecución y
depuración)

82
A continuación se presentan una serie de preguntas de opción múltiple relacionadas con el
desarrollo de pseudocódigo y programación lineal para la solución de problemas cotidianos mismos
que profundizarás con más detalle a lo largo de las actividades. Esfuérzate por contestarlas
subrayando la respuesta correcta. Las respuestas podrás encontrarlas al final del módulo de
aprendizaje.
1.- Es una manera de escribir algoritmos de forma poco estricta con una sintaxis relajada o
estructuras de datos poco detalladas.
a) Pseudocódigo b) Programa c) Tecnología d) Diagrama de flujo e) Lenguaje

2. Se compone de cinco áreas diferenciadas como son el programa, el módulo, los tipos de datos,
las constantes y las variables.
a) Cuerpo b) Programa c) Cabecera d) Diagrama de flujo e) Lenguaje

3.- Pseudocódigo que permite evaluar más de dos alternativas de solución.


a) Selectivos simples b) Secuenciales c) Repetitivos d) Programa e) Selectivos múltiples

4.- Tipos de pseudocódigos que para su solución se hace evalúa una condición donde puede tomar
dos posibles soluciones.
a) Selectivos simples b) Secuenciales c) Repetitivos d) Programa e) Selectivos múltiples

5.- Tipos de pseudocódigo que implica la repetición de una serie de instrucciones.


a) Selectivos simples b) Secuenciales c) Repetitivos d) Programa e) Selectivos múltiples

6.- Cuando existen bucles dentro de otros bucles se dicen que están.
a) Armados b) Anidados c) Controlados d) Integrados e) Evaluados

7.- Tipos de pseudocódigos que se resuelven realizando un paso tras otro sin ninguna condición
a) Selectivos simples.
b) Secuenciales c) Repetitivos d) Programa e) Selectivos múltiples

8.- En un pseudocódigo ¿Cuál es la instrucción utilizada como estructura de control selectiva?


a) Mientras b) Desde c) Si d) Leer e) Imprimir

9.- Estructura de control que nos permite la toma de decisiones de una sola condición en un
pseudocódigo.
a) Programa b) Secuenciales c) Cíclicos d) Selectivos compuestos e) Selectivos simples

10.- Tipo de dato que no cambia durante la ejecución de un programa.


a) Constante b) Variable c) Identificador d) Lenguaje de alto nivel e) Lenguaje de
programación

83
Estructuras del pseudocódigo para la solución de problemas
Concepto de pseudocódigo como fase importante en la solución de problemas
Características del pseudocódigo y sus partes para la solución de problemas.

PSEUDOCÓDIGO
El pseudocódigo es una manera de escribir algoritmos de forma poco estricta (con una sintaxis
relajada) o estructuras de datos poco detalladas, pero intentando acercar las ideas del algoritmos a
estructuras y sintaxis parecidas a las de los lenguajes de alto nivel en los que vamos a programar el
algoritmo. Es para ser leído por personas, por tanto no se preocupa en detalles sintácticos. Es
un lenguaje de especificación de algoritmos, pero muy parecido a cualquier lenguaje de
programación, por lo que luego su traducción al lenguaje de programación es muy sencillo, pero con
la ventaja de que no se rige por las normas de un lenguaje en particular. Nos centramos más en la
lógica del problema. El pseudocódigo también va a utilizar una serie de palabras claves o palabras
especiales que va indicando lo que significa el algoritmo.
Un pseudocódigo, por lo tanto, se emplea cuando se pretende describir un algoritmo sin la necesidad
de difundir cuáles son sus principios básicos. De esta manera, un ser humano encontrará mayores
facilidades para comprender el mensaje, a diferencia de lo que ocurriría si estuviese frente a un
lenguaje de programación real.
A la hora de llevar a cabo la creación de un pseudocódigo, se hace necesario que su estructura se
encuentre compuesta de las siguientes partes:
-Una cabecera, que, a su vez, se debe componer de cinco áreas diferenciadas como son el
programa, el módulo, los tipos de datos, las constantes y las variables.
-El cuerpo, que se dividirá en inicio, instrucciones y fin.
Además de todo lo expuesto, se hace importante establecer otra serie de datos de interés
Relativos a cualquier pseudocódigo:
-Se debe poder ejecutar en cualquier ordenador.
-No tiene nada que ver con el lenguaje de programación que se vaya a poder usar después, es decir
que es independiente respecto al mismo.
-Tiene que ser sencillo de usar y también de manipular.
-Debe permitir que se pueda acometer la descripciones de diversos tipos de instrucciones, tales
como de proceso, de control, de descripción, primitivas o compuestas.
-A la hora de poder desarrollar la creación del citado pseudocódigo hay que tener en cuenta que se
utilizarán diversos tipos de estructuras de control. En concreto, estas podemos decir que son de tres
clases: selectivas, secuenciales e iterativas.
Estas características hacen que los pseudocódigos sean utilizados en obras científicas y educativas
y en las etapas previas al desarrollo de un software, a la manera de boceto antes de proceder a la
programación.
Características y partes
Las principales características de este lenguaje son:
1. Se puede ejecutar en un ordenador
2. Es una forma de representación sencilla de utilizar y de manipular.
3. Facilita el paso del programa al lenguaje de programación.
4. Es independiente del lenguaje de programación que se vaya a utilizar.
5. Es un método que facilita la programación y solución al algoritmo del programa.

84
Todo documento en pseudocódigo debe permitir la descripción de:
1. Instrucciones primitivas.
2. Instrucciones de proceso.
3. Instrucciones de control.
4. Instrucciones compuestas.
5. Instrucciones de descripción.
Estructura a seguir en su realización:
1. Cabecera.
1. Programa.
2. Modulo.
3. Tipos de datos.
4. Constantes.
5. Variables.
2. Cuerpo.
6. Inicio.
7. Instrucciones.
8. Fin.
Para comentar en pseudocódigo se le antepone al comentario dos asteriscos (*)

85
Completen el siguiente cuadro sinóptico con la descripción y elementos del pseudocódigo, es
importante que empleen la información recabada en la tarea de investigación no. 1 para la solución
del ejercicio.
Nombre Descripción Ejemplos

Encabezado

Definición de

variables

Lectura de

datos

mentos de pseudocódigo

Cuerpo
Hacer

cálculos

Salida de

datos

Fin del

pseudocódigo

86
En binas describe en cada línea en forma clara y precisa cada pseudocódigo

1. Pseudocódigo

Promedio

2. Definición de variables:

Nombre: Alfanumérico [30]

Prom: Numérico, real

Cal1, Cal2, Cal3: Numérico real

3. Leer Cal1, Cal2, Cal3

4. Promedio=(Cal1+Cal2+Cal3)/3

5. Imprimir “El promedio es”

6. Fin

87
Estructuras de control en la elaboración de pseudocódigos para la solución de
problemas.
Pseudocódigos secuenciales para la solución de problemas cotidianos.

Participa en una lluvia de ideas de los siguientes cuestionamientos:

1. ¿Qué elementos contiene un pseudocódigo?

2. ¿Cómo se declaran sus variables?

3. ¿Cómo se anotan las salidas en los pseudocódigos?

TIPOS DE PSEUDOCÓDIGOS
En el manejo de estructuras de control para la elaboración de pseudocódigos para .la solución de
problemas, abordaremos de manera conjunta los posibles casos que existen. Para la creación de
un algoritmo y pseudocódigo, se utilizan las estructuras de control, como le visualizamos en el tema
de algoritmos en la primera unidad, las cuales pueden ser: SECUENCIALES (procedimentales),
SELECTIVAS (decisión) y REPETITIVAS (Cíclicas).
Una vez que tenemos preparado un diagrama de flujos (ordinograma u organigrama) y un
pseudocódigo ya podemos comenzar con la codificación del programa en nuestro ordenador. A
partir de aquí todo varía dependiendo del lenguaje de programación que utilicemos, pero en todos
los programas tendremos que definir los tipos de datos que utilizaremos.

SECUENCIALES:
Estas siguen un proceso paso a paso, una secuencia. Estas se siguen por flechas, constan de un
inicio y un fin.

88
PROBLEMA SECUENCIAL
Programa que calcula el área de un cuadrado a partir de un lado dado por teclado.
Programa: area_cuadrado
Modulo: main **( también se puede llamar principal)
Variables:
lado: natural
area: natural
Inicio
Visualizar "Introduce el lado del cuadrado"
Leer lado
Area<- lado * lado
Visualizar "El área del cuadrado es", area
Fin

PROBLEMA SECUENCIAL
Algoritmo que lea dos números, calculando y escribiendo el valor de su suma, resta, producto y
división.
1. Var numero1, numero2, resultado: numérica
2. Inicio
3. Escribir "Introduce el primer número"
4. Leer numero1
5. Escribir "Introduce el segundo número"
6. Leer numero2
7. resultado<-numero1+numero2
8. Escribir resultado
9. resultado<-numero1-numero2
10. Escribir resultado
11. resultado<-numero1*numero2
12. Escribir resultado
13. resultado<-numero1/numero2
14. Escribir resultado
15. Fin

89
A continuación se te presentan algoritmos, desarrolla el pseudocódigo correspondiente.
1. Calcular el promedio final de un alumno en la materia de matemáticas, si conocemos las
calificaciones de 3 parciales y el nombre del alumno. Imprimir promedio y nombre.
Algoritmo Pseudocódigo

1. Inicio
2. Dar valor Nombre,Cal1,Cal2,Cal3
3. Ejecutar Prom=( Cal1+Cal2+Cal3)/3
4. Imprimir Nombre, Prom
5. Fin

2.- En una tienda tienen la promoción de que todo el calzado de color negro tiene un descuento del
30% y los demás un 10%, una persona desea saber cuento pagará por la compra de un par de
zapatos si conoce el precio y el color.

Algoritmo Pseudocódigo
1. Inicio
2. Dar valor Pre, Color
3. Si Color= “Negro”
Ejecutar TP=Pre-Pre*.30
De otra forma
Ejecutar TP=Pre-Pre*.10
4. Imprimir TP
5. Fin

90
En los pseudocódigos que se te muestran a continuación, anota en el cuadro de la derecha la
corrida manual, considerando los datos que se te presentan en cada una de ellas.

1. Pseudocódigo Promedio de alumno Cal1= 8.2, Cal2= 9.1, Cal1= 8.7


2. Definición de variables:
Prom, Cal1,Cal2, Cal3: Numérico real

3. Leer Cal1, Cal2, Cal3 Corrida manual:


4. Calcular Prom=( Cal1+Cal2+Cal3)/3
5. Imprimir “El promedio es de”, Prom
6. Fin

1. Pseudocódigo Conversión a pesos Dolares: 830, Tipo_cambio=19.60


2. Definición de variables:
dolares,pesos,Tipo_cambio:numérico
real
3. Leer dolares, Tipo_cambio Corrida manual:
4. Calcular pesos= dolares*Tipo_cambio
5. Imprimir “Cantidad en Pesos”, pesos
6. Fin

1. Pseudocódigo Conversión a metros Metros= 2000


2. Definición de variables:
Metros, kilómetros Tipo: Numérico real

3. Leer Metros Corrida manual:


4. Calcular Km=(Metros)/1000
5. Imprimir “Los kilómetros son ”, Km
6. Fin

1. Pseudocódigo Caseta escolar Cantortas=10, PrecioTorta=30


2. Definición de variables:
PrecioTorta,Cantortas: Numérico

3. Leer PrecioTorta, Cantortas Corrida manual:


4. Calcular Pago=(PrecioTorta*Cantortas)
5. Imprimir “El pago es de”, Pago
6. Fin

91
A continuación se les presentan una serie de casos, considerando que en la unidad
anterior se elaboraron sus algoritmos y diagramas de flujo, desarrollen sus respectivos
pseudocódigos.

Caso Pseudocódigo

1. En una planta de alimentos,


se cuenta con un
contenedor de granos en
forma cilíndrica, se desea
obtener su capacidad
considerando que su v= π r2
h, donde r=radio, h=altura y
v=volumen.

2. Obtén de una cantidad de


horas el equivalente en
minutos, segundos y días.

3. Calcula el peso ideal de


acuerdo al índice de Brocca
considerando que el peso
ideal= altura en cm - 100.

92
De los siguientes casos realiza el diagrama de flujo del problema y desarrolla su pseudocódigo
correspondiente.

1. Obtén la estructura que de una cantidad de bytes, las convierta en:


i. Kilobyte (kb, 1kb=1024 bytes)
ii. Megabyte (Mb, 1Mb= 1’048,576 bytes)
iii. Gigabyte (Gb, 1 Gb=1,073’ 741,824 bytes)
4
iv. Terabyte (Tb, 1 Tb=1024 bytes)

Diagrama de flujo Pseudocódigo

Inicio:
Variables: T,G,M,K,B tipo entero

Salida:
MENSAJE "Ingrese la cantidad de
BYTES."

Entrada:
LEER B <-----... (Si por ejemplo
ingresamos 2500)

Proceso:
K=(B/1024)
M=(B/1’048,576)
G=(B/1,073’ 741,824)
4)
T=(B/1024

Salida:
MENSAJE: ' LA CAPACACIDAD DE ', B , '
BYTES. TIENE ', K , ' KB, M , ' MB ', G , '
GB' Y, T, ´TB

Fin:

2. Determina el consumo de gasolina por kilómetro recorrido de un


automóvil, si se obtiene considerando los siguientes cálculos:
a. Distancia recorrida= distancia actual – distancia anterior
b. Consumo por km recorrido= distancia recorrida (en kilómetros)
litros que se emplearon para rellenar el tanque

93
Diagrama de flujo Pseudocódigo

3. Un alumno de CECyTES desea saber el promedio del primer parcial de la


asignatura Desarrolla software utilizando programación estructurada, el
cual se obtiene de la siguiente forma:
a) 30% del examen parcial,
b) 30% de la calificación de trabajos en clase y extra clase
c) 30% de la calificación del trabajo en equipo, aprendizaje autónomo,
cumplimiento puntual, participación en clase
d) 10% de la calificación de iniciativa, responsabilidad, colaboración

Diagrama de flujo Pseudocódigo

94
Con el apoyo de tu profesor y considerando los tipos de algoritmos y pseudocódigos anteriores,
resolver los siguientes planteamientos.
Problemas tipo secuencial
1. Escribe un algoritmo que pida tres números y luego escriba el promedio.
2. Escribe un algoritmo que calcule el área de un círculo de cualquier radio.
3. Escribe un algoritmo que lea una cantidad depositada en un banco y que calcule la cantidad final
después de aplicarle un 20% de interés.
4. Diseñar un algoritmo que lea un valor en dólares y lo convierta a pesos.
5.Leer dos números y encontrar la suma del doble del primero más el cuadrado del segundo.
6. Suponga que un individuo desea invertir su capital en un banco y desea saber cuánto dinero ganará
después de un mes si el banco paga a razón de 2% mensual.
7. Un vendedor recibe un sueldo base más un 10% extra por comisión de sus ventas, el vendedor
desea saber cuánto dinero obtendrá por concepto de comisiones por las tres ventas que realiza en el
mes y el total que recibirá en el mes tomando en cuenta su sueldo base y comisiones.
8. Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuánto
deberá pagar finalmente por su compra.
9. Leer el sueldo de tres empleados y aplicarles un aumento del 10, 12 y 15% respectivamente.
Desplegar el resultado.
10. Escribir un programa que calcule el salario de un trabajador de la manera siguiente. El trabajador
cobra un precio fijo por hora y se le descuento el 10% en concepto de impuesto sobre la renta. El
programa debe pedir el nombre del trabajador, las horas trabajadas y el precio que cobra por hora.
Como salida debe imprimir el sueldo bruto, el descuento de renta y el salario a pagar.

1 .Determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus dos catetos.
Desarrolle el algoritmo correspondiente.
2. Desarrolle un algoritmo que realice la sumatoria de los números enteros comprendidos entre el 1 y
el 10, es decir, 1 + 2 + 3 + …. + 10.
3. Desarrolle un pseudocódigo que permita determinar el área y volumen de un cilindro dado su radio
(R) y altura (H).
4. Realice un pseudocódigo que a partir de proporcionarle la velocidad de un automóvil, expresada en
kilómetros por hora, proporcione la velocidad en metros por segundo.
5. Un alumno desea saber cuál será su calificación final en la materia de Algoritmos. Dicha calificación
se compone de los siguientes porcentajes:
55% del promedio de sus tres calificaciones parciales.

95
30% de la calificación del examen final.
15% de la calificación de un trabajo final.
6.Un maestro desea saber qué porcentaje de hombres y qué porcentaje de mujeres hay en un grupo
de alumnos.
7. La presión, el volúmen y la temperatura de una masa de aire se relacionan por la fórmula: masa
= (presión * volúmen)/(0.37 * (temperatura + 460))
Calcular la masa de aire de un neumático de un vehículo que está en compostura en un servicio de
alineación y balanceo.
8.Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su salario anterior.
9. En un hospital existen tres áreas: Ginecología, Pediatría, Traumatología. El presupuesto anual del
hospital se reparte conforme a la sig. tabla:
Área: % del presupuesto:
Ginecología 40%
Traumatología 30%
Pediatría 30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.
10. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una
cantidad distinta. Obtener el porcentaje que cada quien invierte con respecto a la cantidad total
invertida.

De manera individual contesta a continuación una serie de preguntas con cinco opciones de
respuesta. Subraya la respuesta correcta que corresponda a cada una de ellas.

1. ¿Cuál es la mezcla entre el idioma coloquial y el lenguaje de programación que facilita la


codificación?
a) Algoritmo b) Documentación c) Mantenimiento d) Pseudocódigo e) Pruebas

2. ¿Parte del pseudocódigo en donde se coloca un nombre que identifique el problema a


solucionar?
a) Cuerpo b) Encabezado c) Definir variables d) Salida e) Fin

Pseudocódigos selectivos para la solución de problemas.


PSEUDOCÓDIGOS SELECTIVOS:
Como hemos mencionado, este tipo de pseudocódigo son clasificados como los de alternativa simple,
que consiste en un “si” y un “no” si se cumple una condición haga un determinado procedimiento; si no
se cumple realice otro procedimiento.

96
Otro tipo de estructura de control selectivo es la de alternativa múltiple, en este tipo de estructura,
según sea la variable ó expresión; se le asignan una cantidad de acciones para todos los valores hasta
n acciones, teniendo en cuenta la lista de errores por defecto; y después el tipo de valores, con una
salida correspondiente a cada valor; y como en las anteriores se tiene en cuenta el error por defecto,
es decir, que el usuario introduzca un valor que no está permitido.

Ejemplo 1. Capturar dos números e imprimir el mayor de ellos


1. Inicio
2. Inicializar variables: A = 0, B = 0
3. Solicitar la introducción de dos valores distintos
4. Leer los dos valores
5. Asignarlos a las variables A y B
6. Si A = B Entonces vuelve a 3 porque los valores deben ser distintos
7. Si A>B Entonces Escribir A, “Es el mayor”
8. De lo contrario: Escribir B, “Es el mayor”
9. Fin_Si
10. Fin

Ejemplo 2. Pseudocódigo que lea tres números distintos y nos diga cuál de ellos es el mayor (recuerda
usar la estructura condicional Si y los operadores lógicos).
Var numero1, numero2, numero3: numérica
Inicio
Escribir "Introduce el primer número"
Leer numero1
Escribir "Introduce el segundo número"
Leer numero2
Escribir "Introduce el tercer número"
Leer numero3
Si (numero1>numero2 AND numero1>numero3) Entonces
Escribir "el número " numero1 " es el mayor"
Sino
Si (numero2>numero3) Entonces
Escribir "El número " numero2 " es el mayor"
Sino
Escribir "El número " numero3 " es el mayor"
FinSi
FinSi
Fin

97
Ejemplo 3. Una tienda ofrece un descuento del 15% sobre el total de la compra durante el mes de
octubre. Dado un mes y un importe, calcular cuál es la cantidad que se debe cobrar al cliente.
Var mes: cadena
importe, total: numerico
Inicio
Escribir "escribe el importe de la compra"
Leer importe
Escribir "Introduce el mes"
Leer mes
Si (mes="octubre") Entonces
total<-importe*0.85
Sino
total<-importe
FinSi
Escribir total
Fin

Considerando el siguiente caso de un centro comercial, a continuación aparece un


pseudocódigo en forma desordenada, anota el orden correcto para dar solución a la
siguiente problemática, en el recuadro derecho.

Total de compra Descuento


Menor e igual a $500 10%
Más de $500 a $1000 20%
Más de $1000 a $1500 30%
Mayor a $1500 40%

Se requiere determinar el total a pagar

98
Pseudocódigo desordenado Ordenar Pseudocódigo

1. Definición de variables:
2. else
3. else if c>1000 and c<=1500
4. else if c>500 and c<=1000
5. Fin
6. If c<=500

7. Imprimir “el total a pagar es


de”, Tp
8. Leer C
9. Pseudocódigo total a pagar
en un centro comercial
10. Tp, C: Numérico real
11. tp=c-c*.10
12. tp=c-c*.20

13. tp=c-c*.30

En una empresa requieren determinar si las rampas del edificio cumplen con norma oficial
mexicana no. 1 de la secretaría del trabajo y previsión social (NOM-001-STPS), la cual se
calcula de la siguiente forma: P = H/L x 100

Dónde:
P = pendiente, en tanto por ciento.

H = altura desde el nivel inferior hasta el superior, medida


sobre la vertical, en cm.

L = longitud de la proyección horizontal del plano de la


rampa, en cm.

99
Considera que son rampas de tránsito y deben tener una pendiente máxima de 10% para
cumplir con la norma.

De los siguientes casos realiza la identificación del problema y desarrolla su algoritmo,


diagrama de flujo y pseudocódigo correspondiente.

1. Determinar si un número introducido desde el teclado es positivo o negativo


Algoritmo Diagrama de Flujo Pseudocódigo

100
2. Determinar si un número leído desde el teclado es mayor o menor que 100

Algoritmo Diagrama de Flujo Pseudocódigo

1. Desarrolle el pseudocódigo que permita leer un valor cualquiera N y escriba si dicho número
es par o impar.

101
2. Desarrolle un pseudocódigo que permita convertir calificaciones numéricas, según la
siguiente tabla: A = 19 y 20, B =16, 17 y 18, C = 13, 14 y 15, D = 10, 11 y 12, E = 1 hasta el
9. Se asume que la nota está comprendida entre 1 y 20.

1. Desarrolla un pseudocódigo que permita leer dos números y ordenarlos de menor a mayor,
si es el caso.
2. Desarrolla un pseudocódigo que permita leer dos valores distintos, determinar cuál de los
dos valores es el mayor y escribirlo.
3. Desarrolla un pseudocódigo que permita leer tres valores y almacenarlos en las variables A,
B y C respectivamente. El algoritmo debe imprimir cual es el mayor y cuál es el menor.
Recuerde constatar que los tres valores introducidos por el teclado sean valores distintos.
Presente un mensaje de alerta en caso de que se detecte la introducción de valores iguales.

102
Pseudocódigos cíclicos para la solución de problemas.

REPETITIVAS
En las estructuras repetitivas se usan El ciclo mientras y El ciclo para, cualquiera de las dos se
usa por igual depende del algoritmo que se pretenda realizar; por ejemplo si utilizamos el ciclo
mientras, sería para decir que mientras se cumpla una condición predeterminada, se hará o no se
hará lo que se quiere con el algoritmo. Con el ciclo para, decimos que para la condición que
hallamos dicho ó predeterminado se hará una acción u otra acción.

Las estructuras repetitivas que utilizaremos son: MIENTRAS, HACER MIENTRAS, DESDE. Bucle
MIENTRAS. El cuerpo del bucle se repite mientras la condición sea verdadera.

MIENTRAS condición EJEMPLO

Sentencias del bucle num = 1


FIN_MIENTRAS
MIENTRAS (num<>0)

Imprimir “¿Numero? ”

LEER num
FIN_MIENTRAS

Bucle HACER MIENTRAS. El cuerpo del bucle se repite hasta que la condición sea falsa (es
decir, mientras la condición sea verdadera). El cuerpo del bucle siempre se ejecuta al menos
una vez.

EJEMPLO

HACER

HACER IMPRIMIR “¿Número?”

Sentencias del bucle LEER num


MIENTRAS condición MIENTRAS (num<>0)

103
Bucle DESDE permite la ejecución repetida de un conjunto de acciones. El número de veces
que el bloque es ejecutado está determinado por los valores que puede tomar una variable
contadora (de tipo entero), en un rango definido por un límite inferior y un límite superior.
Después de ejecutar el bloque de acciones en cada iteración la variable contadora es
incrementada en uno (1) automáticamente y en el momento en que la variable sobrepasa el
límite superior el ciclo termina.

Desde var = inicio HASTA fin EJEMPLO

Cuerpo del bucle DESDE n=1 HASTA 10


FIN_DESDE
IMPRIMIR “Iteración: ”, n

FIN_DESDE

Los bucles que utilizan condiciones pueden ser utilizados (solos o combinados) para formar
bucles infinitos, por otra parte los 3 tipos de bucles descritos pueden formar bucles anidados

Bucles INFINITOS. La condición de terminación nunca se cumple. Debe haber una sentencia
dentro del cuerpo del bucle que haga que el valor que controla el bucle varíe.

J=1

MIENTRAS ( J > 0 )

J=J+1

J=J-1

104
Indíquese el valor que se imprime para VAR. Supóngase que todas las variables son
enteras.

1. var ← 0
DESDE num=1 HASTA 10 1. LEER(n)
var ← var + 1 DESDE i=1 HASTA 10
FIN_DESDE ESCRIBIR (n*i)
imprimir (var) FIN_DESDE
2. var ← 0 2. S ← 0
DESDE num=4 HASTA 16 DESDE i=1 HASTA 10
var ← var + 1 S←i
FIN_DESDE FIN_DESDE
imprimir (var) imprimir (S)
3. var ← 0 3. S ← 0
DESDE num=1 HASTA 5 DESDE i=1 HASTA 10
DESDE mult=1 HASTA 8 S ← S +1
var ← var + 1 FIN_DESDE
FIN_DESDE imprimir (S)
FIN_DESDE
imprimir (var)

Ejemplo 1. Realiza un pseudocódigo que permita calcular y dar como salida el promedio general
de una sección, tomando en cuenta que está compuesta por 25 estudiantes y que se tiene la nota
definitiva de cada uno de ellos. Se utilizará una variable suma que irá acumulando las notas cada
vez que se lea. Al final se calcula el promedio dividiendo el valor de la suma entre 25 estudiantes.

1. Inicio
2. Hacer Suma = 0 // Inicializamos el sumado en cero (Al principio la suma es igual a cero)
3. Para i = 1 hasta 25 hacer //Se inicia el ciclo para 25 estudiantes, comenzando con el
estudiante 1
4. Leer la nota //Leemos la nota definitiva del estudiante
5. Hacer Suma = Suma + nota //En la variable Suma acumulamos la suma de cada nota leída
6. Fin Para //Fin del ciclo
7. Se calcula el Promedio: Promedio = Suma/25 //Recuerde que en Suma tenemos la suma de
las notas
8. Se escribe el promedio //Una vez calculado el promedio de todas las notas lo imprimimos
9. Fin

105
Ejemplo 2. Sean N estudiantes. Hacer un algoritmo que lea las cuatro notas de cada estudiante e
imprima la nota definitiva de cada uno, sabiendo que la nota definitiva es igual a la suma de cuatro
notas divididas entre 4.
Datos de entrada: Qué me dan (o que voy a leer): N estudiantes. Cada uno con cuatro notas N1,
N2, N3 y N4.
Datos de Salida: Qué me piden (o que voy a escribir): La nota definitiva de cada uno NotaD
Procedimiento: NotaD = ((N1 + N2 + N3 + N4)/4). Hay que hacerlo para cada estudiante.

El algoritmo sería:
1. Inicio.
2. Leer N // (Número de estudiantes)
3. Para I = 1 to N hacer //Comienza el ciclo
4. Leer N1, N2, N3, N4 // Leemos las cuatro notas
5. NotaD = ((N1 + N2 + N3 + N4)/4) ) // Caculamos la nota definitiva
6. Imprimir NotaD
7. Continuar ciclo
8. Fin

Ejemplo 3 Programa que visualice la tabla de multiplicar del número introducido por teclado

Programa: Tabla multiplicar


Modulo: main
Variables:
t: entero
num : entero
Inicio
Visualizar "Introduce un número"
Leer num
Desde t=1 hasta t=10 repetir
Visualizar num, " X", t, "=", num*t
Fin desde
Fin

106
A continuación se te presentan una serie de casos, desarrolla para cada uno: Algoritmo,
diagrama de flujo y pseudocódigos.

1. Mostrar un mensaje por pantalla, por ejemplo, HOLA A TODOS, cien veces.

2. Calcular la potencia Xy

107
3. Escribe un programa que lea números enteros positivos hasta que se
introduzca un 0. El programa deberá mostrar por pantalla la cantidad de números
leídos.

4. Sumar todos los números naturales desde el 1 hasta el 100, ambos incluidos.

108
5. Calcular la media de un conjunto de números. El pseudocódigo recoge
tantos datos como el usuario quiera.

6. Calcular el factorial de un número natural (que se pedirá por teclado) usando


un bucle. Escribir los resultados parciales.

Implementar el siguiente juego: Generar un número aleatorio entre 1 y 100 para que un jugador
acierte cual es. En caso de no acertar, en cada intento se le informará si el número es mayor o
menor que el generado aleatoriamente. El juego termina cuando se acierta la cifra o haya realizado
un máximo de 12 intentos en cuyo caso se le mostrará al jugador la calificación obtenida según la
siguiente tabla:

109
No. De intentos Calificación
1-3 Es pura suerte!

4-6 Eres bueno!

7 No está mal!

8 Se puede mejorar!

9 o mas Qué mal estas!

En binas realice los siguientes pseudocódigos para cada uno de los siguientes planteamientos.
Posteriormente, resuélvalos en grupo con la ayuda del maestro.
Ejercicio 1. Desarrolle un algoritmo que permita calcular Promedio de Notas; finaliza cuando N =
0.
110
Ejercicio 2. Desarrolle un algoritmo para la empresa Constructora Casas C.A., que le permita
calcular e imprimir la nómina para su pago a un total de 50 obreros calificados a quienes debe
pagar por horas trabajadas. La hora trabajada se paga a 30.00.
Ejercicio 3. Una Ferretería vende dos tipos de Cables, Cable Tipo A (200 Bs. MT) y Cable Tipo B
(300 Bs. MT ); realice un pseudocódigo que teniendo como datos por cada cliente tipo de cable a
comprar y cantidad de metros requeridos, calcule y de cómo salida el neto a pagar por cada cliente,
tomando en cuenta que existe un grupo indeterminado de ellos y que la empresa da una rebaja
del 10% por cada compra que exceda de los 100 MT de cable de cualquier tipo

Elabore los pseudocódigos para los siguientes planteamientos.

1. Una tienda de electrónica aplica un 20% de descuento a las compras que excedan $3000,
de lo contrario solo un 5%. Obtener: El pago para N clientes
2. Obtener el promedio de edad de N alumnos
3. Calcular el pago de inscripción para los alumnos de una universidad, para lo cual se cobra
en base a la carrera y número de materias. Vea la siguiente tabla

CARRERA COSTO POR MATERIA ($)

INGENIERIA 600

VETERINARIA 1000

CONTADOR/ADMINISTRADOR 400

4. Obtener el pago para los usuarios de la CFE donde se cobra en base al consumo en
kilowatts. Ver la siguiente tabla

CONSUMO (KW) COSTO POR KW ($)

1-100 6

101 en adelante 6 (Primeros 100), 3


(excedentes de 100)

Calcular:
a) El pago para cada usuario

111
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante la secuencia.
Responde las siguientes cuestiones subrayando la respuesta correcta en cada uno de los
casos.
1. Bucles que repiten una serie de instrucciones una cantidad indefinida de veces.
a) Infinitos b) Anidados c) Selectos d) Descontrolados e) Acumulativos
2. Bucle que se ejecuta una cantidad finita de veces.
a) Repetir hasta b) Mientras c) Desde d) Hacer mientras e) Si
3. Parte del pseudocódigo en la que se agregan las estructuras de control repetitivas.
a) Encabezado b) Def. de variables c) Funciones d) Operaciones e) Cuerpo
4. Cuando existen bucles dentro de bucles se dice que están.
a) Integrados b) Armados c) Controlados d) Anidados e) Sembrados
5. En un pseudocódigo, ¿Cuál de las siguientes es una instrucción de control cíclica?
a) Mientras b) Asignación c) Leer d) Si e) Imprimir

112
Elementos de la programación estructurada en el proceso de codificación para la
solución de problemas reales
Lista las palabras reservadas del lenguaje de programación estructurada.
Las palabras reservadas son identificadores predefinidos que tienen significados especiales y
no pueden usarse como identificadores creados por el usuario en los programas; es decir, son
palabras especiales que no pueden usarse para nombrar otros elementos del lenguaje.
Es importante destacar que C++ hace distinción entre mayúsculas y minúsculas. Por lo tanto, la
palabra reservada for no puede escribirse como FOR, pues el compilador no la reconoce como
una instrucción, sino que la interpreta como un nombre de variable.

Palabras Reservadas de C++

int: Un tipo de dato entero con signo de 16, 32 ó 64 bits, dependiendo del compilador.
Generalmente su precisión es de 7 dígitos.
long: Un número entero de 32 bits de rango igual a -2147483648 a 2147483647.
double: Un número de 64 bits y de rango igual a 1.7+/-308 con una precisión en general
de 15 dígitos.
short: Un número de 16 bits de rango igual a -32763 a 32762.
char: Un tipo de dato específico para manejo de caracteres de 8 bits de rango igual a -
128 a 127.
unsigned: Modificador que se aplica a los tipos de datos enlistados arriba, su efecto es
eliminar el signo a el tipo de dato aplicado, por ejemplo, para un tipo de dato int
podemos especificar unsigned int en cuyo caso el rango para el tipo de dato int
cambia de ser -2147483648 a 2147483647, por éste nuevo rango: 0 a
4294967295.
signed: Modificador que forza al compilador a utilizar un tipo de dato con signo si antes se
declaró como de tipo unsigned.
volatile: Especifica una variable que almacena datos cuyo contenido puede cambiar en
cualquier momento sea por la acción del programa ó como reacción de la
interacción del usuario con el programa.
const: Especifica una variable cuyo contenido no puede cambiar bajo ninguna
circunstancia.
enum: Especifica un conjunto de variables que toman valores en un orden específico y
consecutivo.
static: Especifica una variable que sólo puede cambiar por efecto del programa.
typedef: Define un tipo de dato para fácil manejo del programador basado en los datos
definidos por el compilador. Muy útil cuando se programa en lenguajes diferentes
al inglés.
sizeof: Función que devuelve el tamaño en bytes del tipo de dato al que se aplica.
if: Instrucción condicional, véase El enunciado if.
else: Se utiliza conjuntamente con la instrucción if, véase El enunciado if.

switch: Estructura condicional, véase La instrucción switch.


113
case: Define los elementos de una estructura condicional switch, véase La instrucción
switch.
default: Define las acciones a ejecutar no especificadas por una instrucción case dentro de
una estructura condicional switch, véase La instrucción switch.
break: Obliga a salir de una estructura condicional switch, véase La instrucción switch
for: Bucle que se ejecuta tantas veces como se cumplan las condiciones especificadas
dentro del paréntesis de la instrucción, véase El bucle for.
while: Bucle condicional que se ejecuta conforme la condición entre el paréntesis sea
cierta
do: Bucle condicional que se ejecuta en conjunto con la instrucción while, véase El
bucle do-while
continue: Instrucción para suspender un ciclo de un bucle
goto: Instrucción que ejecuta un salto a otra parte del código
struct: Define una estructura, para mayor información consulte Estructuras en C
return: Especifica el dato que devuelve una función.
void: Especifica que una función no devuelve valor alguno.
stream: Flujo de datos
cin: Entrada estándar
cout: Salida estándar
iostream: Operación de I/O a alto nivel
endl: Manipulador sin argumentos definidos en iomanip.h
string: Tipo para el manejo de cadenas de caracteres

A continuación se presenta un listado de palabras, coloca una “” en la columna


correspondiente, determinando si es palabra reservada o no.

Reservada Reservada
Palabra Palabra
Si No Si No
suma cin
char nomCli
continue Resultado
total long
static VentaTot
default short
double Comision
Pago int
Edad for

114
Reservada Reservada
Palabra Palabra
Si No Si No
unsigned Calif1
switch precio
Desc else
Prom compra
string return

Estructura de datos (declaración de constantes y variables, tipos de datos en C++ e


identificadores) del lenguaje de programación estructurado.

 Declaración y uso de Variables.

Las variables son imprescindibles al momento de programar, de hecho sería imposible


conseguir una aplicación con una funcionalidad básica sin usar variables; por esta misma razón
es necesario aprender a usarlas de forma correcta, utilizarlas es muy fácil e intuitivo, tanto para
declararlas como para asignarles valores.
Los datos que procesará una computadora, se deben de almacenar en celdas de memoria para
utilizarlos posteriormente. A estas casillas se le asigna un nombre identificador para
reconocerlas.

La declaración de una variable consiste en escribir una sentencia que proporciona información
al compilador de C++.
 El compilador reserva un espacio de almacenamiento en memoria.
 Los nombres de las variables se suelen escribir en minúsculas.
Para definir un identificador se deben seguir las siguientes reglas:
 El primer carácter debe de ser SIEMPRE una letra del alfabeto o un " _ " guión bajo.
 Solo se permiten caracteres del tipo; letras del alfabeto; números o el " _ " guión bajo.
 Siempre debe contener al menos una letra.
 El lenguaje C diferencia de mayúsculas de las minúsculas.
El procedimiento para declarar una variable en C++:
<tipo_de_dato> <nombre_de_variable> ; int x;
<tipo_de_dato> <lista de variables> ; char x, y, z;
<tipo_de_dato> <nombre_de_variable> = valor; long int i =10, j, k=0;
Una forma de expresar el procedimiento para declarar una variable es mediante los diagramas
sintácticos:

115
Las variables se pueden declarar de forma local y global.
Declaraciones locales: Son aquellas que están declaradas dentro de las funciones o de los
bloques.
Declaraciones globales (variables globales, funciones, …): La zona de declaraciones globales
de un programa puede incluir declaraciones de variables y declaraciones de funciones
(prototipos).

Algunos ejemplos de identificadores ejemplos de identificadores permitidos y no permitidos son:

Identificador Explicación
Total Permitido

Total2 Permitido
2Total No permitido o invalido, ya que tiene un numero en su inicio y no una letra
_Total Permitido
_total Permitido
_total$ No permitido o invalido, tiene un carácter no permitido
No permitido o invalido, No cumple con la orden de tener una letra en su
$total
inicio, además de ser un carácter no aprobado

1. A continuación se presenta un diagrama de sol sobre las reglas para construir un


identificador, explica cuatro de ellas.

116
2. A continuación se presenta una lista de palabras, indica cuáles pueden ser utilizadas como
identificador y cuáles no, en este último caso explica la causa.

Propuesta Si No ¿Por qué?


Precio unitario
ed@d
Hrs-trab
Número
Cantidad
Tot.pagar
Suma_numero
Nombre%
Main
Year

Las variables son posiciones en memoria donde estarán guardados los diferentes valores que
le damos o que toman durante la ejecución de los datos que usamos y normalmente estarán
disponibles a lo largo de la ejecución de nuestro programa.

Para asignar valores a una variable en una


gran variedad de lenguajes que incluye a
C++ se usa el operador "=" seguido del
valor que le daremos a la variable (no todos
usan el "=" para esto). Veamos un ejemplo
completo con todos los posibles usos que
le damos a una variable.

En el código anterior hemos visto las


múltiples formas en que se puede declarar
una variable, cómo asignarle un valor,
incluso vimos que es posible asignarle el
valor de una variable a otra, o realizar
operaciones entre los valores de variables
y asignar el resultado a una variable nueva,
vimos que es posible usar el valor de una
misma variable y cambiar su propio valor (res = res*2).
La forma general de declarar variables en C es la siguiente:

Cualificador de tipo identificador [= valor], identificador [= valor], ... ;

Las expresiones = valor sirven para inicializar la variable y pueden ser opcionales.
117
Las variables pueden ser declaradas en dos lugares:
 Dentro de un bloque (declaraciones locales) antes de la primera línea ejecutable; en este
caso el ámbito de la variable es el cuerpo del bloque. El cuerpo de una función es
considerado como un bloque.
 Fuera de todos los procedimientos, en este caso, el ámbito abarca a todas las funciones,
es decir son declaraciones globales.

Ejemplo de declaración Tipo de dato

int a,b,c Tres variables enteras.


float raiz1, raiz2 Dos variables de tipo real.
char caracter, texto[80] Un carácter y una cadena de 80.
short int a Entero corto.
long int b Entero largo.
unsigned short int d Entero corto sin signo.
unsigned char a Carácter sin signo.
signed char b Carácter con signo.
char texto[3] = "abc" Declaración e inicialización
char a = '\n' Inicialización con Return.
char texto[] = "abc" Sin especificar tamaño.

 Declaración y uso de constantes. (#define y const)

Las datos constantes, mal llamadas por algunos "variables constantes" (realmente no son
variables) tienen un valor fijo durante toda la ejecución del programa, es decir, este valor no
cambia ni puede ser cambiado a lo largo de la ejecución de nuestro programa.
Las constantes son muy útiles para especificar el tamaño de un vector y para algunas otras
cosas, como facilidad de uso y confiabilidad del código.
Para declarar una constante, se hace después de declarar las librerías y antes de las funciones.

La sintaxis es la siguiente:
En C++ se pueden definir constantes de dos forma, ambas válidas para nosotros. La primera es
por medio del comando #define nombre_constante valor y la segunda es usando la palabra
clave const, veamos ahora cada una de estas formas en detalle.

Uso de la instrucción #define

La instrucción #define nos permite declarar constantes (y algunas cosas más) de una manera
rápida y sencilla. Hay que tener en cuenta que al declarar constantes con #define debemos
hacerlo después de los #include para importar librerías pero antes de declarar nuestras
funciones y demás.
118
Si intentamos ejecutar el código anterior
obtendremos un error al haber usado el
operador << justo después de PI, esto
sucede porque PI no es tratado
exactamente como una variable
cualquiera sino como una expresión, así
que realmente aunque podemos usar
#define para declarar constantes no es
la mejor opción.
Error, ya que la constante le estás dando un
tratamiento como constante

Usando la instrucción const

Veamos ahora cual es realmente la


forma más adecuada de declarar
constantes en C++, esto se hace por
medio de la instrucción const,
veamos:
La instrucción const nos permite
declarar constantes de una manera
más adecuada y acorde. Las
constantes declaradas con const
poseen un tipo de dato asociado
(como debería ser siempre) y se
declaran al interior de nuestro código
como un tipo cualquiera. Como se ve en la imagen.
Como ves es muy fácil y mejor aún ha sido mucho más intuitivo y sencillo para nosotros. Se
puede ver que la declaración es muy
similar a la de una variable
cualquiera y que ya no tenemos
complicaciones al intentar añadir la
instrucción endl para agregar el salto
de línea. Veamos que realmente la
variable no puede cambiar:

Si intentas ejecutar el código


anterior obtendremos un error al intentar cambiarle el valor a PI, pues lo hemos definido como
una constante y el lenguaje no nos permitirá cambiarle en ningún momento el valor.

Tipos de datos en C++

Un dato dentro de un programa se caracteriza por llevar asociado un identificador, un tipo y un


valor.

Identificador (variable o constante): Nombre para referenciar al dato dentro del programa.

Tipo: el tipo de un dato determina el rango de valores que puede tomar el dato y su ocupación
en memoria durante la ejecución del programa.

119
Valor: Sera un elemento determinado dentro del rango de valores permitidos por el tipo de dato
definido.
Algunos ejemplos de datos son: la edad, el saldo de una cuenta bancaria, el nombre de una
persona, la letra del piso de una dirección, etc.

El cualificador de tipo de la variable nos indica el conjunto de valores que puede tomar y las
operaciones que pueden realizarse con ella.

Cuando nos planteamos la resolución de problemas mediante la computadora lo más común es


que deseemos tratar con datos que son variables y cuantificables, es decir, que toman un
conjunto de valores distintos entre un conjunto de valores posibles, además de poder almacenar
los valores de estos datos en alguna forma aceptable para la computadora (ya sea en la memoria
o en dispositivos de almacenamiento externos).

En los lenguajes de programación el concepto de tipo de datos se refiere al conjunto de valores


que puede tomar una variable. Esta idea es similar a la que se emplea en matemáticas, donde
clasificamos las variables en función de determinadas características, distinguiendo entre
números enteros o reales. Sin embargo, en matemáticas, nosotros somos capaces de
diferenciar el tipo de las variables en función del contexto, pero para los compiladores esto
resulta mucho más difícil. Por este motivo debemos declarar explícitamente cada variable como
perteneciente a un tipo. Este mecanismo es útil para que la computadora almacene la variable
de la forma más adecuada, además de permitir verificar que tipo de operaciones se pueden
realizar con ella.

Se suelen diferenciar los tipos de datos en varias categorías:

Tipos de datos elementales

Son aquellos cuyos valores son atómicos y, por tanto, no pueden ser descompuestos en valores
más simples. Entre las variables de estos tipos siempre encontramos definidas una serie de
operaciones básicas: asignación de un valor, copia de valores entre variables y operaciones
relacionales de igualdad o de orden (por lo tanto, un tipo debe ser un conjunto ordenado).

Los tipos más característicos son:

Booleanos = {verdadero, falso}


Enteros = {… -2, -1, 0, +1, +2, …}
Reales = {… -1.0, …, 0.0, …, +1.0, …}
Caracteres = {… 'a', 'b', …, 'Z', …}

120
Existen cinco tipos de datos básicos en C:

Tipos de
Descripción Memoria
Datos
2 bytes o una
Int Cantidad entera. palabra (varía
según compilador).
Char Carácter. 1 byte.
Float Almacena valores reales en punto flotante. 1 palabra (4 bytes).
2 palabras (8
double Almacena valores reales en doble precisión.
bytes).
Se utiliza para definir una función que no devuelve ningún
Void
valor o declarar punteros genéricos.

Estos tipos básicos admiten una modificación del rango de valores, aplicando las siguientes
palabras reservadas: short (corto), long (largo), signed (con signo), unsigned (sin signo).
Las modificaciones se aplican a los tipos int y char, a excepción del modificador long que
también puede aplicarse al tipo double.

Las posibles combinaciones son:

TIPO Número de bits Rango


Char 8 -128 a 127
unsigned char 8 0 a 255
signed char 8 -128 a 127
short 16 -32768 a 32767
int 16 -32768 a 32767
unsigned int 16 0 a 65535
signed int 16 -32768 a 32767
short int 16 -32768 a 32767
unsigned short int 16 0 a 65535
signed short int 16 -32768 a 32767
long int 32 -2147483648 a 2147483647
signed long int 32 -2147483648 a 2147483647

121
TIPO Número de bits Rango
unsigned long int 32 0 a 4294967295
Long 32 -2147483648 a 2147483647
unsigned long 32 0 a 4294967295
Float 32 3.4E-38 a 3.4E+38
Doublé 64 1.7E-308 a 1.7E+308
1.7E-308 a 1.7E+308 ó 3.4E-4932 a
long doublé 64 ó 80 (según versión).
1.1E+4932

Números Reales

Los números reales se definen con “float” o “double”. La diferencia entre ambas es la precisión
que ofrece su representación interna. Hay un número infinito de reales, pero se representan con
un número finito de bits. A mayor número de bits, mayor número de reales se representan, y por
tanto, mayor precisión. Los reales definidos con “double” tienen un tamaño doble a los definidos
con “float”. Al igual que en el caso de los enteros, el tamaño de estas representaciones varía de
una plataforma a otra.

Algunas plataformas ofrecen números reales con tamaño mayor al “double” que se definen como
“long double”. Los tamaños típicos para los tipos “float”, “double” y “long double” son 4, 8 y 12
bytes respectivamente. A continuación se muestran varias definiciones de números reales

Números enteros

Se definen con “int” y admiten de forma opcional dos prefijos modificadores:


“short” y “long”: Modifica el tamaño en bits del entero. Existen por tanto tres tipos de enteros:
“int”, “short int” (que se puede abreviar como “short”), y “long int” (que se puede abreviar como
“long”).
El lenguaje C no define tamaños fijos para sus tipos de datos básicos. Lo único que garantiza es
que un short int tiene un tamaño menor o igual que un int y este a su vez un tamaño menor o
igual a un long int. Esta característica del lenguaje ha complicado la creación de programas que
sean compatibles entre varias plataformas.
“unsigned”: define un número natural (mayor o igual a cero).

Letras y cadenas (Char y String)

Las variables de tipo letra se declaran como “char”. Para referirse a una letra se rodea de comillas
simples: 'M'. Como las letras se representan internamente como números, el lenguaje C permite
realizar operaciones aritméticas como 'M' + 25.

Las cadenas de caracteres son un caso especial de tipo de datos, ya que algunos lenguajes lo
incorporan como tipo elemental (con un tamaño fijo), mientras que en otros lenguajes se define
como un vector de caracteres (de longitud fija o variable) que es una estructura indexada. Como

122
se ve, los campos de un registro pueden ser de otros tipos compuestos, no sólo de tipos
elementales

Las cadenas de texto o strings son simplemente tablas de “char”. Las funciones de biblioteca
para manipular estas cadenas asumen que el último byte tiene valor cero. Las cadenas de texto
se escriben en el programa rodeadas de dobles comillas y contienen el valor cero al final. A
continuación se muestran dos definiciones:

#define SIZE 6
char a = 'A';
char b[SIZE] = "hello";

A continuación se te muestra una tabla en la cual deberás completar dentro de cada recuadro,
el identificador, tipo de dato o ejemplo según sea el caso.

Identificador Tipo de dato Ejemplo


Char
Promedio
Cantidad

Calificación_1 8.3
float
Respuesta Boolean
Hermosillo
Edad
int
float

Color verde

123
Tipos de operadores (aritméticos, unarios, condicional, de asignación relacionales y
lógicos) del lenguaje de programación estructurado para la solución de problemas
cotidianos

Un operador es un símbolo que indica alguna


operación sobre uno o varios objetos del
lenguaje, a los que se denomina operandos, es
decir un elemento de programa que se aplica a
uno o varios operandos en una expresión o
instrucción.

Atendiendo al número de operandos sobre los


que actúa un operador, estos se
clasifican en:
 Unarios: actúan sobre un solo operando
 Binarios: " " 2 operandos

Los operadores que requieren un operando, como el operador de incremento se conocen como
operadores unarios.
Los operadores que requieren dos operandos, como los operadores aritméticos (+,-,*,/) se
conocen como operadores binarios.

1. Aritméticos
Tipos de 2. Relacionales
operadores 3. De asignación
dependiendo 4. Lógicos
de su operación 5. De dirección
6. De manejo de bits

Los operadores, junto con los operandos, forman expresiones.


En una expresión, los operandos pueden ser constantes, variables o llamadas a funciones que
devuelvan valores (como la función multiplica ()).

 Operadores aritméticos
Clasificación según el número de operandos sobre los que actúa un operador, los operadores
aritméticos se exponen en la siguiente tabla:
Los operadores -, + y * funcionan del mismo modo que en el resto de los lenguajes de
programación.
El valor devuelto por el operador / depende del tipo de los operandos. Si estos son enteros,
devuelve la parte entera del cociente; si alguno de ellos es real, devuelve el resultado como
número real. El operador % es equivalente al operador mod. Proporciona el resto de la división
entera de los operandos, que han de ser enteros.

124
Por ejemplo, dadas las sentencias
int X, Y;
X = 9;
Y = 2;
La operación X/Y devuelve el valor 4, mientras que la operación X%Y devuelve 1. Sin embargo,
después de las sentencias
float X;
int Y;
X = 9.0;
Y = 2;
La operación X/Y devuelve 4.5, no pudiéndose aplicar, en este caso, el operador % puesto que
uno de los operandos no es entero.
Los operadores ++ Y -- aumentan o disminuyen, respectivamente, en una unidad el operando
sobre el que actúan. Así, las expresiones
X++; X- -;
Producen el mismo efecto sobre la variable X que
X = X + 1; X = X - 1;
Es importante tener en cuenta la posición de los operadores ++ Y -- cuando se encuentran dentro
de una expresión más compleja. Si el operador está antes de la variable, la operación de
incremento o decremento se realiza antes de usar el valor de la variable. Si el operador está
después, primero se usa el valor de la variable y después se realiza la operación de incremento
o decremento. Para aclarar esto, tomemos un ejemplo. Después de las sentencias
X = 10;
Y = ++X;
Los valores que se almacenan en las variables X e Y son, en ambos casos, 11. Puesto que el
operador está antes de la variable X, primero se incrementa ésta (asumiendo el valor 11), y
después se asigna el valor de X a la variable Y. Sin embargo, después de las sentencias
X = 10;
Y = X++;
Los valores para X e Y serán, respectivamente, 11 y 10. En este caso, puesto que el operador
está después de la variable X, primero se usa el valor de ésta (10) y se asigna a Y; después se
realiza la operación de incremento, pasando X a almacenar el valor 11.

125
 Operadores relacionales

Se usan para expresar condiciones y describir


una relación entre dos valores.

Estos operadores se usan en sentencias del


tipo (Condicional, es decir, cuando se usa la
condición de if))

if (a == b) printf ("Son iguales");


Que debe leerse "si el contenido de la variable a es igual al de la variable b muestra en pantalla
la frase Son iguales".
El resultado de una expresión relacional sólo puede ser verdadero o falso, lo que en C se identifica
con los valores distinto de cero y cero, respectivamente. En la sentencia anterior, la expresión a
== b se evaluará como 0 si a y b son diferentes, y como distinto de 0 si son iguales.
Ejemplo de operar los aritméticos con los relacionales:
El resultado de una operación aritmética es un Número, a diferencia de comparar dos números
mediante operadores relacionales, el resultado siempre será un valor de verdad F o V.

Otro ejemplo sería:

(3*4 > 5+2) = (12 > 7) = V


(5+3-4 <= 6-2*2) = (4 <= 2) = F

 Operadores de asignación

Este tipo de operadores, como lo indica su


nombre, permiten la asignación de un valor
específico a una variable.
Una asignación también es un operador que
devuelve la variable modificada. C++ tiene la
capacidad de descartar los resultados
devueltos y no usados, tanto de expresiones
como de llamadas a funciones. Los otros operadores de asignación no son sino abreviaciones
que pueden hacer más cómodas y simples las expresiones, aunque a veces sean más ilegibles.

126
Existen varios operadores de asignación, el más evidente y el más usado es el "=", en C++,
también podemos utilizar los que se observan en la siguiente tabla:
Todos ellos son operadores binarios, de los cuales, “ = ” es el único
de asignación simple, los demás son operadores de asignación
compuestos, puesto que están conformados por más de un símbolo,
por ejemplo “+=” se compone del operador “+ “ y el operador “ = “.
Los seis primeros aceptan operandos de distinto tipo, mientras que
los cinco últimos: <<=, >>=, &=, ^= y |=, implican manejo de bits, por lo que sus operandos deben
ser numero int en sus distintas variantes.
La parte izquierda (que tiene que ser una variable
no constante) adquiere el valor señalado en la
expresión de la derecha, pero se mantiene el tipo
original de la variable de la parte izquierda. En
caso necesario se realiza una conversión de tipo
(con pérdida de precisión en su caso) del
izquierdo al derecho.
Es necesario resaltar que el operador C++ de
asignación simple (=) se distingue de otros
lenguajes como Pascal que utilizan el símbolo :=
para este operador. Observe también que la asignación simple (=) utiliza un símbolo distinto del
operador relacional de igualdad (==)” [2]. Además, en los operadores compuesto no debe haber
espacios de la forma “+ =” y que el igual siempre va a la derecha del resto de operandos.

 Operadores lógicos

Actúan sobre expresiones booleanas (F o V),


es decir, sobre valores verdadero o falso
generados por expresiones como las
explicadas en el caso anterior.

El resultado de una operación lógica


viene dado por su tabla de verdad. La
tabla de verdad de los operadores !,
&& y || se muestra a continuación:

AND
Devuelve un valor lógico true si ambos operandos son ciertos. En caso contrario el resultado es
false.
La operatoria es como sigue: El primer operando (de la izquierda) es convertido a bool. Para ello,
si es una expresión, se evalúa para obtener el resultado.
127
OR
Este operador binario devuelve “V” si alguno de los operandos es “V”. En caso contrario devuelve
“F”. Este operador sigue un funcionamiento análogo al anterior. El primer operando (izquierdo) es
convertido a bool. Para ello, si es una expresión, se evalúa para obtener el resultado.
NOT
Este operador es denominado también No lógico y se representa en el texto escrito por la palabra
inglesa NOT (otros lenguajes utilizan directamente esta palabra para representar el operador en
el código). El operando (que puede ser una expresión que se evalúa a un resultado) es convertido
a tipo bool, con lo que solo puede ser uno de los valores cierto/falso. A continuación el operador
cambia su valor; Si es cierto es convertido a falso y viceversa.

Se evalúan las expresiones relacionales,


de las cuales resulta un valor de verdad, y
una vez eliminados todos los paréntesis se
evalúan los operadores lógicos, siguiendo
la jerarquía de su operación, finalmente se
obtiene un valor de verdad.

 Operadores de dirección

El operador de referencia (&) nos devuelve la dirección de memoria del operando.

Sintaxis:
&<expresión simple>
Por ejemplo:

int *punt;
int x = 10;
punt = &x;

El operador de indirección (*) considera a su operando como una dirección y devuelve su


contenido.
Sintaxis:
*<puntero>

Ejemplo:

128
int *punt;
int x;
x = *punt;

 Operadores de manejo de bits.


La manipulación de bits u operaciones bit a bit (bitwise) son algo común en los programas con
microcontroladores, ya que nos permiten configurar los registros para usar el hardware incluido,
acceder a los puertos de entrada y salida, hacer “cálculos rápidos”, verificar la autenticidad de los
datos enviados/recibidos, etc.

En lenguaje C, este tipo de “manipulaciones” se realizan con operadores que están incluidos en
el lenguaje. Estos operadores son iguales a las básicas en álgebra booleana:

Además de operaciones de corrimiento:

>> – corrimiento a la derecha


<< – corrimiento a la izquierda
Explicaremos cada una de estas operaciones.

Operación AND (&)

Esta operación es de multiplicación. Por ejemplo, para la operación: a = b


& c; donde (en binario) b=10101010 y c=11001100
Como se ve, si ambos bits (que están en la misma posición) son ‘1’ el
resultado será también ‘1’

Operación OR (|)

Esta operación es de suma. Donde cualquiera de los bits que se encuentren


en la misma posición sea ‘1’, el resultado será ‘1’. Por ejemplo, para la
operación: a = b | c; donde (en binario) b=10101010 y c=11001100
Por cierto, no esta demás aclarar que estas operaciones son conmutativas
(‘a & b’ es lo mismo que ‘b & a’)

Operación NOT (~)


Esta operación sólo se aplica solo a un elemento, pero invierte los valores
de los bits del elemento involucrado. Por ejemplo, para la operación: a =
~b; donde (en binario) b=10101010

Corrimiento a la derecha (>>)

Este corrimiento, desplaza los bits de izquierda a derecha (del bit más
significativo al menos significativo), un número definido de veces, el bit
menos significativo se pierde a cada corrimiento, mientras que el bit más
significativo se va rellenando con un cero. Por ejemplo, para la
operación a = b>>3; con b= 10101010, se hacen tres desplazamientos
a la derecha, con lo que ‘a’ queda con el valor 00010101. También esta
129
operación se puede ver como que a cada desplazamiento se hace una división entre 2, por lo que
en nuestro ejemplo, se divide tres veces entre 2, y en total se hace la división entre 8.

Corrimiento a la izquierda (<<)

Es un proceso similar al anterior. Aquí, a cada corrimiento, el bit más


significativo se va perdiendo y el menos significativo se va llenando con
cero. Se puede entender también como una multiplicación por 2 por
cada desplazamiento. Por ejemplo, con el resultado de a (operación
anterior), ahora hacemos b= a<<3; b queda al final con el valor
10101000.

Resuelve los siguientes ejercicios en base al material visto anteriormente con respecto a
los operadores

1. A continuación se te muestra una tabla que contiene condiciones que regularmente se


presentan dentro de una condición en la codificación, escribe en la columna correspondiente
la forma correcta de edición utilizando los operadores relacionales y lógicos respectivamente.

Condición utilizando los operadores


Condición en nuestro lenguaje
relacionales y lógicos

(Prom igual a 6)

(Num diferente a 0)

(Num mayor a 6) y (Num menor que 15)

(Color igual a Rojo) o (precio mayor a 500)

(Edad mayor o igual a 12) y (Edad menor que 20)

130
2. Resuelve cada una de las expresiones aritméticas y de comparación que se te dan a
continuación.

Operación Desarrollo para su solución

(F) OR (F) AND (V) OR NOT(F) NOT (V) AND(V)

NOT ((12<3 OR 23<4) AND(4<2 AND 23>=34))

NOT(2<7) AND ( NOT (8<9) OR NOT (5<=12))

(12>=6) OR (2<8) AND (1>08) OR NOT (2<7)

Partes que integran un programa en lenguaje estructurado

1 // Programa que muestra el mensaje *******CECyTES Hermosillo IV******* por pantalla


2 #include <iostream>
3 using namespace std;
4 int main(void)
5 {
6 cout << "******CECyTES Hermosillo IV******\n";
7 }

131
1) Definición de cada una de las partes del programa anterior:

// Programa que muestra el mensaje *****CECyTES Hermosillo IV******* por pantalla


Esta línea es un comentario.
Un comentario es cualquier información que se escribe el en programa para proporcionar
información de cualquier tipo.
Todas las líneas que comienzan con dos barras (//) se consideran comentarios y no tienen ningún
efecto sobre el comportamiento del programa.
Los comentarios también pueden ir entre los símbolos /* y */. En ese caso pueden ocupar más
de una línea.

2) #include <iostream>

Directivas del preprocesador. Existen archivos de cabecera estándar muy utilizados:


stdlib.h, string.h(uso de funciones de cadena), math.h(uso de funciones matemáticas), conio.h,
iostream.h(uso de funciones de entrada y salida), type.h(uso de funciones de clasificación de
caracteres).
El uso más frecuente en C++ de las directivas del preprocesador es la inclusión de archivos de
cabecera, pero también se usan para definir macros, nombres de constantes, etc.
#include <iostream> Esta línea es una directiva del preprocesador.
Todas las líneas que comienzan con el símbolo # son directivas para el preprocesador.
Este símbolo indica al compilador que lea las directivas antes de compilar la función principal
La directiva #include, sirve para insertar ficheros externos dentro de nuestro programa.
Las directivas más usadas son #define y #include.
Estos ficheros son conocidos como ficheros incluidos, ficheros de cabecera o headers.
Estos ficheros le dan instrucciones al compilador antes de que se compile el programa principal
En este caso, la directiva #include <iostream> indica al preprocesador que en este programa se
debe incluir el archivo iostream. El código fuente no cambia, pero el compilador ve el fichero
incluido.
iostream es la librería de entrada/salida de C++.
Si no se incluye esta librería no podemos utilizar la instrucción cout para imprimir un mensaje por
pantalla.
La inclusión de ficheros la podemos realizar de dos formas:
#include <nombre de fichero cabecera>
#include "nombre de fichero de cabecera"
En el primer caso el preprocesador buscará en los directorios include definidos en el compilador.
En el segundo, se buscará primero en el directorio actual, es decir, en el que se encuentre el
fichero fuente, si no existe en ese directorio, se buscará en los directorios include definidos en el

132
compilador. Si se proporciona el camino como parte del nombre de fichero, sólo se buscará en el
directorio especificado.

3) using namespace std;


En grandes proyectos formados por varios archivos, es posible que en archivos diferentes del
mismo proyecto se encuentren recursos con el mismo nombre. Para evitar confusiones y saber a
qué recurso estamos haciendo referencia se utilizan los espacios de nombres (namespace).
Un espacio de nombres es básicamente un conjunto de nombres de recursos (clases, métodos,
funciones, etc) en el cual todos los nombres son únicos.
Todos los elementos de la biblioteca estándar de C++ se declaran dentro de un espacio de
nombres llamado std.
Con la instrucción using namespace std estamos indicando que vamos a usar este espacio de
nombres.
Esta línea se incluirá en la mayoría de programas que escribamos en C++.
Si no la escribimos, la instrucción cout << "******CECyTES Hermosillo IV******\n"; tendríamos
que escribirla indicando el espacio de nombres donde se declara cout así:
std::cout<<”Hola mundo!!!\n”;

4) int main (void)


Un programa en C++ no orientado a objetos está formado básicamente por una o varias
funciones.
La función main() es la función principal del programa.
Una función C++ es un subprograma que devuelve un valor, un conjunto de valores o realiza una
tarea específica.
Todo programa C++ tiene una única función main() que es el punto inicial de entrada al programa.
La función principal es el punto de inicio del programa. Si el programa contiene varias funciones,
la ejecución del mismo comienza por la función main.
Todo programa escrito en C++ debe contener esta función.
Si se intenta declarar dos funciones main() dentro del programa se produce error.

5) {
Las llaves { } indican donde empiezan y donde acaban las instrucciones de la función.

6) cout << "******CECyTES Hermosillo IV******\n";


Esta línea muestra por pantalla "******CECyTES Hermosillo IV****** y un salto de línea.
cout es un objeto que se declara en el archivo iostream en el espacio de nombres std, por eso
tenemos que incluir ese archivo al principio del programa y declarar que vamos a utilizar ese
espacio de nombres.

133
Para mostrar datos en la pantalla podemos usar el operador << con el elemento cout, en este
caso cout << "******CECyTES Hermosillo IV******”; Pero para poder usar cout y << debemos
incluir la biblioteca donde están definidos.
Esta biblioteca tiene como archivo de cabecera iostream.h
Una vez que se incluye el archivo de cabecera, se puede utilizar todo lo que está definido en ella.
La instrucción acaba con punto y coma (;).
El punto y coma se utiliza para indicar el final de una instrucción y sirve para separarla de
instrucciones posteriores.
7) }
Se cierra la función main

134
A continuación se te presenta un programa en C++, identifica las partes que componen su
estructura y define cada una de ellas en la tabla que se encuentra en la siguiente sección.

135
Entorno del lenguaje estructurado C++ (CodeBlocks)
Conceptos de programa fuente, objeto y compilador

Es importante que para que puedas diseñar un programa o aplicación, se requiere que cuentes
con el conocimiento necesario relacionado al o los lenguajes de programación adecuados para
ello.

136
Se recomienda que mínimo
conozcas de dos LP ya que
podrás comparar y utilizar el que
más se ajuste a tus, así podrás
contar con varias herramientas a
tu alcance para distintas formas
de codificar tu programa,
permitiendo así crear tus propias
reglas al momento de crear tu
propio código.
Programa fuente.
Consiste en un texto con las
instrucciones en el lenguaje de
programación de tu elección, para
que otro usuario pueda leerlo,
interpretarlo, analizarlo y realizar una modificación si le es posible, es decir, el código que
ingresamos a la PC antes de que este sea ejecutado.

PROGRAMA FUENTE  PROGRAMA OBJETO (Con la ayuda de un Programa intérprete


o Compilador)

Programa objeto
Una vez que es escrito en el lenguaje de programación, por ejemplo en Lenguaje C++, está listo
para ejecutarse y convertirse en un programa objeto que interpreta exclusivamente el ordenador,
es decir, convertirlo a lenguaje máquina, para que el procesador pueda ordenar los datos
enviados y recibidos, transformarlos en Información y que ésta genere una respuesta en el resto
de los componentes.
De este modo, podemos definir programa o código fuente como:
“La traducción que el equipo realiza por sobre el Código Fuente, pasándolo a un lenguaje propio
del sistema binario que combina la utilización de ceros y unos para lograr la transmisión o no-
transmisión de energía eléctrica, teniendo la combinación de las mismas la representación de un
caracter o una respuesta determinada”.
Para poder realizar esto es necesario que además de conocer el lenguaje de programación
adecuado para poder programar y editar el texto correspondiente, también necesitamos contar
con una aplicación que es conocida como programa intérprete, aunque el nombre más común
por el cual la reconocemos es de Compiladores.

Compiladores
La misión de estas aplicaciones es bastante simple y complicada a la vez, ya que se encargan
de realizar una traducción del lenguaje de programación en el que se ha programado un código,
al lenguaje del programa objeto para que pueda ser interpretado directamente por el ordenador
y cada uno de sus componentes de hardware.
La operación no se realiza por sí sola sino que necesita del auxilio de una aplicación conocida
como enlazador o montador (o bien bajo su nombre en inglés, Linker) que es la que da los últimos
retoques al código objeto para que pueda ser interpretado finalmente por el procesador y
ejecutado por el resto del hardware.
137
A continuación debes definir el concepto de cada uno de los tipos de programa que se analizaron
anteriormente con ayuda del docente.

Programa Fuente:
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________

Programa Objeto:
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________

Programa intérprete o Compilador:


__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________

Entorno de Code::Blocks

Code::Blocks es un entorno de desarrollo integrado libre y multiplataforma para el desarrollo de


programas en lenguaje C y C++. Está basado en la plataforma de interfaces gráficas WxWidgets,
lo cual quiere decir que puede usarse libremente en diversos sistemas operativos, y está
licenciado bajo la Licencia pública general de GNU.

138
Debido a que Dev-C++ es un IDE para los lenguajes C y C++ y está
creado en Delphi, surgió la idea y necesidad de crear un IDE hecho
en los lenguajes adecuados: C y C++. Con esta motivación se creó
Code::Blocks.
Code::Blocks es un IDE construido como un núcleo altamente
expansible mediante complementos (plugins). Actualmente la mayor
parte de la funcionalidad viene provista por los complementos incluidos predeterminadamente.
No es un IDE autónomo que acepta complementos, sino que es un núcleo abstracto donde los
complementos se convierten en una parte vital del sistema. Esto lo convierte en una plataforma
muy dinámica y potente, no solo por la facilidad con que puede incluirse nueva funcionalidad, sino
por la capacidad de poder usarla para construir otras herramientas de desarrollo tan solo
añadiendo complementos.

El entorno de desarrollo CodeBlocks integra, entre otras, las herramientas:

 Editor orientado al lenguaje C y C++ (resaltando palabras claves, texto autocompletado,


etc)
 Compilador C y C++.
 Depurador visual (Debugger), que permite visualizar el contenido de variables.
 Visor de proyectos y ficheros.
 Herramientas complementarias.

139
Opción Manager o Management (panel de proyecyo)

Comando que activa el panel


administrador permitiendo visualizar
la ventana que contiene los proyectos
creados durante nuestra sesion de
Code::Blocks.
Aquí se muestra la raiz de nuestros
proyectos, es decir nuestro espacio de
trabajo (Workspace)
Panel que activamos o desactivamos
mediante el metodo abreviado Shift +
F2
Dentro de este espacio encontraras el
proyecto, y dentro de el la carpeta de
Source, es decir los codigos de programacion como lo es el main.cpp, que viene siendo el
programa a ejecutar.

Esta ventana contiene la gestión de los proyectos de interfaz como la vista del proyecto. Esta
vista muestra todos los proyectos abiertos en CodeBlocks en un momento determinado. La
pestaña "Símbolos" de la ventana de Gestión muestra símbolos, variables, etc.
Una vez creado el proyecto, el entorno muestra en la parte izquierda las carpetas y sus archivos
en forma de árbol. Aquí se puede observar que el proyecto tiene un solo archivo llamado “main.c”.

Principales opciones del menú View (Code::Blocks)

Start Page
Comando que permite mostrar la pantalla de inicio del programa en la cual el usuario puede abrir
directamente un nuevo proyecto o archivo uno ya existente, o que fue utilizado recientemente.
Lo cual es de bastante ayuda si se
requiere de encontrar un proyecto
que realizamos anteriormente y no
deseamos o recordamos la ruta
mediante la cual fue guardada en el
equipo.

140
Logs & others
Esta ventana se utiliza para dar salida a los
resultados de búsqueda, mensajes de log
compilador, etc. Es aquí donde observas los
errores del programa al momento de ejecutar
la opción de Build, es decir, al omento de
construir o compilarlo, así como la línea en la
cual se encuentran.

Hide editor tabs


Permite activas y desactivar el identificador
del programa, en este caso el main.cpp.

Status bar

Activa la barra de estado del programa, lo cual


nos muestra el estado de las teclas insert, asi como la linea y columna en la que se encuentra
ubicado nuestro cursor a la hora de editar nuestro código, ademas, nos muestra la ruta de acceso
a nuestro proyecto.

141
Open files list
Permite abrir la ventana o panel
que muestra los archivos abiertos
durante nuestra codificación.

Proceso de creación y ejecución de un proyecto en C++

Proyecto de Code::Blocks
Para nosotros, un proyecto va a ser un programa, una aplicación.

¿Qué es un proyecto? Para nosotros, un


proyecto va a ser un programa, una aplicación.
El cual podemos crearlo desde la opción New, del
menú File. y en el submenú seleccionar
Project…
También podemos elegir la opción que se
muestra en la ventana inicial.
Inmediatamente después se muestra el cuadro
de dialogo con las categorías para tu nuevo
proyecto, en la cual debes seleccionar la opción
Console Application, para después seleccionar el
botón Go, o simplemente oprimir la tecla Enter,
para continuar, Seleccionar el botón de Next, para después seleccionar el lenguaje en el cual
deseas programar, en este caso debes seleccionar la opción de C++, Opción Next, Darle nombre
al proyecto o programa asi como la ruta o ubicación en donde se deberá crear el programa, Seguir
con la siguiente ventana en la cual dse determina por default el Compilador a utilizar, en este
caso será GNU GCC Compiler, para finalmente seleccionar el botón de Finish, para terminar con
la creación del proyecto.

Con lo anterior creamos el proyecto en el cual se observa la generación de la carpeta Sources la


cual contiene el archivo main con la extensión .cpp, en la cual se generará el código fuente, el
cual se escribe en este caso Lenguaje C++.

Existe otra forma de crear un proyecto vacío y luego agregar los archivos que se crean al
proyecto.

142
Para crear un archivo se ingresa al menú File -> New -> File…. El entorno mostrará una imagen
indicando qué tipo de archivo se quiere crear

Para crear un archivo fuente de C elegir la


opción “C/C++ source”. Otra posibilidad es
crear un archivo vacío y luego guardarlo con
extensión “.c”

Edición
La edición no es más que escribir el código programa propiamente dicho en lenguaje C. Una vez
escrito el código, éste debe ser almacenado en un fichero con extensión “.c”. Existen otro tipo de
ficheros fuente que se denominan ficheros de cabecera (header) y cuya extensión es “.h”.
Compilación (Build) y Enlazado

143
Debido a que en sí Code::Blocks es sólo
la interfaz del entorno de desarrollo,
puede enlazarse a una variedad de
compiladores para poder desarrollar su
trabajo. Por defecto, este software buscará una
serie de compiladores y configurará los que
encuentre.
Esta función se encarga de realizar una
"Traducción" o “Construcción” del lenguaje de
programación en el que se ha programado un
código, al lenguaje del programa objeto para que
pueda ser interpretado directamente por el
ordenador y cada uno de sus componentes de
Hardware. Detectando errores que no permitirán
que el programa sea ejecutado.
Suele denominarse compilación, al conjunto de procesos que transforma el código fuente escrito
en C en un fichero ejecutable (“.exe”). La compilación se divide en tres etapas: la precompilación
(en la que se realiza el análisis sintáctico y se prepara el código para ser compilado), la
compilación propiamente dicha (en la que se genera un código intermedio llamado código objeto)
y el enlazado o linkado (donde se enlaza el código objeto con las librerías estándar y externas
para formar el ejecutable). Si no se producen errores de compilación, como resultado obtenemos
un programa con el mismo nombre que el
código fuente original pero con extensión
“.exe”.

Ejecución (Run)
Una vez compilado el programa, se ejecuta
haciendo doble clic sobre el fichero
ejecutable generado o directamente desde el
entorno de trabajo. En esta fase también se
pueden producir errores por mal
funcionamiento del programa, denominados
errores de ejecución. Estos errores son más
difíciles de corregir, ya que el compilador no
indica qué error hay ni dónde se produce,
siendo necesario en la mayoría de los casos
depurar el programa.

Esta opción es la que ejecuta el programa, es decir, corre el código y muestra el resultado en la
consola o ventana de comandos.
Debemos tener presente que cada vez que le hagas modificaciones al código, debes ejecutar la
opción de construcción “Build”, ya que esta debe regenerar el código objeto para su
interpretación.
También lo podemos hacer de forma conjunta, Build/Run, y con esto hace las dos funciones a la
vez, construye u ejecuta de una sola vez.

144
Depuración (Debug)
La mayoría de los entornos de programación
permiten depurar programas realizando una
ejecución paso a paso y consultar los valores que
van tomando las variables, de manera que
podemos hacer una traza para detectar dónde y
por qué se producen los errores y corregir los
mismos
La depuración no se produce cuando el
programa se ejecuta normalmente; mediante
Ctrl+F10 o F9. Para depurar un programa es
necesario seleccionar la opción Debug >> Start,
o bien pulsar F8, que lanza la depuración del
programa desde el principio. Si deseas empezar
a depurar desde un punto determinado, o durante
la depuración, hacer que el programa corra normalmente hasta una determinada línea, se sitúa
el cursor sobre esa línea y se selecciona Debug >> Run to cursor, o se pulse F4.

A la hora de depurar un programa, se utilizan principalmente las opciones Debug>>Step into (Shift
+ F7) y Debug>>next line (F7). Mientras que la segunda va avanzando de línea en línea, y
ejecutando a las funciones que son llamadas en cada una de manera transparente, la primera
permite saltar de función en función, conjuntamente con el flujo del programa.

Comandos de Debug

Debug/Continue Para comenzar/continuar el debug


Run to cursor Corre el programa hasta donde está el cursor
Next line Avanza una línea la ejecución
En caso de estar en una línea que es una
llamada a una función, con esta opción
Step into podemos hacer el seguimiento dentro de esta
función (Ojo con las variables locales que la
idea de “local” cambia).
Termina la ejecución de la función actual y
Step out sigue en la siguiente línea desde donde fue
llamado
Stop debugger Termina el debug

145
A continuación deberás respondes a lo que se te pide, con el fin de evaluar los aprendizajes
obtenidos referentes al entorno y comandos principales de Code::blocks.
1. Escribe sobre la línea el nombre de cada uno de los comandos señalados en la imagen.

2. Enlista los pasos para la creación de un proyecto en Code::Blocks


a) _________________________________ f) _________________________________
b) _________________________________ g) ________________________________
c) _________________________________ h) ________________________________
d) _________________________________ i ) ________________________________
e) _________________________________ j ) ________________________________

3. Define la función de los siguientes comandos y paneles:

a) Build:
___________________________________________________________________________
__________________________________________________________________________

b) Debug:
___________________________________________________________________________
__________________________________________________________________________

c) Run:
___________________________________________________________________________
__________________________________________________________________________

Management:
___________________________________________________________________________
__________________________________________________________________________

d) Logs:
___________________________________________________________________________
__________________________________________________________________________

146
Unidad III
DESARROLLO DE
PROGRAMAS MEDIANTE
ESTRUCTURAS DE
CONTROL
COMPETENCIAS DISCILINARES
C1 Identifica, ordena e interpreta las ideas, datos y conceptos explícitos e implícitos en un texto, considerando
el contexto en el que se generó y en el que se recibe.
M1 Construye e interpreta modelos matemáticos deterministas o aleatorios mediante la aplicación de
procedimientos aritméticos, algebraicos, geométricos y variacionales, para la comprensión y análisis de
situaciones reales o formales.
M8 Interpreta tablas, gráficas, mapas, diagramas y textos con símbolos matemáticos y científicos.
CE9 Diseña modelos o prototipos para resolver problemas, satisfacer necesidades o demostrar principios
científicos.
COMPETENCIAS GENÉRICAS
4.1 Expresa ideas y conceptos mediante representaciones lingüísticas, matemáticas o gráficas.
4.2 Aplica distintas estrategias comunicativas según quienes sean sus interlocutores, el contexto en el que se
encuentra y los objetivos que persigue
8.2 Aporta puntos de vista con apertura y considera los de otras personas de manera reflexiva
8.3 Asume una actitud constructiva, congruente con los conocimientos y habilidades con los que cuenta dentro
de distintos equipos de trabajo

147
 Utiliza las sentencias de entrada y salida en la programación estructurada.
 Identifica la función de salida (printf) y de entrada(scanf).
 Identifica la función de salida (cout) y de entrada(cin).
 Desarrolla programas secuenciales en C++.
 Emplea las estructuras de control selectiva (If-Else, While, Do While, For, Switch) en la
programación estructurada.
 Aplica el anidamiento en las estructuras de control (If, For y While) en la programación
estructurada.
 Ejecuta las funciones (void) durante el desarrollo de la programación estructurada.

148
A continuación se presentan una serie de preguntas relacionadas con conceptos básicos de la
programación estructurada que profundizarás con más detalle a lo largo de las actividades.
Esfuérzate por contestarlas escribiendo sobre las líneas cada una de las respuestas que
consideres correctas.

1. ¿Cuál es el concepto de sistema?


____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

2. ¿A que le conoces como entrada del sistema?

____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

3. ¿Cómo defines el concepto de Salida?


____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

4. Menciona el concepto de proceso de datos

____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

5. ¿Qué elementos crees tú que intervienen en el proceso de los datos en un sistema de


información?

____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

6. ¿En qué consiste el término de ciclo o repetición de un proceso?

____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________

149
Sentencias de entrada y salida para la codificación de programas estructurados
Entradas y salidas estándares en el proceso de la programación estructurada (iostream.h
y stdio.h)

Al mencionar Entrada y Salida estándar, o bien E/S, significa que los datos que ingresamos a la
computadora para ser leídos, son ingresados por el teclado, el cual es un dispositivo estándar.
Al igual, cuando nos referimos a salida estándar, significa que los datos ya procesados, o que
una vez que se ingresaron al equipo, estos pueden ser mostrados en pantalla el cual también es
un dispositivo estándar de salida en nuestro sistema de cómputo.
En el lenguaje C++ tenemos varias alternativas para ingresar y/o mostrar datos, dependiendo de
la librería que vamos a utilizar para desarrollar el programa, entre estas están: iostream.h y stdio.h.

 < iostream.h>
Dentro de las operaciones que forman parte del conjunto de sentencias de C++, no se encuentran
consideradas las de entrada y salida, es decir, estas dependen de la librería que se utilice como
cabecera del mismo, es decir, pertenecen al conjunto de clases y funciones que conforman la
biblioteca estándar de C++.
Es decir, las sentencias de E/S, están incluidas en la biblioteca o archivo de cabecera iostream.h,
y debido a esto, esta debe ser incluida siempre en la cabecera de nuestro código, de ahí viene la
línea de código #include <iostream.h>
Esta biblioteca es una implementación orientada a objetos y está basada en el concepto de flujos.
A nivel abstracto un flujo es un medio de describir la secuencia de datos de una fuente a un
destino o sumidero.

Así, por ejemplo, cuando se introducen caracteres desde el teclado, se puede pensar en
caracteres que fluyen o se trasladan desde el teclado a las estructuras de datos del programa.

Los objetos de flujo que vienen predefinidos serán:

 cout (salida o impresión de caracteres):


Para imprimir una salida de texto en C++ se hace uso de la instrucción cout<< es importante
tener en cuenta que la instrucción cout siempre va acompañada de << para controlar el flujo de
datos que sale, ya que out significa salida, será más fácil recordarlo, agregándole c por estar
programando en este lenguaje, es decir, que muestra o imprime caracteres en la salida estándar
(pantalla);

 cin(entrada o lectura de datos):


Leer datos por teclado en C++ se hace usando el comando cin >> que al igual de la funcion cout,
debe ir acompañado siempre se dos símbolos, pero en este caso son a la inversa, es decir >>
que son usados para controlar el flujo de datos que entran. Una manera muy sencilla de recordar
esta instrucción es que in significa entrar y como estamos programando en C le añadimos la letra
c al comienzo quedando así cin>> , es decir, que toma caracteres de la entrada estándar
(teclado).
Ambas funciones de E/S, como se dijo anteriormente se utilizan mediante los operadores << y >>.

150
El operador << se denomina operador de inserción; y apunta al objeto donde tiene que enviar
la información.
Por lo tanto la sintaxis de cout será:

cout<<variable1<<variable2<<...<<variableN;

No olvidemos que las cadenas de texto son variables y se ponen entre " " (comillas dobles).

Por otra parte el operador >> denominado operador de extracción, lee información del flujo cin (a
la izquierda del operador) y las almacena en las variables indicadas a la derecha).

La sintaxis sería la siguiente:


cin>>variable1>>...>>variableN;

Un ejemplo de código utilizando ambos objetos podría ser el siguiente:


#include <iostream.h>
...
main ()
{
float calif; // Se declara la variable tipo real o punto flotante por llevar un decimal
cout<<"Ingresa la calificación de programacion: "; // la cadena de caracteres es asignado al
dispositivo estándar de salida mediante cout, apuntando hacia el
cin>>calif; //El valor que se introduce, se hará asignándolo a la variable calif mediante la
sentencia cin, apuntando hacia ella
...
}
...
Que mostraría por pantalla la frase "Introduce la calificación de programacion" y posteriormente
almacenaría el valor introducido por teclado en la variable calif.

Cuando se imprime una salida de una variable que a sido procesada o simplemente se desea
mandar su valor a pantalla, se muestra de la siguiente forma:

P=(c1+c2+c3)/3;
cout<<”El promedio es: “ << P;

 <stdio.h>

A diferencia del archivo de librería de cabecera <iostream.h>, este requiere de las operaciones
de salida y entrada printf y scanf respectivamente.

 printf (salida a o impresión de caracteres)


Se utiliza para imprimir en pantalla cadenas de texto solas, o mandar a pantalla el valor de alguna
variable, o constante, o una combinación de las anteriores, con formato de salida estándar
(Pantalla).
La función printf se encuentra en la biblioteca de cabecera <stdio.h> del lenguaje C. Esta función
retorna o devuelve un valor entero que representa el número de caracteres enviados a la salida
estándar o un valor negativo en caso de error.

Su formato es el siguiente:
151
Printf("cadena de control", nombre_de_variables);

La operación de salida printf, permite al igual que cout, imprimir en pantalla, y para utilizarla
debemos incluir la línea de código :

#include <stdio.h>

Sintaxis:
Veamos un ejemplo:
a) Para mostrar un mensaje de salida estándar:

#include <stdio.h>
void main()
{
printf( "***CECYTES SONORA***" );
}

Como resultado muestra en pantalla:


***CECYTES SONORA***

b) Para mostrar el valor de una variable entera en la salida estándar:

Printf(“cadena”,valorDeReemplazo1,valorDeReemplazo2,…)

Cadena: Es cualquier cadena de texto encerrada entre comillas dobles. Dicha cadena podrá
contener secuencias de escape o comodines de formato para números, los cuales serán
reemplazados por valorDeRemplazo1, valorDeReemplazo2, etc.

Comodines de formato:
También conocidos como especificaciones de conversión, se utilizan para enviar a la
salida estándar los valores almacenados en las variables.

Los comodines de formato para números son:

Código Tipo de dato Formato


%d int Un entero
%i int Un entero
%c char Una caracter
%s string Una cadena
%f float Un real
%ld Int long Entero largo
%u Float insigned Decimal sin signo
%lf Double Doble posición
%h short Entero corto
%e Notacion Notación Científica
científica
152
#include <stdio.h>
void main()
{
int A;
A=30;
printf( "%d" , A );
}

Nos da como resultado:


30

Como puedes observar, la función reemplaza el


comodín %d, por el primer valor de la variable.

c) Para mostrar un mensaje de texto y el valor de una variable decimal o de punto flotante.

#include <stdio.h>
void main()
{
float Calif;
Calif=8.6;
printf( " Mi calificación es: %f ",Calif );
}

Nos da como resultado:


Mi calificación es: 8.600000

Y para que se muestre con un solo decimal hay que colocar el número .1 entre el % y la f del
comodín.

d) Para mostrar el valor de dos o más variables con distinto formato.

153
Precisión del valor a imprimir
%.precisionTipo
Ejemplo: %.2f
Si el resultado es 4.287
Te imprime el valor como 4.29

#include <stdio.h>
void main()
{
float a;
float b;
int c;
a=3.8;
b=123.45;
c=10;
printf( “%f %f %d”,a,b,c);
}
Nos da como resultado:
3.8 123.45 10
Es necesario definir el número de decimales de la forma %.1f ó %.2f

de tal manera que la salida o


resultado en pantalla se muestre con
el número de decimales que se
especifique entre el % y la letra que
indica el formato de la variable

En la función anterior hay tres


comodines. La función printf
reemplaza el primer comodín por el valor de la primera variable (en este caso la variable es pi) y
el segundo comodín por el valor de la segunda variable (en este caso edad) y finalmente el tercer
comodín por el valor 100 (referente a num). Pueden existir varios comodines y por cada uno de
ellos debe existir una variable de reemplazo en la lista.
Es importante recordar que el tipo de las variables en la lista debe de coincidir con el tipo descrito
en el comodín.

e) Mostrar valores de variables entre el texto de salida:


#include <stdio.h>
void main()
{
float Peso;
int Num;
float Est;
Peso=69.400;
Num=10;
Est=1.64;

154
printf("%d alumnos de %.2f mts. de estatura, pesan %.3f kg",Num,Est,Peso);
}
Nos da como resultado:
10 alumnos de 1.64 mts. de estatura, pesan 69 kgs.

Sentencias de escape:

Las sentencias de escape son comodines que dan formato a la salida estándar siendo las más
comunes las siguientes::
Sentencia de Función
escape
\n Nueva línea
\t Tabulación horizontal
\v Tabulación vertical
\f Nueva página
\b Retroceso
\r Retorno de carro

Sentencia de escape \n:

Si seguido del printf anterior, agregas otro


printf, este se imprimirá de forma contigua, es
decir, no saltara de línea, como lo puedes ver
en el siguiente ejemplo:

#include <stdio.h>
void main()
{
printf( "***CECYTES SONORA***" );
printf( "HERMOSILLO IV" );
}
Se mostrara la siguiente salida en pantalla: ***CECYTES SONORA***HERMOSILLO IV
155
El siguiente ejemplo nos mostrará cómo funciona printf con la sentencia de escape \n

Para escribir en la pantalla se usa un cursor que no vemos. Cuando escribimos algo el cursor va
al final del texto. Cuando el texto llega al final de la fila, lo siguiente que pongamos irá a la fila
siguiente. Si lo que queremos es sacar cada una en una línea deberemos usar la sentencia de
escape "\n".

Es el indicador de nueva línea. Lo que hace es saltar el cursor de escritura a la línea siguiente

Ejemplo:
#include <stdio.h>
void main()
{
printf( "***CECYTES SONORA***\n" );
printf( "HERMOSILLO IV" );
}

Lo que da como resultado en pantalla:

***CECYTES SONORA***
HERMOSILLO IV

También podemos poner más de una cadena dentro del printf:

Lo que no podemos hacer es meter otros textos u operaciones entre las cadenas:

VALIDO NO VALIDO
printf( "Primera cadena" "Segunda printf( "Primera cadena" texto intermedio "Segunda
cadena" ); cadena" );

Al momento de que el compilador de C++


trata de interpretar esta sentencia
encuentra "Primera cadena" y luego texto en
medio, no sabe qué hacer con ello y presenta
un error.

Pero ¿qué pasa si queremos imprimir el


símbolo " en pantalla? Por ejemplo
imaginemos que queremos escribir:
Mi Colegio es “CECYTES”
Si para ello hacemos:
printf( "Mi colegio es “CECYTES"" );

Esto nos mandara como resultado errores en la sentencia, ya que el problema es que el
símbolo " se usa para indicar al compilador el comienzo o el final de una cadena.
156
Así que en realidad le estaríamos dando la cadena "Mi Colegio es", luego CECYTES y luego
otra cadena vacía "". La función printf no nos permite hacer esto y de nuevo nos manda como
resultado un error.

La solución es usar \". Veamos:

printf( "Mi Colegio es \"CECYTES\"" );

Como puedes observar, la diagonal


invertida o contrabarra '\' sirve para
indicarle al compilador que escriba
caracteres que de otra forma nos sería
imposible.

La diagonal invertida se usa en C para


indicar al compilador que queremos
introducir caracteres o símbolos
especiales.

O bien, si se desean dobles


comillas seria:

Si lo que queremos es usar '\' como


un caracter normal y poner por ejemplo:
“Colegio\CECYTES”
Para esto, volvemos a utilizar ´\´, es decir, la
ponemos doble, a fin de que una de ellas sea
reconocida como carácter.
printf( "Colegio\\CECYTES" );

 scanf (operación de entrada o lectura de datos)

Algo muy usual en un programa es esperar que el usuario introduzca datos por el teclado. : en
este caso solo veremos el uso de las funciones de la biblioteca estándar, como lo es el scanf

El uso de scanf es muy similar al de printf con una diferencia, nos da la posibilidad de que el
usuario introduzca datos en vez de mostrarlos. No nos permite mostrar texto en la pantalla, por
eso si queremos mostrar un mensaje usamos un printf delante.
Ya que así evitamos que el usuario capture datos a ciegas ya que se antepondrá un texto que le
permita saber qué es lo que debe introducir.
En caso de no utilizar el printf antes, solo podrá observar el cursor en la pantalla, en espera de
que el este digite un dato.

157
En la línea de código en donde se muestre la sentencia de scanf, es necesario que se introduzca
una cadena de caracteres “%Tipo” al que le llamamos comodín el cual nos indica el formato de
la variable, el cual le muestra al compilador cómo será el formato del dato a capturar (entero,
decimal, carácter, etc.), y seguido de una coma(,) se agrega el símbolo & para especificar la
dirección o posición en la memoria será almacenado el dato a introducir por medio de la función
scanf, es decir, en que parte de la memoria será guardado el dato que contendrá nuestra variable.

Sintaxis: scanf ( “%d” , &Val ) ;


Por ejemplo:

#include <stdio.h>
void main()
{
int Val;
printf( "Captura un valor: " );
scanf( "%d", &Val );
printf( "Has capturado el valor: %d", Val );
printf ("\n");
}

Podemos preguntar por más de una


variable a la vez en un sólo scanf, solo que debemos de poner un %i por cada variable, esto
siempre y cuando la variable sea de tipo integer, o suponiendo si son tipo float, entonces los
comodines serán de tipo %f, etc.

Ejemplo:

#include <stdio.h>
void main()
{
int v1, v2, v3;
printf( "Introduce tres valores: \n " );
scanf( "%i %i %i", &v1, &v2, &v3 );
printf( "Has tecleado los números %i ,%i y %i ", v1, v2, v3);
}

158
De esta forma cuando el usuario ejecuta el programa debe introducir los tres datos separados
por un espacio.

También podemos pedir en un mismo scanf variables de distinto tipo:

#include <stdio.h>
void main()
{
int a;
float b;
printf( "Introduce dos números: " );
scanf( "%i %f", &a, &b );
printf( "Has tecleado los números %i %f\n", a, b );
}

A cada modificador (%i, %f) le debe corresponder una variable de su mismo tipo. Es decir, al
poner un %i el compilador espera que su variable correspondiente sea de tipo int. Si
ponemos %f espera una variable tipo float.

Usos de printf y scanf


cprintf("Mensaje"); Escribe Mensaje en color especificado
printf("Mensaje"); Escribe Mensaje en la pantalla
printf("Mensaje %d",Variable); Escribe Mensaje y el valor de la Variable en pantalla
printf("Mensaje %.2f",Variable); Escribe Mensaje y el valor de la Variable con 2 decimales
scanf("%d",&Variable); Asigna valor entero a Variable
scanf("%d %f",&Variable1,&Variable2); Asigna valor entero a Variable1 y valor real a Variable2

159
printf y scanf

C++ ofrece una alternativa a las llamadas de función printf y scanf para manejar la entrada/salida
de los tipos y cadenas de datos estándar.
Así en lugar de printf usamos el flujo estándar de salida cout y el operador << ("colocar en"); y en
lugar de scanf usamos el flujo de entrada estándar cin y el operador >>("obtener de").
Estos operadores de inserción y extracción de flujo, a diferencia de printf y scanf, no requieren
de cadenas de formato y de formato y de especificadores de conversión para indicar los tipos de
datos que son extraídos o introducidos.

Las siguientes funciones nos resultan indispensables para poder brindar una mejor presentación
de los datos en pantalla.

Gotoxy: Posicionando el cursor

Esta función sólo está disponible en compiladores de C que dispongan de la biblioteca <conio.h>

Hemos visto que cuando usamos printf se escribe en la posición actual del cursor y se mueve el
cursor al final de la cadena que hemos escrito.

Vale, pero ¿qué pasa cuando queremos escribir en una posición determinada de la pantalla? La
solución está en la función gotoxy. Supongamos que queremos escribir 'Hola' en la fila 10,
columna 20 de la pantalla:

#include <stdio.h>
#include <conio.h>
void main()
{
gotoxy( 20, 10 );
printf( "Hola" );
}

Es importante que recuerdes que para usar gotoxy hay que incluir la biblioteca conio.h

Observa que primero se pone la columna (x) y luego la fila (y). La esquina superior izquierda es
la posición (1, 1).

Clrscr: Borrar la pantalla

Ahora ya sólo nos falta saber cómo se borra la pantalla. Pues es


tan fácil como usar:

clrscr() (clear screen, borrar pantalla).

Esta función nó solo borra la pantalla, sino que además sitúa el


cursor en la posición (1, 1), en la esquina superior izquierda.

Este método sólo es para compiladores que incluyan el fichero


stdio.h.

160
Escribir un programa que muestre los
datos del alumno: Nombre, apellidos,
edad, grupo y especialidad.

De tal forma que el resultado de la


ejecución sea la siguiente:

161
A continuación se te presenta el código en C de dos programas, completa las palabras
del código faltante en ellos, con el fin de que estos puedan ejecutarse sin ningún
problema. Además deberás ejecutarlos en el centro de cómputo de tu plantel.

162
Programas secuenciales en C++

Estructuras secuenciales
La estructura secuencial está formada por una secuencia de instrucciones que se ejecutan en
orden una a continuación de la otra, sin que varíe por alguna condición, de forma que un programa
es interpretado por el compilador línea por línea empezando en la primera y siguiendo el orden
en que se han escrito las instrucciones.
Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así
sucesivamente hasta el fin del proceso.
Cada una de las instrucciones están separadas por el carácter punto y coma (;). El bloque de
sentencias se define por el carácter llave de apertura ({) para marcar el inicio del mismo, y el
carácter llave de cierre (}) para marcar el final.
Cuando se diseña una estructura secuencial en pseudocódigo normalmente se escribe una
instrucción, acabada en “;” por cada línea.

Por lo tanto, un algoritmo en pseudocódigo tendrá la siguiente forma:


Ejemplo:
{
instrucción 1;
instrucción 2;
instrucción 3;
.....
instrucción N;
}

Un ejemplo de algoritmo y diagrama de flujo de una estructura secuencial, en la cual se calcula


el area de un triángulo, sería el siguiente:
Pseudócodigo: Diagrama de flujo:

INICIO
Base,altura:ENTERO
ESCRIBIR “DIGA LA BASE:”
LEER base
ESCRIBIR “DIGA LA ALTURA:”
LEER altura
163
ESCRIBIR “Area del triángulo=”,(base*altura)/2
FIN
Como puedes observar, en las estructuras secuenciales todos los bloques van unidos por una
sola línea, de arriba abajo sin salirse de ella.
Las instrucciones pueden ser cualquier comando que necesitemos ejecutar para conseguir un
objetivo concreto. En C, se dispone de diferentes tipos de instrucciones.
Instrucciones de asignación

Una instrucción de asignación es aquella que permite dar un valor a una variable (como ya vimos
en el artículo anterior de Operadores y expresiones en C).
La sintaxis utilizada en pseudocódigo normalmente es la siguiente:
<nombre_variable> = <expresión>
Instrucciones de entrada
Las instrucciones de entrada son las que permiten al programa recibir información desde el
exterior (ingresadas por el usuario al momento de la ejecución del programa). Los programas
cuando reciben información, la tienen que guardar en zonas de memoria y por lo tanto el uso de
instrucciones de entrada implica la correspondiente utilización de variables.
Las instrucciones de entrada en pseudocódigo, se definen de la siguiente manera:
LEER ( nombre_variable [nombre_variable, …] );
Recuerda que en C++, las variables se deben declarar antes y éstas deben ser del mismo tipo
de dato que la información a guardar.
A continuación vemos un ejemplo de estructura secuencial con asignaciones:

// Inicio programa
#include <iostream>
// Reconocer por parte del compilador las sentencias de entrada y salida estándares)
using namespace std;
// Inicio función principal main()
int main(){
// Instrucción 1: Crear una variable "Valor" y asignarle el valor 5 (asignación)
int Valor=5;
// Instrucción 2: Subir un punto al valor anterior (asignación)
Valor++;
return 0;
}
// Fin función principal main()
// Fin programa

164
Ejemplo de estructura secuencial básica.

Resultado de su ejecución:

1. Pedimos los datos de entrada que se


requieren, calculamos el área y lo mostramos por
pantalla.
2. Escribir(“ ”) : Lo que este dentro de los
paréntesis es lo que se mostrara en pantalla
3. Leer() : Aquí se lee el dato ingresado por
teclado en la variable que está dentro del
paréntesis.
4. ← : la flecha nos indica que el valor
que se encuentra en la parte derecha será
asignada a la variable (la variable es la que
contiene el dato) que se encuentra al lado
izquierdo.

165
El anterior pseudocódigo quedaría de la siguiente forma en C++

<iostream>: Es una librería nos permite la salida y entrada de datos en nuestro programa lo
utilizaremos a menudo.
int main(){ } : Es el método principal y lo que está dentro de los corchetes el todo el código de
nuestro programa, explicare sobre métodos esto en otro tema que traten exclusivamente de
éstos.
Declaramos variables que van a contener la altura, base y el area del triángulo (toda sentencia
debe terminar en punto y coma)
int base;
int altura;
float area;
Siempre se tienen que declarar variables antes de utilizarlas, la forma de declarar una variable
en C++ es:
Tipo nombre;
166
Tipo: Es el tipo de variable que se eligiera dependiendo del dato que se desea guardar (int
(entero), float(de coma flotante), bool (booleano), char (caracter), entre otros).
El signo ” = “ es en DevC++ de asignación y no de igualdad quiere decir que el valor de
(base*altura)/2.0 será asignado a la variable area.
Al final mostramos el area.
cout<< : Es para la salida en pantalla.
<<endl y \n : Nos sirven para dar un salto siguiente línea de abajo.
cin>> : Es para entrada del teclado (lo que se lee desde teclado).
return 0; : Quiere decir retorna cero se pone al final.

Otro ejemplo de programa de tipo secuencial, es calcular el área del círculo, ya que no se requiere
de evaluar ninguna condición.

167
Resultado de la ejecución del programa:

168
Escribe sobre la línea el código en C++ faltante según sea el caso.

169
Concatenación de variables:

Concatenar, se refiere a la forma de cómo hacemos el llamado de las variables de salida. Lo cual
se realiza de forma distinta entre los lenguajes de programación,
Lenguaje C
Si llamamos a las variable de salida que muestra el promedio en el ejercicio anterior, en este caso
llamadas nom y prom, lo hacemos inmediatamente después de cerrar el enunciado que la solicita
separado por una coma e inmediatamente se escriben las variables en el orden en el cual se
fueron llamando:

printf(“\n El promedio de %s es de: %f” , nom, prom);


Lenguaje C++
En cambio, para lenguaje C++ la concatenación es distinta, las variables se concatenan entre el
enunciado, es decir, a medida que se llaman se incrustan entre los símbolos de menor (<<), por
ejemplo:
cout(“\n El promedio de “<<nom<<” es de: “<<prom);

Escribe el código en el recuadro que haga posible la ejecución como se muestra a continuación:

PROG-1

PROG-2

170
171
A continuación se te presenta una serie de problemas de tipo secuencia, los cuales
deberás resolver por medio del lenguaje C++. Cuyas corridas se muestran en cada
uno de ellos.
1. Calcula la suma de tres números A, B y C

2. Calcula el promedio de las edades de tres personas

3. Calcula la velocidad (km/h) con la que viaja un vehículo, para lo cual se desconoce
la distancia(km) y el tiempo (h) con la que corre.

4. Cuál es la distancia que recorre un autobús, se ignora la velocidad a la que corre


y el tiempo que realiza en su trayecto.

5. Calcular el índice de masa corporal de un apersona (IMC), para lo cual necesitas


el peso y la altura de esta.

172
Codificación de programas mediante estructuras de control
Estructuras de control (If-Else, While, Do While, For, Switch) en programas de lenguaje
estructurado.

1. Estructura de control selectiva If-else


Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan
denominar también estructuras de decisión o alternativas y son utilizadas en todos los lenguajes
de programación.
En las estructuras selectivas se evalúan una condición y en función del resultado de la misma se
realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas.
Esta instrucción hace que se ejecuten unas sentencias u otras dependiendo del valor que toma
una condición.
La instrucción if puede ser simple o doble:

Alternativa simple: Alternativa doble

if (condiciona)

if (condición) instrucción1;

instrucción1; else

instrucción2;

if (condición)

{ if (condición)

Instrucción 1; {

Instrucción 2; Instrucción 1;

Instrucción 3; instrucción 2;

} }

else

instrucción 3;

instrucción 4;

173
Estructura de control selectiva simple (if):

La estructura de control selectiva simple if (si)


evaluará una expresión lógica, y en caso de
que sea verdadero se realizará las
instrucciones dentro de su bloque de
instrucciones.
Las estructuras selectivas simples o
condicionales están compuesta únicamente
de una sola condición, si esta es verdadera, ejecutara la acción o acciones; pero si la condición
es falsa no hará nada.

if (condición) // Entre paréntesis la


condición que se va a evaluar
{
Una o varias acciones a ejecutar, esto
siempre y cuando la condición sea
verdadera
}
Ejemplo:
if (edad > 17) {
cout<<”Es mayor de edad”;
}

Estructura de control selectiva doble (if…else):

Las estructuras selectivas dobles están compuesta únicamente de una sola condición, si es
verdadera ejecutara la acción o acciones y si la condición es falsa ejecutara las acciones para la
condición falsa. Esta estructura selectiva solo se debe utilizar únicamente cuando existen dos
condiciones, si hubieran más de dos condiciones se puede utilizar varias selectivas simples o una
selectiva múltiple.

if (condición)
{
Acción (si la condición entre paréntesis es verdadera se ejecutara la acción o acciones, porque,
puede estar conformado por varias líneas)
}
else
{

174
Acción (si la condición entre paréntesis es falsa se ejecutara la acción o acciones, porque, puede
estar conformado por varias líneas)
}

La estructura de control selectiva doble if –


else ( si – sino) evaluará una expresión lógica
y en caso de que sea verdadera se realizará
las instrucciones dentro del primer bloque
(bloque if), y en caso de que sea falso se
realizarán las instrucciones dentro del
segundo bloque (bloque else).

Un ejemplo de una instrucción if doble seria el


siguiente:
La condición es si num%2 es igual a 0, lo cual
quiere decir que si al dividir un numero entre
2 el residuo es igual a cero entonces se dice
que es un numero PAR
En caso contrario (else) será un número
IMPAR.
Ejemplo:

Siguiendo con el ejemplo anterior asignaremos el mismo valor a la variable edad

edad = 19 # asignamos un valor a la variable edad

if (edad > 17)


{
cout<< “Es mayor de edad”;
}
else {
cout<<”Es menor de edad”;
}

Si ejecutamos el programa que hemos desarrollado el resultado sería: “Es mayor de edad”,
porque, la condición que esta entre paréntesis de la primera condición es verdadera, porque, en
las selectivas múltiples cada condición debe ser única, porque, cuando ingresa en una de ellas
ahí termina el programa.

175
Si el valor asignado a la variable edad fuera menor a 18, el resultado sería “Es menor de edad”,
porque, hubiera ingresado en la segunda condición y no en la primera.

A continuación se presenta una serie de problemas de tipo selectivos (simples y


dobles), Establece el Pseudócodigo y diagrama del proceso y además identifica si
es simple o doble.

1. Dada una calificación si esta es mayor o igual a 6, imprimir “Alumno Aprobado”, en caso
contrario, imprimir “Alumno Reprobado”

2. Dada la edad de una persona, si esta es mayor o igual a 18 años, imprimir “Mayor de edad”,
en caso contrario, imprimir “Menor de edad”.

176
3. Calcular el descuento del 20% al precio de un artículo siempre y cuando este sea mayor o
igual a $250, en caso contrario no hacer nada.

4. Dada una cantidad en pesos, calcular el IVA siempre y cuando esta sea mayor a $500, en
caso contrario no hacer nada.

5. Calcular el aumento del 10% al salario de un obrero siempre y cuando este tenga mas de 10
años trabajando en la empresa, en caso contrario no hacer nada.

177
6. Dado dos numero s A y B calcula la suma de ambos siempre y cuando A sea mayor que B, en
caso de no cumplir esta condición, es decir, si B es mayor o igual a A, entonces se deberá
realizar el producto de ambos valores.

2. Estructura de control Cíclica While

La estructura while también se considera una estructura cíclica, ya que permite que se ejecute
una o varias veces un proceso o líneas de código, en forma repetitiva sin necesidad de tener un
valor inicial y en ocasiones ni saber cuándo se va a dar por terminada,

Esta estructura no depende de valores numéricos directamente, sino de valores booleanos, es


decir de dos resultados “falso y “verdadero.

Son estructuras que se utilizan cuando se tiene un número indeterminado de iteraciones o ciclos;
por lo cual son mucho más efectivos para este tipo de condiciones, es decir, que se desconozca
cuando se van a dar, a diferencia del ciclo for, en el cual el número de iteraciones o veces que se
ejecutara el proceso es determinado, así como cuando inicia y cuando termina.

Funcionamiento de While

Par que entiendas mejor esta estructura se puede mencionar el ejemplo de que se desea solicitar
al usuario una serie de precios correspondientes a los artículos de un supermercado, y que solo
dejaremos de solicitar dichos precios si el usuario ingresa el precio igual a cero.
Y en este caso, como no nos imaginamos cuando el usuario capturara cero, lo cual es algo
indeterminado para nosotros, por lo que podemos comprobar que el ciclo While nos permitirá
realizar alguna acción de forma infinita hasta que se cumpla una condición, en el caso del ejemplo
seria hasta que el usuario ingrese un precio igual a 0. De modo que si el usuario nos ingresa de
manera sucesiva los siguientes número 231, 50, 99, 49, 121, 30, 235 ..., el programa no finalizara,
pues ninguno de estos números es igual a 0, sin embargo si nos ingresara el número 0, el
programa finalizaría inmediatamente.

Vamos a ver ahora como es la sintaxis de un ciclo while en C++, así estaremos listos para usarlos
en nuestros programas de ahora en adelante cada vez que lo necesitemos

178
Sintaxis:

La sintaxis de un ciclo While es incluso más simple y "legible" que la del ciclo for en C++, pues
simplemente requerimos tener clara una condición de parada. En realidad, en la mayoría de los
lenguajes de alto nivel la manera de escribir un ciclo While es incluso muy similar, así que con
tan solo tener bien clara una condición de finalización para el ciclo contaremos con la estructura
completa.

while (condición de finalización) //por ejemplo precio==0


{
....
....
Bloque de Instrucciones....
....
....
}

En la primera línea se establece una condición con cualquiera de los operadores "==. >, <, >=,
<=, !=". La condición que se presente en esta línea, es la que permitirá que el ciclo se siga
ejecutando hasta que en algún momento esta misma condición deje de cumplirse, de esta forma
si por ejemplo estamos verificando que un valor == 10, el ciclo se ejecutara solo cuando valor sea
igual a 10, en cuanto su valor cambie a cualquier otro, el ciclo while finalizara y continuara con el
resto de la ejecución del programa. De esta forma, es evidente que la condición que allí
ingresemos siempre deberá tomar un valor booleano (true o false).

int numero;
cin >> numero;
while(numero <= 100)
{
cout << "Ingrese un numero ";
cin >> numero;
}

3. Estructura de control cíclica do while

Los ciclos do-while son una estructura de control cíclica, los cuales nos permiten ejecutar
una o varias líneas de código de forma repetitiva sin necesidad de tener un valor inicial e
incluso a veces sin siquiera conocer cuándo se va a dar el valor final.

Hasta aquí son similares a los ciclos while, sin embargo el ciclo do-while nos permite
añadir cierta ventaja adicional, la cual consiste en que nos da la posibilidad de ejecutar
primero el bloque de instrucciones antes de evaluar la condición necesaria, de este modo
los ciclos do-while, son más efectivos para algunas situaciones específicas.

Por lo tanto un ciclo do-while: “Es una estructura de control cíclica que permite ejecutar
de manera repetitiva un bloque de instrucciones sin evaluar de forma inmediata una

179
condición específica, sino evaluándola justo después de ejecutar por primera vez el
bloque de instrucciones”

Funcionamiento de do-while

Para comprender mejor el funcionamiento del ciclo while, usemos de nuevo el ejemplo
que observamos en el ciclo while.

Imaginemos entonces que por algún motivo, queremos pedirle a un usuario una serie de
números cualesquiera y que solo dejaremos de hacerlo cuando el usuario ingrese un
número igual a cero.

Esto se puede hacer por medio de un ciclo while, pero ahora lo haremos usando un ciclo
do-while.

Po lo que consideremos una situación en la que no tenemos ni idea de cuándo al usuario


se le va a ocurrir ingresar un número igual a cero, pues es algo indeterminado para
nosotros, sin embargo el ciclo while y en efecto el do-while nos permite ejecutar cierta
acción de forma infinita hasta que se cumpla alguna condición específica, en nuestro caso
sería que el número ingresado sea igual a cero. De modo que si el usuario nos ingresa
de manera sucesiva los siguientes número 1,50,99, 49, 21, 30, 100 ..., nuestro programa
no finalizara, pues ninguno de estos números es igual a cero, sin embargo si nos
ingresara el número 0, el programa finalizaría inmediatamente.

Sintaxis

Este ciclo tiene su sintaxis más larga que la de While en C++, pero esto no significa que sea más
difícil o compleja, ya que si se tiene bien clara la condición que controlará su ejecución, es decir,
la que hará que este finalice contaremos tendremos prácticamente todo completo.

Esta línea es por decirlo así, la parte novedosa del ciclo do-while, esta expresión no
do evalúa ninguna condición ni nada, simplemente da paso directo al bloque de
instrucción y luego permite la evaluación de la condición.

180
Esta línea en el ciclo do-while, tiene la misma
While(condicion de finalización) importancia y función que la línea explicada
anteriormente en la sección del ciclo while, cabe
resaltar que simplemente evalúa la condición y
define si se cumple o no para seguir con la ejecución del ciclo o con la del resto del algoritmo, de
este modo podemos ver que el ciclo while y el do-while son muy similares, con la pequeña
diferencia en que en uno se evalúa la condición desde el principio y en la otra al final de cada
ciclo.

Vamos a retomar el ejemplo anterior, donde queremos hacer que nuestro programa le pida a un
usuario una serie de números cualquiera y que solo dejaremos de hacerlo cuando el usuario
ingrese un número igual a 0, una vez más es un ejemplo sencillo con el que nos aseguraremos
de haber comprendido bien todos los conceptos anteriores, vamos a ver cómo hacer lo mismo
con dos tipos de ciclos diferentes (el while y el do-while), sin embargo vamos a ver como con uno
es más eficiente que con el otro:

Para solucionar esto, debemos tener clara cuál va a ser


la condición que se debe cumplir para que el ciclo este
pidiendo el número contantemente, el ciclo se va a
detener solo cuando el número ingresado sea igual a 0,
así que la condición para que se siga ejecutando es que
el número sea diferente de 0.

El código funcional completo y un tanto más amigable


para el usuario sería el siguiente:

Como puedes observar, ambos códigos hacen lo mismo,


haciendo uso del ciclo while o del ciclo do while, sin
embargo con el ciclo do-while, hemos obtenido un
beneficio interesante, primero que todo hemos podido
evitar tener que inicializar la variable número, segundo
también pudimos eliminar las líneas repetidas donde se
pedía el número por fuera del ciclo y luego al interior del
ciclo, aquí lo hicimos solo al interior, pues la condición se
evaluaba mucho más abajo.

En efecto los ciclos do-while, son bastante útiles, sin embargo como con cualquier ciclo desde el
punto de vista de la eficiencia al igual que con los ciclos for, es recomendable evitarlos en la
medida de lo posible, siempre que vayas a usar un ciclo do-while o cualquier tipo de ciclo en
realidad, deberías preguntarte primero si es totalmente necesario o si existe una manera más
efectiva de hacerlo.

181
Se desea calcular el promedio de tres calificaciones parciales de 3 alumnos, el programa debe
contener una estructura do-while que permita hacerlo alumno por alumno hasta que se ingrese
el alumno numero 4, ya que la condición establecida es (numero<=3), lo cual permitirá que se
ejecute el proceso de promedio siempre y cuando se cumpla dicha condición.

Nos permite iniciar con el alumno n=1, ya


que se inicio la variable con dicho valor, y se
ejecutara solo tres veces, de forma
semejante como trabaja el for. Ya que
también es necesario determinar el
incremento n =n+1, lo cual en el for lo
hacemos dentro de la condición con n++

Completa el código siguiente en el cual debes calcular el pago total de un cliente cuya compra
tiene un descuento del 20% sobre el precio de cada uno de los artículos que va a adquirir, se
desconoce el número de artículos que va a comprar pero esto se ejecutara siempre y cuando se
cumpla la condición de que el precio sea diferente de cero, es decir, el proceso se detiene cuando
el usuario capture cero en el valor del precio solicitado por un artículo.

182
4. Estructura de control for

Los ciclos for son lo que se conoce como estructuras de control de flujo cíclicas o simplemente
estructuras cíclicas, estos ciclos, como su nombre lo sugiere, nos permiten ejecutar una o varias
líneas de código de forma iterativa, conociendo un valor especifico inicial y otro valor final, además
nos permiten determinar el tamaño del paso entre cada "giro" o iteración del ciclo.

El ciclo for es una estructura de control iterativa, que nos permite ejecutar de manera repetitiva
un bloque de instrucciones, conociendo previamente un valor de inicio, un tamaño de paso y un
valor final para el ciclo.

Para comprender mejor el funcionamiento del ciclo for, supongamos que queremos mostrar los
números pares entre el 20 y el 50, si imaginamos un poco como seria esto, podremos darnos
cuenta que nuestro ciclo deberá mostrar una serie de números como la siguiente: 20 22 24 26 28

183
... 46 48 50. Como podemos verificar, tenemos entonces los componentes necesarios para
nuestro ciclo for, tenemos un valor inicial que sería el 20, tenemos también un valor final que sería
el 50 y tenemos un tamaño de paso que es 2 (los números pares). Estamos ahora en capacidad
de determinar los componentes esenciales para un ciclo for.

Sintaxis

La sintaxis de un ciclo for es simple en


C++, en realidad en la mayoría de los
lenguajes de alto nivel es incluso muy
similar, de hecho, con tan solo tener bien
claros los 3 componentes del ciclo for
(inicio, final y tamaño de paso) tenemos
prácticamente todo hecho.

for(int i=valor inicial; i<=valor final; i=i + paso)

En esta línea está prácticamente todo lo esencial de un ciclo for. La sintaxis es simple, tenemos
una variable de control llamada i que es tipo entero (int), cabe notar que la variable se puede
llamar como nosotros lo deseemos y puede ser del tipo de queramos también, sin embargo en la
mayoría de los casos se usa la "i" como nombre y el entero como tipo, pero somos libres de
modificar esto a nuestro gusto. Esta variable "i" se le asigna un valor inicial que puede ser
cualquier número correspondiente al tipo de dato asignado. Posteriormente lo que haremos será
especificar hasta donde irá nuestro ciclo por medio del valor final, ten en cuenta que cada uno de
estos componentes es separado por un punto y coma ";", también es importante saber que la
condición final puede ser cualquier cosa, mayor, menor, mayor o igual, menor o igual, sin embargo
no tiene sentido que la condición sea por ejemplo un igual, pues nuestra variable de control
siempre va a cambiar entre valores, menores o mayores que el valor final deseado, si fuera un
igual no tendríamos un error de sintaxis, pero nuestro for básicamente no haría nada de nada.
Finalmente el último componente de
esta primera línea es el tamaño del
paso, este componente se especifica
aumentando en la cantidad deseada
la variable de control.

184
Vamos a retomar el ejemplo anterior,
donde deseábamos sacar los
números pares entre el número 20 y
el 50, es un ejemplo sencillo con el
que nos aseguraremos de haber
comprendido bien lo anterior:

Como pudimos ver anteriormente,


tenemos entonces que el valor inicial
para nuestro ciclo es el número 20 y
el valor final es el 50, además, dado
que necesitamos los números pares
vamos a ir de dos en dos, así que el
tamaño del paso va a ser 2, teniendo estos 3 componentes identificados, estamos listos para
crear nuestro ciclo for así:

El código funcional completo sería el siguiente:

Ahora veremos otro ejemplo sencillo en cual veremos que el ciclo for también puede iterar
disminuyendo el valor del contador, para comprender esto, lo que haremos será imprimir por
pantalla una cuenta regresiva desde el número diez hasta el cero, veamos:

Para este caso, debido a que queremos ir de un número mayor a uno más pequeño, por lo tanto
para este ejemplo el valor inicial será 10 y el valor final será cero. Adicional, el tamaño de paso
será de 1 negativo, es decir, -1, así:

El código funcional completo sería el


siguiente:

Resultado de la ejecución del código


anterior:

10 9 8 7 6 5 4 3 2 1

185
El ejemplo consiste en contar al interior de un ciclo for, cuántos números entre el 0 y el 10.000
son múltiplos del 13. Para ello haremos uso del operador % (modulo) que obtiene el residuo de
una división y también usaremos un pequeño condicional para verificar que el modulo sea cero
al dividir por 13.

Para este caso el valor inicial será 0 y el valor final será 10000. Adicional, el tamaño de paso será
de 1. Al interior del ciclo, en cada iteración verificaremos si el número en el que estamos es
divisible por trece o no y en caso
afirmativo aumentaremos el contador
en una unidad así:

El código funcional completo sería el


siguiente:

Este ciclo for nos permitirá saber que


existen 770 múltiplos del 13 en los
números del 0 al 10000.

En efecto los ciclos for, son bastante


útiles, sin embargo desde el punto de
vista de la eficiencia, es recomendable
evitarlos en la medida de lo posible,
siempre que vayamos a usar un ciclo
for, deberías preguntarte primero si es
totalmente necesario o si existe una
manera más efectiva de hacerlo. Evidentemente habrá situaciones en las que será casi que
imprescindible usar el ciclo for, pues por algo existen.

186
A diferencia del do-while, aquí se
colocan los tres parámetros o
elementos que hacen posible la
ejecución del bucle for, se
inicializa la variable, se establece
la condición y finalmente se
coloca el incremento, todo esto
dentro de la estructura for.

Programa 1.
Escribir un programa que solicite el precio de tres artículos para cada uno de los 2 clientes
y que al final totalice las ventas realizadas por ambos clientes. Utiliza para ello el ciclo for
y un acumulador

De tal forma que el resultado de la ejecución sea la siguiente:

187
Programa 2.
Escribir un programa que solicite el salario base de un número indeterminado de
vendedores, para los cuales debemos
registrar tres ventas de cada uno, se
deben calcular las comisiones
generadas por dichas ventas las
cuales corresponden a un 10%
El programa debe finalmente imprimir
el pago que debe recibir el vendedor
por concepto de su salario más la
comisión de sus tres ventas
realizadas
De tal forma que el resultado de la
ejecución sea la siguiente, esto
siempre y cuando sea para solo dos
vendedores:

188
5. Estructura de control cíclica switch

Los condicionales Switch, son una estructura de control condicional, que permite definir múltiples
casos que puede llegar a cumplir una variable cualquiera, y qué acción tomar en cualquiera de
estas situaciones, incluso es posible determinar qué acción llevar a cabo en caso de no cumplir
ninguna de las condiciones dadas.

Funcionamiento de switch

La mejor forma de entender el funcionamiento de algo, es viendo un ejemplo de esto, de este


modo, me parece que para comprender de forma adecuada como funciona un condicional Switch,
es bueno hacerlo poniendo un ejemplo. Imaginemos entonces que nuestro programa consta de
un menú de opciones digamos 3 opciones, cada una representada con un número
correspondiente, es decir la opción uno corresponde al número 1, la dos al 2 y así sucesivamente,
queremos entonces que de acuerdo a un número ingresado por el usuario ejecutemos una acción
correspondiente y en caso de que no corresponda a ninguna de las posibles opciones, mostrar
un mensaje de error cualquiera.

189
De este modo, podemos identificar 3 casos distintos para nuestro switch o en otras palabras,
hemos identificado tres condiciones posibles que puede llegar a cumplir nuestra variable: el caso
uno corresponde a que el valor ingresado por el usuario sea el 1, es decir ejecutar la opción 1, el
caso 2 el número 2, etc. adicionalmente hemos encontrado la opción que se ejecutará por defecto
en caso de no suceder ninguno de estos casos, es decir si el usuario ingresa por ejemplo 10,
mostraremos un mensaje de error cualquiera.

Sintaxis

La sintaxis de un condicional Switch es bastante distinta a la de un condicional típico, sin embargo


es bastante intuitiva y fácil de comprender, es solo cuestión de acostumbrarse.

Veamos a continuación la estructura general de un condicional Switch y luego unos cuantos


ejemplos.

switch(opción) //donde opción es la variable a comparar

Aquí, tenemos la declaración del condicional switch, estamos diciendo que lo que viene a
continuación es esto, entre los paréntesis, el switch recibe la variable que vamos a usar para
comparar en cada uno de los casos.

case valor1: //Bloque de instrucciones 1;

En esta línea tenemos una parte vital del condicional switch, aquí tenemos definido un caso
posible que puede cumplir nuestra variable, la sintaxis es simple, usamos la instrucción "case"
para indicar que allí comienza un caso, luego indicamos el valor que puede tomar la variable,
puede ser un número, una cadena de caracteres o lo que necesitemos, de esto se siguen dos
puntos ":" y después de estos ponemos la o las instrucciones a ejecutar para este caso, como
ejemplo, podríamos tener algo como esto : case "verde": cout << "Escribiste verde";

190
Esta línea contiene la instrucción break, es una instrucción simple, pero
break; fundamental al interior del condicional Switch, esta instrucción indica que hasta allí
va el bloque de instrucciones del caso inmediatamente anterior a este, de este modo
evitamos que el algoritmo ejecute los demás casos, a modo de ejercicio, podrías
intentar ejecutar el código del ejemplo que veremos más adelante y quitar las instrucciones break,
con esto podrás comprobar que si el usuario ingresa por ejemplo un 1, se ejecutarán todos los
casos, es por esto que el break es fundamental

Esta línea cambia un poco con respecto a las anteriores, sin embargo
default: conserva la misma esencia, en vez de poner el comando "case", usamos el
comando "default", y luego los 2 puntos ":", notemos que no se pone ningún
valor a evaluar, pues esta es la acción que se ejecuta en caso de que no
lleguemos a entrar en ninguno de los casos.

Vamos a retomar el ejemplo mencionado


anteriormente al inicio de la sección, en el
cual suponíamos que el usuario nos
ingresaba un número correspondiente a
una opción cualquiera y de acuerdo a esto
mostramos un mensaje y en caso de
ingresar una opción incorrecta, mostramos
un mensaje de error.

Primero, determinemos los casos a ejecutar,


tenemos tres casos posibles (suponiendo que
nuestro menú está compuesto por 3 opciones) el caso 1 para la opción 1, el dos para la 2 y así
sucesivamente. Nuestro caso por defecto (default) sería el caso de error, que sucede cuando no
se ingresa alguna de las 3 opciones. Veamos entonces como hacer esto:
El código quedaría de la siguiente forma:

Y el resultado de su ejecución sería:

En caso de caer en un número que no exista en


los casos, se va directamente a default:

191
Realiza un programa que muestre el siguiente menú:
1. Calcular el area de un triangulo
2. Calcular el promedio de las edades de tres personas
3. Calcular el pago de un cliente cuya compra tenga un descuento del 25%
4. Calcular el perímetro de un circulo

Anidamiento en las estructuras de control (If, For y While) en programas de lenguaje


estructurado.

Estructura selectiva if con anidamiento.

Las sentencias if implementan decisiones que implican una o dos alternativas.


Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa es a su
vez una sentencia if.
Una sentencia if anidada se puede utilizar para implementar decisiones con varias alternativas o
multi-alternativas

Sintaxis:
if (condición1)
sentencia1
192
else if (condición2)
sentencia2


• else if(condiciónn)
sentencia n
else sentencia e

Las instrucciones if-else se pueden anidar obteniéndose una estructura condicional múltiple:
if(condicion1)
instrucción1;
else if(condicion2)
instrucción2;
else if(condicion3)
instrucción3;
else if(condicion4)
instruccion4;
else
instrucción5;

instrucción 6;
instrucción 7;
......
En este caso se evalúa la condicion1; si es cierta, se ejecuta la instrucción1 y se continúa por la
instrucción 6 después del bloque de if-else anidados. Si la condición1 es falsa, se evalúa la
condicion2, y así sucesivamente.
En caso de no ser cierta ninguna de las condiciones, la sentencia que se ejecuta es la del último
else, es decir, la instrucción 5.

Ejemplo de estructura condicional múltiple en C++. Programa que lee un número entero que
corresponde a una hora y muestra un mensaje según la hora que se haya leído.
Un ejemplo muy claro es el siguiente, en el cual al evaluar tres condiciones anidadas, nos llevaran
a tres salidas distintas.

193
Que al introducir una hora, este nos diga si es de buenos dias, buenas tardes o buenas noches,
y si es una hora fuera de las 24 establecidas, nos mandara un mensaje de “Hora no valida”
if ((hora >= 0) and (hora < 12))
cout << "\nBuenos dias\n";
else if ((hora >= 12) and (hora < 18))
cout << "\nBuenas tardes\n";
else if ((hora >= 18) and (hora < 24))
cout << "\nBuenas noches\n";
else
cout << "\nHora no válida\n";

194
1. Realiza un programa en C++ que imprima el color de una esfera que se toma al azar en
una urna, se sabe que hay cinco colores que son: ROJO, VERDE, AZUL NEGRA Y
AMARILLA

2. Programa que imprima el día de la semana dependiendo del valor que se capture, se sabe
que solo se pueden capturar del 1 al 7

Programación de funciones (void)

Las funciones son un conjunto de instrucciones que realizan una tarea específica.
En general toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de
salida o valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no
existir.

Una función void, en programación, se denomina un procedimiento. Un procedimiento se


diferencia con una función en los siguientes aspectos:

 Devuelven ninguno, dos o más valores o ninguno.


 No se utiliza return.
 Se comienza el procedimiento con la palabra reservada void

Una función en C es un fragmento de código que se puede llamar desde cualquier punto de un
programa. En C podemos diferenciar entre dos tipos de funciones:
a) Aquellas cuyo tipo de retorno es void (nulo), equiparables a lo que denominamos módulo
genérico tipo procedimiento.

195
b) Aquellas cuyo tipo de retorno es un tipo de dato (como int, double o cualquier otro),
equiparables a lo que denominamos módulo genérico tipo función.

¿Cómo se definen las funciones?

 Le definición de una función tiene 2 componentes principales: la primera línea donde se


declaran los argumentos y el cuerpo de la función.

 En términos generales, la primera línea se puede escribir de la siguiente manera:

Tipo-de-dato(tipo1 arg1, tipo2 arg2, … tiponargn)

 Donde el tipo-de-dato representa el tipo de datos del valor que devuelve la función y
nombres, el nombre de la función y tipo1, tipo2…tipon representan los tipos de datos de
los argumentos arg1, arg2… argn.

Paso de parámetros a una función en C++


Los parámetros formales son prácticamente variables locales. La única diferencia es que son
declarados en la definición (cabecera) de una función.

Al igual que las variables locales, cuando se pasa un valor desde la línea de invocación a una
función, se crea una variable temporal dentro de la función invocada. Una vez que termina la
ejecución de la función invocada y se retorna a la línea inmediata siguiente, donde las variables
locales dejan de existir.

El paso de parámetros se da en dos formas:

1. Por Valor:
Los parámetros formales correspondientes reciben una COPIA de los valores (literales,
constantes, variables, resultado de la evaluación de una expresión) de los parámetros actuales;
por tanto, los cambios que se produzcan en ellos por efecto de la ejecución de la función no
podrán afectar el valor de los parámetros actuales en caso de que estos fueran variables.

Ejemplo #1

void DibujarPuntos( int numPuntos )


{
int i;
// i de la función DibujarPuntos
for ( i = 1; i <= numPuntos; i++ )
printf(".");
numPuntos = numPuntos + 2;
printf(“%i \n”,numPuntos);
}
196
int main()
{
int i; // i del programa principal
for ( i = 1; i <= 5; i++ ) { DibujarPuntos( i );
printf(“%i \n”,i); }
}

Ejemplo #2

#include <stdio.h>
void modificar (int);
void main()
{
int a = 2;
printf(“antes de la llamada %i \n”,a);
modificar(a);
printf(“despues de la llamada %i \n”,a);
}
void modificar (int a)
{
a *= 3;
printf (“desde la funcion %i\n”, a);
}

2. Por referencia:
Lo que se pasa a la función es la dirección de memoria del
parámetro actual, en consecuencia debe ser una variable.
Así, una variable pasada como parámetro actual es
compartida; es decir, puede ser accedida y modificada
durante la ejecución de la función.

Ejemplo en el cual el paso de parámetros se da por los dos


tipos:

197
Apuntador: Variable especial cuyo contenido es la dirección o localización de memoria de otra
variable.

Reglas sobre las funciones en C


 Después de la declaración de variables globales y antes de la función main() o la función
que la mande llamar.
 Después de la función main() o de la función que la mande llamar, en cuyo caso deben
ser identificadas antes, para ello debe declararse solamente el encabezado de la función.
 La función prototipo le indica al compilador el tipo de dato que regresará la función, el
número de parámetros que la función espera recibir, el tipo de estos parámetros y el orden
en el cual los parámetros deben ser esperados. El compilador utiliza esta función prototipo
para validar las llamadas a funciones.
 Una función no puede declararse dentro de otra función.
 Toda función que no es Void debe tener un return.
 Al llegar al comando return, la función se deja de ejecutar y envía el valor especificado
como valor de retorno.

El flujo para una función sigue las reglas ya conocidas:


 Al llegar el control a la sentencia return el flujo del programa vuelve a la sentencia
inmediatamente posterior a la llamada efectuada.
 Si existe código posterior a la sentencia return final, éste será ignorado.
Las funciones pueden insertarse en el programa en cualquier orden, aunque siempre será
recomendable tratar de disponerlas en el mismo orden en que esté previsto que se ejecuten.
La llamada a una función se realiza, cuando no hay parámetros que pasar, simplemente
escribiendo su nombre seguido de unos paréntesis vacíos. La llamada a una función se hará
normalmente para obtener un valor o asignar un valor a una variable, en expresiones del tipo:
printf (nombreDeLaFunción());
variable = nombreDeLaFunción();
If (nombreDeLaFunción() > variable) …
Hay que recordar siempre que una "función" con tipo de retorno especificado ejecuta un código y
devuelve un valor: podríamos decir que tiene una similitud importante con las variables: tener un
valor.
La llamada a una función desde sí misma es posible, dando lugar a un anidamiento o recursión.
Habrá de existir una condición que evolucione para dar lugar a la salida de la recursión,
regresando el control del flujo a la instrucción posterior desde la que se autollamó el módulo. No
vamos a desarrollar contenidos relativos a la recursión, ya que consideramos que es una materia
de estudio avanzada.
Ejecuta estos dos pequeños programas para comprobar cómo trabajan las funciones con tipo de
retorno void y las funciones con tipo de retorno especificado.
void <nombre-función> (<lista parámetros formales>) {
[<Constantes Locales>]
[<Variables Locales>]
198
[<Sentencias>]
}
Obsérvese que no hay sentencia return. La función void termina cuando se ejecuta la última
sentencia de la función. El paso de parámetros y la definición de datos locales sigue las mismas
normas que el resto de funciones. Para llamar a una función void, simplemente, ponemos su
nombre y la lista de parámetros actuales con los que realizamos la llamada.

Para crear el código en C++ que debe calcular mediante una función el area del rectángulo y otra
función que calcule el perímetro del circulo respectivamente.
Primero se deben declarar las funciones inmediatamente después de las librerías, y si se desea
se declaran las variables que intervienen en dichas funciones en forma global.
Pero también esto lo podemos hacer dentro del desarrollo de las funciones, siempre y cuando
estas variables pertenezcan a dichas funciones.

#include <iostream>
#define pi 3.1416
void area_rect(); //FUNCION 1
void perim_circ(); //FUNCION 2
float b, a, area, diam, perim; //DECLARACION DE VARIABLES GLOBALES

Se procede a iniciar la función principal (main) y desde ahí se realiza el llamado de las funciones
declaradas anteriormente.

using namespace std;


int main()
{
cout << "\n FLOR \n";
area_rect(); //llamado de la función de area
perim_circ(); //llamado de la función perímetro
return 0;
}

Una vez que se cierra la función main, se procede a desarrollar la función que calculará el area
del rectángulo, y como podrás ver, aquí ya no es necesario que agregues la función de retorno a
cero (return 0).

void area_rect()
{
cout<<"\n Base del rectangulo: ";cin>>b;
cout<<"\n Altura del rectangulo: ";cin>>a;

199
area=b*a;
cout<<"\n El area del rectangulo es: "<<area;
}

Una vez que se cierra la función, se procede a desarrollar la siguiente función que calculará el
perímetro del círculo.

void perim_circ()
{
cout<<"\n Diámetro del circulo: ";cin>>b;
perim=pi*diam;
cout<<"\n El perímetro del circulo es: "<<perim;
}

Realiza el código en C++ para


obtener el siguiente resultado de
su ejecución:

200
GLOSARIO

ACUMULADOR. Es una variable usada para dar totales de datos similares leídos.

ALFANUMERICO. Característica que indica un conjunto de caracteres que incluye letras,


números y signos de puntuación.

ALGORITMO. Conjunto de instrucciones que sirven para ejecutar una tarea o resolver un
problema.
ANÁLISIS. Tarea previa a la programación que sirve para dar solución a un problema.

APLICACIÓN: Cualquier programa que corra en un sistema operativo y que haga una función
específica para un usuario. Por ejemplo, procesadores de palabras, bases de datos, agendas
electrónicas, etc.

ARCHIVO: Es un dato que ha sido codificado para ser manipulado por una computadora. Los
archivos de computadora pueden ser guardados en disco duro, USB, CD-ROM, DVD, Blu Ray
disc o cualquier otro medio de almacenamiento.

ASCII. American Standard Code for Information Interchange. Código utilizado para representar
cada letra, dígito o carácter especial.

ASIGNACIÓN. Es la acción de poner en una variable un valor, él contenido de otra variable o


el resultado de evaluar una expresión aritmética, en los lenguajes se representa con el signo
igual.

BIFURCACIÓN. Transferencia de la secuencia de ejecución a otra parte del programa.

BIT. Contracción de binary digit. Es la unidad elemental de información en la computadora.


Puede tener dos valores 0 ó 1.

BOOLEAN. Es la lo que las computadoras usan para determinar si una declaración es falsa o
verdadera.

BUCLE. Grupo de instrucciones que se repiten hasta que se cumple una condición.

C. Lenguaje de programación de alto nivel que posee características de los lenguajes de bajo
nivel.

CARÁCTER. Dígito, letra o símbolo que puede ser tratado por una computadora.

CODIFICAR. Consiste en escribir en un lenguaje de programación el algoritmo que da solución


a un problema.

CODIGO FUENTE. Es un conjunto de líneas que conforman un bloque de texto, escritos según
las reglas sintácticas de algún lenguaje de programación destinado a ser legible por humanos.

CODIGO OBJETO. Es el código resultante de la compilación de código fuente.

201
COMANDO. Cada una de las instrucciones que componen el lenguaje de programación y que
representa una acción específica.

COMPILADOR. Es el encargado de traducir un programa escrito en un lenguaje de alto nivel


a lenguaje de máquina y que detecta posibles errores de sintaxis.

CONTADOR. Variable que controla el número de veces que se ejecuta un conjunto de


instrucciones.

DATOS. Son los valores que se procesan en un programa para producir un resultado. Pueden
ser de varios tipos: numéricos, alfabéticos, alfanuméricos y lógicos.

DATA: El nombre genérico para cualquier cosa que entre, salga o se guarde en una
computadora o cualquier otro medio, siempre y cuando sea todo en formato digital.

DECLARACIÓN. Asignar un nombre y tipo de dato a una variable en un programa.

DEPURACIÓN. Proceso de detectar, localizar y eliminar errores.

EDITOR. Programa que permite codificar y corregir programas.

EJECUTAR. Realizar una instrucción en código máquina o bien hacer que se realicen las
instrucciones de un programa.

EJECUCION. Acción de correr el programa generado con extensión .exe para mostrar los
resultados en pantalla, en el lenguaje c se realiza desde el menú run.

EXPRESIÓN. Conjunto de variables, constantes, funciones y símbolos de operación que


expresan un cálculo a realizar. Proporcionan un valor que será del tipo (aritmético, alfanumérico
o lógico) de las variables y constantes que contiene.

FUENTE. Es un programa está escrito con las instrucciones de un lenguaje de programación y


que aún no ha sido traducido por ningún compilador.

FUNCION. Son bloques constructores de c y el lugar donde se da toda La actividad del


programa.

IDENTIFICADOR. Es un nombre que define a una variable, función o un tipo de dato.

ÍNDICE. Número que se utiliza para identificar un elemento particular en arreglos


unidimensionales y bidimensionales.

INSTRUCCIÓN. Conjunto de caracteres que especifica una operación a realizarse y el valor o


ubicación de uno o más operandos requeridos. Es cada una de las líneas que componen
un programa fuente.

ITERACIÓN. Cada una de las repeticiones de las acciones contenidas en


un bucle de programa.

202
LENGUAJE DE PROGRAMACIÓN. Es un lenguaje que contiene su léxico y su sintaxis, que
se emplea para que la computadora ejecute las acciones que se han codificado en dicho
lenguaje.

LENGUAJE DE PROGRAMACIÓN: Es un idioma artificial diseñado para instrucciones


computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden
usarse para crear programas que controlen el comportamiento físico y lógico de una máquina,
para expresar algoritmos con precisión, o como modo de comunicación humana.

LIBRERÍA. Conjunto de programas o módulos almacenados generalmente sobre un


dispositivo magnético.

LONGITUD. Aplicado a una cadena de caracteres, a un campo o a un registro, es el número


de bytes que ocupa.

OPERADORES. Es un símbolo matemático que indica que debe ser llevada a cabo una
operación específica.

OPERADORES BOOLEANOS. Son los operadores que al ejecutaros dan como resultado una
expresión booleana, estos operadores son: and (Y), OR(O) y NOT (no).

PALABRA RESERVADA. Palabra que no puede usarse para propósitos distintos de los
establecidos por el programa en uso.

PROCESO. Manipular datos o realizar otras operaciones de acuerdo a un programa.

PROGRAMA. Secuencia de instrucciones que realizan una tarea específica.

PROGRAMACIÓN. Técnicas destinadas a la resolución de un problema, usando para ello


los lenguajes de programación. Se manejan estructuras lógicas de los tipos: secuencial,
condicional e iterativa.

PRUEBA DE ESCRITORIO. Inspección visual de un programa para depurarlo antes de


ejecutarlo en una computadora. Se realiza a mano.

SALIDA. Resultado del procesamiento.

SENTENCIA. Es cualquier expresión en c que se espera que tenga una consecuencia. Pueden
ser asignaciones, operaciones, llamadas a funciones o combinaciones de ellas, una sentencia
simple en una expresión termina en un punto y coma (;)

SUBRUTINA. Conjunto de instrucciones que efectúan una tarea específica dentro de


un programa y al que es posible referirse.

VARIABLE. En programación es una entidad dedicada a contener valores que pueden cambiar
durante la ejecución de un programa.

203
REFERENCIAS

Cairo, Osvaldo, Fundamentos de programación, piensa en C, México, Editorial Prentice Hall,


2006.

Charte Ojeda Francisco. (2002). SQL. Guía práctica. México. Editorial Anaya Multimedia

Date, C. J. (2001). Introducción al sistema de datos. México, 7a edición, Prentice Hall.

Gottfried, Byron, Programación en C. 2a. ed, Mexico, McGraw Hill, 2005.

Ixta Mercado, Claudia I., Guía de aprendizaje, Técnico en Informática, México, CECyTEs
Michoacán, 2008.

López Román, Leobardo, Programación Estructura en Lenguaje C, México, Ed. Alfa Omega
Grupo Editor, 2006.

Páginas Web:

1. Blog Publicado 14 de octubre 2012 por Gaby Islas


Información rescatada el 28 de noviembre de 2016
http://gy94bfmv.blogspot.mx/2012/10/programa-objeto-y-programa-fuente.html

2. Manual de Codeblocks
Información rescatada el 30 de noviembre de 2016
http://comp.ist.utl.pt/bac/Prog1011.info1Sem/Software/manual_en.pdf

3. Master Magazine
Información rescatada el 5 de octubre de 2016
http://www.mastermagazine.info/termino/6396.php

4. Aprendiendo Arduino
Blog Publicado 26 de marzo 2015 por Enrique Crespo
Información rescatada el 28 de octubre de 2016
https://aprendiendoarduino.wordpress.com/2015/03/26/lenguaje-de-programacion-c/

5. Programación en C y C++. “Temas selectos de Modelación Numérica”


Información rescatada el 04 de noviembre de 2016
http://www.atmosfera.unam.mx/jzavala/TemSelModNum/2013_1/Prog_C.pdf

6. Operadores en C++
Información rescatada el 04 de noviembre de 2016
http://html.rincondelvago.com/lenguaje-de-programacion-c_1.html

7. Operadores en C++
TRANSVERSAL DE PROGRAMACIÓN BÁSICA
Información rescatada el 07 de noviembre de 2016
http://profesores.fi-b.unam.mx/carlos/lcpi/p09/OPERADORES%20EN%20%20C++.pdf

204
8. Palabras Reservadas en Lenguaje C++
Información rescatada el 07 de noviembre de 2016
http://www.taringa.net/post/apuntes-y-monografias/5326039/Palabras-Reservadas-de-
C.html

9. Uso de constantes y su declaración. Programar Ya.com


Información rescatada el 13 de noviembre de 2016
https://www.programarya.com/Cursos/C++/Sistema-De-Tipos/Variables-Y-Constantes

10. Programar en C++


Estructura de un programa
Información rescatada el 14 de noviembre de 2016
http://ejercicioscpp.blogspot.mx/2012/11/estructura-de-un-programa-c.html

11. Metodologías y técnicas de programación 1


Información rescatada el 14 de noviembre de 2016
https://www.nebrija.es/~abustind/Informatica/MetodologiaI/Elementos_basicos_C.pdf

12. Biblioteca Estandar de C


Información rescatada el 14 de noviembre de 2016
http://es.slideshare.net/glud/funcion-printf

205

Вам также может понравиться