SlideShare una empresa de Scribd logo
1 de 38
Descargar para leer sin conexión
- 1 -
Por: Ing. Carlos Alberto Ávila Ruiz
(caavila21@msn.com)
Introducción
El comité para el estándar ANSI C fue formado en 1983 con el objetivo de crear
un lenguaje uniforme a partir del C original, desarrollado por Kernighan y
Ritchie en 1972, en la ATT. Hasta entonces el estándar lo marcaba el libro
escrito en 1978 por estos dos autores.
El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup,
también de la ATT. Al comienzo era una extensión del lenguaje C que fue
denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado
fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace
referencia al carácter del operador incremento de C (++). Ante la gran difusión
y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó
a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI
(seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel
americano e internacional.
En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito
entre los programadores profesionales le ha llevado a ocupar el primer puesto
como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas
del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y
eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del
C original. La evolución de C++ ha continuado con la aparición de Java, un
lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se
utiliza para realizar aplicaciones en Internet.
Hay que señalar que el C++ ha influido en algunos puntos muy importantes del
ANSI C, como por ejemplo en la forma de declarar las funciones, en los
punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras
versiones son anteriores al ANSI C, y algunas de las mejoras de éste fueron
tomadas del C++1.
Cabe destacar que la generalidad del lenguaje descrito aquí es para un nivel
básico en el cual se pretende dominar las estructuras clásicas de cualquier
lenguaje de programación, con ejercicios aplicables en cualquier plataforma.
Para aquellos interesados en desarrollar a profundidad sus conocimientos en
C++, pueden referirse a Internet y consultar los métodos de programación para
Borland C++.
En esta serie de documentos se explicará la sintaxis básica del lenguaje, en el
entorno gratuito de programación DevC++, con énfasis exclusivo para el
desarrollo del currículo de informática del colegio san mateo apóstol.
1
Párrafo adaptado del Manual de C++ con clase (URL: http//:www.cconclase.com)
- 2 -
INDICE DE CONTENIDO
CAPITULO I
Diagramas de Flujo y Estructura Principal 3
CAPITULO II
Entrada y Salida de Información 5
CAPITULO III
Operaciones Básicas 12
CAPITULO IV
Operaciones y Librería Math 13
CAPITULO V
Bifurcaciones 15
Sentencia IF 15
Operadores en C++ 19
Sentencia Switch 21
CAPITULO VI
Bucles 23
Sentencia FOR 23
Sentencia WHILE 24
CAPITULO VII
Manejo de Caracteres 25
Tabla Ascii 26
Arreglos 29
CAPITULO VIII
Ejercicios de Aplicación 32
APENDICE 1 34
- 3 -
I. Diagramas de Flujo y Estructura Principal
Los diagramas de flujo muestran la forma en cómo evoluciona un programa y
pretenden mostrar de manera gráfica la lógica de cada estructura contenida en
él. Para muchas personas les resulta fácil inferir un concepto gráfico a un
concepto textual, por ejemplo:
Gráfico Concepto
Cortar
Silencio
Duda
Cualquiera que sea el gráfico, se puede asociar a una idea. Este es el fin de los
diagramas de flujo mediante los siguientes iconos básicos:
Gráfico Concepto
Comenzar o
Terminar
Proceso
Entrada
Manual
Pantalla
Decisión
Veamos un ejemplo de un diagrama de flujo simple.
INICIO
FIN
NO SONÓ EL DESPERTADOR
SÉ QUE VOY TARDE
¿ME
BAÑO?
ESTARÉ ASEADO PERO
LLEGARÉ TARDE
ESTARÉ SUCIO PERO
LLEGARÉ A TIEMPO
SI
NO
- 4 -
Con este punto de referencia, se dice entonces que todos los programas tienen
un comienzo y un fin, dentro del cual ocurren diferentes cosas como procesos,
y decisiones.
En C++ la estructura principal es la que se describe a continuación y que tiene
una semejanza a un diagrama de flujo que no contiene un propósito específico.
Estructura Principal en C++ Diagrama de Flujo Correspondiente
#include <iostream>
using namespace std
main()
{
return 0;
}
En la estructura principal se definen 4 aspectos que el sistema operativo
requiere para ejecutar una aplicación.
1. #include Define la librería(s) a utilizar, estas contienen información
acerca de las sentencias usadas durante el programa
2. using namespace std Define rutinas de iniciación en el compilador
en el cual se realiza y ejecuta el programa, esta instrucción puede
colocarse o no en la estructura principal dependiendo del compilador,
para DevC++ es obligatorio.
3. main(){ Determina el comienzo del programa realizado, así como
es el nombre de la función del programa ante el sistema operativo.
4. return 0;} Culmina el programa y finaliza la aplicación ante el sistema
operativo.
En todos los programas se debe colocar esta estructura principal, y el
contenido de esta debe ser escrito en minúsculas dado que c++ es susceptible
a que sus sentencias sean escritas de otra forma.
Ejercicios.
1. Realiza un diagrama de flujo acerca de la forma en como tomas las
decisiones para preparar un examen.
2. Memoriza la estructura principal de c++.
INICIO
CONFIGURACION
INICIAL
PROGRAMA
FIN
PROGRAMA
- 5 -
II. Entrada y Salida de Información
En los programas que se desarrollarán en este documento la información que
ingresará al programa se realizará por medio del teclado, y la información
resultante del procedimiento del programa se mostrará en pantalla.
Las sentencias CIN y COUT que se utilizan para ingresar ó sacar información
del programa pertenecen a la librería IOSTREAM.
Salida de Información.
La sentencia COUT utiliza el operador << para delimitar parámetros. Por
ejemplo si deseo mostrar el mensaje Hola mundo se debe escribir lo siguiente:
cout<<”hola mundo”;
Los textos se deben escribir entre comillas y al concluir una sentencia se
coloca punto y coma (;).
Para mostrar varios mensajes en diferentes líneas se usa la sentencia ENDL
para realizar el salto de renglón, ejemplo:
cout<<”hola mundo”<<endl;
cout<<”soy”<<endl;
cout<<”CARLOS”;
Ó también se puede escribir todo esto en una sola línea de programa así:
cout<<”hola mundo”<<endl<<”soy”<<endl<<”CARLOS”;
Al colocar esta línea de programa en la estructura principal el programa
quedaría como sigue:
#include <iostream>
using namespace std
main()
{
cout<<”hola mundo”<<endl<<”soy”<<endl<<”CARLOS”;
return 0;
}
- 6 -
Y con este primer ejemplo de programa es hora de observar como se compila2
y ejecuta en DevC++
Aquí no se indicará la descarga ni la instalación de DevC++ dado que el
paquete instalador viene con instrucciones para hacerlo.
Una vez instalado el software, y abierto el programa se debe crear un nuevo
archivo fuente así:
De tal forma que en él escribiremos el programa y a media que colocamos las
palabras DevC++ reconocerá por medio de colores, negrillas y demás, cada
comando que se escribe en el archivo fuente.
Luego deberá guardar el programa y asignar un nombre.
2
Procedimiento con el cual se analiza e interpretan los códigos de un programa para indicar errores al usuario ó en su
defecto que todo se ha escrito correctamente.
- 7 -
Luego de guardar, notará que el archivo tiene en el icono la palabra
CPP lo cual indica la extensión del archivo y lo identificará así para que usted
sepa que este es el código fuente del programa.
Ahora debe COMPILAR y verificar que el programa le indique los errores
en el código escrito, si no los tiene aparecerá: DONE
Para probar el programa el primer modo regular de ejecución que veremos es
DEBUG, que permite el funcionamiento del programa hasta la línea de código
deseada, para ello se debe seguir los siguientes pasos:
1. Colocar el cursor de texto entes de la palabra return 0;
2. Clic en Depuración y luego en “Ejecutar hasta el cursor”
3. Aparece el programa en una ventana de DOS
4. Para terminar el programa NO debe cerrar la ventana de DOS puesto
que aparecerá un cierre forzado de Windows, para ello debe dar click en
“Detener Ejecución”
Forma de ejecutar programas de C++ en DevC++
- 8 -
Forma de detener programas de C++ en DevC++
Otro ejemplo para salida de información:
Realice un programa que muestre la siguiente figura:
Entrada de Información.
El ingreso de datos por teclado se realiza mediante la instrucción CIN y el
operador >>. Para esto debe tenerse muy en cuenta el tipo de dato que se
- 9 -
ingresará al programa para procesarlo como tal, en este curso empezaremos
con tres tipos de datos básicos:
Tipo Descripción Ejemplo
INT Número entero int a
DOUBLE Numero con decimales double a
CHAR Carácter (letra, numero ó símbolo) char a
Los datos se manipulan por medio de variables que son apartados de memoria
del ordenador para almacenar y procesar información de determinado tipo, y al
crear una variable se debe asignar un nombre coherente con el programa ó
una letra, nunca se deben asignar nombres a las variables que sean
instrucciones propias del lenguaje, por ejemplo cin ó cout y demás.
Ejemplo Correcto:
int valor
cout<<”Escriba un numero: ”;
cin>>valor;
Ejemplo Incorrecto: Este ejemplo provocará un error en el compilador.
int cin
cout<<”Escriba un numero: ”;
cin>>cin;
Para comprobar el funcionamiento de los tipos de datos y de la entrada de
información veremos tres ejemplos que ilustran los detalles de cada tipo.
Ejemplo de tipo de dato INT.
También es posible obtener resultados negativos con este tipo de dato.
- 10 -
Ejemplo de tipo de dato DOUBLE.
Este tipo se utiliza cuando se esperan resultados que manejen cifras decimales
ó en caso de manejos porcentuales.
Ejemplo de tipo de dato CHAR.
En el ejemplo anterior se escribió la letra A mayúscula y se le agregó una b
minúscula.
Es posible capturar varias variables al mismo tiempo que la persona escribe los
datos, para cada variable distinta se coloca un operador de más en el ingreso
por CIN.
- 11 -
Ejercicios.
1. Realizar un programa que al escribir una letra y un numero, el programa
muestre un mensaje indicando que la letra es la fila y el numero la
columna.
2. Un programa que al escribir un símbolo, letra ó numero digito cualquiera
me muestre un cuadrado de 3x3 elaborado con dicha información
ingresada.
III. Operaciones Básicas
Las operaciones aritméticas básicas como suma, resta multiplicación y división,
están representadas por símbolos que efectúan la acción matemática, los
cuales son:
Símbolo Acción
+ Suma
- Resta
* Multiplicación
/ División
Estas operaciones suelen usarse mediante el uso de paréntesis con el fin de
agrupar notaciones en un solo renglón.
Ejemplo:
𝑥 =
3𝑦
5
−
8
5 + 𝑧
Equivale a: x= ((3*y)/ (5))-((8)/ (5+z))
- 12 -
Un ejemplo de aplicación para las operaciones básicas puede ser la conversión
de unidades térmicas como los son: Centígrados, Fahrenheit y Kelvin.
Para este ejemplo se debe tener en cuenta la forma en como se realizan estas
conversiones bajo las siguientes fórmulas:
Para convertir °C a °F se realiza:
(
℃ × 9
5
) + 32 = ℉
Para convertir °C a °K se realiza:
273.15 + ℃ = °𝐾
Realizaremos entonces un programa en C++ que reciba como entrada el valor
en grados Centígrados y entregue como resultado el equivalente en Kelvin y
Fahrenheit.
Ejercicios.
1. Realizar un programa que reciba como entrada de información, un valor
dado en Metros, y los convierta en Yardas, Pies y Millas.
2. Realizar un programa que reciba como entrada de información, un valor
dado en Horas, y los convierta en Minutos y Segundos.
3. Un Programa que reciba un valor en grados angulares y devuelva su
valor en radianes.
- 13 -
IV. Operaciones y Librería MATH
Cuando la matemática utilizada en un programa requiere operaciones más
complejas como funciones trigonométricas y demás se utiliza la librería
MATH.H la cual indica al compilador de C++ como se comportan las siguientes
funciones:
Función Descripción
acos Arco coseno
asin Arco seno
atan Arco tangente
cos Coseno
cosh Coseno hiperbólico
fabs Valor absoluto
log Logaritmo natural
log10 Logaritmo en base 10
pow(x,y) Potenciación de x elevado a la y
sin Seno
sinh Seno hiperbólico
sqrt Raíz cuadrada
tan Tangente
tanh Tangente hiperbólica
fmod(x,y) Residuo x/y
Estas son algunas de las muchas otras funciones en la librería MATH.H, en
este apartado solo nos concentraremos en potenciación y radicación, y para
ello debemos tener en cuenta que los tipos de datos deben manejar valores
decimales, por lo que deben ser del tipo DOUBLE.
CONSIDERACIONES:
1. Colocar la librería al comenzar el código del programa
2. Las variables a usar en las funciones deben ser de tipo “double”.
3. También es posible utilizar valores fijos ó constantes.
Para el caso práctico de este capítulo realizaremos un programa que dado el
radio de un círculo determine su área.
Y por otro lado realizaremos otros programa que dada el área de un círculo
determine su radio.
Consideremos que la fórmula geométrica para hallar el área de un círculo está
dada por:
𝐴 = 𝜋𝑟2
Entonces pi=3.1416, y para manejar los valores en esta ecuación necesitamos
manipular valores decimales, por lo que utilizaremos variables de tipo
DOUBLE.
- 14 -
Si consideramos ahora que el valor de entrada es el área del círculo, entonces
para determinar su radio tendremos en cuenta la siguiente fórmula geométrica.
𝑟 = √
A
π
Por lo cual tendremos el programa como sigue:
Ejercicios.
1. Hacer un programa que determine el perímetro de una elipse sabiendo
que la formula es:
𝑃 = 2𝜋√
𝑏2 + ℎ2
2
- 15 -
V. Bifurcaciones (Sentencias IF y SWITCH)
En el primer capitulo vimos el tema de diagramas de flujo, en donde uno de
ellos era una decisión, la cual tiene dos posibilidades únicamente, que el
resultado de la pregunta sea falso ó verdadero.
A esta sentencia se le llama IF que viene del inglés “SI…”, esta sentencia tiene
varias formas:
 IF
 IF ELSE
 IF ELSEIF ELSE
La primera forma, IF es la siguiente:
if(condición)
{
Acciones en caso verdadero;
}
La segunda forma, IF ELSE es la siguiente:
if(condición)
{
Acciones en caso verdadero;
}
else
{
Acciones en caso falso;
}
La tercera forma, IF ELSEIF ELSE es la siguiente:
if(condición1)
{
Acciones en caso verdadero de condición1;
}
elseif(condición2)
{
Acciones en caso verdadero de condición2;
}
else
{
Acciones en caso falso de condiciones anteriores;
}
En este último caso las condiciones se pueden extender indefinidamente.
Así como el uso de los corchetes se aplica cuando el grupo de instrucciones
consecuentes de falso ó verdadero implique más de una línea de
- 16 -
programación, si esta es mayor de una línea es obligatorio el uso de los
corchetes, para el correcto funcionamiento del programa, de lo contrario el
compilador mostrará un error de sintaxis en el uso de estas sentencias.
A continuación un ejemplo de programa que muestra el uso de la sentencia IF
en su forma más simple:
Pero en el caso de que se ingresara un valor mayor a 18 ¿Qué pasaría?
Nada, no ocurriría ninguna acción en el programa a menos que programáramos
de la siguiente manera usando IF ELSE.
- 17 -
De las formas anteriores se puede evaluar un parámetro desde uno ó dos
puntos de vista como lo son falso ó verdadero, sin embargo el la forma IF
ELSEIF ELSE puede ampliar las posibilidades de avaluar una variable a un
rango más amplio.
Veamos un ejemplo de un programa que determina la etapa de la vida de una
persona de acuerdo a su edad, la siguiente información no proviene de ninguna
fuente mas allá de la imaginación de este su autor.
Años de Edad Etapa
0-4 Bebé
4-10 Niño
10-15 Preadolescente
15-21 Adolescente
21-30 Joven
30-45 Adulto
45-55 Adulto Mayor
55-100 Anciano
Cuando en el programa alguna de las condiciones resulta ser verdadera la
acción siguiente se ejecuta y todo el bloque subsecuente de ELSEIF y ELSE es
obviado por lo que el programa termina, en el ejemplo de ejecución que se
muestra en el gráfico, la edad ingresada (27) está contemplada en un ELSEIF
de la mitad.
- 18 -
Lo anterior infiere que las preguntas ejecutadas fueron:
Edad>55 Falso
Edad>45 Falso
Edad>30 Falso
Edad>21 Verdadero
En adelante no fueron contempladas ninguna de las interrogantes, por ello salió
el mensaje “JOVEN”…y yo dije…gracias.
Operadores en C++
En los últimos ejemplos vimos solo una forma de comparación que era <.
A este símbolo en c++ se le llama operador, y pertenece a la categoría de
comparaciones. Los operadores sirven para establecer una relación entre
variables que puede ser de diferente índole, he aquí alguno de los más
utilizados operadores en C++.
Aritméticos Relacionales
Suma + Igual a ==
Resta - Diferente de !=
Multiplicación * Mayor >
División / Menor <
Lógicos Mayor ó igual que >=
Y lógica && Menor ó igual que <=
Ó lógica || Incrementación y Decrementación
++ Aumento en 1
-- Disminución en1
Para ejemplificar el uso de estos operadores, veamos el ejemplo de un
operador relacional para comparar igualdad:
- 19 -
Así mismo podemos escribir el código del programa de las “etapas de la vida”
que realizamos anteriormente de la siguiente forma:
De esta otra forma se analiza un rango específico y no importa el orden
ascendente o descendente que se tenga igual se evalúa el rango, el operador
&& (Y) conocido como AND discrimina las dos condiciones de la forma en que
solo cuando las dos son verdaderas el resultado del IF, así mismo lo será.
En este mismo ejemplo se ingreso la edad de 27, para evaluar alguna
condición intermedia, cuyo resultado fue “Joven”…de nuevo dije gracias.
Igualmente las condiciones se evaluaron así para la edad de 27:
Verdadero Falso Resultado: Falso
(edad>0)&&(edad<=4)
Verdadero Falso Resultado: Falso
(edad>4)&&(edad<=10)
Verdadero Falso Resultado: Falso
(edad>10)&&(edad<=15)
Verdadero Falso Resultado: Falso
(edad>15)&&(edad<=21)
Verdadero Verdadero Resultado: Verdadero
(edad>21)&&(edad<=30)
- 20 -
Sentencia Switch
Otra sentencia de bifurcación es llamada Switch, que evalúa de manera
independiente las posibilidades de una variable, y no de un rango de la misma.
La sintaxis de esta sentencia es la siguiente:
switch(variable)
{
case valor 1: acciones para el caso;
break;
case valor 2: acciones para el caso;
break;
case valor n: acciones para el caso;
break;
default: acciones;
break;
}
De esta manera se analizan los posibles casos resultantes de una variable,
pero mejor veamos un ejemplo de programa que de acuerdo a un número
ingresado de una lista de inventos, nos muestra el país en que fueron creados.
Inventos Latinos
Radiografía pulmonar (abreugrafía) Brasil
Píldora Anticonceptiva México
Vacuna contra la Malaria Colombia
Bolígrafo Argentina
Motor de Plasma Costa Rica
- 21 -
Al momento de evaluar un valor entero (INTEGER) se coloca el numero al
frente de la palabra case.
La palabra default, es para aquellos valores no contemplados en los casos del
switch.
Otro ejemplo del uso de la sentencia switch es para variables de tipo carácter
también llamadas CHAR.
En este programa muestra una frase de acuerdo con una letra que debe
corresponder a la inicial del nombre de la persona frente al teclado.
Nótese que al frente de la palabra case (caso), se encuentra la letra que se va
a analizar entre comillas simples (apóstrofes), esto se hace cuando la variable
a analizar es un carácter y no un numero.
EJERCICIOS.
1. Usando la sentencia IF realizar un programa que al ingresar la clave
3425 muestre el mensaje “CORRECTO”, en el caso contrario muestre
“CLAVE ERRONEA”
2. Dado el método de calificación numérica, escriba un programa que
reciba una calificación de un examen cualquiera, y este determine la
letra correspondiente a esta nota.
3. Por medio de la sentencia Switch escriba un programa en C++ que dado
un numero entero de entrada entre 2 y 6, grafique un cuadrado de esa
longitud por lado, usando el carácter “*”
- 22 -
VI. Bucles
Se le llama bucle a las repeticiones en un programa, estas tienen diferentes
usos en programación, generalmente para hacer tareas repetitivas, búsquedas
y algoritmos autónomos.
Bucle FOR
Este bucle cuanta con tres aspectos: inicialización, condición de permanencia y
acción. Su sintaxis es la siguiente:
for (inicialización;condición;acción)
{
Instrucciones;
}
Veamos por medio de un ejemplo una aplicación, en el cual se mostrará un
mensaje en pantalla 10 veces.
El bucle usa una variable tipo entero, la cual inicia en 1, las repeticiones se
efectúan gracias a que el resultado de la condición es verdadero, así mismo
como el incremento en la variable, el cual se realiza de forma muy particular
usando dos veces el símbolo +, de esta forma es que i=i+1 es lo mismo que
i++.
- 23 -
Otro ejemplo es resolver la siguiente serie:
nnnn
nx  ...321
En el anterior código, se usa la librería math.h, la cual contiene funciones
trigonométricas como SENO, COSENO, y demás, así como potenciación y
radicación.
Luego se crearon tres variables tipo doublé, con manejo de decimales. El bucle
está definido para comenzar desde 1 y terminar en el valor n ingresado por
usuario, de tal forma que cuando i y n son iguales el bucle termina.
En cada repetición se ejecuta la formula: x=x+pow(i,n), en la cual se sabe de
antemano que el valor inicial de X es cero. Y que cada vez se aumenta en
pow(i,n) veces. POW es exponer un número base a una potencia de tal forma
que aquí se está elevando i a la n.
Para comprobar el funcionamiento de este algoritmo realicemos la siguiente
prueba llamada, prueba de escritorio. Supongamos que el usuario escribió 4.
Repetición x i n
1 1 1 4
2 17 2 4
3 98 3 4
4 354 4 4
Bucle WHILE
El bucle While es más sencillo, pues este siempre ejecuta una ó un grupo de
instrucciones siempre y cuando el resultado de la condición sea verdadero.
La sintaxis es la siguiente:
while(condición)
{
grupo de instrucciones;
}
- 24 -
En este ejemplo simple de aplicación, el programa siempre mostrará el
mensaje “presione una tecla para salir” a menos que dicha tecla sea la “e”.
EJERCICIOS.
1. Realice un programa que muestre los números pares desde el 100 al
200.
2. Un programa que resuelva la siguiente sucesión:
𝑥 = 𝑛√1
+ 𝑛√2
+ 𝑛√3
+ ⋯ + 𝑛√ 𝑛
3. A los programas anteriores agrégueles un WHILE para solo se terminen
si oprimen la tecla “x”
VII. Manejo de Caracteres
Los textos que escribimos en el computador están conformados por un
conjunto de caracteres que pueden ser:
 Numéricos
 Alfabéticos
 Simbólicos
En la frase: “Hola Juan21@hotmail.com” se escribieron 23 caracteres, en los
que se incluye el espacio, los números, el arroba y el punto.
Estos caracteres se encuentran contemplados en la tabla ASCII
- 25 -
“El código ASCII (acrónimo inglés de American Standard Code for Information
Interchange — Código Estadounidense Estándar para el Intercambio de
Información), pronunciado generalmente [áski], es un código de caracteres
basado en el alfabeto latino tal como se usa en inglés moderno y en otras
lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de
Estándares (ASA, conocido desde 1969 como el Instituto Estadounidense de
Estándares Nacionales, o ANSI) como una refundición o evolución de los
conjuntos de códigos utilizados entonces en telegrafía. Más tarde, en 1967, se
incluyeron las minúsculas, y se redefinieron algunos códigos de control para
formar el código conocido como US-ASCII.
El código ASCII utiliza 7 bits para representar los caracteres”3
Los caracteres numerados desde el 0 al 127 hacen parte de la tabla Ascii
básica, y en ella los 32 primero son caracteres NO IMPRIMIBLES esto quiere
decir que se usan para el control de la comunicación entre las máquinas, de allí
en adelante comienzan los simbólicos, numéricos y alfabéticos.
3
Tomado de es.wikipedia.org
- 26 -
Los caracteres del 128 al 255 son considerados entre ascii extendido y varían
de acuerdo al ordenador y programa utilizado.
Una forma de comprobar la tabla ascii en un computador es utilizando cualquier
parte de cualquier programa en donde se pueda escribir y utilizar el método
abreviado CTRL + valor.
Por ejemplo CTRL + 64 dá como resultado @
La primera forma de ver los valores decimales de los caracteres es haciendo
conversión de tipos, esta consiste en que una variable de un tipo determinado
pueda cambiar a otro diferente.
El ejemplo que veremos a continuación consiste en cambiar una variable tipo
char, por una tipo int, con el propósito de obtener el valor decimal de un
carácter ascii.
En el anterior programa al ingresar un carácter, el resultado es el valor decimal
ascii correspondiente.
El siguiente ejercicio muestra como cambiar un tipo de ascii a otro, por ejemplo
una MAYUSCULA a una minúscula.
- 27 -
Al combinar un ciclo FOR con
la conversión de tipos es
posible mostrar toda la tabla
ascii, teniendo en cuenta que
para cada repetición se debe
hacer la conversión de tipos y
mostrar un mensaje que
muestre el valor decimal y el
carácter ascii.
En el gráfico que sigue se
muestra un fragmento de la
ventana en la que se observa
la tabla del carácter 51=3
hasta 128=Ç, por motivos de
gráficos no se observan los
demás, pero es obvio que al
deslizar la barra a la derecha
se puede revirar toda la tabla.
- 28 -
ARREGLOS
Los arreglos son agrupaciones de elementos contenidos en una misma
variable, estos se pueden aplicar a cualquier tipo de dato, con el propósito de
reducir la cantidad de variables en un programa y facilitar el procesamiento de
las mismas.
Un ejemplo de la primera utilidad de un arreglo es la siguiente:
Int edad0, edad1, edad2, edad3, edad4, edad5, edad6;
Crear todas las anteriores variables se puede reducir por lo siguiente:
Int edad[6];
Esto quiere decir que se ha creado una variable entera llamada edad que
contiene 7 “subvariables”, que simbólicamente se pueden apreciar como una
agrupación de partes en un todo:
edad
edad [0] edad[1] edad [2] edad [3] edad [4] edad [5] edad [6]
Veamos una utilidad del uso de esta forma de uso de datos:
- 29 -
Explicación:
El programa determina la cantidad de letras del nombre de una persona,
cada caracter del nombre es analizado en un ciclo FOR para determinar
si su valor ascii es diferente de cero, esto quiere decir que una persona
para este programa se puede llamar RJ45, sin inconveniente alguno.
Lo curioso en este programa es las siguiente dos líneas:
¿Por qué colocar el valor decimal cero para cada parte de la variable
palabra?
“Cuando se crea un arreglo, cada una de las partes puede empezar con
cualquier valor.”
Esto quiere decir que inicialmente la memoria puede contener
información “basura” ó indeseada.
palabra
# ‘ / * { ~ s û ¢ ▓ g ▀ ╚
Por ello en este programa, antes de ingresar el nombre de la persona,
nos aseguramos de que todo el arreglo esta en:
palabra
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Un último ejemplo de lo que se puede hacer con un arreglo es un programa
que al escribir una palabra, convierta las mayúsculas en minúsculas y
viceversa.
- 30 -
Explicación:
El programa analiza cada parte del arreglo es decir cada letra. En este FOR se
encuentra un tipo IF y ELSE IF el cual discrimina si la letra está en el rango de
mayúsculas y le suma 32 ó si está en minúscula para restarle 32.
EJERCICIOS.
1. Realizar un programa que al escribir un número de 0 a 127 muestre el
carácter correspondiente ascii.
2. Un programa que el escribir un numero digito del 0 al 9 lo convierta en
una letra de la J a la S
3. Un programa que valide una clave secreta siempre y cuando la segunda
y cuarta letra sean “x”.
4. Un programa que determine la cantidad de vocales de una palabra.
- 31 -
VIII. Ejercicios de Aplicación
Los ejercicios que a continuación se plantean aquí son diseñados por la
Universidad Antonio Nariño para las olimpiadas de programación en educación
media vocacional en colegios de Bogotá.
NOTA: Si usted desea tener el real ánimo de aprender la lógica abstracta de
programación es muy recomendable que lea el enunciado y trate primero por
sus propios métodos llegar a la solución del mismo, luego puede comparar su
solución con la respuesta, y probablemente llegará a un código diferente pero
igual de útil, no se desanime por no lograr resolver algún ejercicio.
#1 // TIEMPO PARA RECORRER
DADOS DOS VALORES ENTEROS DE ENTRADA UNO SIGNIFICA UNA DISTANCIA A
RECORRER EN KILÓMETROS POR HORA Y EL OTRO LA VELOCIDAD PROMEDIO DEL
VEHICULO EN EL RECORRIDO, EL PROGRAMA DEBE MOSTRAR EL TIEMPO QUE
TARDARÁ EL VEHÍCULO EN LLEGAR, EN EL FORMATO DE HORAS Y MINUTOS hh:mm.
SI LA CANTIDAD DE MINUTOS NO ES EXACTA APROXÍMELA.
ENTRADA EJEMPLO: 60 40 SALIDA EJEMPLO: 1:30
#2 // PROMEDIO
RECIBA COMO ENTRADA TRES NÚMEROS REALES Y QUE DETERMINE SI ALGUNO DE
ELLOS ES EL PROMEDIO DE LOS OTROS DOS. SI LA RESPUESTA ES AFIRMATIVA DEBE
IMPRIMIR COMO SALIDA EL NÚMERO QUE CUMPLE CON ESTA PROPIEDAD, EN CASO
CONTRARIO DEBE REPORTAR “NINGUNO”
ENTRADA EJEMPLO: 8.0 7.0 7.5 SALIDA EJEMPLO: 7.5
ENTRADA EJEMPLO: 8.0 10.22 25.15 SALIDA EJEMPLO: NINGUNO
#3 // SUMA DE VALORES ABSOLUTOS
RECIBA UN NUMERO n (1 ≤ n ≤10) Y A CONTINUACIÓN n NÚMEROS E IMPRIMA LA
SUMA DE LOS VALORES ABSOLUTOS DE LOS n NUMEROS.
ENTRADA EJEMPLO: 3 -2 3 -4 SALIDA EJEMPLO: 9
#4 // CAMBIO DE TIPOS
RECIBA COMO ENTRADA UNA PALABRA Y QUE IMPRIMA EN LA SALIDA LA PALABRA
CAMBIANDO LAS LETRAS QUE VIENEN EN MINÚSCULA POR MAYÚSCULA Y LAS
MAYÚSCULAS EN MINÚSCULAS.
ENTRADA EJEMPLO: aBEcedARio SALIDA EJEMPLO: AbeCEDarIO
- 32 -
#5 // SEGURIDAD POR VOCAL
UNA FORMA MUY SENCILLA AUNQUE INSEGURA DE CODIFICAR UNA PALABRA ES
REEMPLAZANDO CADA VOCAL POR LA SIGUIENTE VOCAL EN ORDEN ALFABÉTICO
(CIRCULAR), ASÍ LA “A” SE REEMPLAZA POR “E” Y LA “U” SE REEMPLAZA POR “A”.
CODIFIQUE UNA PALABRA EN MAYÚSCULAS DADA COMO ENTRADA USANDO EL
PROCEDIMIENTO ANTES MOSTRADO
ENTRADA EJEMPLO: SEGURIDAD SALIDA EJEMPLO: SIGARODED
#6 // PALABRA INVERSA
A UNA PALABRA DE ENTRADA, INVERTIRLE CADA UNA DE SUS LETRAS DE LA
PRIMERA A LA ÚLTIMA.
ENTRADA EJEMPLO: SEGURIDAD SALIDA EJEMPLO: DADIRUGES
#7 // PALINDROMO
UN PALINDROMO ES UNA PALABRA QUE AL ESCRIBIRLA AL DERECHO Ó AL REVÉS ES
IGUAL. HACER UN PROGRAMA QUE INDIQUE SI UNA PALABRA ES Ó NO UN
PALINDROMO.
ENTRADA EJEMPLO: BOB SALIDA EJEMPLO: SI ES UN PALINDROMO
ENTRADA EJEMPLO: SOL SALIDA EJEMPLO: NO ES UN
PALINDROMO
ENTRADA EJEMPLO: ANITALAVALATINA SALIDA EJEMPLO: SI ES UN PALINDROMO
#8 // UNIDADES DE LONGITUD
REALICE UN PROGRAMA QUE PERMITA CONVERTIR METROS, PULGADAS, PIES Y
YARDAS ENTRE SI.
EJEMPLO DE PROGRAMA:
- 33 -
APENDICE 1 soluciones a ejercicios de aplicación
SOLUCIÓN #1 // TIEMPO PARA RECORRER
#include <iostream>
using namespace std;
main()
{
double distancia,velocidad;
int horas;
double minutos;
cout << "Ingrese la distancia a Recorrer en Km: ";
cin >> distancia;
cout << "Ingrese la velocidad del vehiculo en Km/h: ";
cin >> velocidad;
horas=distancia/velocidad;//redondeo las horas por el formato INTEGER
minutos=(distancia/velocidad)-horas; //Obtengo solamente los DECIMALES.
minutos=minutos*60; //Cambio el formato a minutos reales
cout << "El tiempo que tardara es: " << horas << ":" << minutos<<endl;
return 0;
}
SOLUCIÓN #2 // PROMEDIO
#include <iostream>
using namespace std;
main()
{
double valor1,valor2,valor3;
double promedio1,promedio2,promedio3;
cout << "Ingrese tres numeros: ";
cin >> valor1 >> valor2 >> valor3;
promedio1=(valor1+valor2)/2;
promedio2=(valor2+valor3)/2;
promedio3=(valor1+valor3)/2;
if (valor1==promedio2)
cout << promedio2;
else
{
if(valor2==promedio3)
cout << promedio3;
else
{
if(valor3==promedio1)
cout << promedio1;
else
cout << "NINGUNO"<<endl;
}
}
return 0;
}
- 34 -
SOLUCIÓN #3 // SUMA DE VALORES ABSOLUTOS
#include <iostream>
using namespace std;
int main()
{
int valor1,valor2,valor3,valor4;
cout << "Ingrese los 4 valores: ";
cin >> valor1 >> valor2 >> valor3 >> valor4;
if (valor2<0) valor2=valor2*-1;
if (valor3<0) valor3=valor3*-1;
if (valor4<0) valor4=valor4*-1;
cout << valor2+valor3+valor4<<endl;
return 0;
}
SOLUCIÓN #4 // CAMBIO DE TIPOS
#include <iostream>
using namespace std;
main()
{
int i;
char palabra[20];
cout << "Ingrese una Palabra: ";
cin >> palabra;
for (i=0; i < 21; i++)
{
if ((palabra[i]>96)&&(palabra[i]<123)) //para minusculas
palabra[i]=palabra[i]-32;
else if ((palabra[i]>64)&&(palabra[i]<91)) //para MAYUSCULAS
palabra[i]=palabra[i]+32;
}
cout << palabra <<endl;
return 0;
}
- 35 -
SOLUCIÓN #5 // SEGURIDAD POR VOCAL
//solo mayusculas
#include <iostream>
using namespace std;
main()
{
int i;
char palabra[20];
cout << "Ingrese una Palabra: ";
cin >> palabra;
for (i=0; i < 21; i++)
{
switch (palabra[i])
{
case ('A'):
palabra[i]='E';
break;
case ('E'):
palabra[i]='I';
break;
case ('I'):
palabra[i]='O';
break;
case ('O'):
palabra[i]='U';
break;
case ('U'):
palabra[i]='A';
break;
}
}
cout << palabra <<endl;
return 0;
}
- 36 -
SOLUCIÓN #6 // PALABRA INVERSA
#include <iostream>
using namespace std;
main()
{
int i,cantidad=0;
char palabra[20],palabra2[20];
//Iniciar los dos arreglos en cero ó "vacios"
for (i=0; i < 21; i++)
{
palabra[i] =0;
palabra2[i] =0;
}
//El usuario ingresa la palabra a invertir
cout << "Ingrese una Palabra: ";
cin >> palabra;
//Este for con este if determina la cantidad de letras de la palabra
for (i=0; i < 21; i++)
{
if ((palabra[i]>64)&&(palabra[i]<123))
cantidad++;
}
//Este iguala las palabras
for (i=0; i <= cantidad; i++)
{
palabra2[i]=palabra[i];
}
//se intercambian letras
int valor;
valor = cantidad-1;
for (i=0; i < cantidad; i++)
{
palabra2[valor]=palabra[i];
valor--;
}
cout<<palabra<<" y "<<palabra2<<endl;
return 0;
}
- 37 -
SOLUCIÓN #7 // PALINDROMO
#include <iostream>
using namespace std;
main()
{
int i,cantidad;
char palabra[20],palindromo[20];
//Iniciar los dos arreglos en cero ó "vacios"
for (i=0; i < 21; i++)
{
palabra[i] =0;
palindromo[i] =0;
}
//El usuario ingresa la palalabra
cout << "Ingrese una Palabra: ";
cin >> palabra;
cantidad=0;
//Este for con este if determina la cantidad de letras de la palabra
for (i=0; i < 21; i++)
{
if ((palabra[i]>64)&&(palabra[i]<123))
cantidad++;
}
//Este iguala las palabras
for (i=0; i <= cantidad; i++)
{
palindromo[i]=palabra[i];
}
//se intercambian letras
int valor;
valor=cantidad-1;
for (i=0; i < cantidad; i++)
{
palindromo[valor]=palabra[i];
valor--;
}
cout<<palabra<<" y "<<palindromo<<endl;
//se determina si es palíndromo
int ok;
ok=0;
for (i=0; i < cantidad; i++)
{
if(palindromo[i]==palabra[i])
ok++;
}
if (ok==cantidad)
cout <<"SI ES UN PALINDROMO"<<endl;
else
cout <<"NO ES UN PALINDROMO"<<endl;
return 0;
}
- 38 -
SOLUCIÓN #8 // UNIDADES DE LONGITUD
#include <iostream>
using namespace std;
main()
{
char code;
double metros,pulgas,pies,yarda;
cout<<"UNIDAD CODIGO"<<endl<<endl;
cout<<"Metros 1"<<endl;
cout<<"Pulgadas 2"<<endl;
cout<<"Pies 3"<<endl;
cout<<"Yardas 4"<<endl<<endl;
cout<<"Ingrese la Codigo de Unidades: ";
cin>>code;
switch(code)
{
case '1':
cout<<"Ingrese El numero de Metros: ";
cin>>metros;
pulgas=metros*39.37;
pies=metros*3.28;
yarda=metros*1.093;
cout << metros <<" Metros Equivale a:" << endl<< endl;
cout << pulgas <<" Pulgadas" << endl;
cout << pies <<" Pies" << endl;
cout << yarda <<" Yardas" << endl;
break;
case '2':
cout<<"Ingrese El numero de Pulgadas: ";
cin>>pulgas;
metros=pulgas*0.0254;
pies=pulgas*0.083;
yarda=pulgas*0.027;
cout << pulgas <<" Pulgadas Equivale a:" << endl<< endl;
cout << metros <<" Metros" << endl;
cout << pies <<" Pies" << endl;
cout << yarda <<" Yardas" << endl;
break;
case '3':
cout<<"Ingrese El numero de Pies: ";
cin>>pies;
metros=pies*0.3048;
pulgas=pies*12;
yarda=pies*0.333;
cout << pies <<" Pies Equivale a:" << endl<< endl;
cout << metros <<" Metros" << endl;
cout << pulgas <<" Pulgadas" << endl;
cout << yarda <<" Yardas" << endl;
break;
case '4':
cout<<"Ingrese El numero de Yardas: ";
cin>>yarda;
metros=yarda*0.9144;
pulgas=yarda*36;
pies=yarda*3;
cout << yarda <<" Yardas Equivale a:" << endl<< endl;
cout << metros <<" Metros" << endl;
cout << pulgas <<" Pulgadas" << endl;
cout << pies <<" Pies" << endl;
break;
default:
cout<<"ERROR"<<endl;
}
return 0;
}

Más contenido relacionado

La actualidad más candente (20)

Programación en c y c++
Programación en c y c++Programación en c y c++
Programación en c y c++
 
c++ introduccion
c++ introduccionc++ introduccion
c++ introduccion
 
C++
C++C++
C++
 
Unmsm02 2008
Unmsm02 2008Unmsm02 2008
Unmsm02 2008
 
1. introducción a c#
1.  introducción a c#1.  introducción a c#
1. introducción a c#
 
Mi lenguaje de programación de preferencia es C++
Mi lenguaje de programación de preferencia es C++Mi lenguaje de programación de preferencia es C++
Mi lenguaje de programación de preferencia es C++
 
Ensayo de programacion c
Ensayo de programacion cEnsayo de programacion c
Ensayo de programacion c
 
Lenguaje de programacion c
Lenguaje de programacion cLenguaje de programacion c
Lenguaje de programacion c
 
C
C C
C
 
Manual de c/c++
Manual de c/c++Manual de c/c++
Manual de c/c++
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y Componentes
 
C++
C++C++
C++
 
Lenguaje de programacion c#
Lenguaje de programacion c#Lenguaje de programacion c#
Lenguaje de programacion c#
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Lenguaje c
Lenguaje c Lenguaje c
Lenguaje c
 
Manual C/C++ Jason Martinez
Manual C/C++ Jason MartinezManual C/C++ Jason Martinez
Manual C/C++ Jason Martinez
 
Borland c
Borland  cBorland  c
Borland c
 
Cppbasico
CppbasicoCppbasico
Cppbasico
 
Entorno de desarrollo en c++
Entorno de desarrollo en c++Entorno de desarrollo en c++
Entorno de desarrollo en c++
 
Programa c++
Programa c++Programa c++
Programa c++
 

Similar a Programación c++forcsma

Similar a Programación c++forcsma (20)

Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky Bonilla
 
Introducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptxIntroducción a Programación I (Clase1).pptx
Introducción a Programación I (Clase1).pptx
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
definiciones de c++ para el trabajo.docx
definiciones de c++ para el trabajo.docxdefiniciones de c++ para el trabajo.docx
definiciones de c++ para el trabajo.docx
 
Programación en c y c++
Programación en c y c++Programación en c y c++
Programación en c y c++
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual[1]
C sharp manual[1]C sharp manual[1]
C sharp manual[1]
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
C sharp manual
C sharp manualC sharp manual
C sharp manual
 
Programación c
Programación cProgramación c
Programación c
 
Programación c
Programación cProgramación c
Programación c
 
Manual c++01
Manual c++01Manual c++01
Manual c++01
 
Cursocpp
CursocppCursocpp
Cursocpp
 
2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase2154086 curso-c-c-con-clase
2154086 curso-c-c-con-clase
 
Practicas bloque 1
Practicas bloque 1Practicas bloque 1
Practicas bloque 1
 
Conceptos básicos
Conceptos básicosConceptos básicos
Conceptos básicos
 
Introducción a La Programación En C
Introducción a La Programación En CIntroducción a La Programación En C
Introducción a La Programación En C
 
Como usar el lenguaje c++
Como usar el lenguaje c++Como usar el lenguaje c++
Como usar el lenguaje c++
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Lenguaje C
Lenguaje CLenguaje C
Lenguaje C
 

Más de Carlos Avila

Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
Carlos Avila
 

Más de Carlos Avila (18)

Taller Sistemas Nat-Art
Taller Sistemas Nat-ArtTaller Sistemas Nat-Art
Taller Sistemas Nat-Art
 
Construcción de puente
Construcción de puenteConstrucción de puente
Construcción de puente
 
Clasificación herramientas,máquinas e instrumentos
Clasificación herramientas,máquinas e instrumentosClasificación herramientas,máquinas e instrumentos
Clasificación herramientas,máquinas e instrumentos
 
Proceso de validación
Proceso de validaciónProceso de validación
Proceso de validación
 
Minecraft experiencias gamificadas
Minecraft   experiencias gamificadasMinecraft   experiencias gamificadas
Minecraft experiencias gamificadas
 
Corresponsabilidad
CorresponsabilidadCorresponsabilidad
Corresponsabilidad
 
Minecraft: Aprendizaje Gamificado
Minecraft: Aprendizaje GamificadoMinecraft: Aprendizaje Gamificado
Minecraft: Aprendizaje Gamificado
 
Articulo Arukay EDU.co
Articulo Arukay EDU.coArticulo Arukay EDU.co
Articulo Arukay EDU.co
 
Capas 5-6-7
Capas 5-6-7Capas 5-6-7
Capas 5-6-7
 
4 capa transporte
4 capa transporte4 capa transporte
4 capa transporte
 
Proyecto matrix
Proyecto matrixProyecto matrix
Proyecto matrix
 
1 capa fisica
1 capa fisica1 capa fisica
1 capa fisica
 
3 capa red
3 capa red3 capa red
3 capa red
 
2 Capa Enlace
2 Capa Enlace2 Capa Enlace
2 Capa Enlace
 
Macro atrapame
Macro atrapameMacro atrapame
Macro atrapame
 
Macro dado
Macro dadoMacro dado
Macro dado
 
Windows8
Windows8Windows8
Windows8
 
Realidad aumentada
Realidad aumentadaRealidad aumentada
Realidad aumentada
 

Último

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 

Último (20)

Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
animalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdfanimalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdf
 
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
 
LA JUNGLA DE COLORES.pptx Cuento de animales
LA JUNGLA DE COLORES.pptx  Cuento de animalesLA JUNGLA DE COLORES.pptx  Cuento de animales
LA JUNGLA DE COLORES.pptx Cuento de animales
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptxAEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
AEC2. Egipto Antiguo. Adivina, Adivinanza.pptx
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 

Programación c++forcsma

  • 1. - 1 - Por: Ing. Carlos Alberto Ávila Ruiz (caavila21@msn.com) Introducción El comité para el estándar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estándar lo marcaba el libro escrito en 1978 por estos dos autores. El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue B. Stroustrup, también de la ATT. Al comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C (++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet. Hay que señalar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de éste fueron tomadas del C++1. Cabe destacar que la generalidad del lenguaje descrito aquí es para un nivel básico en el cual se pretende dominar las estructuras clásicas de cualquier lenguaje de programación, con ejercicios aplicables en cualquier plataforma. Para aquellos interesados en desarrollar a profundidad sus conocimientos en C++, pueden referirse a Internet y consultar los métodos de programación para Borland C++. En esta serie de documentos se explicará la sintaxis básica del lenguaje, en el entorno gratuito de programación DevC++, con énfasis exclusivo para el desarrollo del currículo de informática del colegio san mateo apóstol. 1 Párrafo adaptado del Manual de C++ con clase (URL: http//:www.cconclase.com)
  • 2. - 2 - INDICE DE CONTENIDO CAPITULO I Diagramas de Flujo y Estructura Principal 3 CAPITULO II Entrada y Salida de Información 5 CAPITULO III Operaciones Básicas 12 CAPITULO IV Operaciones y Librería Math 13 CAPITULO V Bifurcaciones 15 Sentencia IF 15 Operadores en C++ 19 Sentencia Switch 21 CAPITULO VI Bucles 23 Sentencia FOR 23 Sentencia WHILE 24 CAPITULO VII Manejo de Caracteres 25 Tabla Ascii 26 Arreglos 29 CAPITULO VIII Ejercicios de Aplicación 32 APENDICE 1 34
  • 3. - 3 - I. Diagramas de Flujo y Estructura Principal Los diagramas de flujo muestran la forma en cómo evoluciona un programa y pretenden mostrar de manera gráfica la lógica de cada estructura contenida en él. Para muchas personas les resulta fácil inferir un concepto gráfico a un concepto textual, por ejemplo: Gráfico Concepto Cortar Silencio Duda Cualquiera que sea el gráfico, se puede asociar a una idea. Este es el fin de los diagramas de flujo mediante los siguientes iconos básicos: Gráfico Concepto Comenzar o Terminar Proceso Entrada Manual Pantalla Decisión Veamos un ejemplo de un diagrama de flujo simple. INICIO FIN NO SONÓ EL DESPERTADOR SÉ QUE VOY TARDE ¿ME BAÑO? ESTARÉ ASEADO PERO LLEGARÉ TARDE ESTARÉ SUCIO PERO LLEGARÉ A TIEMPO SI NO
  • 4. - 4 - Con este punto de referencia, se dice entonces que todos los programas tienen un comienzo y un fin, dentro del cual ocurren diferentes cosas como procesos, y decisiones. En C++ la estructura principal es la que se describe a continuación y que tiene una semejanza a un diagrama de flujo que no contiene un propósito específico. Estructura Principal en C++ Diagrama de Flujo Correspondiente #include <iostream> using namespace std main() { return 0; } En la estructura principal se definen 4 aspectos que el sistema operativo requiere para ejecutar una aplicación. 1. #include Define la librería(s) a utilizar, estas contienen información acerca de las sentencias usadas durante el programa 2. using namespace std Define rutinas de iniciación en el compilador en el cual se realiza y ejecuta el programa, esta instrucción puede colocarse o no en la estructura principal dependiendo del compilador, para DevC++ es obligatorio. 3. main(){ Determina el comienzo del programa realizado, así como es el nombre de la función del programa ante el sistema operativo. 4. return 0;} Culmina el programa y finaliza la aplicación ante el sistema operativo. En todos los programas se debe colocar esta estructura principal, y el contenido de esta debe ser escrito en minúsculas dado que c++ es susceptible a que sus sentencias sean escritas de otra forma. Ejercicios. 1. Realiza un diagrama de flujo acerca de la forma en como tomas las decisiones para preparar un examen. 2. Memoriza la estructura principal de c++. INICIO CONFIGURACION INICIAL PROGRAMA FIN PROGRAMA
  • 5. - 5 - II. Entrada y Salida de Información En los programas que se desarrollarán en este documento la información que ingresará al programa se realizará por medio del teclado, y la información resultante del procedimiento del programa se mostrará en pantalla. Las sentencias CIN y COUT que se utilizan para ingresar ó sacar información del programa pertenecen a la librería IOSTREAM. Salida de Información. La sentencia COUT utiliza el operador << para delimitar parámetros. Por ejemplo si deseo mostrar el mensaje Hola mundo se debe escribir lo siguiente: cout<<”hola mundo”; Los textos se deben escribir entre comillas y al concluir una sentencia se coloca punto y coma (;). Para mostrar varios mensajes en diferentes líneas se usa la sentencia ENDL para realizar el salto de renglón, ejemplo: cout<<”hola mundo”<<endl; cout<<”soy”<<endl; cout<<”CARLOS”; Ó también se puede escribir todo esto en una sola línea de programa así: cout<<”hola mundo”<<endl<<”soy”<<endl<<”CARLOS”; Al colocar esta línea de programa en la estructura principal el programa quedaría como sigue: #include <iostream> using namespace std main() { cout<<”hola mundo”<<endl<<”soy”<<endl<<”CARLOS”; return 0; }
  • 6. - 6 - Y con este primer ejemplo de programa es hora de observar como se compila2 y ejecuta en DevC++ Aquí no se indicará la descarga ni la instalación de DevC++ dado que el paquete instalador viene con instrucciones para hacerlo. Una vez instalado el software, y abierto el programa se debe crear un nuevo archivo fuente así: De tal forma que en él escribiremos el programa y a media que colocamos las palabras DevC++ reconocerá por medio de colores, negrillas y demás, cada comando que se escribe en el archivo fuente. Luego deberá guardar el programa y asignar un nombre. 2 Procedimiento con el cual se analiza e interpretan los códigos de un programa para indicar errores al usuario ó en su defecto que todo se ha escrito correctamente.
  • 7. - 7 - Luego de guardar, notará que el archivo tiene en el icono la palabra CPP lo cual indica la extensión del archivo y lo identificará así para que usted sepa que este es el código fuente del programa. Ahora debe COMPILAR y verificar que el programa le indique los errores en el código escrito, si no los tiene aparecerá: DONE Para probar el programa el primer modo regular de ejecución que veremos es DEBUG, que permite el funcionamiento del programa hasta la línea de código deseada, para ello se debe seguir los siguientes pasos: 1. Colocar el cursor de texto entes de la palabra return 0; 2. Clic en Depuración y luego en “Ejecutar hasta el cursor” 3. Aparece el programa en una ventana de DOS 4. Para terminar el programa NO debe cerrar la ventana de DOS puesto que aparecerá un cierre forzado de Windows, para ello debe dar click en “Detener Ejecución” Forma de ejecutar programas de C++ en DevC++
  • 8. - 8 - Forma de detener programas de C++ en DevC++ Otro ejemplo para salida de información: Realice un programa que muestre la siguiente figura: Entrada de Información. El ingreso de datos por teclado se realiza mediante la instrucción CIN y el operador >>. Para esto debe tenerse muy en cuenta el tipo de dato que se
  • 9. - 9 - ingresará al programa para procesarlo como tal, en este curso empezaremos con tres tipos de datos básicos: Tipo Descripción Ejemplo INT Número entero int a DOUBLE Numero con decimales double a CHAR Carácter (letra, numero ó símbolo) char a Los datos se manipulan por medio de variables que son apartados de memoria del ordenador para almacenar y procesar información de determinado tipo, y al crear una variable se debe asignar un nombre coherente con el programa ó una letra, nunca se deben asignar nombres a las variables que sean instrucciones propias del lenguaje, por ejemplo cin ó cout y demás. Ejemplo Correcto: int valor cout<<”Escriba un numero: ”; cin>>valor; Ejemplo Incorrecto: Este ejemplo provocará un error en el compilador. int cin cout<<”Escriba un numero: ”; cin>>cin; Para comprobar el funcionamiento de los tipos de datos y de la entrada de información veremos tres ejemplos que ilustran los detalles de cada tipo. Ejemplo de tipo de dato INT. También es posible obtener resultados negativos con este tipo de dato.
  • 10. - 10 - Ejemplo de tipo de dato DOUBLE. Este tipo se utiliza cuando se esperan resultados que manejen cifras decimales ó en caso de manejos porcentuales. Ejemplo de tipo de dato CHAR. En el ejemplo anterior se escribió la letra A mayúscula y se le agregó una b minúscula. Es posible capturar varias variables al mismo tiempo que la persona escribe los datos, para cada variable distinta se coloca un operador de más en el ingreso por CIN.
  • 11. - 11 - Ejercicios. 1. Realizar un programa que al escribir una letra y un numero, el programa muestre un mensaje indicando que la letra es la fila y el numero la columna. 2. Un programa que al escribir un símbolo, letra ó numero digito cualquiera me muestre un cuadrado de 3x3 elaborado con dicha información ingresada. III. Operaciones Básicas Las operaciones aritméticas básicas como suma, resta multiplicación y división, están representadas por símbolos que efectúan la acción matemática, los cuales son: Símbolo Acción + Suma - Resta * Multiplicación / División Estas operaciones suelen usarse mediante el uso de paréntesis con el fin de agrupar notaciones en un solo renglón. Ejemplo: 𝑥 = 3𝑦 5 − 8 5 + 𝑧 Equivale a: x= ((3*y)/ (5))-((8)/ (5+z))
  • 12. - 12 - Un ejemplo de aplicación para las operaciones básicas puede ser la conversión de unidades térmicas como los son: Centígrados, Fahrenheit y Kelvin. Para este ejemplo se debe tener en cuenta la forma en como se realizan estas conversiones bajo las siguientes fórmulas: Para convertir °C a °F se realiza: ( ℃ × 9 5 ) + 32 = ℉ Para convertir °C a °K se realiza: 273.15 + ℃ = °𝐾 Realizaremos entonces un programa en C++ que reciba como entrada el valor en grados Centígrados y entregue como resultado el equivalente en Kelvin y Fahrenheit. Ejercicios. 1. Realizar un programa que reciba como entrada de información, un valor dado en Metros, y los convierta en Yardas, Pies y Millas. 2. Realizar un programa que reciba como entrada de información, un valor dado en Horas, y los convierta en Minutos y Segundos. 3. Un Programa que reciba un valor en grados angulares y devuelva su valor en radianes.
  • 13. - 13 - IV. Operaciones y Librería MATH Cuando la matemática utilizada en un programa requiere operaciones más complejas como funciones trigonométricas y demás se utiliza la librería MATH.H la cual indica al compilador de C++ como se comportan las siguientes funciones: Función Descripción acos Arco coseno asin Arco seno atan Arco tangente cos Coseno cosh Coseno hiperbólico fabs Valor absoluto log Logaritmo natural log10 Logaritmo en base 10 pow(x,y) Potenciación de x elevado a la y sin Seno sinh Seno hiperbólico sqrt Raíz cuadrada tan Tangente tanh Tangente hiperbólica fmod(x,y) Residuo x/y Estas son algunas de las muchas otras funciones en la librería MATH.H, en este apartado solo nos concentraremos en potenciación y radicación, y para ello debemos tener en cuenta que los tipos de datos deben manejar valores decimales, por lo que deben ser del tipo DOUBLE. CONSIDERACIONES: 1. Colocar la librería al comenzar el código del programa 2. Las variables a usar en las funciones deben ser de tipo “double”. 3. También es posible utilizar valores fijos ó constantes. Para el caso práctico de este capítulo realizaremos un programa que dado el radio de un círculo determine su área. Y por otro lado realizaremos otros programa que dada el área de un círculo determine su radio. Consideremos que la fórmula geométrica para hallar el área de un círculo está dada por: 𝐴 = 𝜋𝑟2 Entonces pi=3.1416, y para manejar los valores en esta ecuación necesitamos manipular valores decimales, por lo que utilizaremos variables de tipo DOUBLE.
  • 14. - 14 - Si consideramos ahora que el valor de entrada es el área del círculo, entonces para determinar su radio tendremos en cuenta la siguiente fórmula geométrica. 𝑟 = √ A π Por lo cual tendremos el programa como sigue: Ejercicios. 1. Hacer un programa que determine el perímetro de una elipse sabiendo que la formula es: 𝑃 = 2𝜋√ 𝑏2 + ℎ2 2
  • 15. - 15 - V. Bifurcaciones (Sentencias IF y SWITCH) En el primer capitulo vimos el tema de diagramas de flujo, en donde uno de ellos era una decisión, la cual tiene dos posibilidades únicamente, que el resultado de la pregunta sea falso ó verdadero. A esta sentencia se le llama IF que viene del inglés “SI…”, esta sentencia tiene varias formas:  IF  IF ELSE  IF ELSEIF ELSE La primera forma, IF es la siguiente: if(condición) { Acciones en caso verdadero; } La segunda forma, IF ELSE es la siguiente: if(condición) { Acciones en caso verdadero; } else { Acciones en caso falso; } La tercera forma, IF ELSEIF ELSE es la siguiente: if(condición1) { Acciones en caso verdadero de condición1; } elseif(condición2) { Acciones en caso verdadero de condición2; } else { Acciones en caso falso de condiciones anteriores; } En este último caso las condiciones se pueden extender indefinidamente. Así como el uso de los corchetes se aplica cuando el grupo de instrucciones consecuentes de falso ó verdadero implique más de una línea de
  • 16. - 16 - programación, si esta es mayor de una línea es obligatorio el uso de los corchetes, para el correcto funcionamiento del programa, de lo contrario el compilador mostrará un error de sintaxis en el uso de estas sentencias. A continuación un ejemplo de programa que muestra el uso de la sentencia IF en su forma más simple: Pero en el caso de que se ingresara un valor mayor a 18 ¿Qué pasaría? Nada, no ocurriría ninguna acción en el programa a menos que programáramos de la siguiente manera usando IF ELSE.
  • 17. - 17 - De las formas anteriores se puede evaluar un parámetro desde uno ó dos puntos de vista como lo son falso ó verdadero, sin embargo el la forma IF ELSEIF ELSE puede ampliar las posibilidades de avaluar una variable a un rango más amplio. Veamos un ejemplo de un programa que determina la etapa de la vida de una persona de acuerdo a su edad, la siguiente información no proviene de ninguna fuente mas allá de la imaginación de este su autor. Años de Edad Etapa 0-4 Bebé 4-10 Niño 10-15 Preadolescente 15-21 Adolescente 21-30 Joven 30-45 Adulto 45-55 Adulto Mayor 55-100 Anciano Cuando en el programa alguna de las condiciones resulta ser verdadera la acción siguiente se ejecuta y todo el bloque subsecuente de ELSEIF y ELSE es obviado por lo que el programa termina, en el ejemplo de ejecución que se muestra en el gráfico, la edad ingresada (27) está contemplada en un ELSEIF de la mitad.
  • 18. - 18 - Lo anterior infiere que las preguntas ejecutadas fueron: Edad>55 Falso Edad>45 Falso Edad>30 Falso Edad>21 Verdadero En adelante no fueron contempladas ninguna de las interrogantes, por ello salió el mensaje “JOVEN”…y yo dije…gracias. Operadores en C++ En los últimos ejemplos vimos solo una forma de comparación que era <. A este símbolo en c++ se le llama operador, y pertenece a la categoría de comparaciones. Los operadores sirven para establecer una relación entre variables que puede ser de diferente índole, he aquí alguno de los más utilizados operadores en C++. Aritméticos Relacionales Suma + Igual a == Resta - Diferente de != Multiplicación * Mayor > División / Menor < Lógicos Mayor ó igual que >= Y lógica && Menor ó igual que <= Ó lógica || Incrementación y Decrementación ++ Aumento en 1 -- Disminución en1 Para ejemplificar el uso de estos operadores, veamos el ejemplo de un operador relacional para comparar igualdad:
  • 19. - 19 - Así mismo podemos escribir el código del programa de las “etapas de la vida” que realizamos anteriormente de la siguiente forma: De esta otra forma se analiza un rango específico y no importa el orden ascendente o descendente que se tenga igual se evalúa el rango, el operador && (Y) conocido como AND discrimina las dos condiciones de la forma en que solo cuando las dos son verdaderas el resultado del IF, así mismo lo será. En este mismo ejemplo se ingreso la edad de 27, para evaluar alguna condición intermedia, cuyo resultado fue “Joven”…de nuevo dije gracias. Igualmente las condiciones se evaluaron así para la edad de 27: Verdadero Falso Resultado: Falso (edad>0)&&(edad<=4) Verdadero Falso Resultado: Falso (edad>4)&&(edad<=10) Verdadero Falso Resultado: Falso (edad>10)&&(edad<=15) Verdadero Falso Resultado: Falso (edad>15)&&(edad<=21) Verdadero Verdadero Resultado: Verdadero (edad>21)&&(edad<=30)
  • 20. - 20 - Sentencia Switch Otra sentencia de bifurcación es llamada Switch, que evalúa de manera independiente las posibilidades de una variable, y no de un rango de la misma. La sintaxis de esta sentencia es la siguiente: switch(variable) { case valor 1: acciones para el caso; break; case valor 2: acciones para el caso; break; case valor n: acciones para el caso; break; default: acciones; break; } De esta manera se analizan los posibles casos resultantes de una variable, pero mejor veamos un ejemplo de programa que de acuerdo a un número ingresado de una lista de inventos, nos muestra el país en que fueron creados. Inventos Latinos Radiografía pulmonar (abreugrafía) Brasil Píldora Anticonceptiva México Vacuna contra la Malaria Colombia Bolígrafo Argentina Motor de Plasma Costa Rica
  • 21. - 21 - Al momento de evaluar un valor entero (INTEGER) se coloca el numero al frente de la palabra case. La palabra default, es para aquellos valores no contemplados en los casos del switch. Otro ejemplo del uso de la sentencia switch es para variables de tipo carácter también llamadas CHAR. En este programa muestra una frase de acuerdo con una letra que debe corresponder a la inicial del nombre de la persona frente al teclado. Nótese que al frente de la palabra case (caso), se encuentra la letra que se va a analizar entre comillas simples (apóstrofes), esto se hace cuando la variable a analizar es un carácter y no un numero. EJERCICIOS. 1. Usando la sentencia IF realizar un programa que al ingresar la clave 3425 muestre el mensaje “CORRECTO”, en el caso contrario muestre “CLAVE ERRONEA” 2. Dado el método de calificación numérica, escriba un programa que reciba una calificación de un examen cualquiera, y este determine la letra correspondiente a esta nota. 3. Por medio de la sentencia Switch escriba un programa en C++ que dado un numero entero de entrada entre 2 y 6, grafique un cuadrado de esa longitud por lado, usando el carácter “*”
  • 22. - 22 - VI. Bucles Se le llama bucle a las repeticiones en un programa, estas tienen diferentes usos en programación, generalmente para hacer tareas repetitivas, búsquedas y algoritmos autónomos. Bucle FOR Este bucle cuanta con tres aspectos: inicialización, condición de permanencia y acción. Su sintaxis es la siguiente: for (inicialización;condición;acción) { Instrucciones; } Veamos por medio de un ejemplo una aplicación, en el cual se mostrará un mensaje en pantalla 10 veces. El bucle usa una variable tipo entero, la cual inicia en 1, las repeticiones se efectúan gracias a que el resultado de la condición es verdadero, así mismo como el incremento en la variable, el cual se realiza de forma muy particular usando dos veces el símbolo +, de esta forma es que i=i+1 es lo mismo que i++.
  • 23. - 23 - Otro ejemplo es resolver la siguiente serie: nnnn nx  ...321 En el anterior código, se usa la librería math.h, la cual contiene funciones trigonométricas como SENO, COSENO, y demás, así como potenciación y radicación. Luego se crearon tres variables tipo doublé, con manejo de decimales. El bucle está definido para comenzar desde 1 y terminar en el valor n ingresado por usuario, de tal forma que cuando i y n son iguales el bucle termina. En cada repetición se ejecuta la formula: x=x+pow(i,n), en la cual se sabe de antemano que el valor inicial de X es cero. Y que cada vez se aumenta en pow(i,n) veces. POW es exponer un número base a una potencia de tal forma que aquí se está elevando i a la n. Para comprobar el funcionamiento de este algoritmo realicemos la siguiente prueba llamada, prueba de escritorio. Supongamos que el usuario escribió 4. Repetición x i n 1 1 1 4 2 17 2 4 3 98 3 4 4 354 4 4 Bucle WHILE El bucle While es más sencillo, pues este siempre ejecuta una ó un grupo de instrucciones siempre y cuando el resultado de la condición sea verdadero. La sintaxis es la siguiente: while(condición) { grupo de instrucciones; }
  • 24. - 24 - En este ejemplo simple de aplicación, el programa siempre mostrará el mensaje “presione una tecla para salir” a menos que dicha tecla sea la “e”. EJERCICIOS. 1. Realice un programa que muestre los números pares desde el 100 al 200. 2. Un programa que resuelva la siguiente sucesión: 𝑥 = 𝑛√1 + 𝑛√2 + 𝑛√3 + ⋯ + 𝑛√ 𝑛 3. A los programas anteriores agrégueles un WHILE para solo se terminen si oprimen la tecla “x” VII. Manejo de Caracteres Los textos que escribimos en el computador están conformados por un conjunto de caracteres que pueden ser:  Numéricos  Alfabéticos  Simbólicos En la frase: “Hola Juan21@hotmail.com” se escribieron 23 caracteres, en los que se incluye el espacio, los números, el arroba y el punto. Estos caracteres se encuentran contemplados en la tabla ASCII
  • 25. - 25 - “El código ASCII (acrónimo inglés de American Standard Code for Information Interchange — Código Estadounidense Estándar para el Intercambio de Información), pronunciado generalmente [áski], es un código de caracteres basado en el alfabeto latino tal como se usa en inglés moderno y en otras lenguas occidentales. Fue creado en 1963 por el Comité Estadounidense de Estándares (ASA, conocido desde 1969 como el Instituto Estadounidense de Estándares Nacionales, o ANSI) como una refundición o evolución de los conjuntos de códigos utilizados entonces en telegrafía. Más tarde, en 1967, se incluyeron las minúsculas, y se redefinieron algunos códigos de control para formar el código conocido como US-ASCII. El código ASCII utiliza 7 bits para representar los caracteres”3 Los caracteres numerados desde el 0 al 127 hacen parte de la tabla Ascii básica, y en ella los 32 primero son caracteres NO IMPRIMIBLES esto quiere decir que se usan para el control de la comunicación entre las máquinas, de allí en adelante comienzan los simbólicos, numéricos y alfabéticos. 3 Tomado de es.wikipedia.org
  • 26. - 26 - Los caracteres del 128 al 255 son considerados entre ascii extendido y varían de acuerdo al ordenador y programa utilizado. Una forma de comprobar la tabla ascii en un computador es utilizando cualquier parte de cualquier programa en donde se pueda escribir y utilizar el método abreviado CTRL + valor. Por ejemplo CTRL + 64 dá como resultado @ La primera forma de ver los valores decimales de los caracteres es haciendo conversión de tipos, esta consiste en que una variable de un tipo determinado pueda cambiar a otro diferente. El ejemplo que veremos a continuación consiste en cambiar una variable tipo char, por una tipo int, con el propósito de obtener el valor decimal de un carácter ascii. En el anterior programa al ingresar un carácter, el resultado es el valor decimal ascii correspondiente. El siguiente ejercicio muestra como cambiar un tipo de ascii a otro, por ejemplo una MAYUSCULA a una minúscula.
  • 27. - 27 - Al combinar un ciclo FOR con la conversión de tipos es posible mostrar toda la tabla ascii, teniendo en cuenta que para cada repetición se debe hacer la conversión de tipos y mostrar un mensaje que muestre el valor decimal y el carácter ascii. En el gráfico que sigue se muestra un fragmento de la ventana en la que se observa la tabla del carácter 51=3 hasta 128=Ç, por motivos de gráficos no se observan los demás, pero es obvio que al deslizar la barra a la derecha se puede revirar toda la tabla.
  • 28. - 28 - ARREGLOS Los arreglos son agrupaciones de elementos contenidos en una misma variable, estos se pueden aplicar a cualquier tipo de dato, con el propósito de reducir la cantidad de variables en un programa y facilitar el procesamiento de las mismas. Un ejemplo de la primera utilidad de un arreglo es la siguiente: Int edad0, edad1, edad2, edad3, edad4, edad5, edad6; Crear todas las anteriores variables se puede reducir por lo siguiente: Int edad[6]; Esto quiere decir que se ha creado una variable entera llamada edad que contiene 7 “subvariables”, que simbólicamente se pueden apreciar como una agrupación de partes en un todo: edad edad [0] edad[1] edad [2] edad [3] edad [4] edad [5] edad [6] Veamos una utilidad del uso de esta forma de uso de datos:
  • 29. - 29 - Explicación: El programa determina la cantidad de letras del nombre de una persona, cada caracter del nombre es analizado en un ciclo FOR para determinar si su valor ascii es diferente de cero, esto quiere decir que una persona para este programa se puede llamar RJ45, sin inconveniente alguno. Lo curioso en este programa es las siguiente dos líneas: ¿Por qué colocar el valor decimal cero para cada parte de la variable palabra? “Cuando se crea un arreglo, cada una de las partes puede empezar con cualquier valor.” Esto quiere decir que inicialmente la memoria puede contener información “basura” ó indeseada. palabra # ‘ / * { ~ s û ¢ ▓ g ▀ ╚ Por ello en este programa, antes de ingresar el nombre de la persona, nos aseguramos de que todo el arreglo esta en: palabra 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Un último ejemplo de lo que se puede hacer con un arreglo es un programa que al escribir una palabra, convierta las mayúsculas en minúsculas y viceversa.
  • 30. - 30 - Explicación: El programa analiza cada parte del arreglo es decir cada letra. En este FOR se encuentra un tipo IF y ELSE IF el cual discrimina si la letra está en el rango de mayúsculas y le suma 32 ó si está en minúscula para restarle 32. EJERCICIOS. 1. Realizar un programa que al escribir un número de 0 a 127 muestre el carácter correspondiente ascii. 2. Un programa que el escribir un numero digito del 0 al 9 lo convierta en una letra de la J a la S 3. Un programa que valide una clave secreta siempre y cuando la segunda y cuarta letra sean “x”. 4. Un programa que determine la cantidad de vocales de una palabra.
  • 31. - 31 - VIII. Ejercicios de Aplicación Los ejercicios que a continuación se plantean aquí son diseñados por la Universidad Antonio Nariño para las olimpiadas de programación en educación media vocacional en colegios de Bogotá. NOTA: Si usted desea tener el real ánimo de aprender la lógica abstracta de programación es muy recomendable que lea el enunciado y trate primero por sus propios métodos llegar a la solución del mismo, luego puede comparar su solución con la respuesta, y probablemente llegará a un código diferente pero igual de útil, no se desanime por no lograr resolver algún ejercicio. #1 // TIEMPO PARA RECORRER DADOS DOS VALORES ENTEROS DE ENTRADA UNO SIGNIFICA UNA DISTANCIA A RECORRER EN KILÓMETROS POR HORA Y EL OTRO LA VELOCIDAD PROMEDIO DEL VEHICULO EN EL RECORRIDO, EL PROGRAMA DEBE MOSTRAR EL TIEMPO QUE TARDARÁ EL VEHÍCULO EN LLEGAR, EN EL FORMATO DE HORAS Y MINUTOS hh:mm. SI LA CANTIDAD DE MINUTOS NO ES EXACTA APROXÍMELA. ENTRADA EJEMPLO: 60 40 SALIDA EJEMPLO: 1:30 #2 // PROMEDIO RECIBA COMO ENTRADA TRES NÚMEROS REALES Y QUE DETERMINE SI ALGUNO DE ELLOS ES EL PROMEDIO DE LOS OTROS DOS. SI LA RESPUESTA ES AFIRMATIVA DEBE IMPRIMIR COMO SALIDA EL NÚMERO QUE CUMPLE CON ESTA PROPIEDAD, EN CASO CONTRARIO DEBE REPORTAR “NINGUNO” ENTRADA EJEMPLO: 8.0 7.0 7.5 SALIDA EJEMPLO: 7.5 ENTRADA EJEMPLO: 8.0 10.22 25.15 SALIDA EJEMPLO: NINGUNO #3 // SUMA DE VALORES ABSOLUTOS RECIBA UN NUMERO n (1 ≤ n ≤10) Y A CONTINUACIÓN n NÚMEROS E IMPRIMA LA SUMA DE LOS VALORES ABSOLUTOS DE LOS n NUMEROS. ENTRADA EJEMPLO: 3 -2 3 -4 SALIDA EJEMPLO: 9 #4 // CAMBIO DE TIPOS RECIBA COMO ENTRADA UNA PALABRA Y QUE IMPRIMA EN LA SALIDA LA PALABRA CAMBIANDO LAS LETRAS QUE VIENEN EN MINÚSCULA POR MAYÚSCULA Y LAS MAYÚSCULAS EN MINÚSCULAS. ENTRADA EJEMPLO: aBEcedARio SALIDA EJEMPLO: AbeCEDarIO
  • 32. - 32 - #5 // SEGURIDAD POR VOCAL UNA FORMA MUY SENCILLA AUNQUE INSEGURA DE CODIFICAR UNA PALABRA ES REEMPLAZANDO CADA VOCAL POR LA SIGUIENTE VOCAL EN ORDEN ALFABÉTICO (CIRCULAR), ASÍ LA “A” SE REEMPLAZA POR “E” Y LA “U” SE REEMPLAZA POR “A”. CODIFIQUE UNA PALABRA EN MAYÚSCULAS DADA COMO ENTRADA USANDO EL PROCEDIMIENTO ANTES MOSTRADO ENTRADA EJEMPLO: SEGURIDAD SALIDA EJEMPLO: SIGARODED #6 // PALABRA INVERSA A UNA PALABRA DE ENTRADA, INVERTIRLE CADA UNA DE SUS LETRAS DE LA PRIMERA A LA ÚLTIMA. ENTRADA EJEMPLO: SEGURIDAD SALIDA EJEMPLO: DADIRUGES #7 // PALINDROMO UN PALINDROMO ES UNA PALABRA QUE AL ESCRIBIRLA AL DERECHO Ó AL REVÉS ES IGUAL. HACER UN PROGRAMA QUE INDIQUE SI UNA PALABRA ES Ó NO UN PALINDROMO. ENTRADA EJEMPLO: BOB SALIDA EJEMPLO: SI ES UN PALINDROMO ENTRADA EJEMPLO: SOL SALIDA EJEMPLO: NO ES UN PALINDROMO ENTRADA EJEMPLO: ANITALAVALATINA SALIDA EJEMPLO: SI ES UN PALINDROMO #8 // UNIDADES DE LONGITUD REALICE UN PROGRAMA QUE PERMITA CONVERTIR METROS, PULGADAS, PIES Y YARDAS ENTRE SI. EJEMPLO DE PROGRAMA:
  • 33. - 33 - APENDICE 1 soluciones a ejercicios de aplicación SOLUCIÓN #1 // TIEMPO PARA RECORRER #include <iostream> using namespace std; main() { double distancia,velocidad; int horas; double minutos; cout << "Ingrese la distancia a Recorrer en Km: "; cin >> distancia; cout << "Ingrese la velocidad del vehiculo en Km/h: "; cin >> velocidad; horas=distancia/velocidad;//redondeo las horas por el formato INTEGER minutos=(distancia/velocidad)-horas; //Obtengo solamente los DECIMALES. minutos=minutos*60; //Cambio el formato a minutos reales cout << "El tiempo que tardara es: " << horas << ":" << minutos<<endl; return 0; } SOLUCIÓN #2 // PROMEDIO #include <iostream> using namespace std; main() { double valor1,valor2,valor3; double promedio1,promedio2,promedio3; cout << "Ingrese tres numeros: "; cin >> valor1 >> valor2 >> valor3; promedio1=(valor1+valor2)/2; promedio2=(valor2+valor3)/2; promedio3=(valor1+valor3)/2; if (valor1==promedio2) cout << promedio2; else { if(valor2==promedio3) cout << promedio3; else { if(valor3==promedio1) cout << promedio1; else cout << "NINGUNO"<<endl; } } return 0; }
  • 34. - 34 - SOLUCIÓN #3 // SUMA DE VALORES ABSOLUTOS #include <iostream> using namespace std; int main() { int valor1,valor2,valor3,valor4; cout << "Ingrese los 4 valores: "; cin >> valor1 >> valor2 >> valor3 >> valor4; if (valor2<0) valor2=valor2*-1; if (valor3<0) valor3=valor3*-1; if (valor4<0) valor4=valor4*-1; cout << valor2+valor3+valor4<<endl; return 0; } SOLUCIÓN #4 // CAMBIO DE TIPOS #include <iostream> using namespace std; main() { int i; char palabra[20]; cout << "Ingrese una Palabra: "; cin >> palabra; for (i=0; i < 21; i++) { if ((palabra[i]>96)&&(palabra[i]<123)) //para minusculas palabra[i]=palabra[i]-32; else if ((palabra[i]>64)&&(palabra[i]<91)) //para MAYUSCULAS palabra[i]=palabra[i]+32; } cout << palabra <<endl; return 0; }
  • 35. - 35 - SOLUCIÓN #5 // SEGURIDAD POR VOCAL //solo mayusculas #include <iostream> using namespace std; main() { int i; char palabra[20]; cout << "Ingrese una Palabra: "; cin >> palabra; for (i=0; i < 21; i++) { switch (palabra[i]) { case ('A'): palabra[i]='E'; break; case ('E'): palabra[i]='I'; break; case ('I'): palabra[i]='O'; break; case ('O'): palabra[i]='U'; break; case ('U'): palabra[i]='A'; break; } } cout << palabra <<endl; return 0; }
  • 36. - 36 - SOLUCIÓN #6 // PALABRA INVERSA #include <iostream> using namespace std; main() { int i,cantidad=0; char palabra[20],palabra2[20]; //Iniciar los dos arreglos en cero ó "vacios" for (i=0; i < 21; i++) { palabra[i] =0; palabra2[i] =0; } //El usuario ingresa la palabra a invertir cout << "Ingrese una Palabra: "; cin >> palabra; //Este for con este if determina la cantidad de letras de la palabra for (i=0; i < 21; i++) { if ((palabra[i]>64)&&(palabra[i]<123)) cantidad++; } //Este iguala las palabras for (i=0; i <= cantidad; i++) { palabra2[i]=palabra[i]; } //se intercambian letras int valor; valor = cantidad-1; for (i=0; i < cantidad; i++) { palabra2[valor]=palabra[i]; valor--; } cout<<palabra<<" y "<<palabra2<<endl; return 0; }
  • 37. - 37 - SOLUCIÓN #7 // PALINDROMO #include <iostream> using namespace std; main() { int i,cantidad; char palabra[20],palindromo[20]; //Iniciar los dos arreglos en cero ó "vacios" for (i=0; i < 21; i++) { palabra[i] =0; palindromo[i] =0; } //El usuario ingresa la palalabra cout << "Ingrese una Palabra: "; cin >> palabra; cantidad=0; //Este for con este if determina la cantidad de letras de la palabra for (i=0; i < 21; i++) { if ((palabra[i]>64)&&(palabra[i]<123)) cantidad++; } //Este iguala las palabras for (i=0; i <= cantidad; i++) { palindromo[i]=palabra[i]; } //se intercambian letras int valor; valor=cantidad-1; for (i=0; i < cantidad; i++) { palindromo[valor]=palabra[i]; valor--; } cout<<palabra<<" y "<<palindromo<<endl; //se determina si es palíndromo int ok; ok=0; for (i=0; i < cantidad; i++) { if(palindromo[i]==palabra[i]) ok++; } if (ok==cantidad) cout <<"SI ES UN PALINDROMO"<<endl; else cout <<"NO ES UN PALINDROMO"<<endl; return 0; }
  • 38. - 38 - SOLUCIÓN #8 // UNIDADES DE LONGITUD #include <iostream> using namespace std; main() { char code; double metros,pulgas,pies,yarda; cout<<"UNIDAD CODIGO"<<endl<<endl; cout<<"Metros 1"<<endl; cout<<"Pulgadas 2"<<endl; cout<<"Pies 3"<<endl; cout<<"Yardas 4"<<endl<<endl; cout<<"Ingrese la Codigo de Unidades: "; cin>>code; switch(code) { case '1': cout<<"Ingrese El numero de Metros: "; cin>>metros; pulgas=metros*39.37; pies=metros*3.28; yarda=metros*1.093; cout << metros <<" Metros Equivale a:" << endl<< endl; cout << pulgas <<" Pulgadas" << endl; cout << pies <<" Pies" << endl; cout << yarda <<" Yardas" << endl; break; case '2': cout<<"Ingrese El numero de Pulgadas: "; cin>>pulgas; metros=pulgas*0.0254; pies=pulgas*0.083; yarda=pulgas*0.027; cout << pulgas <<" Pulgadas Equivale a:" << endl<< endl; cout << metros <<" Metros" << endl; cout << pies <<" Pies" << endl; cout << yarda <<" Yardas" << endl; break; case '3': cout<<"Ingrese El numero de Pies: "; cin>>pies; metros=pies*0.3048; pulgas=pies*12; yarda=pies*0.333; cout << pies <<" Pies Equivale a:" << endl<< endl; cout << metros <<" Metros" << endl; cout << pulgas <<" Pulgadas" << endl; cout << yarda <<" Yardas" << endl; break; case '4': cout<<"Ingrese El numero de Yardas: "; cin>>yarda; metros=yarda*0.9144; pulgas=yarda*36; pies=yarda*3; cout << yarda <<" Yardas Equivale a:" << endl<< endl; cout << metros <<" Metros" << endl; cout << pulgas <<" Pulgadas" << endl; cout << pies <<" Pies" << endl; break; default: cout<<"ERROR"<<endl; } return 0; }