Libro Sm1-m1 Programacion 2018
Libro Sm1-m1 Programacion 2018
Libro Sm1-m1 Programacion 2018
20 10
4
CONTENIDO
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.
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
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:
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.
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.
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.
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
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.
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
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
7. Característica del programa que se refiere a la facilidad para realizar modificaciones o mejoras,
sin complicaciones.
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:
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:
Definición: Definición:
Definición: Definición:
29
De manera individual desarrolla la siguiente actividad para evaluar los aprendizajes logrados
durante la secuencia.
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
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
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
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)
Variable (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.
2.- Está representado por los toda la numeración compuesta por los dígitos del 0 al 9
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.
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.
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
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.
2.-
( 5 + 10 ) * 3 / ( 57 - 2^2 *2)
3.-
4.-
1.-
3.-
1.-
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.-
3.-
*
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
BCR) 11 BDR) 67
OPERACIONES
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
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”
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
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
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
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.
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.
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.
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)
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.
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.
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á:
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
53
1. Elabora el algoritmo para calcular el área de un cuadrado.
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
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.
1. Inicio
2. Leer edad
3. Es edad >= 18 si se cumple se acepta; caso contrario se rechaza
4. Fin
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.
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.
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:
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.
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.
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.
67
Conector fuera de página.
68
Considerando la información anterior, completa la siguiente tabla:
Bloques: Función:
1.-
2.-
3.-
4.-
5.-
6.-
7.-
8.-
Referencias bibliográficas:
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.
70
Desarrolla la siguiente actividad para evaluar los aprendizajes logrados durante el desarrollo
de la secuencia.
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)
a) b) c) d) e)
a) b) c) d) e)
71
Diagrama de flujo lineales y modulares para la solución de problemas
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.
73
3. Calcula el peso ideal de acuerdo al índice de Broca considerando que el peso ideal=
altura en cm - 100.
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.
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
D) E)
D) E)
A) B) C)
D) E)
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
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
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
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
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
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
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:
4. Promedio=(Cal1+Cal2+Cal3)/3
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.
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.
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
92
De los siguientes casos realiza el diagrama de flujo del problema y desarrolla su pseudocódigo
correspondiente.
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:
93
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.
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 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
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
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.
99
Considera que son rampas de tránsito y deben tener una pendiente máxima de 10% para
cumplir con la norma.
100
2. Determinar si un número leído desde el teclado es mayor o menor que 100
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.
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
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.
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
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.
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!
7 No está mal!
8 Se puede mejorar!
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
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
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
1-100 6
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.
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.
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
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).
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
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.
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.
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.
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.
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
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.
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).
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.
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
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.
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
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
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
Operadores de asignación
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
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.
Operadores de dirección
Sintaxis:
&<expresión simple>
Por ejemplo:
int *punt;
int x = 10;
punt = &x;
Ejemplo:
128
int *punt;
int x;
x = *punt;
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:
Operación OR (|)
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.
Resuelve los siguientes ejercicios en base al material visto anteriormente con respecto a
los operadores
(Prom igual a 6)
(Num diferente a 0)
130
2. Resuelve cada una de las expresiones aritméticas y de comparación que se te dan a
continuación.
131
1) Definición de cada una de las partes del programa anterior:
2) #include <iostream>
132
compilador. Si se proporciona el camino como parte del nombre de fichero, sólo se buscará en el
directorio especificado.
5) {
Las llaves { } indican donde empiezan y donde acaban las instrucciones de la función.
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 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:
__________________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
Entorno de Code::Blocks
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.
139
Opción Manager o Management (panel de proyecyo)
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”.
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.
Status bar
141
Open files list
Permite abrir la ventana o panel
que muestra los archivos abiertos
durante nuestra codificación.
Proyecto de Code::Blocks
Para nosotros, un proyecto va a ser un programa, una aplicación.
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
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
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.
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.
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
____________________________________________________________________________
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.
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).
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.
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***" );
}
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.
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 );
}
Y para que se muestre con un solo decimal hay que colocar el número .1 entre el % y la f del
comodín.
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
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
#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" );
}
***CECYTES SONORA***
HERMOSILLO IV
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" );
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.
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.
#include <stdio.h>
void main()
{
int Val;
printf( "Captura un valor: " );
scanf( "%d", &Val );
printf( "Has capturado el valor: %d", Val );
printf ("\n");
}
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.
#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.
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.
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).
160
Escribir un programa que muestre los
datos del alumno: Nombre, apellidos,
edad, grupo y especialidad.
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.
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:
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:
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
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.
172
Codificación de programas mediante estructuras de control
Estructuras de control (If-Else, While, Do While, For, Switch) en programas de lenguaje
estructurado.
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):
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)
}
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.
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.
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,
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.
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;
}
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.
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:
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.
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
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:
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í:
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í:
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
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
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
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.
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.
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
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
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 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.
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.
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.
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
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.
197
Apuntador: Variable especial cuyo contenido es la dirección o localización de memoria de otra
variable.
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.
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;
}
200
GLOSARIO
ACUMULADOR. Es una variable usada para dar totales de datos similares leídos.
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.
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.
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.
201
COMANDO. Cada una de las instrucciones que componen el lenguaje de programación y que
representa una acción específica.
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.
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.
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.
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.
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 (;)
VARIABLE. En programación es una entidad dedicada a contener valores que pueden cambiar
durante la ejecución de un programa.
203
REFERENCIAS
Charte Ojeda Francisco. (2002). SQL. Guía práctica. México. Editorial Anaya Multimedia
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:
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/
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
205