0% encontró este documento útil (0 votos)
213 vistas104 páginas

Algoritmos y Programación

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
213 vistas104 páginas

Algoritmos y Programación

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 104

ALGORITMOS Y

PROGRAMACIÓN

Julio Cesar Rodríguez Casas


Algoritmos y Programación
Julio Cesar Rodríguez Casas
Bogotá D.C.

Fundación Universitaria del Área Andina. 2018

Catalogación en la fuente Fundación Universitaria del Área Andina (Bogotá).

Algoritmos y Programación

© Fundación Universitaria del Área Andina. Bogotá, septiembre de 2018


© Julio Cesar Rodríguez Casas

ISBN (impreso): 978-958-5462-95-3

Fundación Universitaria del Área Andina


Calle 70 No. 12-55, Bogotá, Colombia
Tel: +57 (1) 7424218 Ext. 1231
Correo electrónico: [email protected]

Director editorial: Eduardo Mora Bejarano


Coordinador editorial: Camilo Andrés Cuéllar Mejía
Corrección de estilo y diagramación: Dirección Nacional de Operaciones Virtuales
Conversión de módulos virtuales: Katherine Medina

Todos los derechos reservados. Queda prohibida la reproducción total o parcial de esta obra
y su tratamiento o transmisión por cualquier medio o método sin autorización escrita de la
Fundación Universitaria del Área Andina y sus autores.
BANDERA INSTITUCIONAL

Pablo Oliveros Marmolejo †


Gustavo Eastman Vélez
Miembros Fundadores

Diego Molano Vega


Presidente del Consejo Superior y Asamblea General

José Leonardo Valencia Molano


Rector Nacional
Representante Legal

Martha Patricia Castellanos Saavedra


Vicerrectora Nacional Académica

Jorge Andrés Rubio Peña


Vicerrector Nacional de Crecimiento y Desarrollo

Tatiana Guzmán Granados


Vicerrectora Nacional de Experiencia Areandina

Edgar Orlando Cote Rojas


Rector – Seccional Pereira

Gelca Patricia Gutiérrez Barranco


Rectora – Sede Valledupar

María Angélica Pacheco Chica


Secretaria General

Eduardo Mora Bejarano


Director Nacional de Investigación

Camilo Andrés Cuéllar Mejía


Subdirector Nacional de Publicaciones
ALGORITMOS Y
PROGRAMACIÓN

Julio Cesar Rodríguez Casas


EJE 1
Introducción 7
Desarrollo Temático 8
Bibliografía 33

EJE 2
Introducción 36
Desarrollo Temático 37

EJE 3
Introducción 58
Desarrollo Temático 59
Bibliografía 81

EJE 4
ÍNDICE

Introducción 84
Desarrollo Temático 85
Bibliografía 101
ALGORITMOS Y
PROGRAMACIÓN

Julio César Rodríguez Casas

EJE 1
Conceptualicemos

Fundación Universitaria del Área Andina 6


Introducción

En la actualidad las computadoras, se utilizan ampliamente en mu-


chas áreas de los negocios, la industria, la ciencia, el hogar y la educa-
ción
INTRODUCCIÓN

Las computadoras se han desarrollado y mejorado, según las necesi-


dades del hombre, para realizar trabajos y cálculos más rápidos y pre-
cisos

En este referente de pensamiento se pretende mostrar al estudiante


cómo, a partir de unas especificaciones de un problema del mundo real,
se diseña una solución para dicho problema (algoritmo) susceptible de
ser codificada en un lenguaje de programación

Con este objetivo en mente, se describirán las propiedades básicas


de cualquier algoritmo, un conjunto de bloques básicos que permiten
la construcción de algoritmos y diversas formas de representación de
los algoritmos. En el tema también se mostrarán las distintas fases
que se deben de seguir para buscar una solución a un problema del
mundo real. En este tema no se aborda ningún lenguaje de progra-
mación particular; sino que se muestra cómo diseñar soluciones a
problemas que sean fáciles de implementar en cualquier lenguaje de
programación.

Antes de continuar, vamos a ver en la página principal del eje, la


videocápsula 1 Introducción a la computación para contextualizar de
manera general.

Fundación Universitaria del Área Andina 7


Evolución y arquitectura
del computador

Fundación Universitaria del Área Andina 8


Para comenzar, veamos una línea de tiempo al respecto de la evolución y
arquitectura del computador:

Abaco aparato más antiguo que Von Neumann, construye la EDVAC en


Antigüedad del cual se tiene conocimiento 1952, la cual utilizaba el sistema
para hacer cálculos. Los chinos binario e introducía el concepto de
perfeccionaron su uso. 1952 programa almacenado. La primera
aplicación que se le dio a la máquina
fue para el diseño y construcción de la
bomba H.
Aparecieron la cajas logarítmicas
de John Napier, inventó un
1617 aparato en para hacer multipli-
caciones de forma rápida y muy Howard Aiken junto con la IBM,
acertada. construyó en 1937, la computadora
MARK 1, en donde la información se
procesaba por medio de tarjetas
En 1642 Wilhelm Schikard realizó sus perforadas, con esta máquina se
primeros intentos para inventar la 1937 podían resolver problemas de ingeniería
calculadora, desarrolló un mecanis- y física, así como problemas aritméti-
1642 mo que podía realizar las operacio- cos y lógicos. Después aparecen la
nes de sumar, restar, multiplicar y MARK II, MARK III y MARK IV. Con esta
dividir. calculadora se alcanza la automatiza-
ción de los procesos.

En 1642 máquina Pascalian, se


Konrad Zuse, construye su calculadora
construyó la primera calculadora
electromecánica Z1, utiliza el sistema
1642 mecánica con ruedas giratorias. Las
binario y un utiliza una cinta perfora-
operaciones que podía realizar son la
dora, fue la primera máquina de tipo
suma y resta. Entre 1936
mecánico y es considerada como la
y 1938
primera computadora construida,
debido a que manejaba el concepto
En 1671 Gottfried Leibnitz, desarrolló de programa e incluía unidad aritmé-
la calculadora que posteriormente tica y memoria.
1671 sucedió a la que inventó Pascal la
cual, podía efectuar las cuatro
operaciones aritméticas.
En 1884 Dor Eugene Felt, elaboró la
primera máquina práctica que incluía
1884
teclado e impresora, llamado "Comp-
En 1790 Joseph Marie Jacquard, quien tómetro o calculadora con impresora".
1790 desarrolló la máquina la cual fue
precursora de las tarjetas perforadas.

En 1880 Herman Hollerith, inventó las


máquinas para perforar tarjetas,
En 1835 Charles Babbage, matemáti- inspiradas en el telar de Jacquard, y la
co e ingeniero inglés, desarrolló el finalidad de la máquina de Hollerith
motor analítico, es reconocido como era acumular y clasificar la informa-
el Padre de la computadora actual. 1880 ción. Con esta máquina se realizó el
1835 El motor analítico consta de dos primer censo guardando la informa-
componentes: el almacenamiento y ción en una máquina ya que ante, se
la unidad de procesamiento. Avance procesan en forma manual. Charles
muy importante en el desarrollo de Hollerith fue quien organizó la gran
las computadoras. compañía IBM.

Figura 1 Línea de tiempo


Fuente: propia

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 9
5
Arquitectura del computador

Introducción a la arquitectura de computadores

La arquitectura de computadoras se refiere al diseño conceptual y la estructura ope-


racional fundamental de un sistema que conforma una computadora, es decir, la dis-
ciplina dedicada a la construcción, estudio y aplicación de los computadores recibe el
nombre de arquitectura de computadores y puede ser dividida en cinco partes funda-
mentales:
1. Entrada y salida
Esta es de interés tanto para los ingenieros en elec-
2. Comunicaciones trónica y computación, dedicados al diseño de hardware,
como para los científicos en computación e ingenieros de
3. Control software, dedicados al diseño de programas

4. Procesamiento Asimismo, la arquitectura de computadores es un con-


cepto que integra software, hardware, algoritmos y len-
5. Almacenamiento guajes de programación para el procesamiento de datos
y la generación de información

Conceptos iniciales de la arquitectura de computadores

Un computador es un sistema secuencial síncro-


no complejo que procesa información, esta se tra-
ta de información binaria, utilizando solamente los
dígitos de valores lógicos ‘1’ y ‘0’ Estos valores lógi-
cos binarios se corresponden con valores de tensión Procesador
eléctrica, de manera que un ‘1’ lógico corresponde a
un nivel alto a 5 voltios y un ‘0’ lógico corresponde
a un nivel bajo de tensión cercano a 0 voltios; estos
voltajes dependen de la tecnología que utilicen los
dispositivos del computador

Síncrono
Los circuitos secuenciales síncronos
solo permiten un cambio de estado
en los instantes marcados o auto-
rizados por una señal de sincronis-
mo de tipo oscilatorio denominada
reloj Figura 2 Procesador
Fuente: http://bit ly/2hBO4TS

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 10
6
Es el cerebro del sistema, encargado de procesar todos los datos e informaciones A
pesar de que es un dispositivo muy sofisticado no puede llegar a hacer nada por sí solo
Para hacer funcionar a este necesitamos algunos componentes más como lo son me-
morias, unidades de disco, dispositivos de entrada/salida y los programas El procesador
o núcleo central está formado por millones de transistores y componentes electrónicos
de un tamaño microscópico El procesamiento de las tareas o eventos que este realiza
va en función de los nanosegundos, haciendo que los miles de transistores que contiene
este trabajen en el orden de los MHz La información binaria se introduce mediante dis-
positivos periféricos que sirven de interfaz entre el mundo exterior con el usuario Estos
periféricos lo que van a hacer será traducir la información que el usuario introduce en
señales eléctricas, que serán interpretadas como unos y ceros, los cuales son interpreta-
dos de una manera más rápida por la computadora, ya que el lenguaje máquina utiliza
el código binario para ser interpretado por el computador

Arquitectura clásica de un computador modelo Von Neumann

La máquina Von Neumann, como todos de todos los nodos de computación


los computadores modernos de uso gene- Por lo general, el DO y la UC confor-
ral, consta de cuatro componentes princi- man una estructura llamada CPU
pales: Cabe señalar que el requisito es
consistente, el orden de la memoria
1. Dispositivo de operación (DO), (el orden del cambio de dirección en
que ejecuta instrucciones de un el contador de programa) es funda-
conjunto especificado, llamado sis- mental a la hora de la ejecución de
tema (conjunto) de instrucciones, la instrucción Por lo general, la ar-
sobre porciones de información al- quitectura que no se adhiere a este
macenada, separada de la memo- principio no se considera von Neu-
ria del dispositivo operativo (aun- mann
que en la arquitectura moderna el
dispositivo operativo consume más 3. Memoria del dispositivo, un con-
memoria -generalmente del banco junto de celdas con identificadores
de registros-), en la que los operan- únicos (direcciones), que contienen
dos son almacenados directamen- instrucciones y datos
te en el proceso de cálculo, en un
tiempo relativamente corto 4. Dispositivo de E/S (DES), que per-
mite la comunicación con el mun-
2. Unidad de control (UC), que orga- do exterior de los computadores,
niza la implementación consistente son otros dispositivos que reciben
de algoritmos de decodificación de los resultados y que le transmiten la
instrucciones que provienen de la información al computador para su
memoria del dispositivo, responde procesamiento
a situaciones de emergencia y rea-
liza funciones de dirección general

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 11
7
En el esquema de la figura 3, se muestra la estructura básica propuesta por
Von Neumann que debe llevar una computadora para su correcta operación:

Figura 3 Estructura básica de una computadora


Fuente: http://bit ly/2kIoZeY

La unidad central de procesamiento o unidad de procesamiento cen-


tral (conocida por las siglas CPU, del inglés: Central Processing Unit), es
el hardware dentro del computador u otros dispositivos programables, que
interpreta las instrucciones de un programa mediante la realización de las
operaciones básicas aritméticas, lógicas y de entrada/salida del sistema El
término, y su acrónimo, ha estado en uso en la industria de la Informática por
lo menos desde el principio de los años 1960 La forma, el diseño de CPU y la
implementación de las CPU ha cambiado drásticamente desde los primeros
ejemplos, pero su operación fundamental sigue siendo la misma

Memoria: es la responsable del almacenamiento de datos

Entrada/Salida: transfiere datos entre el entorno exterior y el computador


En él se encuentran los controladores de periféricos que forman la interfaz
entre los periféricos, la memoria y el procesador

Sistema de interconexión: buses; es el mecanismo que permite el flujo


de datos entre la CPU, la memoria y los módulos de entrada/salida Aquí se
propagan las señales eléctricas que son interpretadas como unos y ceros
lógicos

Periféricos: estos dispositivos son los que permiten la entrada de datos


al computador, y la salida de información una vez procesada Un grupo
de periféricos puede entenderse como un conjunto de transductores entre
la información física externa y la información binaria interpretable por el
computador Ejemplos de estos dispositivos son el teclado, el monitor, el
ratón, el disco duro y las tarjetas de red

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 12
8
Unidad central de procesamiento Unidad Aritmética Lógica o ALU
(por su sigla en inglés Arithmetic Logic
Unit): es la parte de la CPU encargada
de realizar las transformaciones  de los
datos Gobernada por la UC, la ALU cons-
ta de una serie de módulos que realizan
operaciones aritméticas y lógicas La UC
se encarga de seleccionar la operación a
realizar habilitando los caminos de datos
entre los diversos operadores de la ALU y
entre los registros internos

Registros internos: el almacenamien-


to de los resultados a la ejecución de las
instrucciones en la memoria principal po-
Figura 4 Unidad central de procesamiento dría ser lento y excesivamente tendría mu-
Fuente: http://bit ly/2gwSOKV chos datos en el sistema de interconexión
con la memoria, con lo que el rendimiento
bajaría De la misma manera, también se
Controla el funcionamiento de los ele- almacenan en registros internos la confi-
mentos de un computador Desde que el guración interna del CPU o la información
sistema es alimentado por una corrien- durante la última operación de la ALU Los
te, este no deja de procesar información principales registros de una CPU son:
hasta que se corta dicha alimentación La
CPU es la parte más importante del pro-
cesador, debido a que es utilizado para 1. Contador de programa:  se encar-
realizar todas las operaciones y cálculos ga de almacenar la dirección de la
del computador siguiente instrucción a ejecutar

Unidad de Control (UC): la unidad de 2. Registro de instrucción: se alma-


control se encarga de leer de la memoria cena la instrucción capturado en
las instrucciones que debe de ejecutar y de memoria y la que se está ejecutan-
secuenciar el acceso a los datos y operacio- do
nes a realizar por la unidad de proceso La
UC genera las señales de control que esta- 3. Registro de estado: compuesto por
blecen el flujo de datos en todo el compu- una serie de bits que informan el re-
tador e interno en la CPU Una instrucción sultado obtenido en la última opera-
no es más que una combinación de unos ción de la ALU
y ceros Consta de un código de operacio-
nes binarias para ejecutar la instrucción, 4. Registro acumulador: algunas CPU
la UC la almacena en un registro especial, realizan operaciones aritméticas en
interpreta su código de operación y ejecu- un registro llamado acumulador, su
ta la secuencia de acciones adecuada, en función es la de almacenar los resul-
pocas palabras decodifica la tados de las operaciones aritméticas
instrucción y lógicas
Operaciones binarias
Son aquellas en las cuales
el resultado de verdadero o
falso, 1 o 0

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 13
9
Memoria un enlace de comunicación comparti-
do que usa múltiples cables para conec-
En la memoria se almacena el progra- tar subsistemas Cada línea es capaz de
ma y los datos que va a ejecutar el CPU transmitir una tensión eléctrica que repre-
Las instrucciones son códigos binarios in- senta un ‘1’ o un ‘0’ Cuando hay varios dis-
terpretados por la unidad de control, los positivos en el mismo bus, habrá uno que
datos de igual manera se almacenan de podrá enviar una señal que será procesada
forma binaria por los demás módulos Si se mandan los
datos al mismo tiempo marcará un error
Las diversas tecnologías de almacena- o una contención del bus, por lo que el ac-
miento dependen del tiempo de acceso a ceso estará denegado Según su criterio de
los datos; por lo tanto, se realiza un diseño funcionalidad los buses se dividen en:
jerárquico de la memoria del sistema para
que esta pueda acceder rápidamente a los Buses de datos: es el que se utiliza para
datos El principio de que sea más rápida transmitir datos entre los diferentes dispo-
la memoria haciendo que tenga velocida- sitivos del computador
des similares al CPU, sirve para diseñar el
sistema de memoria La memoria principal Buses de direcciones: sirve para indicar
de los computadores tiene una estructura la posición del dato que se requiere acce-
similar a la mostrada en el esquema de la der
Figura 4 Se considera como una matriz de
celdas en la que la memoria puede acce- Bus de control: sirven para seleccionar
der a los datos aleatoriamente al emisor y al receptor en una transacción
del bus
Entrada/Salida
Bus de alimentación:  sirve para pro-
Como sabemos una computadora tiene porcionar a los dispositivos voltajes distin-
dispositivos de entrada y salida como son tos
los que contiene el gabinete, disco duro,
placa madre, unidades de CD o DVD, etc Periféricos: se entenderán todos aque-
El problema principal que existe entre ellos llos dispositivos que son necesarios para
es su tecnología y que tienen característi- suministrar datos a la computadora o vi-
cas diferentes a los del CPU, estos también sualizar los resultados Los periféricos se
necesitan una interfaz de cómo se van a conectan mediante un bus especial a su
entender con el CPU, al igual que el proce- controlador o al módulo de E/S
sador y el controlador periférico para inter-
cambiar datos entre la computadora Entre los periféricos de entrada tenemos
al teclado, ratones, pantallas, digitaliza-
Sistema de interconexión: buses doras y más Otros dispositivos periféri-
cos fundamentales para la interacción del
La conexión de los diversos componen- hombre con la computadora son las termi-
tes de una computadora, tales como dis- nales de vídeo y las tarjetas gráficas
cos duros, tarjetas madres, unidades de
CD, teclados, ratones, etc se efectúan a
través de los buses Un bus se define como

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 10
14
A este punto, los invitamos a revisar la presentación de Jorge Chico sobre Introduc-
ción a los computadores

¡Muy bien! Desarrollemos el crucigrama en la página principal del eje para afianzar los
términos requeridos para la conceptualización de algoritmos

Algoritmo, lenguaje y programa

Adicional a lo anterior, es importante tener presente tres conceptos:

Algoritmo: es una sucesión finita de pasos exento de ambigüedades que se


pueden ejecutar en tiempo finito cuya razón de ser, es la resolución de proble-
mas, cuya solución es expresable mediante un algoritmo

Lenguaje: de programación es el responsable de que la computadora siga


paso a paso las órdenes que el programador ha diseñado en el algoritmo Con
esto se entiende que el lenguaje de programación es una especie de interme-
diario entre el computador y el usuario, para que este último pueda darles res-
puesta a los problemas mediante la computadora y haciendo uso de palabras
(funciones), que le interpretan dicho programa al computador para la realiza-
ción de este trabajo

Veamos en la página principal del eje, el video sobre Lenguajes de programa-


ción de Juan Francisco Díaz

Programa: indicar a la computadora qué es lo que tiene que hacer En otras


palabras:

● Secuencia de instrucciones

● Instrucciones que entiende la computadora

● Y que persiguen un objetivo: ¡Resolver un problema!

Antes de continuar, vamos a consultar la nube de palabras en la página principal del


eje para conceptualizar con algunos términos adicionales que será importante tener
presentes

Continuemos con el desglose de lenguajes

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 15
11
Lenguajes de programación de alto nivel

Fundación Universitaria del Área Andina 16


Los lenguajes de programación de alto nivel se caracterizan por expresar los algorit-
mos de una manera adecuada a la capacidad de una persona para procesar informa-
ción, en lugar de estar orientados a su ejecución en las máquinas

Ventajas

● Genera un código más sencillo y comprensible

● Escribir un código válido para diversas máquinas o sistemas operativos

● Permite crear programas complejos en relativamente menos líneas de código

● Más cercanos a los lenguajes natural y matemático

resultado = dato1 + dato2;

• Mayor legibilidad, mayor facilidad de codificación

• Estructuración de datos / abstracción procedimental

Traducción Código fuente #include <iostream>


using namespace std;
int main()
Compiladores: {
Compilan y enlazan cout << “Hola Mundo!” << endl;
Programas completos COMPILADOR return 0;
}

Intérpretes: Código objeto 0100010100111010011100…

Compilan, enlazan y Enlazador Código objeto de biblioteca


ejecutan instrucción a
instrucción
Programa ejecutable Para una arquitectura concreta y
un sistema operativo

Tabla 1 Lenguajes de programación de alto nivel


Fuente: propia

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 13
17
Genealogía de los lenguajes

Figura 5 Genealogía de los lenguajes


Fuente: Sintes (2016)

Ahora examinaremos brevemente los grupos principales de lenguajes

Lenguajes de programación imperativos y funcionales

Los lenguajes de programación generalmente se dividen en dos grupos principales


con base al procesamiento de sus comandos: lenguajes imperativos y lenguajes funcio-
nales

Lenguaje de programación imperativo: un lenguaje imperativo programa median-


te una serie de comandos agrupados en bloques y compuestos de órdenes condicionales,
que permiten al programa retornar a un bloque de comandos si se cumple la condición
Estos fueron los primeros lenguajes de programación en uso y aún hoy muchos lenguajes
modernos usan este principio

No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a


la secuencialidad de las instrucciones

Lenguaje de programación funcional: un lenguaje de programación funcional (a


menudo llamado lenguaje procedimental) es un lenguaje que crea programas mediante
funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de
otras funciones Cuando una función se invoca a sí misma, hablamos de recursividad

El programa: codificación del algoritmo en un lenguaje de programación  El código


fuente es escrito en un lenguaje de programación

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 18
14
Figura 6 Lenguaje de programación
Fuente: http://bit ly/2yZTNKp

Instrucciones en una computadora

Una instrucción es cada paso de un algoritmo, pero que lo ejecuta la computadora

Tipos de instrucciones

● Entrada y Salida E/S:  pasar información del exterior al interior del ordenador y al
revés

● Aritmético-lógicas: aritméticas: ^, /,mod,+,-,*; Lógicas: or, and, not Comparación <,


<=, >, >=, =, <>

● Selectivas: permiten la selección de una alternativa en función de una condición

● Repetitivas: repetición de un número de instrucciones un número finito de veces

¡Recordemos que!

Un programa es un conjunto de instrucciones


que ejecutadas ordenadamente resuelven un
problema

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 15
19
Tipos de lenguajes

Lenguaje máquina: todo se programa con 1 y 0, que es lo único que entiende el ordenador

A continuación, encontrará una breve lista de los lenguajes de programación actuales: 

Lenguaje Principal área de aplicación Compilado/interpretado

ADA Tiempo real Lenguaje compilado

Programación para fines


BASIC Lenguaje interpretado
educativos

C Programación de sistema Lenguaje compilado

Programación de sistema
C++ Lenguaje compilado
orientado a objeto

Cobol Administración Lenguaje compilado

Fortran Cálculo Lenguaje compilado

Java Programación orientada a Internet Lenguaje intermediario

MATLAB Cálculos matemáticos Lenguaje interpretado

Cálculos matemáti-
Cálculos matemáticos Lenguaje interpretado
cos

LISP Inteligencia artificial Lenguaje intermediario

Pascal Educación Lenguaje compilado

PHP Desarrollo de sitios web dinámicos Lenguaje interpretado

Inteligencia artificial Inteligencia artificial Lenguaje interpretado

Procesamiento de cadenas de
Perl Lenguaje interpretado
caracteres

Tabla 2 Lenguajes de programación usados en la actualidad


Fuente: propia

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 20
16
Compilación del lenguaje La resolución de un problema mediante
una computadora consiste en la
En un lenguaje compilado el código especificación del problema, construir un
fuente antes de ser ejecutado es conver- programa que lo resuelva
tido a lenguaje máquina (C, C++) aunque
también puede ser convertido a represen- Los procesos necesarios para la creación
tación intermedia que posteriormente es de un programa son:
interpretada y convertida a lenguaje má-
quina JIT (Java, C#) El compilador puede
detectar una gran cantidad de errores que
en un lenguaje interpretado o de tipado
dinámico se descubrirán en tiempo de eje-
cución  

Lectura recomendada 1. Analizar un problema de la vida


real (entender el problema).
Se invita al estudiante a rea-
lizar la lectura recomendada de
algoritmos.

Algoritmos 2. Diseñar un algoritmo que


resuelva el problema.
Les invitamos a revisar las instrucciones
de la actividad de repaso 1 e ir contrastan-
do con el conocimiento sobre algoritmos
que desarrollaremos a continuación

Para empezar, veamos el video

Video 3. Traducir el algoritmo a un


lenguaje de programación.
¿Qué es un algoritmo?

Un algoritmo es una secuencia de pasos


organizados entre sí que describe el proceso
que se debe seguir, sin ambigüedades para
dar solución a un problema específico
4. Depurar y validar el programa.

Algoritmo Figura 7 Proceso de creación de un programa


La palabra algoritmo se deriva de la traducción al latín de la palabra árabe
alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un
Fuente: propia
tratado sobre manipulación de números y ecuaciones en el siglo IX, Mohámed
ben Musa, que alcanzó gran reputación al enunciar paso a paso las reglas
para sumar, restar, multiplicar y dividir números con decimales

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 21
17
Algunos ejemplos de algoritmos son:

• Una receta de cocina

• Un manual de uso

• Las instrucciones para realizar un trámite

Ahora bien, las características fundamentales que debe tener todo algoritmo son:

• Debe ser preciso, es decir, indicar el orden de realización de cada paso

• Debe estar definido, esto es, si se ejecuta varias veces partiendo de las mismas
condiciones iniciales debe obtenerse siempre el mismo resultado

• Debe ser finito (debe tener un número finito de pasos)

• Debe ser independiente del lenguaje de programación que se emplee para imple-
mentarlo

Metodología y construcción de algoritmos

En cualquier algoritmo se pueden distinguir tres partes:

1. La entrada de datos (la información sobre la cual se va a efectuar operaciones)

2. Procesamiento

3. Salida del resultado (la información que debe proporcionar)

Veamos un ejemplo clásico de algoritmos: determinar el volumen de una caja de


dimensiones A, B y C
Se puede establecer de la siguiente manera:

1. Inicio

2. Leer las medidas A, B y C

3. Realizar el producto de A * B * C y guardarlo en V


(V = A * B * C)

4. Escribir el resultado V
Figura 8 Volumen de una caja 5. Fin
Fuente: propia

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 22
18
Como se puede apreciar, se establece de forma precisa la secuencia de los pasos por realizar; además,
si se les proporciona siempre los mismos valores a las variables A, B y C, el resultado del volumen será el
mismo y, por consiguiente, se cuenta con un final

Diagramas de flujo

Los diagramas de flujo son una herramienta que permite Diagramas de flujo
Un diagrama de flujo es la represen-
representar visualmente qué operaciones se requieren y en tación gráfica mediante símbolos
qué secuencia se deben efectuar para solucionar un problema especiales, de los pasos o proce-
dimientos de manera secuencial y
dado lógica que se deben realizar para
solucionar un problema dado

Inicio Inicio

Leer las medidas A, B A, B, C


y C.

Calcular el volumen. Volumen = A*B*C

Escribir el volumen Volumen


obtenido.

Fin. Fin Figura 9 Diagrama de flujo


Fuente: propia

En principio, el flujo de ejecución de un programa será el orden en el cual se


escriban las instrucciones (ejecución secuencial) Sin embargo, este esque-
ma de ejecución impone serias limitaciones: a menudo hay ciertas porciones
de código que sólo se deben ejecutar si se cumplen ciertas condiciones y
tareas repetitivas que hay que ejecutar un gran número de veces Por ello,
se han definido una serie de estructuras de programación, independientes
del lenguaje concreto que se está utilizando, que permiten crear programas
cuyo flujo de ejecución sea más versátil que una ejecución secuencial

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 23
19
Variables y tipos de datos minado espacio de memoria etiquetado
con el correspondiente identificador
Veamos a continuación, los elementos
que hacen parte de un algoritmo de pro- Tipos de datos
gramación
Un tipo de datos es la propiedad de un
Variables valor que determina su dominio (qué va-
lores puede tomar), qué operaciones se le
Una variable es un objeto cuyo valor pueden aplicar y cómo es representado in-
puede cambiar durante el desarrollo del ternamente por el computador
algoritmo Se identifica por su nombre y
por su tipo, que podrá ser cualquiera, y es Todos los valores que aparecen en un
el que determina el conjunto de valores programa tienen un tipo
que podrá tomar la variable En los algorit-
mos se pueden declarar variables Cuando A continuación, revisaremos los tipos de
se traduce el algoritmo a un lenguaje de datos elementales de Python Además de
programación y se ejecuta el programa re- éstos, existen muchos otros, y más adelan-
sultante, la declaración de cada una de las te aprenderemos a crear nuestros propios
variables originará que se reserve un deter- tipos de datos

Números enteros

El tipo int (del inglés integer, que significa «entero») permite re-


presentar números enteros.

Los valores que puede tomar un int son todos los números enteros: 1570
... -3, -2, -1, 0, 1, 2, 3, … +4591
-12
Los números enteros literales se escriben con un signo opcional
seguido por una secuencia de dígitos:

Números reales

El tipo float permite representar números reales

El nombre float viene del término punto flotante, que es la manera en que el compu-


tador representa internamente los números reales

Hay que tener mucho cuidado, porque los números reales no se pueden representar
de manera exacta en un computador Por ejemplo, el número decimal 0 7 es representa-
do internamente por el computador mediante la aproximación 0 69999999999999996
Todas las operaciones entre valores  float  son aproximaciones Esto puede conducir a
resultados algo sorpresivos:

>>> 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7


0 9999999999999998

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 20
24
Los números reales literales se escriben dobles:
separando la parte entera de la decimal
con un punto Las partes entera y decimal “ejemplo 1”
pueden ser omitidas si alguna de ellas es
cero: ‘ejemplo 2’

La ventaja de tener dos tipos de comillas


>>> 881 9843000
es que se puede usar uno de ellos cuando
el otro aparece como parte del texto:
881 9843

>>> -3 14159 “ALGORITMOS Y PROGRAMACIÓN”

-3 14159 ‘Ella dijo “hola”’

>>> 1024 Es importante entender que los strings


no son lo mismo que los valores que en él
1024 0 pueden estar representados:

>>> 5 == ‘5’
Otra representación es la notación cien-
tífica, en la que se escribe un factor y una False
potencia de diez separados por una letra e
Por ejemplo: >>> True == ‘True’

>>> -2 45E4 False

-24500 0
Los strings que difieren en mayúsculas
y minúsculas, o en espacios también son
>>> 7e-2
distintos:
0 07

>>> ‘mesa’ == ‘Mesa’


Los dos últimos valores del ejemplo son
iguales, respectivamente, a 6 02×10236 02 False
×1023 y 9 1094×10−319 1094×10−31
>>> ‘ mesa’ == ‘mesa ‘
Texto
False
A los valores que representan texto se
les llama  strings, y tienen el tipo  str Los
Nulo
strings literales pueden ser representados
con texto entre comillas simples o comillas

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 25
21
Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar
casos en que ningún valor es válido, o para indicar que una variable todavía no tiene un
valor que tenga sentido

El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los


demás valores
Video
Revise en la página principal del eje el video

Constantes Cómo se realiza un algoritmo.

Son datos cuyo valor no cambia durante todo el desarrollo del algoritmo Las cons-
tantes podrán ser literales o con nombres

Ahora bien, ya que identificamos los tipos de datos que se utilizan en el diseño de un
algoritmo, a continuación, vamos a ver aquellas estructuras de tipo repetitivo que son
vitales para aquellos problemas típicos que requieren ejecutar una instrucción a partir
de una determinada condición que se debe cumplir Veamos:

La estructura de control if

La sentencia if permite a un programa tomar una decisión para ejecutar una acción
u otra Diariamente tomamos decisiones, por ejemplo, evaluamos el estado del tiempo
para decidir si llevamos sombrilla, verificamos si la tarjeta de Transmilenio tiene cargado
dinero para viajar, sino hay que cargarle dinero

A La sentencia if se le conoce como estructura de selección simple y su función es


realizar o no una determinada acción o sentencia, basándose en el resultado de la eva-
luación de una expresión (verdadero o falso), en caso de ser verdadero se ejecuta la
sentencia

if ( expresión(es ) )
{ sen tencias }
els e
{ sentencias }

Por ejemplo, si dada la edad de una persona quiero dar un mensaje de que es o no


mayor de edad, suponiendo que una persona mayor de edad tiene por lo menos 21 años,
el procedimiento será el siguiente

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 26
22
En pseudocódigo el anterior ejemplo se vería de la siguiente forma:

Inicio
Mostrar “¿Qué edad tienes?”

Leer edad

Si Edad >20 Entonces


Mostrar “Eres mayor de Edad”
Fin Si
Fin

La sentencia for es una sentencia que implementa un bucle, es decir,


que es capaz de repetir un grupo de sentencias un número determinado
de veces

La sintaxis de un ciclo for es simple en los lenguajes de alto nivel


es incluso muy similar, de hecho, con tan solo tener bien claros los 3

componentes del ciclo for (inicio, final y tamaño de paso)


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

Bloque de Instrucciones

Pseudocódigo
El pseudocódigo consta de un falso
lenguaje Se considera que, es un
código informal que se utiliza como
} inicio de un algoritmo

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 23
27
Sentencia While

Veamos la definición de esta sentencia, tomada de Ceballos (2007)

La sentencia while ejecuta una secuencia, simple o compuesta, cero o


más veces, dependiendo de una condición:

Su sintaxis es:

while (condición)    

                Bloque de instrucciones;

         Si se requiere realizar más de un estatuto se deben utilizar llaves      

     while ( condición )    

         {

               Bloque de Instrucciones;

          }

Donde condición es cualquier expresión numérica, relacional o lógica y


bloque de instrucciones es una sentencia simple o compuesta.

La ejecución de la sentencia while funciona de la siguiente forma:

1 Se evalúa la condición El resultado es falso o verdadero

2 Si el resultado de la evaluación es falso (0), no se ejecuta y se pasa


el control a la siguiente sentencia en el programa

3 Si el resultado de la evaluación es verdadero (1), se ejecuta la


sentencia y el proceso descrito se repite desde el punto 1

4 Un ciclo while tiene una condición del ciclo, una expresión lógica
que controla la secuencia de repetición (Ceballos, 2007)

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 24
28
Implementación de algoritmos

Fundación Universitaria del Área Andina 29


Diagramas de flujo (DFD)
¿Qué es DFD?: los diagramas de flujo de datos (DFD en inglés) son un tipo de herra-
mienta de modelado, permiten modelar todo tipo de sistemas, concentrándose en las
funciones que realiza, y los datos de entrada y salida de esas funciones

Componentes de los DFD


PROCESOS (burbujas): representan la parte del sistema que transforma ciertas en-
tradas en ciertas salidas

FLUJOS: representan los datos en movimiento Pueden ser Flujos de control


flujos de entrada o flujos de salida Los flujos conectan procesos Los flujos de control son señales o
interrupciones, en tanto los procesos
entre sí y también almacenes con procesos de control son burbujas que coordi-
nan y sincronizan otros procesos; los
procesos de control solo se conectan
ALMACENES: representan datos almacenados Pueden ser con flujos de control
una base de datos, un archivo físico Los flujos de control de salida “des-
piertan” otras burbujas, en tanto los
flujos de control de entrada, espe-
TERMINADORES: representan entidades externas que se co- cifican que una tarea terminó o se
presentó un evento extraordinario
munican con el sistema Esas entidades pueden ser personas,
organizaciones u otros sistemas, pero no pertenecen al sistema
que se está modelando

¡Impo rtante!

Existen procesos y flujos especiales llamados procesos de control


y flujos de control Se emplean para modelar sistemas en tiempo
real

Representación de un sistema en DFD

Un sistema puede representarse empleando varios diagramas de flujos de datos, cada


flujo de datos puede representar una parte “más pequeña” del sistema

Los DFD permiten una partición por niveles del sistema El nivel más general se repre-
senta con un DFD global llamado diagrama de contexto

El diagrama de contexto DFD representa a todo el sistema con una simple burbuja o
proceso, las entradas y salidas de todo el sistema, y las interacciones con los termina-
dores

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 30
26
Complementos del DFD

Los DFD suelen servir para comprender fácilmente el funcionamiento de un sistema


De todas maneras, no es la única herramienta para diagramar sistemas, es más, se debe
complementar con otras herramientas para agregar comprensión y exactitud al DFD

Para la implementación de algoritmos es ideal instalar en el computador programas


como PseInt

¿Qué es PseInt?: es una herramienta para asistir a los estudiantes en sus primeros
pasos en programación Mediante un simple e intuitivo pseudolenguaje en español
(complementado con un editor de diagramas de flujo), le permite centrar su atención
en los conceptos fundamentales de la algoritmia computacional, minimizando
las dificultades propias de un lenguaje y proporcionando un entorno de trabajo con
numerosas ayudas y recursos didácticos

Se puede descargar de forma libre ingresando a Google:

Figura 10 Búsqueda en google de descarga de PseInt


Fuente: captura de pantalla “Búsqueda de Google”

¡Impo rtante!

Se invita al estudiante a revisar el manual PseInt del Ing Ronald


Rentería, con el fin de consolidar el concepto y desarrollo de los algoritmos
Además, será importante que se realice su instalación para diseñar los
respectivos diagramas de flujo que se proponen en el módulo

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 31
27
Introducción a software para interpretación e
implementación (C++)
Si se desea escribir un programa en C++ se debe ejecutar como mínimo los siguientes
pasos:

1. Escribir con un editor de texto plano un programa sintácticamente válido o usar un


entorno de desarrollo (IDE) apropiado para tal fin

2. Compilar el programa y asegurarse de que no ha habido errores de compilación

3. Ejecutar el programa y comprobar que no hay errores de ejecución

Como ejemplo, si se desea escribir un ar-


¡Impo rtante! chivo con el nombre hola cpp y en él escri-
bir un programa con emacs, por ejemplo,
que es un programa de edición de textos,
Este último paso es el más costoso, se puede, en GNU, ejecutar el siguiente co-
porque en programas grandes, ave- mando:
riguar si hay o no un fallo práctica-
mente puede ser una tarea titánica
$emacs hola cpp &

Para otros sistemas operativos u otros entornos de desarrollo, no necesariamente se


sigue este paso

#include <iostream>

int main(void)

{
En este punto se ha ter-
std::cout << “Hola Mundo” << std::endl; minado este eje, por lo que
es el momento de realizar
std::cin get(); los ejercicios propuestos en
Actividad de repaso 2
//con ‘std::cin.get();’ lo que se hace es esperar
hasta que el usuario pulse enter.

return 0;

Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 32
28
Bibliografía

Ceballos, F (2007) Programación orientada a objetos con C++ (4a ed )


Madrid, España: Editorial RA-MA Recuperado de http://site ebrary com
proxy bidig areandina edu co:2048/lib/bibliotecafuaasp/detail action?doc
ID=11045993&p00=lenguaje+c%2B%2B

Ceballos, F (2009) Enciclopedia del lenguaje C++ (2a ed ) Madrid, España:


Editorial RA-MA Recuperado de: http://site ebrary com proxy bidig
areandina edu co:2048/lib/bibliotecafuaasp/detail action?docID=1104657
2&p00=lenguaje+c%2B%2B

Gaxiola, C , y Flores, D (2008) Metodología de la programación con


pseudocódigo enfocado al lenguaje C Ciudad de México, México: Editorial
BIBLIOGRAFÍA

Plaza y Valdés, S A de C V Recuperado de http://site ebrary com proxy


bidig areandina edu co:2048/lib/bibliotecafuaasp/detail action?docID=10
877093&p00=algoritmos+programaci%C3%B3n

Joyanes, L (2006) Programación en C++: algoritmos, estructuras de datos


y objetos (2a ed ) Madrid, España: McGraw-Hill Recuperado de: http://
site ebrary com proxy bidig areandina edu co:2048/lib/bibliotecafuaasp/
detail action?docID=10491359&p00=lenguaje+c%2B%2B

Joyanes, L , Castillo, A , y Sánchez, L (2005) C algoritmos, programación y


estructuras de datos Madrid, España: McGraw-Hill Recuperado de http://
site ebrary com proxy bidig areandina edu co:2048/lib/bibliotecafuaasp/
detail action?docID=10491350&p00=lenguaje+c%2B%2B

Joyanes, L , Rodríguez, L , y Fernández, M (2003) Fundamentos de


programación: libro de problemas. Algoritmos, estructuras de datos y objetos
(2a ed ) Madrid, España: McGraw-Hill España Recuperado de http://site
ebrary com proxy bidig areandina edu co:2048/lib /bibliotecafuaasp /
detail action?docID=10498607&p00=algoritmos+programaci%C3%B3n

Joyanes, L , y Sánchez, L (2006) Programación en C++: un enfoque práctico.


Madrid, España: McGraw-Hill Recuperado de http://site ebrary com proxy
bidig areandina edu co:2048/lib/bibliotecafuaasp/detail action?docID=10
491298&p00=lenguaje+c%2B%2B

Joyanes, L , y Zahonero, I (2007) Estructura de datos en C++ Madrid, España:


McGraw-Hill Recuperado de http://site ebrary com proxy bidig areandina
edu co:2048/lib/bibliotecafuaasp/detail action?docID=10491301&p00=len
guaje+c%2B%2B

Fundación Universitaria del Área Andina 33


Joyanes, L , Zahonero, I (2005) Programación en C: metodología, algoritmos
y estructura de datos (2a ed ) Madrid, España: McGraw-Hill Recuperado
de http://site ebrary com proxy bidig areandina edu co:2048/lib/
bibliotecafuaasp/detail action?docID=10498360&p00=algoritmos+progra
maci%C3%B3n

Juganaru, M (2014) Introducción a la programación Ciudad de México,


México: Grupo Editorial Patria Recuperado de http://site ebrary com
proxy bidig areandina edu co:2048/lib/bibliotecafuaasp/detail action?do
cID=11017472&p00=programaci%C3%B3n

Moreno, J (2014) Programación Madrid, España: Editorial RA-MA


Recuperado de http://site ebrary com proxy bidig areandina edu
BIBLIOGRAFÍA

co:2048/lib/bibliotecafuaasp/detail action?docID=11046398&p00=lengu
aje+c%2B%2B

Noguera, F , y Riera, D (2013) Programación Barcelona, España: Editorial


UOC Recuperado de http://site ebrary com proxy bidig areandina edu
co:2048/lib/bibliotecafuaasp/detail action?docID=10853420&p00=lengu
aje+c%2B%2B

Schildt, H (2009) C++: soluciones de programación McGraw-Hill


Interamericana Recuperado de http://site ebrary com proxy bidig
areandina edu co:2048/lib/bibliotecafuaasp/detail action?docID=104339
27&p00=algoritmos+programaci%C3%B3n

Fundación Universitaria del Área Andina 34


ALGORITMOS Y
PROGRAMACIÓN
Julio César Rodríguez Casas

EJE 2
Analicemos la situación

Fundación Universitaria del Área Andina 35


Introducción

En el presente referente abordaremos los temas relacionados con el lenguaje


C++, partiendo desde una breve reseña acerca de la historia del lenguaje C++,
teniendo en cuenta los conceptos básicos de C++; así mismo, veremos cómo se
puede instalar el compilador del lenguaje C++ con el propósito de desarrollar
programas y compilarlos y así mismo corregir los posibles errores de sintaxis que
se puedan presentar .

De igual forma, se ofrece la opción de ejecutar los programas online, con


una URL para compilar, sin la necesidad de tener instalado el compilador en el
computador .
INTRODUCCIÓN

Adicionalmente se realiza la explicación línea por línea del primer programa


en C++ para entender cada una de las instrucciones e irse familiarizando con el
código .

Para empezar, los invitamos a descargar y tener a mano las siguientes lecturas:

Lectura recomendada

Para reforzar los temas que veremos más adelante se invita


al estudiante realizar la lectura complementaria Programa-
ción en C++ / Lo más básico .

De igual forma se facilita el Manual de programación de C++ .

¡Comencemos!

Las principales herramientas necesarias para escribir un programa en C++ son


las siguientes:

Un compilador de C++ .

Paciencia .

• Nociones sobre programación .

• Un editor cualquiera de texto .

Fundación Universitaria del Área Andina 36


Programación básica
Lenguaje C++
Historia C++

Fundación Universitaria del Área Andina 37


Inicialmente el lenguaje C se realizó en los laboratorios Bell de AT&T en los años 1969 y
1973, en un comienzo se le nombró como “C”, la mayoría de sus características se tomaron
de un lenguaje llamado “B” .

¡Impor tante!
En junio de 1991, a la estan-
darización de ANSI se unió ISO
En 1983 se formó el comité ANSI (Instituto Nacio- (International Organization for
nal Americano de Estándares) con el objeto de Standardization) con su propio
crear un estándar . Este proceso tuvo una dura- comité (ISO-WG-21), creando
ción de aproximadamente de seis años y a prin- un esfuerzo común ANSI/ISO
cipios de los años 90 es estándar fue reconocido para desarrollar un estándar
como ISO (Organización Internacional de Están- para C++ .) .
dares) así mismo se comienza a comercializar
con el nombre ANSI C . C es un lenguaje de propósi-
to general que se puede utilizar
En forma paralela en 1980 aparece el lenguaje para escribir cualquier tipo de
C++, en los laboratorios Bell de AT&T, con el señor programa, pero su éxito y po-
Bjarne Strouptrup quien realiza el diseño del len- pularidad está especialmente
guaje C++ con el fin de adicionar nuevas caracte- relacionado con el sistema ope-
rísticas al lenguaje C, como son clases y funciones rativo UNIX . (Fue desarrollado
virtuales tomadas de SIMULA 67, tipos genéricos como lenguaje de programación
y expresiones tomadas de lenguaje ADA . Así mis- de sistemas, es decir, un lengua-
mo de ALGOL 68 se tomo la declaración de varia- je de programación para escribir
bles en cualquier parte del programa . sistemas operativos y utilida-
des (programas) del sistema .)

C++ comenzó su proyecto de estandarización ante


el comité ANSI y su primera referencia es The Annota- Sistemas operativos
ted C++ Reference Manual [Ellis 89] . En diciembre de Los sistemas operativos son los progra-
mas que gestionan (administran) los
1989 se reunió el comité X3J16 del ANSI por iniciativa de recursos de la computadora . Ejemplos
Hewlett Packard . bien conocidos de sistemas operativos
además de UNIX son MS/DOS, OS/2,
MVS, Linux, Windows 95/98, Windows
Con base en el auge y éxito del lenguaje en el año NT, Windows 2000, OS Mac, etc .
1990, se reunieron las organizaciones ISO y ANSI para
concretar y definir un estándar con el fin de forma-
lizar el lenguaje . En 1998 termina con la aprobación
del ANSI C++ .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 38
5
La especificación formal del lenguaje C es un documento escrito por Ritchie, titulado
The C Reference Manual . En 1997, Ritchie y Brian Kernighan, ampliaron ese documento
y publicaron un libro referencia del lenguaje The C Programming Language también co-
nocido por el K&R .

En la actualidad el lenguaje C++ se ha vuelto muy popular y en se utiliza mucho en


las universidades, además es un lenguaje orientado a objetos, de igual forma se puede
utilizar como un lenguaje estructurado como su antecesor el lenguaje C y si se quiere
trabajar con algoritmos y estructuras de datos .

Instrucción

A este punto, le invitamos a consultar el capítulo 1 “Intro-


ducción a la ciencia de la computación y a la programación”
de Joyanes, específicamente de la página 38 a 43 para ahon-
dar en la evolución de C++ .

Conceptos básicos del lenguaje C++

Funciones

El lenguaje C++ está basado en el con- y devuelve determinada información de un


cepto de funciones en donde cada una tipo específico . A la lista de datos que la
tiene un nombre y una lista de argumen- función recibe, se le conoce con el nombre
tos . En general se puede dar a una función de lista de parámetros .
el nombre que se quiera con excepción
de  MAIN  que se reserva para la función Las funciones son una de las herramien-
que inicia la ejecución del programa . tas más útiles en la programación porque
permiten encerrar código con un nombre e
Una función es un proceso con entradas invocarlo a través de él . Con esto los pro-
y salidas bien definidas . Su implementa- gramadores evitan repetir el código cada
ción práctica también debe ir encaminada vez que sea necesario en un programa,
a la realización de bloques bien definidos además de que, es posible ocultar código
en cuanto al proceso que realicen y los in- de forma que el usuario de la función no
sumos y consumos que requiera . Las fun- tenga que conocer los detalles del cómo se
ciones reciben datos a través de una lista, hacen las cosas .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 39
6
Biblioteca Estándar de C++

En C++, la biblioteca estándar es una C++ que contiene los contenedores, algo-
colección de Clases y funciones, escritas ritmos, iteradores, funciones objeto, etc .;
en el núcleo del lenguaje . La biblioteca es- aunque algunas personas utilizan el tér-
tándar proporciona varios contenedores mino STL indistintamente con la biblioteca
genéricos, funciones para utilizar y mani- estándar de C++ .
pular esos contenedores, funciones objeto,
cadenas y flujos genéricos (incluyendo E/S Para profundizar en el tema de progra-
interactiva y de archivos) y soporte para la mación, se recomienda realizar la lectura y
mayoría de las características del lengua- la actividad de las lecturas complementa-
je . La biblioteca estándar de C++ también rias; para que pueda instalar y compilar los
incorpora la ISO C90 biblioteca estándar ejercicios de lenguaje C++ .
de C . Las características de la biblioteca
estándar están declaradas en el espacio Otra alternativa para compilar los pro-
de nombres (namespace) std . gramas a través de la web en línea es
JDoogle . Se recomienda habilitar el modo
La Standard Template Library es un interactivo .
subconjunto de la biblioteca estándar de

Conceptos básicos de un programa en C++

Analicemos el siguiente código:

#include <iostream> 
using namespace std; 

int main() {

// aquí escribiremos el código del programa ...


cout << “Hola Areandina”; << endln; 

Si ejecutamos el programa anterior, no presenta ningún error y nos mostrará el men-


saje Hola Areandina .

Estructura del código fuente

Todo el código que escribamos irá siempre dentro de las llaves que tenemos en la
función int main () { . . .(código) . . . } .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 40
7
Vamos ahora a analizar por encima el digo para el programador . Veremos más
programa anterior: adelante el tratamiento de líneas en blan-
co y espacios en la programación .
Línea 1: #include <iostream>
Líneas 4 y 7: int main() {
Las líneas que empiezan por el carác-
ter almohadilla (#), son leídas por lo que }
se conoce como el “preprocesador” . estas
son líneas especiales que se ponen antes Esta estructura es la función princi-
del código del programa en sí, También se pal que contiene el código (main signifi-
llaman “cabeceras” . En este caso #inclu- ca “principal”) . Lo que se escriba dentro
de <iostream>, encarga al preprocesador de las llaves de esta función es el código
que se incluya una sección de código C++ fuente en sí, es decir el programa que se
estándar que permite realizar operaciones ejecutará . Es posible que pueda haber
estándar de entrada y salida de datos . Las instrucciones fuera de esta función, pero
secciones que se incluyan mediante la al- siempre tendrán que estar dirigidas desde
mohadilla (#) se llaman también bibliote- esta función .
cas o librerías .
Más adelante entraremos a explicar
Línea 2: using namespace std; más en profundidad lo que son las funcio-
nes, las librerías y otros conceptos que aquí
hemos dicho de pasada . De momento hay
Video que saber que para programar en C++ lo
primero que debemos hacer es escribir la
plantilla que damos aquí . En nuestro ejem-
Antes de continuar, veamos plo, dentro de la función int main() { } he-
el video sobre Librerías e ins- mos puesto las siguientes líneas:
trucciones básicas .
Línea 5: Este es un comentario no lo in-
terpreta el compilador .
Esta línea declara un “namespace” o
espacio de nombres . En concreto el na- // aquí escribiremos el código del pro-
mespace “std” o estándar . Dentro del grama …
namespace std están declarados todos
los elementos de las bibliotecas estándar . Dentro de las llaves de la función int
Mediante esta línea podemos usar los ele- main() escribiremos el código propiamen-
mentos de la biblioteca estándar sin ne- te dicho, es decir, lo que queremos que se
cesidad de tener que declararlos cada vez ejecute en el programa .
que se usan .
En este caso hemos puesto un comen-
Línea 3: tario . La doble // barra del principio de línea
indica que este es un comentario introdu-
Esta es una línea en blanco, no es im- cido por el programador . Este no tiene nin-
prescindible ponerla, pero ayuda a una gún efecto en la programación . Se usan
mayor claridad en la comprensión del có- para introducir explicaciones u observacio-

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 41
8
nes . son útiles para documentar el progra- repetimos el operador de inserción (<<) y
ma e indicar cómo funciona . después indicamos lo que debe insertarse,
en este caso es un salto de línea que se in-
Línea 6: cout << “Hola Areandina” << dica mediante la instrucción endl .
endl;
Observamos que la declaración termi-
Esta línea es una sentencia C ++ . una na con un punto y coma (;) . Este carácter
sentencia es una instrucción que produce marca el final de la declaración . Todas las
algún efecto o cambia algo en el progra- declaraciones o sentencias en C ++ deben
ma . Las sentencias se ejecutan en el mis- terminar con un punto y coma .
mo orden en que aparecen . A las senten-
cias también se les llama declaraciones . Comentarios

Línea 5: Este es un comentario no lo in-


terpreta el compilador .
¡Impor tante!
// aquí escribiremos el código del pro-
La sentencia o declaración en un grama …
lenguaje de programación, es el
equivalente a la frase en el len- Como hemos visto en el código anterior,
guaje humano . los comentarios son anotaciones que hace
el programador para sí mismo . El comen-
tario no tiene ningún efecto en la progra-
Esta sentencia tiene varias partes: mación, por lo tanto, y a efectos de pro-
gramación, es ignorado, y el compilador
• En primer lugar, cout, que identifica no lo lee .
el dispositivo de salida de caracteres
estándar (por lo general la pantalla Sin embargo, puede resultar útil para el
del ordenador) . programador, como nota aclaratoria que
indica lo que se está haciendo .
• En segundo lugar, el operador de in-
serción (<<), que indica que lo que
sigue debe insertarse (mostrarse en De una línea
pantalla) . Hay dos tipos de comentarios, el prime-
ro, que ya hemos visto, es el comentario de
• Por último, una frase entre comillas ( una sola línea .
“Hola Areandina”), que es el conte-
nido insertado . Para insertarlo escribimos una doble
barra, y todo lo que se escriba después de
Estas dos últimas partes se repiten para ella en la misma línea es un comentario .
volver a insertar otro elemento, es decir

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 42
9
Por ejemplo: Como hemos visto en los códigos que
hemos hecho hasta ahora, se pueden po-
// Este es un comentario de una línea. ner líneas en blanco, más de un espacio
entre palabras, o tabulaciones, sin que
El comentario de una línea no tiene por esto afecte al código .
qué empezar al principio de línea, sino que
puede ir en la misma línea después de una De hecho, podríamos poner todo el có-
declaración, por ejemplo: digo seguido, si exceptuamos algunas ins-
trucciones que deben ir en una sola línea .
cout << “Hola Areandina” << endl;// Estas son: las que empiezan por #include,
Hola mundo en pantalla. y los comentarios de una sola línea . Por
ejemplo, podríamos poner el programa del
“Hola Areandina” así:
De varias líneas
El segundo tipo de comentario es el de
varias líneas, este empieza por los carac- //Hola mundo . . .
teres /*, (barra, asterisco), escribimos des- #include <iostream>
pués el comentario en una o varias líneas, using namespace std; int main()
y para indicar que ha acabado escribimos {cout << “Hola Areandina” << endl;}
después los caracteres */ (asterisco, ba-
rra) . por ejemplo:
Sin embargo, para una mayor claridad
en el código, se suelen utilizar líneas en
blanco, tabulaciones, y otros espacios en
/* abrimos el comentario.
blanco . De esta manera indicamos qué ele-
Sigue el comentario en esta línea... mentos son principales, y cuales dependen
otra línea más del comentario... de otros, y los cambios entre las distintas
partes del programa . Por ejemplo, el códi-
...cerramos el comentario */
go anterior, bien organizado, quedará así:

Todo lo que escribamos entre los signos


/* y */, será un comentario de varias líneas //Hola mundo
y será ignorado por el compilador . #include <iostream>
using namespace std;
Espacios en blanco
int main() {
Al escribir el código escribimos una serie cout << “Hola Areandina” << endl;
de palabras clave, declaraciones, etc . }

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 43
10
Estructura de un programa C++

Directivas de preprocesador
Componente Declaraciones globales (variables globales, funciones, . . .)
estructural básico:
la función función main()
{
secuencia de declaraciones e instrucciones
]
Funciones función1()
{
secuencia de declaraciones e instrucciones
}
Una de las funciones . . .
ha de ser main funciónN()
{
secuencia de declaraciones e instrucciones
}

Figura 1 . Estructura básica de un programa en lenguaje C++


Tomado de: https://www .yumpu .com/es/document/view/14837159/1-estructura-ba-
sica-de-un-programa-c-

return 0;
Video
Todas las funciones deben retornar un
valor . Y la función main(), retornará el va-
lor cero (0) si no hubo ningún error . Las Se invita al estudiante a que vea el
funciones deberán retornar el valor espe- video acerca de cómo se realiza un
cificado al declararlas “int main ()” signi- programa con base en el algoritmo .
fica que la función main devolverá un nú-
mero entero (a los números enteros se les
denomina int por “integer” que significa
entero en inglés) .
Identificadores y palabras reservadas
en el lenguaje C++
Las palabras reservadas son identifica-
Lectura recomendada dores predefinidos que tienen significados
especiales y no pueden usarse como iden-
tificadores creados por el usuario en los
Para profundizar en el tema se invita al programas .
estudiante a realizar la lectura comple-
mentaria acerca de la salida de datos . Las palabras reservadas de C++ pueden
agruparse en tres (3) grupos .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 44
11
● Primer grupo: contiene las palabras de C y que C++ como evolución de C tam-
bién contiene:

auto const double Break switch

short struct unsigned Signed goto

else For long Enum char

void case default volatile static

register sizeof typedef Return

do extern If Int

union while float continue

Tabla 1 . Primer grupo de palabras reservadas para C++


Fuente: propia

● Segundo grupo: contiene palabras que no provienen de C y que, por tanto, solo
utiliza C++:

Asm namespace    try   explicit

new    typeid   false    template

typename   friend    this    const_cast

public    virtual   mutable    true   

dynamic_cast reinterpret_cast bool inline

static_cast   catch    operator    wchar_t

class    private    using  

throw    delete    protected   

Tabla 2 . Segundo grupo de palabras reservadas para C++


Fuente: propia

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 45
12
● Tercer grupo: las siguientes palabras reservadas se han añadido como alternati-
vas para algunos operadores de C++ y hacen los programas más legibles y fáciles
de escribir:

not_eq    or_eq    xor_eq  

and_eq   bitor    not    or   

xor

Tabla 3 . Tercer grupo de palabras reservadas para C++


Fuente: propia

Tipos de datos y sus formatos

Los datos en C++

El primer objetivo de un computador es el manejo de información a partir de datos .


Estos datos pueden ser costos, calificaciones, temperaturas, presupuestos, datos perso-
nales, signos vitales, velocidad, entre otros .

¡Impor tante!

Los distintos tipos de datos son representados en la memoria del computa-


dor de acuerdo con el tipo y el lenguaje de programación que use . Los números
enteros en C++, por ejemplo, miden 16 bits o 2 bytes (bit=dígito binario) .

El mínimo número que se puede escribir en 16 bits equivale a 16 ceros (0) que al
ser convertidos a decimal representan precisamente el valor 0 (cero) . El máxi-
mo número que se puede escribir en 16 bits son 16 unos que representan el nú-
mero 65535 decimal . Teniendo en cuenta que hablamos de números sin signo .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 46
13
La siguiente tabla indica los tipos de datos simple de C++ .

TIPO EJEMPLO BYTES RANGO

char ‘C’ 1 0 a 255

short -15 2 -128 a 127

int 1024 2 -32768 a 32767

unsigned int 42345 2 0 a 65535

long 262144 4 -2147483648 a 2147483637

float 10 .45 4 3 .4*(10 e -38) a 3 .4*(10 e 38)

double 0 .000000000045 8 1 .7*(10 e -308) a 1 .7*(10 e 308)

long double 1,00E-08 8 Igual que double

Tabla 4 . Tipos de datos simple de C++


Fuente: propia

Tipos de datos

Los tipos de datos que maneja C++ son: de menor rango siendo long double
el de rango mayor
● Enteros: dentro de los enteros están
los tipos: short, int, long, los cuales ● Caracteres: se utiliza el tipo char .
varían en rango de acuerdo al com- Para representar un carácter en
pilador que se utilice, siendo long C++ se utilizan comillas .
rango mayor y short el de menor .
Ejemplos: ‘a’, ‘b’ , ‘05’
● Flotantes: dentro de los flotantes
C++ tiene los tipos: float, double y Para representar una cadena de
long double donde al igual que los caracteres se utilizan las comillas .
enteros varía el rango de cada uno
de acuerdo al compilador que se Ejemplo: “Areandina”, “INGE-
utilice . De igual forma el float es el NIERÍA DE SISTEMAS”

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 47
14
Declaración de variables

Las variables son elementos clave en todo lenguaje de programación . Se deben decla-
rar diciendo el tipo de dato, el nombre y si es necesario se inicializa a un valor . El compi-
lador separa un espacio en la memoria física del computador para manipular la variable
declarada por el usuario

float area;
¡Impor tante! área = pi * radio * radio;
cout << “El área del circulo es: “<< área
La declaración de una variable << endl;
es un estatuto que proporciona return 0; }
información de la variable al
compilador de C++ .
Expresiones lógicas

La sintaxis para la declaración de una Las expresiones lógicas son todas aque-
variable es: llas expresiones que obtienen como resul-
tado verdadero o falso .
tipo variable
Estos operadores unen estas expresio-
• tipo: es el nombre de un tipo de dato nes devolviendo también verdadero o falso .
conocido por C++ . Son:

• variable: es un identificador (nom-


bre) válido en C++ .
Operador Significado

&& Y (AND)
Ejemplo:  Declaración de una variable
de tipo entero llamada x e inicializada en
100;  || O (OR)

int  x = 100 ; ! NO (NOT)

Veamos un ejemplo de declaración de Tabla 5 . Expresiones lógicas


constante y variables: Fuente: propia

#include <iostream>
int main( ) { Por ejemplo: (18>6) && (20<30) de-
vuelve verdadero (1) ya que la primera ex-
const float pi=3 .141592;
presión (18>6) es verdadera y la segunda
int radio=5; (20<30) también .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 48
15
El operador Y (&&) devuelve verdadero cuando las dos expresiones son verdaderas .

El operador O (||) devuelve verdadero cuando cualquiera de las dos es verdadero .

Finalmente, el operador NO (!) invierte la lógica de la expresión que le sigue; si la ex-


presión siguiente es verdadera devuelve falso y viceversa .

Por ejemplo !(18>15) devuelve falso (0) .

Operadores aritméticos

Los operadores aritméticos se usan para realizar cálculos de aritmética de números


reales y de aritmética de punteros . C++ dispone de los siguientes:

Operación Operador aritmético Operador en C++

Suma + +

Resta - -

Multiplicación X *

División /

Módulo Mod %

Tabla 6 . Operadores aritméticos


Fuente: propia

Video

Antes de continuar, les invitamos a ver el


video sobre operadores aritméticos y lógicos .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 49
16
Operaciones relacionales

Los operadores relacionales son símbolos que se usan para comparar dos valores .
Si el resultado de la comparación es correcto la expresión considerada es verdadera, en
caso contrario es falsa .

Operador Operación Ejemplo Resultado


= Igual que hola’ = ‘lola’ FALSO

<> Diferente a a’ <> ‘b’ VERDADERO

< Menor que 7 < 15 VERDADERO

> Mayor que 22 > 11 VERDADERO

<= Menor o igual que 15 <= 22 VERDADERO

>= Mayor o igual que 35 >= 20 VERDADERO

Tabla 7 . Operadores relacionales


Fuente: propia

Funciones de entrada y salida

La mayoría de los programas en C++ incluyen el archivo de encabezado <iostream>,


el cual contiene la información básica requerida para todas las operaciones de entrada
y salida (E/S) de flujo .

Cuando usamos la instrucción:

Cout <<”Mensaje a la pantalla”<< endl;

Estamos enviando una cadena de caracteres (“Mensaje a la pantalla”) al dispositivo


de salida estándar (la pantalla) . Luego, el manipulador de flujo endl da el efecto de la
secuencia de escape ‘\n’, nueva línea .

Se invita al estudiante para que pruebe el siguiente programa:

#include <iostream>
int main() {
cout <<”Hola estudiante Areandina” <<endl;
cout << 2 + 2 <<endl; //imprime un entero
cout << 9 / 2 <<endl; //imprime un flotante
cout<<(int) (3 .141592+2)<<endl; //imprime un entero
return 0;
}

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 50
17
La instrucción cout << puede imprimir tanto números enteros como flotantes sin ne-
cesidad de decirle específicamente el tipo de datos del que se trata, pero, por supuesto
que al enviarle una cadena de caracteres esta debe de estar entre comillas .

¡Impor tante!

La interacción con el usuario es algo muy importante en la programa-


ción, imaginemos que en este preciso momento y con los conocimien-
tos que tenemos hasta ahora, necesitamos hacer un programa que
calcule la distancia a la que caerá un proyectil lanzado a determinada
velocidad y ángulo, o simplemente un programa que calcule las raíces
de una ecuación cuadrática . Sería muy molesto estar cambiando los
valores de las variables directamente en el código para cada caso que
queramos calcular . Por eso debemos ver cuanto antes la forma de leer
datos desde el teclado .

La principal función para leer desde el teclado es cin >>, pero es mejor ver un ejemplo
para tener la idea clara .

#include <iostream>
using namespace std;
int main() {
int numero;
char car;
float otroNum;
cout << “Escribe un numero:”<<endl;
cin >>numero;
cout <<”\nEl número que ingresó es: «<<numero<<endl;
cout<<”Digite una letra”<<endl;
cin>>car;
cout<<”\nLa letra que ingresó es: “<<car<<endl;
cout<<”Digite un número de tipo flotante”<<endl;
cin>>otroNum;
cout<<”\El número que digitó es: “<<otroNum;
return 0;
}

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 51
18
En resumen, cin es el flujo de entrada asociado al teclado, cout es el flujo de salida
estándar asociado a la pantalla, y existe otro, que, aunque a lo largo de este trabajo casi
no lo utilicemos, es necesario nombrarlo, cerrar, que es el flujo de error estándar asocia-
do a la pantalla .

¡Impor tante!

Los operadores << , >> son operadores de inserción y extracción de flujo


respectivamente, y no deben confundirse con los de desplazamiento de
bits . Estos operadores son muy eficaces porque no es necesario especifi-
car formatos para presentación o lectura, ellos los presentan en función
al tipo de datos de la variable . Aunque en ocasiones podría necesitar de
nuestra ayuda para obtener los resultados específicos que queremos, y
para eso están los modificadores de formato .

Menús, funciones y arreglos

Estructuras de control anidadas

En lenguajes de programación, las estructuras de control permiten modificar el flu-


jo de ejecución de las instrucciones de un programa . Con las estructuras de control se
puede de acuerdo con una condición, ejecutar un grupo u otro de sentencias (If-Then-
Else) Si – Entonces – de lo contrario .

Video

Veamos un video sobre estructura


Condicional If-Else (Si - De lo contrario)

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 52
19
En nuestra vida cotidiana, todos tenemos una lógica a seguir, continuamente toma-
mos decisiones, y estas decisiones repercuten en nuestra acción siguiente . Por ejemplo,
supongamos el caso de un estudiante de nivel preparatoria que cursa el sexto semestre,
él está pensando en presentar el examen para la universidad, sin embargo, sus califica-
ciones no le han dado mucho aliento últimamente, y está en riesgo de tener que repetir
ese semestre, si ocurre eso, el resultado que tenga en el examen no importará . Lo que
vaya a pasar marcará el camino a seguir en su vida .

#include <iostream>
using namespace std;
int main(){
float nota;
cout<<”Cuál fue tu nota de Algoritmos y Programación?” << endl;
cin>> nota;

if (nota >= 3 .0)


cout << “Felicitaciones Aprobó”;
else
cout << “Lo lamento, debe repetir la metería”;

cin .ignore();
cin .get();
return 0;

• Instrucción switch, case y break

Sentencia switch

Se trata de una sentencia que permite construir alternativas múltiples, cuando la es-
tructura condicional no resulta muy cómoda de utilizar . Cuando el programa encuentra
un case que es igual al valor de la expresión se ejecutan todos los case siguientes . Por
eso se utiliza la sentencia break para hacer que el programa abandone el bloque switch .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 20
53
Veamos la sintaxis:

Switch
#include <iostream>
using namespace std;
int main() {
int dia;
cout<<”Digite un número de la semana: “;
cin >> dia;
switch(dia)
{ case 1:
cout <<”Lunes “ <<endl;
break;
case 2:
cout <<”Martes” <<endl;
break;
case 3:
cout <<”Miércoles” <<endl;
break;
case 4:
cout <<”Jueves “ <<endl;
break;
case 5:
cout <<”viernes” <<endl;
break;
case 6:
cout <<”Sábado” <<endl;
break;
case 7:
cout <<”Domingo” <<endl;
break;
default:
cout<<”Dia de la semana no corresponde”<<endl;
break;
}
return 0;
}

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 54
21
While

Los ciclos while son también una estructura cíclica, que nos permite ejecutar una o
varias líneas de código de manera repetitiva sin necesidad de tener un valor inicial e
incluso a veces sin siquiera conocer cuándo se va a dar el valor final que esperamos, los
ciclos while, no dependen directamente de valores numéricos, sino de valores booleanos,
es decir su ejecución depende del valor de verdad de una condición dada, verdadera o
falso, nada más . De este modo los ciclos while, son mucho más efectivos para condicio-
nes indeterminadas, que no conocemos cuándo se van a dar a diferencia de los ciclos
for, con los cuales se debe tener claro un principio, un final y un tamaño de paso .

#include “iostream”
using namespace std;
int main(){
int i = 0;
while(i <= 10)
{
cout << “Soy la variable i, mi valor en esta iteración es: “ << i <<endl;
i++;
}
return 0;
}

Funciones

Definición de una función

Cuando tratamos de resolver un problema, resulta muy útil utilizar la filosofía de “divide
y vencerás” . Esta estrategia consiste en dividir nuestro problema en otros más sencillos .

¡Impor tante!

Cuando realizamos un programa, por ejemplo, en el que se repetirán


varias instrucciones, pero con distintos valores que definan los
resultados, podemos construir el programa con base en funciones .

Una función es un bloque de instrucciones a las que se les asigna un nombre . En-
tonces, cada que necesitemos que se ejecuten esa serie de instrucciones, haremos una
invocación a la función .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 55
22
Prototipos de funciones

El prototipo de una función se refiere a la información contenida en la declaración de


una función . Una función debe de estar definida o al menos declarada antes de hacer
uso de ella .

Cuando se declara una función debe de especificarse el tipo de dato que va a de-
volver, el nombre de la función, y los parámetros . La siguiente declaración: int  su-
ma(int a, int b);

Especifica una función que devuelve un tipo de dato entero, tiene por nombre suma,
y al invocarla, recibe 2 parámetros de tipo entero .

Esta declaración debe de escribirse antes de la función main, y su definición puede


escribirse después de esta .

Por ejemplo:

#include “iostream”
using namespace std;

int suma(int x, int y);

int main(){
int numero1,numero2;
cout << “CALCULAR LA SUMA DE 2 NUMEROS”<<endl;
cout << “Ingrese el primer dato: “ <<endl;
cin >> numero1;
cout << “Ingrese el segundo dato: “ <<endl;
cin >> numero2;
cout << “La suma es: “<< suma(numero1,numero2) <<endl;

return 0; }
int suma(int a, int b)
{
return a+b;
Instrucción

Para finalizar, le invitamos a realizar la


actividad de repaso 1, con el propósito de
poner en práctica los conceptos y proce-
dimientos que se enunciaron en el refe-
rente de pensamiento .

Algoritmos y programación - eje


Fundación 2 analicemos
Universitaria la situación
del Área Andina 56
23
ALGORITMOS
Y PROGRAMACIÓN

Julio César Rodríguez Casas

EJE 3
Pongamos en práctica

Fundación Universitaria del Área Andina 57


Introducción

El referente de pensamiento de este eje está basado en las estructuras de con-


trol. Veremos los tipos de estructuras como los saltos de línea que consisten en
forzar el salto de punto del programa a otro que no va en orden secuencial. Pue-
den hacerse saliendo de un bloque de sentencias antes de acabarlo, o saltando de
un punto a otro del programa mediante ciertas instrucciones comenzando por la
condicional if-else, la cual nos permite tomar cierta decisión al interior de nuestro
algoritmo, se trabajarán con algunos ejemplos con los cuales podrá practicar y
familiarizarse con la estructura.

De igual forma, se verá la estructura switch case, que es más práctica cuando
se tienen muchas condiciones que evaluar, se explicara su sintaxis y se realizarán
ejemplos prácticos.

Seguidamente se analizará la estructura While y Do while y se explica con ejem-


plos el comportamiento de la estructura.

Por último, se mostrará el ciclo for, cada una de sus partes y ejemplos prácticos
para ejecutar en el compilador de lenguaje C++.

A la par de este desarrollo temático se realizarán actividades de aprendizaje que


permitirán poner en práctica estas estructuras.

Antes de continuar le recomendamos realizar la lectura complementaria acerca


de las estructuras de control.

Lectura recomendada

Programación en C++/Itera-
ciones y decisiones

bit.ly/28Pohla

Fundación Universitaria del Área Andina 58


Condicionales
anidados

Fundación Universitaria del Área Andina 59


Para la ejecución de los programas se puede utilizar los compiladores dispo- Compilador de
JDoodle
nibles en línea, se recomienda utilizar el compilador de JDoodle. http://bit.ly/2gsosJx

Figura 1. Compilador de Jdoodle


Fuente: Jdoodle

Se recomienda habilitar el modo interactivo (Interactive mode: ON), para interactuar


con el programa; de igual forma, una vez se ejecuta el programa en la parte inferior se
muestra el resultado de la compilación, bien sea errores de sintaxis o el resultado de la
ejecución del programa.

Importante

Los programas presentados en el presente documento han sido escri-


tos, aprobados y ejecutados en forma exitosa en el link anteriormente
mencionado.

C++ usa todas las sentencias de control de ejecución de C. Esto incluye if-else, do-whi-
le, for, y una sentencia de selección llamada switch.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 5
60
Sin embargo, lo primero que tenemos que hacer es agrupar varias sentencias en un
bloque. para tratarlas todas como una unidad, a la que se le aplican unas determinadas
órdenes. Para ello utilizaremos las llaves { ... } .

Dentro de las llaves escribiremos todas las sentencias que queramos agrupar, por
ejemplo:

int a;

cout << “Tu edad : “; cin >> a;

cout << “tienes “ << a << “ años.” << endl;

Estas sentencias forman un bloque al estar escritas dentro de las llaves.

La propia función int main () { ... } es un bloque, ya que todas las sentencias del pro-
grama deben escribirse dentro de las llaves.

Importante

La importancia de los bloques es fundamental para crear todo tipo de


estructuras en donde queremos que afecten a más de una sentencia. Un
bloque actúa de manera uniforme ante órdenes que se le den al mismo,
como si fuera una única sentencia.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 6
61
Tipos de estructuras

Una estructura cambia el flujo normal de ejecución del programa, de manera que
este no se realice de una manera secuencial. Distinguimos entre las estructuras de con-
trol y otro tipo de estructuras como pueden ser las funciones o las clases.

Hay dos tipos de estructuras de control, que son las condicionales y los bucles. A esto
se podría añadir un tercer tipo consistente en los saltos de línea, aunque este último es
menos utilizado.

● Las condicionales consisten en que, llegado un punto, el programa deja de ser se-
cuencial, y se bifurca, para elegir una opción entre dos (o entre varias) ignorando
el resto, o pudiendo volver a ellas más tarde.

● Los bucles consisten en la repetición de determinadas tareas, La repetición no es


exacta, en cada repetición hay alguna variable o algún elemento que cambia de
manera controlada, así como una condición necesaria para que vuelva a repetir-
se la tarea. Cuando esta condición deja de existir la repetición se acaba y se sale
del bucle.

Los saltos de línea consisten en forzar el salto de punto del programa a otro que no
va en orden secuencial. Pueden hacerse saliendo de un bloque de sentencias antes de
acabarlo, o saltando de un punto a otro del programa mediante ciertas instrucciones.

La estructura if

Dentro de las estructuras de control condicionales, la más importante es la estructura


if. Esta consiste en que el programador indica una condición. Esta condición es evaluada
como un dato booleano. Si el valor del dato es verdadero la condición se cumple, y, por lo
tanto, la sentencia, o el bloque que va asociado a la condición, se ejecuta. Si el resultado
de la condición es falso, la sentencia o bloque no se ejecuta.

Es decir, si la condición que hemos puesto se cumple, el programa realiza la acción, y


si no es así no la realiza.

La sintaxis que se usa para esta estructura es la siguiente:

if (<condicion>) { <bloque de sentencias> }

Vamos cada uno de los componentes de esta estructura:

● if: es la palabra clave que indica el tipo de estructura. Esta palabra se pone siem-
pre al principio.

● (<condicion>): entre paréntesis escribiremos a continuación una condición. Esta

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 7
62
tiene que dar un resultado booleano de “true” o “false”, por lo que en la mayoría
de las veces suele ser una operación lógica o condicional, por ejemplo: (‘a’ > ‘b’).

● { <bloque de sentencias> }: después de la condición escribiremos el código al que


queremos que afecte la estructura. este, si tiene más de una sentencia, debe ir
en un bloque, (escrito entre llaves), ya que de otra manera solo afectaría a la
primera sentencia.

Video

Se invita al estudiante a que vea el video acerca de


cómo se realiza un algoritmo, en la página principal
del eje.

Veamos un ejemplo de una estructura condicional con if:

#include<iostream>
using namespace std;
int main(){
int a;
cout << “Escribe un número mayor que 10 : “;
cin >> a;
if (a > 10) {
cout << “Muy bien !! “ << endl;
cout << “El numero “ << a << “ es mayor que 10.” << endl;
}
}

Figura 2. Resultado de la estructura condicional con if


Fuente: propia

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 8
63
Compilamos y ejecutamos el programa. Aquí pedimos al usuario que escriba un nú-
mero mayor que 10. En la estructura condicional comprobamos que el número que nos
ha dado el usuario sea mayor que 10, y solo en ese caso se ejecutará el código del bloque
que está escrito entre llaves.

Observamos cómo se forma la estructura condicional. En primer lugar, la palabra cla-


ve if. Después de la condición entre paréntesis: (a > 10), y después la sentencia o bloque
de sentencias.

{ cout << “Bien Hecho !! “ << endl; cout << “El numero “ << a << “ es mayor que 10.”
<< endl; }.

Aquí hemos puesto la estructura escrita en varias líneas, separando la condición, y


tabulando las sentencias del bloque. Esto, no es imprescindible, ya que podríamos po-
nerlo todo seguido sin saltos de línea ni tabulaciones. por ejemplo:

if (a > 10) { cout << “Muy Bien !! “ << endl; cout << “El numero “ << a << “ es mayor que
10.” << endl; }

Pero para una mayor claridad de los programadores, se suele poner siempre de la
forma que lo hemos puesto antes:

if (a > 10) {
cout << “Muy Bien !! “ << endl;
cout << “El numero “ << a << “ es mayor que 10.” << endl;
}

La palabra clave else

Si lo que queremos es que cuando la condición se cumpla se ejecute un código, y


cuando no se cumpla se ejecute otro distinto, lo que debemos de hacer es añadir des-
pués de la estructura if la palabra clave else, seguida del bloque de sentencias que debe
ejecutarse cuando la condición no se cumple. La estructura completa es:

if (<condicion>) {
<sentencias cuando SI se cumple>;
}
else {
<sentencias cuando NO se cumple>;
}

Es decir, el programa evalúa la condición escrita después del if, y si el resultado es ver-

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 9
64
dadero se ejecuta el primer bloque de sentencias, pero si es falso se ejecutará el bloque
que hay detrás del else.

Vamos a hacer lo mismo, pero con una estructura if ... else. El programa quedará así:

#include<iostream>

using namespace std;

int main(){

int a;

cout << “Areandina\n”;

cout << “Escribe un número mayor que 10 : “;

cin >> a;

if (a > 10) {

cout << “Muy Bien !! “ << endl;

cout << “El número “ << a << “ es mayor que 10.” << endl;

else {

cout << “Numero equivocado!! “ << endl;

cout << “El número “ << a << “ NO es mayor que 10.” << endl;

Figura 3. Resultado del ejemplo estructura if...else


Fuente: propia

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 10
65
Cuando el programa es ejecutado y evaluado por la parte falsa el resultado es el si-
guiente:

Figura 4. Resultado del ejemplo estructura if...else ejecutado


Fuente: propia

En este ejemplo pedimos dos números al usuario, el cual elige después la operación
que va a realizar con ellos. Una vez elegida se realiza las operaciones aritméticas con
esos dos números.

Veamos el código fuente:

#include<iostream>

using namespace std;

int main() {

cout << “AREANDINA\n”;

cout << “OPERACIONES ARITMÉTICAS\n”;

cout << “OPERACIONES CON DOS NUMEROS” << endl;

int a, b; char op; //Declaramos las variables

cout << “Digite un numero: “;cin >> a; //pedimos el primer número

cout << “Digite otro número: “; cin >> b; //pedimos el segundo número

cout << “Los números son “ << a << “ y “ << b << endl; //confirmamos números

cout << “Elige una operación, para ello escribe su letra: “ << endl; //explicación al
usuario

cout << “S = Suma; R = Resta; M = Multiplicación; D = División.” << endl;

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 11
66
cout << “Tu operación : “; cin >> op; //pedimos operación

if ((op == ‘s’) || (op ==’S’)) { //opción 1: Suma.

cout << “Operación: Suma “ << endl;

cout << a << “ + “ << b << “ = “ << a+b << endl;

else if ((op == ‘r’) || (op ==’R’)) { //opción 2: Resta

cout << “Operación: Resta “ << endl;

cout << a << “ - “ << b << “ = “ << a-b << endl;

else if ((op == ‘m’) || (op ==’M’)) { //opción 3: Multiplicación

cout << “Operación: Multiplicación “ << endl;

cout << a << “ * “ << b << “ = “ << a*b << endl;

else if ((op == ‘d’) || (op ==’D’)) { //opción 4 División

cout << “Operación: División “ << endl;

cout << a << “ / “ << b << “ = “ << a/b << endl;

else { //Respuesta para opción equivocada.

cout << “La letra escrita no se corresponde con ninguna operación.” << endl;

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 12
67
Figura 5. Ejemplo de resultado con operaciones aritméticas.
Fuente: propia

Video

Se invita al estudiante a que vea el video Cómo se


utiliza el switch case en la página principal del eje.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 13
68
Condicional switch

La estructura switch tiene también la misma función if, pero aquí todas las opciones
dependen del valor de una variable.

Importante

Tenemos una variable, y cada opción consiste en comparar esta variable


con otro elemento, de manera que, si el valor de la variable y el del elemento
comparado son iguales, el resultado es verdadero, la condición se cumple, y
se ejecuta el código asociado. Si no es así se pasa a la siguiente opción donde
se vuelve a repetir el proceso. Si no se ejecuta ninguna opción puede ponerse
una opción por defecto al final.

Video

Antes de continuar veamos el video con un ejem-


plo sencillo sobre la sentencia switch.

youtu.be/lnDTfd4XIX8

Código fuente

El código de esta estructura es el siguiente:

switch (x) {
case a:
<sentencias para x == a>;
break;
case b:
<sentencias para x == b>;
break;
....................
case n:
<sentencias para x == n>;
break;
default:
<sentencias para x == n>;
}

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 14
69
Vamos a explicar este código y ver cómo está estructurado:

● Empezamos poniendo la palabra clave switch, y después, entre paréntesis la va-


riable con la que compararemos las demás (x).

● El resto del código forma un bloque y va escrito entre llaves. Este código se com-
pone de varias opciones.

● Cada una de las opciones (excepto la última) empieza por la palabra clave case
seguida del elemento con el que hacemos una comparación de igualdad y des-
pués dos puntos case a.

● Cada una de las opciones (excepto la última) acaba con la palabra clave break.

● En cada una de las opciones anteriores, entre el código del principio (case a:) y
el del final (break;), escribiremos las sentencias que deben ejecutarse cuando la
condición se cumpla.

● La opción final indica lo que debe ejecutarse en el caso en que ninguna de las
anteriores se cumpla, y empieza por la palabra clave default: (acabada con dos
puntos), seguida de las sentencias que deben ejecutarse cuando no se cumpla
ninguna opción anterior.

Importante

Observa que podemos poner tantas opciones case .... break; como
queramos. El case a: indica que iniciamos una nueva opción, la cual eje-
cutará el código que le sigue en el caso de que la variable principal (x) sea
igual a la indicada a.

El break hace que el flujo se interrumpa y salgamos del bloque. De no


ponerlo el programa no sale del bloque y el resto del código del bloque,
perteneciente a otras opciones, también se ejecutaría.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 15
70
La última opción default indica lo que se debe hacer cuando no hay ningún elemento
anterior que coincida. Aunque no es obligatorio ponerla, es conveniente si queremos que
el programa haga algo cuando no se cumplen las opciones anteriores. Al ser la última no
es necesario poner el break; al final, ya que es ahí donde acabamos el bloque.

#include<iostream>

using namespace std;

int main() {

cout << “AREANDINA\n”;

cout << “PROGRAMA SWITCH\n”;

cout << “OPERACIONES CON DOS NUMEROS” << endl;

int a, b; char op; //Declaramos las variables

cout << “Escribe un número : “;cin >> a; //pedimos el primer número

cout << “Escribe otro número : “; cin >> b; //pedimos el segundo número

cout << “Tus números son “ << a << “ y “ << b << endl; //confirmamos números

cout << “Elige una operación, para ello escribe su letra: “ << endl; //explicación al
usuario

cout << “s = Suma; r = Resta; m = Multiplicación; d = División.” << endl;

cout << “Tu operación: “; cin >> op; //pedimos operación

switch (op){ //inicio estructura.

case ‘s’: case ‘S’: case ‘+’: //opcion 1: suma

cout << “Operación : Suma “ << endl;

cout << a << “ + “ << b << “ = “ << a+b << endl;

break;

case ‘r’: case ‘R’: case ‘-’: //opción 2: resta

cout << “Operación: Resta “ << endl;

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 16
71
cout << a << “ - “ << b << “ = “ << a-b << endl;

break;

case ‘m’: case ‘M’: case ‘*’: //opción 3: multiplicación

cout << “Operación: Multiplicación “ << endl;

cout << a << “ * “ << b << “ = “ << a*b << endl;

break;

case ‘d’: case ‘D’: case ‘/’: //opción 4 : división

cout << “Operación: División “ << endl;

if (b != 0){

cout << a << “ / “ << b << “ = “ << a/b << endl;

else {

cout << “NO DIVIDIRÁS ENTRE CERO\n”;

break;

default: //Respuesta para opción equivocada.

cout << “El carácter no se corresponde a ninguna operación.” << endl;

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 17
72
El siguiente es el resultado de la ejecución:

Figura 6. Resultado condicional switch


Fuente: propia

El bucle while

El tipo de bucle más sencillo es el bucle while. Para crear un bucle while tan solo se
debe poner la palabra clave while seguida de la condición entre paréntesis, y después el
bloque de sentencias.

while (<condicion>) {<Sentencias que se repiten>}

Sin embargo, la mayoría de las veces utilizaremos una operación condicional o lógica
como condición. Por ejemplo, queremos que un determinado bloque se repita 10 veces.
Para ello lo normal es utilizar una variable de control. Esta variable controlará el nú-
mero de veces que se repite el bucle. Debemos declararla antes de empezar el bucle, y
además inicializarla, normalmente con valor 0.

int i = 0;

Importante

Se utiliza una variable de tipo entero para controlar el número de


vueltas (repeticiones) del bucle. Por convención suele utilizarse la letra
i para definir esta variable.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 18
73
Empezamos el bucle escribiendo la palabra clave while seguida de la condición entre
paréntesis. Como queremos que el bucle se repita 10 veces, la condición será que la va-
riable i se menor que 10:

while (i < 10)

Seguimos con el bloque de sentencias. Para que el bucle tenga un número definido de
repeticiones, debemos variar la variable de control (i) de manera que cuente el número
de repeticiones que llevamos en cada vuelta. Para ello, dentro del bloque de sentencias,
debemos incrementar el valor de la variable de control una unidad en cada vuelta. Esto
es lo que se llama “actualizar” la variable de control. El bloque de sentencias será como
el siguiente:

<sentencias que se repiten>;

i = i+1;

Es decir, en cada vuelta el valor de i aumenta en una unidad. Cuando el valor de i sea
igual a 10 la condición será falsa, y el bucle dejará de repetirse.

Veamos un ejemplo de programa utilizando while:

#include<iostream>

using namespace std;

int main() {

cout << “AREANDINA\n”;

cout << “TABLA DE MULTIPLICAR\n”;

cout << “Tabla del nueve” << endl << endl;

int i= 0;

int tb = 9;

while (i <=10) {

cout << tb << “ x “ << i << “ = “ << tb * i << endl;

i = i+1;

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 19
74
Figura 7. Ejemplo de programa utilizando while
Fuente: propia

Bucle do while

El bucle do while es muy parecido al bucle while. La diferencia es que aquí, aunque la
condición no se cumpla, el código se ejecutará siempre al menos una vez.

Esto es debido a que primero se ejecuta el código, y después se comprueba la con-


dición. Si esta es verdadera, el bucle se repite, si no es así se sale de él y continúa con el
resto del programa.

Video

Antes de continuar, veamos en la página princi-


pal del eje, el video sobre do while, cómo funciona,
su sintaxis y un ejemplo básico.

youtu.be/Z0kD_bIq-Q4

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 20
75
Sintaxis de do while

La sintaxis es ligeramente diferente del bucle while, ya que aquí la condición se indica
al final de la estructura:

do {
<Sentencias que se repiten>;
} while (<condicion>);

Empezamos poniendo la palabra clave do seguido del bloque de sentencias que se


repiten. Después del bloque de sentencias ponemos la palabra clave while seguida de la
condición entre paréntesis.

Tal como hemos indicado, al estar la condición al final del bucle, este se ejecuta siem-
pre la primera vez, y la comprobación de la condición se hace al finalizar el bucle, con lo
cual se decide si el bucle se repite o no.

Por lo demás es igual que el bucle while, es decir, si queremos repetir el bucle un nú-
mero determinado de veces, necesitamos una variable de control (i).

Como con cualquier otro bucle, hay que tener en cuenta que tras un número de repe-
ticiones tiene que llegar un momento en que la condición no se cumpla, para poder salir
del bucle, y no caer en el error de hacer un bucle infinito.

Al igual que con el bucle while la variable de control la inicializamos antes del bucle,
la utilizaremos también como referencia en la condición, y la actualizaremos en cada
repetición del bucle. Por ejemplo, para hacer un bucle que se repita 10 veces haremos:

int i=0;
do {
<sentencias que se repiten>;
i++;
} while (i < 10)

Veamos un ejemplo en el que empleamos el bucle do while. Aquí le pedimos al usuario


un número y el programa repetirá una frase el número de veces que el usuario nos diga,
pero si el número es cero o negativo, escribiremos igualmente la frase una vez. El archivo
fuente será el siguiente:

#include<iostream>

using namespace std;

int main() {

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 21
76
int i=0, r;

cout << “AREANDINA\n”;

cout << “PROGRAMA do while\n”;

cout << “Escribe un número para repetir la frase.”;

cin >> r;

cout << “La frase se escribirá al menos una vez aunque el número sea cero o
negativo.” << endl;

do {

i++;

cout << i << “.- ALGORITMOS Y PROGRAMACIÓN. AREANDINA” << endl;

} while(i < r);

Figura 8. Ejemplo en el que empleamos el bucle do while


Fuente: propia

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 22
77
Bucle for

En la estructura for indicamos todo lo relacionado con la variable de control. Es decir,


la estructura for no solo necesita incluir la condición, sino también el valor inicial de la
variable de control (se llamará inicialización), y el cambio que se le aplica a la variable
de control tras cada repetición (le llamaremos actualización).

En los bucles while tanto la inicialización como la actualización no forman parte de


la misma estructura, y para ponerlos había que incluir la iniciación antes del bucle, y la
actualización como una sentencia más del bloque que se repite.

En los bucles for tanto la inicialización como la actualización forman parte de la es-
tructura, de manera que la variable de control es controlada en la misma estructura.

Video

Antes de continuar, veamos en la página princi-


pal del eje, el video sobre el bucle For, como fun-
ciona, su sintaxis y un ejemplo básico.

youtu.be/j4jtk5taymU

Sintaxis del bucle for

Entenderemos esto mejor viendo la sintaxis que utiliza este bucle. Esta es la siguiente:

for (<inicializacion>;<condicion>;<actualización>) {
<sentencias que se repiten>;
}

Expliquemos el código de esta estructura:

● for: Empezamos el bucle escribiendo la palabra clave for.

● <inicializacion>: entre paréntesis y separados por punto y coma escribimos tres


sentencias, la primera de ellas es la “inicialización”, donde damos un valor inicial
a la variable de control. Si esta no estaba declarada anteriormente, la podemos
declarar aquí también ej.: int i=0;.

● <condicion>: la segunda sentencia del paréntesis es la “condición”, en donde in-


dicamos la condición que tiene que ser verdadera para que el bucle se repita. Evi-
dentemente en la condición tiene que aparecer la variable de control. por ejem-
plo: i <= 10;.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 23
78
● <actualizacion>: en esta tercera sentencia de dentro del paréntesis indicamos
qué es lo que le debe ocurrir a la variable de control tras cada repetición, para que
esta cambie y en un momento dado se pueda salir del bucle, en el ejemplo que
estamos siguiendo, sería el incremento en una unidad: i++;.

● { <sentencias que se repiten>; }: dentro de las llaves, escribimos el bloque de


sentencias que se repetirán en cada vuelta.

Siguiendo con los ejemplos que hemos puesto antes podemos escribir un bucle que
escriba una tabla de multiplicar, por ejemplo, la del 5:

for (int 1 = 0 ; i <= 10 ; i++) {


cout << “5 x “ << i << “ = “ << 5*i << endl;
}

Dentro del paréntesis hemos puesto tres sentencias, la primera corresponde a la ini-
cialización, en donde declaramos la variable i y la inicializamos a 0. En la segunda indi-
camos que esta variable debe ser menor o igual a 10 para que se repita el bucle. En la
tercera indicamos que en cada vuelta se incrementará el valor de esta variable en una
unidad.

En este programa vamos a pedirle al usuario que escriba un número entre el 1 y el 10


y el programa. El programa le devolverá la tabla de multiplicar de ese número. Si el nú-
mero escrito no está entre el 1 y el 10, el programa le dirá al usuario que tiene un error y
no puede escribir la tabla.

#include<iostream>

using namespace std;

int main() {

cout << “AREANDINA\n”;

cout << “PROGRAMA BUCLE for\n”;

cout << “TABLAS DE MULTIPLICAR” << endl;

int t;

cout << “INTRODUZCA EL VALOR DE LA TABLA DE MULTIPLICAR (del 1 al 10) :”;

cin >> t;

if (t >=1 and t<=10) {

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 24
79
for (int i=1; i<=10 ; i++) {

cout << t << “ x “ << i << “ = “ << t*i << endl;

else {

cout << “Error: tu número no está entre el 1 y el 10.” << endl;

Figura 9. Ejemplo de bucle que escriba una tabla de multiplicar


Fuente: propia

Lectura recomendada

Ahora bien, para complementar este tema, le invitamos a realizar la lec-


tura complementaria sobre el bucle for.

http://bit.ly/2i2nzuB

Y para finalizar, les invitamos a realizar la actividad de repaso 1 para el desarrollo de


algunos ejercicios que permiten profundizar en los temas vistos en el presente referente.

Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 25
80
Bibliografía
Ceballos, F. (2007). Programación orientada a objetos con C++ (4a. ed.). México:
RA-MA Editorial. Recuperado de http://site.ebrary.com.proxy.bidig.areandina.
edu.co:2048/lib/bibliotecafuaasp/detail.action?docID=11045993&p00=lenguaj
e+c%2B%2B

Ceballos, F. (2009). Enciclopedia del lenguaje C++ (2a. ed.). México: RA-MA Editorial.
Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.co:2048/lib/
bibliotecafuaasp/detail.action?docID=11046572&p00=lenguaje+c%2B%2B

Gaxiola, C., y Flores, D. (2008). Metodología de la programación con pseudocódigo


enfocado al lenguaje C. México: Editorial Plaza y Valdés, S.A. de C.V.
Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.co:2048/lib/
bibliotecafuaasp/detail.action?docID=10877093&p00=algoritmos+programaci
%C3%B3n

Joyanes, L. (2006). Programación en C++: algoritmos, estructuras de datos y


objetos (2a. ed.) Madrid: McGraw-Hill. Recuperado de http://site.ebrary.com.
proxy.bidig.areandina.edu.co:2048/lib/bibliotecafuaasp/detail.action?docID=1
0491359&p00=lenguaje+c%2B%2B

Joyanes, L., Castillo, A., y Sánchez, L. (2005). C algoritmos, programación y


estructuras de datos. Madrid: McGraw-Hill. Recuperado de http://site.ebrary.
com.proxy.bidig.areandina.edu.co:2048/lib/bibliotecafuaasp/detail.action?do
cID=10491350&p00=lenguaje+c%2B%2B

Joyanes, L., Rodríguez, L., y Fernández, M. (2003). Fundamentos de programación:


libro de problemas. Algoritmos, estructuras de datos y objetos (2a. ed.) madrid:
McGraw-Hill. Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.
co:2048/lib/bibliotecafuaasp/detail.action?docID=10498607&p00=algoritmos+
programaci%C3%B3n

Joyanes, L., y Sánchez, L. (2006). Programación en C++: un enfoque práctico. Madrid:


McGraw-Hill. Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.
co:2048/lib/bibliotecafuaasp/detail.action?docID=10491298&p00=lenguaje+c
%2B%2B

Joyanes, L., y Zahonero, I. (2007). Estructura de datos en C++. Madrid: McGraw-


Hill. Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.co:2048/
lib/bibliotecafuaasp/detail.action?docID=10491301&p00=lenguaje+c%2B%2B

Joyanes, L. y Zahonero, I. (2005). Programación en C: metodología, algoritmos y


estructura de datos (2a. ed.). Madrid: McGraw-Hill. Recuperado de http://site.
ebrary.com.proxy.bidig.areandina.edu.co:2048/lib/bibliotecafuaasp/detail.acti
on?docID=10498360&p00=algoritmos+programaci%C3%B3n

Juganaru, M. (2014). Introducción a la programación. México: Grupo Editorial Patria.


Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.co:2048/lib/
bibliotecafuaasp/detail.action?docID=11017472&p00=programaci%C3%B3n

Fundación Universitaria del Área Andina 81


Moreno, J. (2014). Programación. México: RA-MA. Recuperado de http://site.
ebrary.com.proxy.bidig.areandina.edu.co:2048/lib/bibliotecafuaasp/detail.acti
on?docID=11046398&p00=lenguaje+c%2B%2B

Noguera, F., y Riera, D. (2013). Programación. Barcelona: Editorial UOC.


Recuperado de http://site.ebrary.com.proxy.bidig.areandina.edu.co:2048/lib/
bibliotecafuaasp/detail.action?docID=10853420&p00=lenguaje+c%2B%2B

Schildt, H. (2009). C++: soluciones de programación. Madrid: McGraw-Hill


Interamericana. Recuperado de http://site.ebrary.com.proxy.bidig.areandina.
edu.co:2048/lib/bibliotecafuaasp/detail.action?docID=10433927&p00=algorit
mos+programaci%C3%B3n

Fundación Universitaria del Área Andina 82


ALGORITMOS Y
PROGRAMACIÓN

Julio Cesar Rodríguez Casas

EJE 4
Propongamos

Fundación Universitaria del Área Andina 83


Introducción

En el siguiente eje se introducirá en el manejo de los vectores de


una dimensión y los vectores multidimensionales, se presentarán ejer-
cicios con sintaxis en lenguaje C++ que son las estructuras principales
y las más útiles que tienen los lenguajes de programación; y se podrá
ver cómo se asignan los valores a un vector .

Así mismo, una matriz es un vector de vector de vectores, también


se le llama array bidimensional .
INTRODUCCIÓN

De igual forma, se estudiarán los arreglos multidimensionales los


cuales son una estructura de datos estáticos y de un mismo tipo de
datos, de longitud fija que almacena datos de forma matricial .

Cada uno de los elementos que se verán en el presente eje están


acompañados con ejercicios prácticos y debidamente comprobados,
para que el estudiante los prueba y analice los resultados .

Fundación Universitaria del Área Andina 84


Introducción a
los vectores

Fundación Universitaria del Área Andina 85


Un array es una serie de elementos del mento del mismo .
mismo tipo al que se le puede identificar
mediante un nombre, es decir, es una va- Por lo tanto, al declarar un array indica-
riable donde se guarda una lista de ele- mos el número de elementos y reservamos
mentos, todos ellos del mismo tipo . su espacio en la memoria, por lo que una
vez declarado no podremos ampliar o re-
Al igual que las variables, los arrays de- ducir el número de elementos de que dis-
ben ser declarados . Al declararse se debe pone, ni cambiar de tipo de elementos .
indicar el tipo de elementos que contiene
el array y también su número . Al decla- Posteriormente podremos acceder al
rarse el ordenador reserva un espacio en array completo, como una única lista; o
la memoria para los elementos del array . a cada uno de los elementos, mediante el
Este espacio son una especie de casillas nombre del array y un identificador para
contiguas, cada una de ellas para un ele- cada elemento .

arreglo [0]

arreglo [1]
Representación gráfica de
arreglo [2]
un arreglo de una dimensión
arreglo [3]

arreglo [4]

arreglo [5]

Figura 1 . Representación gráfica de un arreglo de una dimensión


Fuente: propia

Crear un vector en C++ es sencillo, a partir de la siguiente sintaxis:

o tipo nombre[tamaño];

1. int a[5]; // Vector de 5 enteros

2. float b[5]; // vector de 5 flotantes

3. Producto product[5]; // vector de 5 objetos de tipo Producto

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 86
5
También se puede inicializar el vector en la declaración:

1. int a[] = {5, 15, 20, 25, 30};

2. float b[] = {10 .5, 20 .5, 30 .5, 12 .5, 50 .5}

3. Producto product[] = {celular, calculadora, cámara, iPod, USB}

Como hay cinco elementos en cada array, automáticamente se le asignará 5 espa-


cios de memoria a cada vector, pero si se trata de crear el vector de la siguiente forma
int a[], el compilador mostrará un error porque no se indicó el tamaño del vector ni
tampoco se inicializaron los sus elementos .

Asignar valores a los elementos de un vector indicando su posición:

1. int a[4] = 30; // se asignó el valor 30 a la posición 4 del vector .

2. product[2] .setPrecio(300) //Se asignó un precio de 300 al producto en la posición 2 .

El siguiente ejercicio se trata de una función simple para sumar 2 vectores A y B y po-
ner el resultado en un tercer vector C .

#include <iostream>
using namespace std; 

void sumar(int a[], int b[], int c[],int dim) {


 for (int i = 0; i < dim; i++) {
 c[i] = a[i] + b[i];
 }
}

void imprimir(int v[], int dim)


{
 for(int i = 0; i < dim; i++) {
cout << v[i] << endl;
}
cout << endl << endl;
}
 int main()
{
int dim;
cout << “Ingresa la dimensión“ << endl;

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 87
6
cin >> dim;
 int a[dim];
 int b[dim];
int c[dim];

 for(int i = 0; i < dim; i++) {


a[i] = i * 10;
b[i] = i * 5;
}
cout << “Vector A“<< endl;
imprimir(a, dim);
cout << “Vector B“ << endl;
imprimir(b, dim);
sumar(a, b, c, dim);
cout << «Vector C « << endl;
imprimir(c, dim);
return 0;
}

En la siguiente imagen se puede


ver el resultado de la ejecución del
programa .

Figura 2 . Resultado de ejecución de programa de función simple para


sumar 2 vectores A y B y poner el resultado en un tercer vector C
Fuente: propia

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 88
7
Sin embargo, se debe recordar que, aunque el tamaño de a es 10, se seleccionan los
elementos del vector comenzando por cero (esto se llama a veces indexado a cero, de
modo que solo se pueden seleccionar los elementos del vector de 0 a 9, como sigue:

#include <iostream>
using namespace std;

int main() {
int a[10];
for(int i = 0; i < 10; i++) {
a[i] = i * 10;
cout << “a[“ << i << “] = “ << a[i] << endl;
}
}

Los accesos a los vectores son ex-


tremadamente rápidos, Sin embar-
go, si se indexa más allá del final del
vector, no hay ninguna red de segu-
ridad y se entrará en otras variables .
La otra desventaja es que se debe
definir el tamaño del vector en tiem-
po de compilación; si se quiere cam-
biar el tamaño en tiempo de ejecu-
ción no se puede .

Figura 3 . Ejecución de los elementos de un vector de 0 a 9


Fuente: propia

Se puede hacer un vector de cualquier tipo:

#include <iostream>
using namespace std;
int main() {
int a[10];
cout << «sizeof(int) = «<< sizeof(int) << endl;
for(int i = 0; i < 10; i++)
cout << “&a[“ << i << “] = “
<< (long)&a[i] << endl;
}

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 89
8
Figura 4 . Resultado del programa de un vector de cualquier tipo
Fuente: propia

Cuando se ejecuta este programa, se ve que cada elemento está separado por
el tamaño de un int del anterior. Esto significa, que están colocados uno a conti-
nuación del otro.

Lectura Video
recomendada
Arrays y cadenas de texto Cómo se suman dos vectores

http://bit .ly/2ybrfQp https://vimeo .com/235575608

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 90
9
Asignación de valores o bien, declarar cada elemento

En el momento de declarar un arreglo char MiArray[5]={‘h’,’o’,’l’,’a’,’\0’};


de cualquier tipo, podemos inicializarlo
con los valores que queramos . Para inicia- Cuando se inicializa una cadena por el
lizar un arreglo de enteros: primer método, automáticamente se colo-
ca un carácter de terminación de cadena
int MiArreglo[5] ={2,34,78,1,9}; (el carácter \0), en cambio, de la segun-
da forma debemos de ponerlo nosotros .
Así, estos valores estarán almacena- También se puede excluir el tamaño del
dos en cada elemento del array. Es muy arreglo, el compilador lo determinará en la
importante hacer notar que el primer compilación .
elemento de un arreglo es el elemento
0, entonces, MiArreglo[0] contendrá Para acceder a cada elemento del
el número 2, el segundo ( MiArreglo[1] arreglo debemos especificar su posición
) contendrá el número 34 y así sucesi- (la primera es la posición 0). En tiempo
vamente hasta MiArreglo[4] que es el de ejecución podemos asignar valores
último elemento del array. Si un arreglo a cada elemento cuidando siempre de
cuenta con menos inicializadores que no sobrepasar el tamaño del arreglo, si
elementos entonces el resto se iniciali- sobrepasamos ese tamaño se escribirán
zará a 0. datos en un área de la memoria que no
está asignada para ese array, puede es-
Y en caso de que se trate de una ca- cribir datos en un área en donde se al-
dena de caracteres podemos hacerlo de 2 macenaba otra variable del programa o
formas: un componente del sistema, esto oca-
sionaría resultados no deseados.
char MiCadena[13]= “hola a todos”;

Matrices

Una matriz es un vector de vectores o un también llamado array bidimensional . La


manera de declarar una matriz es C++ es similar a un vector:

1. 1 int matrix[rows][cols];

int es el tipo de dato, matrix es el nombre del todo el conjunto de datos y debo de
especificar el número de filas y columnas .

Las matrices también pueden ser de distintos tipos de datos como char, float, double,
etc . Las matrices en C++ se almacenan al igual que los vectores en posiciones consecu-
tivas de memoria .

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 10
91
Usualmente uno se hace la idea que una matriz es como un tablero, pero inter-
namente el manejo es como su definición lo indica, un vector de vectores, es decir,
los vectores están uno detrás del otro juntos.

La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando


los 2 subíndices que van en los corchetes .

Video
Cómo es el manejo de las
matrices con caracteres

http://bit .ly/2yTgfEN

Si coloco int matriz[2][3] = 11; estoy asignando al cuarto elemento de la tercera fila
el valor 11 .

Representación gráfica
int arreglo [4] [4] de un arreglo de dos
dimensiones

int arreglo [4] [4] [3]


Representación gráfica
de un arreglo de tres
dimensiones

Figura 5 . Arreglos de dos y tres dimensiones


Fuente: propia

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 92
11
Índice de un arreglo glos empiezan en 0, esto quiere decir que
si se desea acceder al primer elemento
Todo arreglo está compuesto por un nú- del arreglo se debe usar el índice igual a
mero de elementos . El índice es un núme- 0 . Para indexar un arreglo se especifica el
ro correlativo que indica la posición de un índice del elemento que interesa dentro de
elemento del arreglo . Los índices en C++ un corchete, ejemplo:
van desde la posición 0 hasta la posición
tamaño – 1 . valor = arreglo[1];

Los arreglos empiezan en 0, de mane-


ra que el índice 1 se refiere al segundo ele-
Elemento de un arreglo mento . Para asignar el valor a un elemento
de un arreglo, ponga el elemento en el lado
Un elemento de un arreglo es un valor izquierdo de una sentencia de asignación .
particular dentro de la estructura del arre-
glo . Para acceder a un elemento del arre- mi_arreglo[0] = 100;
glo es necesario indicar la posición o índice
dentro del arreglo . Ejemplo: C++ almacena arreglos de una sola di-
mensión en una localización de memoria
• arreglo[0] //Primer elemento del arre- contigua con el primer elemento en la po-
glo sición más baja . De esta manera, mi_arre-
glo[0] es adyacente a mi_arreglo[1], que es
• arreglo[3] //Cuarto elemento del arre- adyacente a mi_arreglo[2] y así sucesiva-
glo mente . Puede usar el valor de un elemento
de un arreglo donde quiera que usaría una
variable sencilla o una constante .

Arreglos unidimensionales Ejemplo . Arreglo de una dimensión .

Un arreglo de una dimensión es una lis-


ta de variables, todas de un mismo tipo a
las que se hace referencia por medio de un
nombre común . Una variable individual del
arreglo se llama elemento del arreglo . Para
declarar un arreglo de una sola dimensión Declaración:
se usa el formato general:
int arreglo[3]; // forma un arreglo de
tipo_dato identificador[tamaño]; una dimensión y de tres elementos.

int arreglo[3]; arreglo[0] arreglo[1] Nombre del arreglo


arreglo[2] arreglo
Nombre de los elementos
Un elemento del arreglo se accede in- arreglo[0] → primer elemento
dexando el arreglo por medio de un nú- arreglo[1] → segundo elemento
mero del elemento . En C++ todos los arre- arreglo[2] → tercer elemento

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 93
12
Video
Acomodar en un array,
100 números ascendentemente

http://bit .ly/2ybUdQj

El siguiente programa carga el arreglo sqrs con los cuadrados de los números del 1 al
10 y luego los visualiza .

Figura 6 . Almacenamiento de los cuadrados en un arreglo


Fuente: propia

Figura 7 . Resultado de la ejecución del cálculo de los cuadrados


Fuente: propia

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 94
13
Los arreglos prestan mucha utilidad cuando es necesario manejar lista de informa-
ción . Por ejemplo, este programa lee la temperatura al mediodía, durante todos los días
de un mes y luego informar la temperatura promedio mensual, así como el día más
caluroso y el más frío .
using namespace std;
#include <iostream>
int main()
{
int temp[31],min, max, media;
int dias;
cout<<”Cuantos días tiene el mes”<<endl;
cin>>dias;
for(int i=0;i<dias;i++){
cout<<”Introduzca la temperatura de mediodía del día”<<i+1<<”:”<<endl;
cin>>temp[i];
}
// Hallar la media
media=0;
for(int i=0;i<dias;i++){
media=media+temp[i];
}
cout<<”Temperatura media: “<<media/dias<<endl;
//Hallar min y max
min=60;// Temperatura mínima de la tierra es -90 Grados centígrados
max=-90; // Temperatura máxima de la tierra es 60 Grados centígrados
for(int i=0;i<dias;i++){
if(min>temp[i]) min=temp[i];
if(max<temp[i]) max=temp[i];
}
cout<<”Temperatura mínima: “<<min<<endl;
cout<<”Temperatura máxima: “<<max<<endl;
return 0;
}

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 95
14
El resultado de la ejecución del programa es el siguiente:

Figura 8 . Resultado cálculo de temperatura máxima y mínima


Fuente: propia

Arreglos multidimensionales

De igual forma que los arreglos unidimensionales, el almacenamiento de los datos en


la memoria se realiza de forma secuencial y son accedidos mediante índices . Los arre-
glos multidimensionales son también conocidos como matrices . Por lo tanto, se llama
matriz de orden “m×n” a un conjunto rectangular de elementos dispuestos en filas “m”
y en columnas “n”, siendo m y n números naturales .

Las matrices se denotan con letras mayúsculas: A, B, C, ... y los elementos de


las mismas con letras minúsculas y subíndices que indican el lugar ocupado: a,
b, c, ... Un elemento genérico que ocupe la fila i y la columna j se escribe i,j. Si el
elemento genérico aparece entre paréntesis también representa a toda la matriz:
A (i,j).

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 96
15
Una matriz de orden 3x4 se muestra a continuación, siendo M una matriz de 3 filas y
4 columnas, la representación gráfica de sus posiciones sería la siguiente:
M 3x4
Filas=3, columnas= 4 Columnas

c0 c1 c2 c3
f0 m [f0,c0] m [f0,c1] m [f0,c2] m [f0,c3]

Filas f1 m [f1,c0] m [f1,c1] m [f1,c2] m [f1,c3]

f2 m [f2,c0] m [f2,c1] m [f2,c2] m [f2,c3]

Figura 9 . Matriz de 3 filas por 4 columnas


Fuente: propia

Matrices cuadradas

Una matriz cuadrada es una matriz que tiene el mismo número de filas y columnas .
La matriz que se muestra a continuación es de orden 3x3 .

1 -3 8
2 0 0
0 1 -1
Figura 10 . Matriz cuadrada de 3 filas por 3 columnas
Fuente: propia

Declaración de arreglos multidimensionales

La sintaxis es la siguiente:

tipo_dato identificador [dimensión1] [dimensión2] ... [dimensiónN] ; Donde N


es un número natural positivo .

Ejemplo Arreglo de dos dimensiones de orden 2x3 .

char m[2][3] ;
c0 c1 c2
f0 a x w

f1 b y 10

Figura 11 . Arreglo de 2 filas por 3 columnas


Fuente: propia
Declaración
char m[2][3]; // forma una tabla de dos filas y tres columnas
// cada fila es un arreglo de una dimensión

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 97
16
Ejemplo:

Llenado de un arreglo de enteros de dimensión 3x2 . En este ejemplo el llenado lo rea-


liza el usuario, en otros ejemplos se verá como realizar llenado de matrices mediante
asignación automática, cálculos de operaciones, etcétera .

#include <iostream>
using namespace std;
int main()
{
int matriz [3][2];
int valor;
for(int i=0;i<3;i++) // Recorre las filas de la matriz
{
for(int j=0; j<2;j++) // Recorre las columnas de la matriz
{
cout<<”Ingrese el valor de la matriz en la posición [“<<i<<”,”<<j<<”] “;
cin>>valor;
matriz[i][j] = valor;
}
}
// Imprimiendo el arreglo en formato matricial
for(int i=0;i<3;i++)
{
cout<<”|”;
for(int j=0; j<2;j++)
{
cout<<”\t”<<matriz[i][j]<<”\t”;
}
cout<<”|”<<endl;
}
return 0;
}

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 98
17
Figura 12 . Resultado de una matriz de 3 por 2
Fuente: propia

Interfaz gráfica de usuario

Interfaz gráfica de usuario (en inglés Graphic User Interface, conocido pior sus siglas
GUI) es un método para facilitar la interacción del usuario con la computadora a través
de la utilización de un conjunto de imágenes y objetos pictóricos (iconos y ventanas),
además de texto .


La GUI surge como:

… evolución de la línea de comandos de los primeros sistemas operativos y es pieza


fundamental en un entorno gráfico . Douglas Engelbart, además de inventor del ra-
tón de computador, desarrolló la primera interfaz gráfica en los años 1960 en EE . UU .
en los laboratorios de XEROX . Fue introducida posteriormente al público en las com-
putadoras Apple Macintosh en 1984, y a las masas hasta 1993 con la primera versión
popular del sistema operativo Windows 3 .0 . Los GUI que no son PUI son encontrados
en juegos de computadora, y los GUI avanzados basados en realidad virtual ahora
son usados con más frecuencia en las investigaciones . Muchos grupos de investiga-
ción en Norteamérica y Europa están trabajando actualmente en el interfaz de enfo-
que del usuario o ZUI (Zooming User Interface), que es un adelanto lógico en los GUI,
mezclando 3D con 2 .o o “2D y medio objetos vectoriales de una D (González, 1999) .

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 99
18
Principios para el diseño de sentación visual (colocación /agrupación
interfaces gráficos de objetos, evitar la presentación de exce-
siva información .
Existen principios relevantes para el di-
seño e implementación de Interfaces de
usuario (IU) ya sean para IU gráficas como
para la web . Leer y escribir datos en
puertos seriales
Autonomía: la computadora, la IU y el
entorno de trabajo deben estar a disposi- Una pregunta recurrente que me suelen
ción del usuario . Se debe dar al usuario el preguntar es la relacionada a cómo hacer
ambiente flexible para que pueda apren- X o Y a través de los puertos seriales . Es
der rápidamente a usar la aplicación . decir, cómo lograr interactuar con algún
hardware conectado al puerto serial .
Percepción del color: aunque se utili-
cen convenciones de color en la IU, se de- La respuesta a esto es sencilla . Un puer-
berían usar otros mecanismos secundarios to serial no “controla” a un dispositivo .
para proveer la información a aquellos Simplemente sirve de comunicación en-
usuarios con problemas en la visualización tre la PC y el hardware . En otras palabras,
de colores . tienes que enviarle bytes de información
a través del puerto serial, o bien, leer esos
Legibilidad bytes del propio puerto e interpretarlos .
Pero siempre debes saber, de antemano,
Para que la IU favorezca la usabilidad qué bytes está esperando, cómo se cons-
del sistema de software, la información truye el búfer y cómo interpretar los bytes
que se exhiba en ella debe ser fácil de ubi- que te sean enviados .
car y leer . Es importante hacer clara la pre-

Bueno, aclarado lo anterior, prosigamos . En esencia, entonces, lo que tenemos que


hacer es leer y escribir bytes al puerto, ¿correcto? Pues bien, Windows trata a los puer-
tos de la misma forma que a los archivos, aunque con un nombre establecido . El puerto
“COM1” se llama “COM1:”, el puerto “LPT2” se llama “LPT2:”, etc . Nótese que todos ter-
minan con dos puntos (:) .

La programación modular es un paradigma de programación que consiste en dividir


un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable .

En la mayoría de los casos, un determinado problema complejo lo podemos (y debe-


mos) dividir en problemas más sencillos . Estos subproblemas se conocen en el contex-
to de la programación como “Módulos” o subprogramas .

Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 100
19
Bibliografía

Ceballos, F . (2007) . Programación orientada a objetos con C++ (4a . ed .) . México:


RA-MA Editorial . Recuperado de http://site .ebrary .com .proxy .bidig .areandina .
edu .co:2048/lib/bibliotecafuaasp/detail .action?docID=11045993&p00=lenguaj
e+c%2B%2B

Ceballos, F . (2009) . Enciclopedia del lenguaje C++ (2a . ed .) . México: RA-MA Editorial .
Recuperado de http://site .ebrary .com .proxy .bidig .areandina .edu .co:2048/lib/
bibliotecafuaasp/detail .action?docID=11046572&p00=lenguaje+c%2B%2B

Gaxiola, C ., y Flores, D . (2008) . Metodología de la programación con pseudocódigo


enfocado al lenguaje C. México: Editorial Plaza y Valdés, S .A . de C .V .
Recuperado de http://site .ebrary .com .proxy .bidig .areandina .edu .co:2048/lib/
bibliotecafuaasp/detail .action?docID=10877093&p00=algoritmos+programaci
%C3%B3n
BIBLIOGRAFÍA

Joyanes, L . (2006) . Programación en C++: algoritmos, estructuras de datos y


objetos (2a . ed .) Madrid: McGraw-Hill . Recuperado de http://site .ebrary .com .
proxy .bidig .areandina .edu .co:2048/lib/bibliotecafuaasp/detail .action?docID=1
0491359&p00=lenguaje+c%2B%2B

Joyanes, L ., Castillo, A ., y Sánchez, L . (2005) . C algoritmos, programación y


estructuras de datos. Madrid: McGraw-Hill . Recuperado de http://site .ebrary .
com .proxy .bidig .areandina .edu .co:2048/lib/bibliotecafuaasp/detail .action?do
cID=10491350&p00=lenguaje+c%2B%2B

Joyanes, L ., Rodríguez, L ., y Fernández, M . (2003) . Fundamentos de programación:


libro de problemas. Algoritmos, estructuras de datos y objetos (2a . ed .) madrid:
McGraw-Hill . Recuperado de http://site .ebrary .com .proxy .bidig .areandina .edu .
co:2048/lib/bibliotecafuaasp/detail .action?docID=10498607&p00=algoritmos+
programaci%C3%B3n

Joyanes, L ., y Sánchez, L . (2006) . Programación en C++: un enfoque práctico.


Madrid: McGraw-Hill . Recuperado de http://site .ebrary .com .proxy .bidig .
areandina .edu .co:2048/lib/bibliotecafuaasp/detail .action?docID=10491298&p
00=lenguaje+c%2B%2B

Joyanes, L ., y Zahonero, I . (2007) . Estructura de datos en C++. Madrid: McGraw-


Hill . Recuperado de http://site .ebrary .com .proxy .bidig .areandina .edu .co:2048/
lib/bibliotecafuaasp/detail .action?docID=10491301&p00=lenguaje+c%2B%2B

Joyanes, L . y Zahonero, I . (2005) . Programación en C: metodología, algoritmos y


estructura de datos (2a . ed .) . Madrid: McGraw-Hill . Recuperado de http://site .
ebrary .com .proxy .bidig .areandina .edu .co:2048/lib/bibliotecafuaasp/detail .acti
on?docID=10498360&p00=algoritmos+programaci%C3%B3n

Fundación Universitaria del Área Andina 101


Juganaru, M . (2014) . Introducción a la programación. México: Grupo Editorial Patria .
Recuperado de http://site .ebrary .com .proxy .bidig .areandina .edu .co:2048/lib/
bibliotecafuaasp/detail .action?docID=11017472&p00=programaci%C3%B3n

Moreno, J . (2014) . Programación. México: RA-MA . Recuperado de http://site .


ebrary .com .proxy .bidig .areandina .edu .co:2048/lib/bibliotecafuaasp/detail .acti
on?docID=11046398&p00=lenguaje+c%2B%2B

Noguera, F ., y Riera, D . (2013) . Programación. Barcelona: Editorial UOC .


Recuperado de http://site .ebrary .com .proxy .bidig .areandina .edu .co:2048/lib/
bibliotecafuaasp/detail .action?docID=10853420&p00=lenguaje+c%2B%2B

Schildt, H . (2009) . C++: soluciones de programación. Madrid: McGraw-Hill


Interamericana . Recuperado de http://site .ebrary .com .proxy .bidig .areandina .
edu .co:2048/lib/bibliotecafuaasp/detail .action?docID=10433927&p00=algorit
mos+programaci%C3%B3n
BIBLIOGRAFÍA

Fundación Universitaria del Área Andina 102


Esta obra se terminó de editar en el mes de Septiembre 2018
Tipografá BrownStd Light, 12 puntos
Bogotá D.C,-Colombia.

También podría gustarte