2.U1 Algoritmos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

UNIDAD I

“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.

Algoritmos básicos y estructuras de control


Un algoritmo es la manera lógica y ordenada para alcanzar la solución de un problema
y es utilizado en diferentes áreas. Dependiendo de la complejidad del problema
podemos aplicar algoritmos básicos o complejos utilizando diversas formas como el
lenguaje natural, diagramas de flujo o pseudocódigo.

Para llegar a la resolución de un problema es necesario el diseño previo de un


algoritmo, de modo que sin algoritmo no puede existir un programa. Los
algoritmos son independientes tanto del lenguaje de programación en que se
expresan como de la computadora que los ejecuta. En cada problema el
algoritmo se puede expresar en un lenguaje diferente de programación y
ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre
el mismo. Así, por ejemplo, en una analogía con la vida diaria, la receta de un
plato de cocina se puede expresar en español, inglés o francés, pero cualquiera
que sea el lenguaje, los pasos para la elaboración, del mismo se realizarán sin
importar el idioma del cocinero.

En la ciencia de la computación y en la programación, los algoritmos son más


importantes que los lenguajes de programación o las computadoras. Un lenguaje de
programación es tan sólo un medio para expresar un algoritmo y una
computadora es sólo un procesador para ejecutarlo. Tanto el lenguaje de
programación como la computadora son los medios para obtener un fin; conseguir
que el algoritmo se ejecute y se efectúe el proceso correspondiente. Dada la
importancia del algoritmo en la ciencia de la computación, un aspecto importante será
el diseño de algoritmos.

Joyanes Aguilar (en su obra Algoritmos y Estructuras de Datos: Una Perspectiva en C,


2005) enfatiza que “El diseño de la mayoría de los algoritmos requiere creatividad y
conocimientos profundos de la técnica de programación. En
esencia, la solución de un problema se puede expresar mediante un algoritmo.”

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:

→ Precisión: Un algoritmo debe ser preciso e indicar el orden de realización de cada


paso.

→ Definición: Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces,


se debe obtener el mismo resultado cada vez.

→ Finito: Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en


algún momento; o sea, debe tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.


Por ejemplo, en el cálculo de la edad de una persona, conociendo su año de nacimiento,
la definición del algoritmo, quedaría de la siguiente manera: Entrada: la edad de la
persona, información del año de nacimiento y el actual. Proceso: realizar la diferencia
del año actual menos el año de nacimiento. Salida: visualización del resultado generado.
Es decir, el resultado es la edad.

La fase de resolución de un problema es el análisis de algoritmos, donde se estudia con


detenimiento el problema para lograr un mayor entendimiento sobre lo que se solicita y
determinar los datos necesarios para conseguirlos.

Para la fase de implementación se puede utilizar diferentes métodos, el más utilizado


es el pseudocódigo; debido a su sencillez y estructura que permite la fácil aplicación a
un lenguaje de programación.

En este módulo, se utilizara el lenguaje C++ ya que facilita un método estructurado y


disciplinado para el diseño de programas. Comencemos considerando un programa
sencillo en C++. Nuestro primer ejemplo imprime una línea de texto. Aun, cuando
este programa es sencillo, ilustra muchas características importantes del lenguaje C++.
Ahora consideremos con detalle cada línea del programa. La líneas 1 comienzan con /*
y terminan con */, lo que indica que esta línea es un comentario. Los programadores
insertan comentarios para documentar los programas y para mejorar su legibilidad. Los
comentarios no provocan que la computadora realice acción alguna durante la ejecución
del programa. El compilador de C++ ignora todo lo que esté dentro de los comentarios,
por lo que no influye en el tiempo de ejecución o memoria usada por el programa
realizado.

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

Figura 1 – Programa que muestra un mensaje por consola

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

especial en una cadena, es decir, que el compilador la reconoce como un carácter de


escape, utilizamos dos diagonales invertidas para colocar una sola diagonal invertida
en una cadena. Imprimir comillas también representa un problema, ya que dichas
comillas marcan el límite de una cadena; de hecho, estas comillas no se imprimen.

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.

La llave derecha } línea 8, indica el final de la función main.

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:

Figura 2 - Programa que suma dos números

El comentario de la líneas 1 establece el propósito del programa. Como dijimos antes,


todo programa comienza su ejecución en main. La llave izquierda, { de la línea 5 marca
el comienzo del cuerpo de main, y la llave derecha correspondiente, } de la línea 17
marca el fin. La línea 7 representa la declaración de las variables de tipo entero
numero1, numero2 y suma que representan los nombres de las variables.

Una variable es un sitio de la memoria de la computadora en donde se puede almacenar


un valor para que lo utilice un programa. Esta definición especifica que las variables
numero1, numero2 y suma son de tipo int, lo cual significa que estas variables
almacenan valores enteros. Todas las variables deben declararse mediante un nombre
y un tipo de dato inmediatamente después de la llave izquierda que comienza el cuerpo
de main, o antes de que puedan utilizarse en un programa.

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.

La declaración de variables debe colocarse después de la llave izquierda de una función


y antes de cualquier instrucción ejecutable. Por ejemplo, en el programa de suma,
insertar las declaraciones después del primer cin ocasionaría un error de sintaxis.
Sucede un error de sintaxis cuando el compilador no puede reconocer una instrucción.
El compilador por lo general envía un mensaje de error para ayudar al programador a

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

localizar y a arreglar la instrucción incorrecta. A estos errores también se les conoce


como errores de compilación, o errores en tiempo de compilación.

La siguiente instrucción, indicada en la línea 9 cin>>numero1; se utiliza para obtener


un valor por parte del usuario. La función cin toma la información de entrada desde la
entrada estándar que, por lo general, es el teclado. Esta función cin tiene dos
argumentos, >> el delimitador, luego el nombre de la variable y finalmente como
cualquier instrucción en C++ termina con el ;

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 instrucción de asignación de la línea 13 suma = numero1 + numero2; calcula la


suma de las variables numero1 y numero2 y asigna el resultado a la variable suma
mediante el operador de asignación =. La instrucción se lee como, “suma es igual al
valor de numero1 + numero2. La mayoría de los cálculos se realizan en instrucciones
de asignación. El operador = y el operador + se conocen como operadores binarios, ya
que cada uno de ellos tiene dos operandos. En el caso del operador +, los dos
operandos son numero1 y numero2. En el caso del operador =, los dos operandos son
suma y el valor de la expresión numero1 + numero2.

La línea 15 cout<<"La suma es \n"<<suma; llama a la función cout para que


despliegue en la pantalla las palabras “La suma es”, seguidas del valor numérico de la
variable suma. Esta función tiene dos argumentos, primer argumento es la cadena de
caracteres que se imprime como figura después del delimitador, y un especificador de
precisión que representa a un salto de línea \n. El segundo argumento que aparee
después del segundo delimitador especifica el valor que se imprimirá. Los cálculos
también pueden realizarse en instrucciones cout.

En lugar de especificar una variable suma y almacenar el resultado en ella, directamente


podemos combinar las dos instrucciones anteriores en la instrucción cout<<"La suma
es \n"<<numero1 + numero2;

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

Estructuras de control selectivas o


alternativas: IF
En los programas anteriores, toda la ejecución se realizó en forma lineal, en la cual
todas las líneas se ejecutan por orden sin saltarse ninguna (excepto los comentarios).
En el desarrollo de algoritmos se hacen uso de distintos tipos de estructuras de control
diseñadas para alterar el flujo de un programa o el resultado que se presentará. La
primera de dichas estructuras a analizar es el SI, llamado if en C++. La instrucción de
selección if realiza una acción indicada, sólo cuando la condición es verdadera; de lo
contrario, se ignora dicha acción. La instrucción de selección if...else permite al
programador especificar que se realizarán acciones diferentes cuando la condición sea
verdadera y cuando la condición sea falsa. Por ejemplo, la instrucción en pseudocódigo:

if calificación del estudiante >= 60


Imprimir “Aprobado”
else
Imprimir “Reprobado”

...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.

La instrucción if...else del pseudocódigo anterior se puede escribir en C++ como:

Figura 3 - Condicional Doble

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

Las instrucciones if...else anidadas evalúan múltiples casos al colocar instrucciones


if...else dentro de otras instrucciones if...else. Por ejemplo, la instrucción siguiente en
pseudocódigo imprime una letra diferente para cada grado de calificación:

if calificación del estudiante >= 90


Imprime “A”
else if calificación del estudiante es >= 80
Imprime “B”
else if calificación del estudiante es >= 70
Imprime “C”
else if calificación del estudiante es >= 60
Imprime “D”
else
Imprime “F”

Dicho pseudocódigo lo expresamos en C++ como:

Figura 4 - Condicional Múltiple

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.

La instrucción de selección if permite omitir las llaves de apertura y cierre { … } en el


caso de que exista sólo una instrucción dentro del cuerpo. Para incluir varias
instrucciones dentro del cuerpo de un if, encerramos las instrucciones dentro de llaves

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

{ y }. A un conjunto de instrucciones contenidas dentro de un par de llaves se le llama


instrucción compuesta o bloque.
El ejemplo siguiente incluye una instrucción compuesta:

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.

Solamente en el caso de haber una instrucción singular dentro del bloque de un if o un


else podemos prescindir de las llaves. Con cualquier número superior de instrucciones
es requerido usarlas.

Estructuras de control repetitivas: while


Una instrucción de repetición permite al programador especificar que una acción se va
a repetir mientras una condición sea verdadera, deteniéndose una vez que ya no lo sea.
La instrucción en pseudocódigo:
Estructura del ciclo While
While (condición)
…Instrucción/es a ejecutar
Pseudocódigo
while (existan más elementos en mi lista de compras?)
Compra el siguiente elemento y márcalo en mi lista

Describe la repetición que ocurre durante un proceso de compras. La condición “existan


más elementos en mi lista de compras” puede ser falsa o verdadera. Si es verdadera,
entonces se realiza la acción “Compra el siguiente elemento y márcalo en mi lista”. Esta
acción se llevará a cabo de manera repetida mientras la condición sea verdadera. La(s)
instrucción(es) contenida(s) dentro de la instrucción de repetición while constituyen el
cuerpo de la instrucción. El cuerpo de la instrucción while puede ser una sola instrucción
o una instrucción compuesta. En algún momento, la condición será falsa (cuando el
último elemento se compre y se marque en la lista). En este punto, termina la repetición
y así dicho bloque, y se ejecuta la siguiente instrucción en pseudocódigo después de la
estructura de repetición.

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

Debemos prestar atención a la hora de usar la repetición – en algún momento la


condición debe ser falsa para poder salir de ella, si usamos una expresión que nunca
se vuelva falsa entraremos en lo que se conoce como ciclo infinito o infinite loop en el
cual el programa se atascará en el bloque while.

Como ejemplo de un while, consideremos un segmento de programa diseñado para


encontrar la primera potencia de 2 que sea mayor que 1000. Supongamos que la
variable entera producto se inicializa en 2. Cuando finaliza la ejecución de la siguiente
instrucción de repetición while, producto contendrá la respuesta deseada:

Figura 5 - Estructura Cíclica – Uso del while

Este programa iniciará con el valor 2 y lo multiplicará por 2, obteniendo 4. En la siguiente


vuelta este 4 se multiplicará de nuevo por 2, obteniendo 8. Así avanzará el programa
hasta llegar a 512 * 2, lo cual da 1024, y en la siguiente vuelta la condición del while
retornará falso, terminando el bloque. Así producto termina con 1024 como valor.

Estructuras de control repetitivas: for


Otra instrucción repetitiva es el for (llamado normalmente desde en español). En un
bloque for, se ejecuta la repetición controlada por un contador. Si realizáramos una
repetición controlada por contador manualmente sin usar for, requerimos lo siguiente:

1. Declarar una variable de control (o contador de ciclo).


2. Inicializar el valor inicial de la variable de control.
3. Realizar un incremento (o decremento) mediante el cual se modifica la variable
de control cada vez que se repite el ciclo.
4. Evaluar la condición que evalúa el valor final de la variable de control (es decir,
si el ciclo debe continuar).

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:

Figura 6 - Estructura cíclica Uso del for

Figura 7 - Salida del programa con for

Cuando la instrucción for comienza a ejecutarse, la variable de control previamente


declarada, contador, se inicializa en 1. Después, se evalúa la condición de continuación
de ciclo, contador <= 10. Debido a que el valor inicial de contador es 1, la condición se
satisface, por lo que la instrucción cout (línea 10) imprime el valor de contador, es decir,
1. En seguida, la variable de control contador se incrementa por medio de la expresión
contador++, y el ciclo comienza nuevamente con la evaluación de la condición de
continuación de ciclo. Ya que ahora la variable de control es igual a 2, el valor final no
es excedido, por lo que el programa ejecuta nuevamente la instrucción cout. Este
proceso continúa hasta que la variable de control, contador, se incrementa a su valor
final 11; esto ocasiona que la evaluación de la condición de continuación de ciclo resulte
falsa, y la repetición termina. El programa continúa con la ejecución de la primera
instrucción posterior a for (en este caso, la instrucción return que se encuentra al final
del programa). Observemos que dicha instrucción for “lo hace todo”; especifica cada
uno de los elementos necesarios para la repetición controlada por contador con una
variable de control. Si hay más de una instrucción en el cuerpo de for, es necesario
utilizar llaves para definir el cuerpo del ciclo, igual que en un if o else. Observemos
también que se utiliza la condición de continuación de ciclo, contador <= 10. Si el

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

programador escribió incorrectamente contador < 10, entonces el ciclo se ejecutaría


sólo 9 veces en lugar de las diez esperadas. Éste es un error común de lógica llamado
error de desplazamiento en uno. A la hora de evaluar números es importante diferenciar
entre usar un <, <=, > o >=.

La expresión de aumento contador++ aumenta el valor por uno por defecto. Si


deseamos restar uno usamos contador--, y si deseamos hacer cambios por valores
diferentes a uno, podemos usar la expresión contador+2, por ejemplo, para sumar de a
dos, contador-2 para restar de a dos.

Instrucción de selección múltiple, switch


En ocasiones, un algoritmo contiene series de decisiones en las que se evalúan una
variable o expresión de manera separada para cada uno de los valores integrales
constantes que puede asumir, y se llevan a cabo diferentes acciones. A esto se le llama
selección múltiple. C++ proporciona la instrucción de selección múltiple switch, para
manejar la toma de decisiones. La instrucción switch consiste en una serie de etiquetas
case y un caso opcional default. El siguiente ejemplo utiliza la instrucción switch para
contar el número de cada letra (calificación) diferente que obtuvieron los estudiantes en
un examen:

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

Figura 8 - Uso de la Estructura Switch

En el programa, el usuario introduce las calificaciones de un grupo, expresadas con


letras. En el encabezado while (línea 11), while ( ( calificacion = getchar( ) ) != EOF )
la asignación que se encuentra entre paréntesis, ( calificacion = getchar( ) ), se ejecuta
primero. La función getchar (de la biblioteca estándar de entrada/salida) lee un carácter
introducido desde el teclado y lo almacena en la variable entera calificación. En general,
los caracteres se almacenan en variables de tipo char. Sin embargo, una característica
importante de C++ es que los caracteres pueden almacenarse en cualquier tipo de dato
entero, ya que por lo general, en la computadora se representan como enteros de un
byte. Por lo tanto, podemos tratar un carácter como entero o como carácter, de acuerdo
con su uso.

En el programa, el valor de la asignación calificacion=getchar( ) se compara con el valor


de EOF (un símbolo cuyo acrónimo significa “fin de archivo”, end of file). Nosotros
utilizamos EOF (que normalmente tiene el valor -1) como el valor centinela. El usuario
escribe una combinación de teclas que dependen del sistema para indicar “fin de
archivo”; es decir, “No tengo más datos a introducir”. EOF es una constante entera

GUIA DE CONCEPTOS
DISEÑO Y ANÁLISIS DE ALGORITMOS

UNIDAD I

simbólica definida en el encabezado <stdio.h> Si el valor asignado a calificacion es igual


que EOF, el programa termina. En este programa, elegimos representar los caracteres
como int, ya que EOF tiene un valor entero (en este caso, -1).

Para introducir un EOF, el caso varía según el sistema operativo. En sistemas


UNIX/Linux se usa la combinación Enter, Ctrl+d en una terminal, mientras en consolas
de Windows se usa Ctrl+z.

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.

 Joyanes Aguilar, L. (2005). Algoritmos y Estructuras de Datos: Una Perspectiva


En C (Segunda ed.). McGraw-Hill.

 Pressman, R. (1999). Ingeniería del Software: Un enfoque práctico (Sexta ed.).


McGraw-Hill.

GUIA DE CONCEPTOS

También podría gustarte