Algoritmos y Programación
Algoritmos y Programación
PROGRAMACIÓN
Algoritmos y Programación
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
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
EJE 1
Conceptualicemos
Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 9
5
Arquitectura 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
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:
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
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
● Secuencia de instrucciones
Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 15
11
Lenguajes de programación de alto nivel
Ventajas
Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 13
17
Genealogía de los lenguajes
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
Tipos de instrucciones
● Entrada y Salida E/S: pasar información del exterior al interior del ordenador y al
revés
¡Recordemos que!
Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 15
19
Tipos de lenguajes
Programación de sistema
C++ Lenguaje compilado
orientado a objeto
Cálculos matemáti-
Cálculos matemáticos Lenguaje interpretado
cos
Procesamiento de cadenas de
Perl Lenguaje interpretado
caracteres
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
Algoritmos y Fundación
programación
Universitaria
- eje 1 conceptualicemos
del Área Andina 21
17
Algunos ejemplos de algoritmos son:
• Un manual de uso
Ahora bien, las características fundamentales que debe tener todo algoritmo son:
• Debe estar definido, esto es, si se ejecuta varias veces partiendo de las mismas
condiciones iniciales debe obtenerse siempre el mismo resultado
• Debe ser independiente del lenguaje de programación que se emplee para imple-
mentarlo
2. Procesamiento
1. Inicio
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
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
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
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:
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’
>>> 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’
-24500 0
Los strings que difieren en mayúsculas
y minúsculas, o en espacios también son
>>> 7e-2
distintos:
0 07
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
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
if ( expresión(es ) )
{ sen tencias }
els e
{ sentencias }
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
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
Su sintaxis es:
while (condición)
{
}
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
¡Impo rtante!
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
¿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
¡Impo rtante!
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:
#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
co:2048/lib/bibliotecafuaasp/detail action?docID=11046398&p00=lengu
aje+c%2B%2B
EJE 2
Analicemos la situación
Para empezar, los invitamos a descargar y tener a mano las siguientes lecturas:
Lectura recomendada
¡Comencemos!
Un compilador de C++ .
Paciencia .
¡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 .)
Instrucción
Funciones
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
#include <iostream>
using namespace std;
int main() {
Todo el código que escribamos irá siempre dentro de las llaves que tenemos en la
función int main () { . . .(código) . . . } .
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
}
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 .
do extern If Int
● Segundo grupo: contiene palabras que no provienen de C y que, por tanto, solo
utiliza C++:
xor
¡Impor tante!
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 .
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”
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:
&& Y (AND)
Ejemplo: Declaración de una variable
de tipo entero llamada x e inicializada en
100; || O (OR)
#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 .
Operadores aritméticos
Suma + +
Resta - -
Multiplicación X *
División /
Módulo Mod %
Video
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 .
#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;
}
¡Impor tante!
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;
}
¡Impor tante!
Video
#include <iostream>
using namespace std;
int main(){
float nota;
cout<<”Cuál fue tu nota de Algoritmos y Programación?” << endl;
cin>> nota;
cin .ignore();
cin .get();
return 0;
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 .
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;
}
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
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!
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 .
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 .
Por ejemplo:
#include “iostream”
using namespace std;
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
EJE 3
Pongamos en práctica
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.
Por último, se mostrará el ciclo for, cada una de sus partes y ejemplos prácticos
para ejecutar en el compilador de lenguaje C++.
Lectura recomendada
Programación en C++/Itera-
ciones y decisiones
bit.ly/28Pohla
Importante
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;
La propia función int main () { ... } es un bloque, ya que todas las sentencias del pro-
grama deben escribirse dentro de las llaves.
Importante
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 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
● if: es la palabra clave que indica el tipo de estructura. Esta palabra se pone siem-
pre al principio.
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’).
Video
#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;
}
}
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.
{ cout << “Bien Hecho !! “ << endl; cout << “El numero “ << a << “ es mayor que 10.”
<< endl; }.
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;
}
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>
int main(){
int a;
cin >> a;
if (a > 10) {
cout << “El número “ << a << “ es mayor que 10.” << endl;
else {
cout << “El número “ << a << “ NO es mayor que 10.” << endl;
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:
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.
#include<iostream>
int main() {
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
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
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
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
Video
youtu.be/lnDTfd4XIX8
Código fuente
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:
● 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.
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>
int main() {
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
break;
Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 16
71
cout << a << “ - “ << b << “ = “ << a-b << endl;
break;
break;
if (b != 0){
else {
break;
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:
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.
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
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:
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:
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.
#include<iostream>
int main() {
int i= 0;
int tb = 9;
while (i <=10) {
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.
Video
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>);
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)
#include<iostream>
int main() {
Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 21
76
int i=0, r;
cin >> r;
cout << “La frase se escribirá al menos una vez aunque el número sea cero o
negativo.” << endl;
do {
i++;
Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 22
77
Bucle for
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
youtu.be/j4jtk5taymU
Entenderemos esto mejor viendo la sintaxis que utiliza este bucle. Esta es la siguiente:
for (<inicializacion>;<condicion>;<actualización>) {
<sentencias que se repiten>;
}
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++;.
Siguiendo con los ejemplos que hemos puesto antes podemos escribir un bucle que
escriba una tabla de multiplicar, por ejemplo, la del 5:
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.
#include<iostream>
int main() {
int t;
cin >> t;
Algoritmos y programación
Fundación Universitaria
- eje3 pongamos
del Área
en práctica
Andina 24
79
for (int i=1; i<=10 ; i++) {
else {
Lectura recomendada
http://bit.ly/2i2nzuB
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
EJE 4
Propongamos
arreglo [0]
arreglo [1]
Representación gráfica de
arreglo [2]
un arreglo de una dimensión
arreglo [3]
arreglo [4]
arreglo [5]
o tipo nombre[tamaño];
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:
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;
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];
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;
}
}
#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
Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 90
9
Asignación de valores o bien, declarar cada elemento
Matrices
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.
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
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];
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 .
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:
Arreglos multidimensionales
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]
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
La sintaxis es la siguiente:
char m[2][3] ;
c0 c1 c2
f0 a x w
f1 b y 10
Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 97
16
Ejemplo:
#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 (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:
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-
Algoritmos
Fundación
y programación
Universitaria
- eje 4
del
propongamos
Área Andina 100
19
Bibliografía
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