2.U1 Algoritmos
2.U1 Algoritmos
2.U1 Algoritmos
“FENÓMENO SOCIOECONÓMICO”
DISEÑO Y ANÁLISIS DE
ALGORITMOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
CONTENIDO
Introducción _______________________________________________________________ 2
Algoritmos básicos y estructuras de control ______________________________________ 2
Estructuras de control selectivas o alternativas: IF ________________________________ 8
Estructuras de control repetitivas: while _______________________________________ 10
Estructuras de control repetitivas: for _________________________________________ 11
Instrucción de selección múltiple, switch _______________________________________ 13
Bibliografía de Referencia ___________________________________________________ 16
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Introducción
En este capítulo introductorio de Diseño y Análisis de Algoritmos se presenta el
concepto de lo que es un algoritmo y la forma en que se trabaja con él, utilizando como
ejemplos bloques de códigos en el lenguaje C. Se introducen los conceptos básicos de
las instrucciones en dicho lenguaje, por lo que no se requiere extenso conocimiento
previo de programación en el mismo.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Las características fundamentales que debe cumplir todo algoritmo según Joyanes
Aguilar son:
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
La línea 2 es una directiva del preprocesador de C++. Las líneas que comienzan con #
son procesadas por el preprocesador antes de que el programa se compile. Esta línea
en particular indica al preprocesador que incluya en el programa el contenido del
encabezado, en este caso las funciones contenidas en la librería estándar iostream.
Este encabezado contiene información que el compilador utiliza cuando compila las
llamadas a las funciones de la biblioteca estándar de entrada/salida, como cout.
La línea 4 forma parte de todos los programas en C++. Los paréntesis que aparecen
después de main indican que main es un bloque de construcción de programas llamado
función. Los programas en C++ contienen una o más funciones, una de las cuales debe
ser main. Todo programa en C++ comienza su ejecución en la función main.
La llave izquierda, { (línea 5), debe iniciar el cuerpo de cada función. Una llave derecha
correspondiente (línea 8), debe finalizar cada función. Este par de llaves y la parte del
programa entre ellas se conocen como bloque. El bloque es una unidad importante del
programa en C++.
La línea 6 indica a la computadora que realice una acción, es decir, que imprima en la
pantalla la cadena de caracteres contenida entre las comillas. En algunas ocasiones a
una cadena se le llama cadena de caracteres, mensaje o literal. La línea completa que
incluye cout, su delimitador, y el punto y coma (;) se conoce como instrucción. Toda
instrucción debe finalizar con un punto y coma (también conocido como terminador de
la instrucción). Cuando la instrucción cout anterior se ejecuta, ésta imprime en la
pantalla el mensaje Bienvenido a C++. En general, los caracteres se imprimen
exactamente como aparecen entre las comillas de la instrucción cout. Observemos
también que al final del ultimo delimitador aparece endl lo que significa salto de línea el
cual es un carácter no imprimible en pantalla o también podríamos haber utilizado la
diagonal invertida (\) que se conoce como carácter de escape, dentro de las comillas,
quedando la instrucción de la siguiente manera cout<<"Bienvenidos a C++ \n”;. Este
indica que se espera que cout haga algo fuera de lo ordinario. Cuando una diagonal
invertida se encuentra dentro de una cadena, el compilador ve el siguiente carácter y lo
combina con la diagonal invertida para formar una secuencia de escape. La secuencia
de escape \n significa nueva línea. Cuando una nueva línea aparece en la salida de la
cadena por medio de cout, esta nueva línea ocasiona que el cursor se posicione al
comienzo de la siguiente línea de la pantalla. En la tabla siguiente aparecen algunas
secuencias de escape comunes. Las dos últimas secuencias de escape de la tabla
pueden parecer extrañas, debido a que la diagonal invertida tiene un significado
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Secuencia Efecto
\n Nueva línea. Coloca el cursor en la siguiente línea de abajo.
\t Tabulación horizontal. Mueve el cursor a la siguiente posición del tabulador.
\a Genera una alerta en el sistema.
\\ Inserta una diagonal invertida \ en una cadena.
\” Inserta unas comillas en una cadena.
La línea 7 return 0; se incluye al final de toda función main. La palabra reservada return
representa a uno de los diversos medios que utilizaremos para salir de una función.
Cuando se utiliza la instrucción return al final de main, como mostramos en este caso,
el valor 0 indica que el programa finalizó exitosamente. A esto se los llama códigos de
salida. Muchas aplicaciones de consola, especialmente en sistemas Linux, devuelven
un número diferente a 0 cuando hay un error – cada número indica un error diferente.
Resulta importante observar que las funciones de la biblioteca estándar como cout y cin
no forman parte del lenguaje de programación C++ en sí. Por ejemplo, el compilador no
puede encontrar errores de escritura en cout o cin. Cuando el compilador compila una
instrucción cout, éste sólo proporciona espacio en el programa objeto para una
“llamada” (call) a la función de biblioteca. Sin embargo, el compilador no sabe en dónde
están las funciones de biblioteca; el enlazador sí lo sabe. Cuando se ejecuta el
enlazador, éste localiza las funciones de biblioteca e inserta las llamadas apropiadas
para dichas funciones en el programa objeto. Ahora el programa objeto está “completo”
y listo para ejecutarse. De hecho, al programa enlazado con frecuencia se le conoce
como ejecutable. Si el nombre de la función está mal escrito, es el enlazador quien
detectará el error.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Ahora intentemos realizar una entrada a un programa en C++. Para esto hacemos uso
de la función cin para obtener números y sumarlos:
En C++, existen otros tipos de datos además de int, como el float y el char, que son los
más utilizados. En C++, el nombre de una variable es cualquier identificador válido.
Puede ser letras, dígitos y guiones bajos, pero no puede comenzar con un dígito. Un
identificador puede tener cualquier longitud, sin embargo, los compiladores de C++ sólo
requieren reconocer los primeros 31 caracteres, de acuerdo con el ANSI C estándar.
C++ es sensible a mayúsculas y minúsculas, de tal forma que a1 y A1 son
identificadores distintos.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Cuando la computadora ejecuta la función cin anterior, ésta espera a que el usuario
introduzca un valor para la variable entera numero1. El usuario responde escribiendo
un entero y después oprimiendo la tecla Enter, para enviar el número a la computadora.
Después, la computadora asigna este número, o valor, a la variable entero1. Cualquier
referencia posterior a entero1 en el programa utilizará este mismo valor. Las funciones
cout y cin facilitan la interacción entre el usuario y la computadora. Debido a que esta
interacción parece un diálogo, con frecuencia se le llama computación conversacional
o computación interactiva.
La tabla siguiente muestra los operadores binarios disponibles para aritmética básica:
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Módulo o resto de una división
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
...imprime Aprobado si la calificación del estudiante es mayor o igual que 60, e imprime
Reprobado si la calificación del estudiante es menor que 60. En cualquiera de los casos,
después de que ocurre la impresión, se ejecuta la siguiente instrucción del
pseudocódigo.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Si la variable calificación es mayor o igual que 90, las primeras cuatro condiciones serán
verdaderas, pero sólo se ejecutará la instrucción cout después de la primera condición.
Después de la ejecución del cout de la letra A se ignora la parte else, ya que fue
verdadera la condición. De esta forma, todo el resto de la expresión ya no se evalúa. Si
la calificación fuera 85, se ejecutaría el primer else para llegar a if >= 80, y aquí se
procederá al cout correspondiente.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
if ( calificacion >= 60 )
cout<<“Aprobado\n”;
else {
cout<<”Reprobado”<<endl;
cout<<“Usted deberá tomar nuevamente el curso”<<endl;
}
En este caso, si calificación es menor que 60, el programa ejecuta las dos instrucciones
que aparecen en la función cout en el cuerpo del else e imprime Reprobado. Usted
deberá tomar nuevamente el curso. Observemos las llaves que envuelven a las dos
instrucciones de la cláusula else. Estas llaves son importantes – sin ellas, la instrucción
cout ( “Usted deberá tomar nuevamente el curso.” ); estaría afuera del cuerpo de la
parte else del if, y se ejecutaría siempre sin importar qué calificación tenemos.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Una instrucción for nos permite realizar la inicialización del valor, el incremento del
mismo y la evaluación de la condición en una sola instrucción de bloque, de la siguiente
manera:
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
El usuario introduce las calificaciones por medio del teclado. Cuando oprime la tecla
Enter, la función getchar lee los caracteres, uno a uno. Si el carácter introducido no es
EOF, se introduce la instrucción switch (línea 13). La palabra reservada switch es
seguida por el nombre de la variable calificación, la cual se encuentra entre paréntesis.
A ésta se le llama expresión de control. El valor de esta expresión se compara con cada
una de las etiquetas case. Suponga que el usuario introdujo la letra C++ como
calificación. De manera automática, C++ se compara con cada case del switch. Si se
da una coincidencia (case ‘C’ :), las instrucciones para ese case se ejecutan. En el caso
de la letra (C o c) Contador se incrementa en 1, y se sale inmediatamente de la
instrucción switch por medio de la instrucción break. La instrucción break ocasiona que
el control del programa proceda con la primera instrucción después de switch. La
instrucción break se utiliza debido a que, de lo contrario, los cases de la instrucción
switch se ejecutarían juntos. Si no se utiliza break en algún lugar de la instrucción switch,
entonces cada vez que ocurra una coincidencia, las instrucciones de los cases restantes
se ejecutarán. Si no ocurre coincidencia alguna, el caso default se ejecuta, y se
despliega un mensaje de error. Cada case puede tener una o más acciones. La
instrucción switch es diferente de todas las demás instrucciones de control, en que
switch no necesita llaves alrededor de múltiples acciones case, ya que el break se usa
para delimitar.
GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS
UNIDAD I
Bibliografía de Referencia
Deitel, H. M., & Deitel, P. J. (2004). Cómo programar en C, C++ y Java (Cuarta
ed.). (J. García Pérez, Trad.) Pearson Educación.
GUIA DE CONCEPTOS