Software">
Nothing Special   »   [go: up one dir, main page]

Algoritmos y Lenguajes de Programacion

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

 INTRODUCCIÓN A LA

COMPUTACIÓN Y
HOJA DE CÁLCULO.

 DESARROLLO DE
LÓGICA
ALGORÍTMICA.

 INTRODUCCIÓN A LA
PROGRAMACIÓN DE
UN LENGUAJE
ESTRUCTURADO.

 ESTRUCTURAS
ALGORITMOS Y LENGUAJES SELECTIVAS Y DE
REPETICIÓN.
DE PROGRAMACIÓN.
..
La asignatura de Algoritmos y Lenguajes de Programación aporta al  ARREGLOS Y
perfil
() del egresado, los conocimientos, habilidades, Metodologías, ARCHIVOS.
así como capacidades de análisis y síntesis, para resolver problemas
numéricos en hojas de cálculo y lenguajes de programación
pertinentes a las áreas de producción y toma de decisiones.  FUNCIONES.

TECNOLÓGICO DE
ESTUDIOS
SUPERIORES DE
JOCOTITLÁN
Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”
UNIDAD I

INTRODUCCIÓN A LA COMPUTACIÓN
Y HOJA DE CÁLCULO.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 2

1.2. SISTEMAS OPERATIVOS.

Definición de Sistema

Del latín systema, un sistema es módulo ordenado de elementos que se encuentran


interrelacionados y que interactúan entre sí. El concepto se utiliza tanto para definir a un
conjunto de conceptos como a objetos reales dotados de organización.

Elementos de un sistema.

Entra y Salida: Representa la alimentación de y resultados obtenidos del sistema.


Componente: Es cada elemento que interactúa con los demás componentes para el
procesamiento conjunto del sistema.
Subsistema: Es un sistema simple con una objetivo en específico dentro de un sistema
más complejo.
Límites: Se establece por los alcance del sistema, es decir, los elementos involucrados
determinan los alcances del sistema con respecto al ambiente.
Ambiente: Representa el lugar, situación o circunstancias donde el sistema se
desenvuelve.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 3

Definición de Sistema Operativos (S.O.)


 Conjunto de instrucciones lógicas que administran subprogramas, aplicaciones y
hardware de un equipo de cómputo.
 Es un programa o conjunto de programas.
 Estos programas trabajan juntos para lograr ciertos objetivos.
 Se encarga de gestionar ciertos recursos:
- Entrada/salida.
- Tratamiento de la información
- Almacenamiento masivo
 Actúa de intermediario entre el hardware y los programas de aplicación.

Tipos de Sistemas Operativos

Los sistemas operativos controlan la relación de las señales de entrada para obtener
siempre las mismas señales de salida, y con esto, obtener siempre los mismos resultados.

Los sistemas operativos se dividen en gráficos y de texto. Los primeros sistemas tenían una
interfaz de tipo texto, en la cual la pantalla solamente mostraba caracteres de texto. Los
principales sistemas operativos de tipo texto fueron el IBM-DOS, MS-DOS, AMIGA,
Commodore.

Los sistemas operativos gráficos permiten una operación más eficiente del dispositivo que
lo usa, y el cual es accesible mediante un dispositivo apuntador (mouse o touch pad) o
mediante sistemas táctiles. Los primeros sistemas de este tipo fueron Mac OS y Windows.

Los sistemas operativos Mixtos combinan las funciones GUI (Graphic User Interfase, Interfaz
gráfica de usuario) y de texto. El sistema que representa esta modalidad es Linux.

Todos los sistemas operativos permiten al usuario utilizar una serie de instrucciones
programadas (programas o software) para obtener un nuevo proceso de instrucciones o
lograr un resultado físico, en alguno de los elementos periféricos de hardware.

Es el encargado de administrar los recursos dentro del sistema, tales como la memoria, o la
disponibilidad de procesamiento durante las distintas operaciones que realiza el procesador
de la computadora.

Los sistemas operativos tienen la característica de ser progresivos en su evolución para


mejorar y adaptarse a las nuevas necesidades y situaciones, (mejor hardware, correcciones
del sistema, actualizaciones, etc.).

La mayoría de los sistemas operativos que existen en el mercado, son sistemas a los que se
denominan de propietario y son aquellos que para su uso requieren el pago de una licencia

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 4

o permiso del propietario, y no se permite hacer modificaciones al mismo por estar


protegido por derechos de autor.

El sistema operativo que es de libre distribución y modificable es el sistema Linux. Existen


muchas variantes de este sistema llamadas distribuciones, las cuales conservan las
características de ser de libre distribución y de código abierto: OpenSUSE, Debian,
Guadalinex, Ulteo, Ubuntu, Kubuntu, Edubuntu, NewSense, Yoper, Vida Linux, Red Hat,
NimbleX, etc.

1.3. ELEMENTOS DE EXCEL.

Conceptos generales.

Excel: Es una aplicación para crear hojas de cálculo que está divida en filas y columnas, al
cruce de estas se le denomina celdas sobre las cuales se almacena información (letras o
números) que podemos usar para realizar operaciones, tales como sumas, restas,
multiplicaciones, divisiones, cálculos financieros, estadísticos, de ingeniería, amortizaciones,
etc.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 5

1. Barra de título: Muestra el nombre del libro y el nombre de la aplicación en este


caso Microsoft Excel, por ejemplo cuando se inicia Excel el nombre es Libro1.
2. Filas: cada uno de los espacios horizontales en los que se divide una hoja de cálculo.
Se identifica con números.
3. Columnas: cada uno de los espacios verticales en los que se divide una hoja de
cálculo. Se identifica con letras.
4. Etiquetas de hojas: cada libro de Excel 2010 presenta tres hojas de cálculo. Cada
hoja se identifica con una etiqueta que, de forma predeterminada, recibe el nombre
de Hoja1, Hoja2 y Hoja3, respectivamente, aunque podemos modificar estos
nombres, así como agregar o eliminar hojas.
5. Barras de desplazamiento: Permite moverse dentro de la hoja de cálculo.
6. Celda activa: Es la celda seleccionada. Cada celda representa una posición específica
dentro de la hoja de cálculo que indica la intersección entre una columna y una fila.
La celda activa se identifica porque cuando está seleccionada se muestra con un
recuadro doble.
7. Vistas del libro: Hay varias maneras diferentes de ver las hojas de trabajo en Excel.
Cada una de ellas lo ayuda a trabajar en distintas situaciones. Tres se encuentran
en el menú Ver. Dos están en el menú Ventana y una más en el menú Archivo.
8. Herramientas Zoom: Sirve para aumentas o disminuir el tamaño de lo que se ve en
la pantalla.
9. Barra de fórmulas: muestra el contenido de la celda activa. Si el contenido de esa
celda se obtuvo a partir de una fórmula, muestra la fórmula. Desde aquí también
podemos escribir y editar fórmulas y funciones.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 6

10. Cinta de opciones: La cinta de opciones se ha diseñado para ayudarle a encontrar


fácilmente los comandos necesarios para completar una tarea. Los comandos se
organizan en grupos lógicos, que se reúnen en fichas. Cada ficha está relacionada
con un tipo de actividad (como escribir o diseñar una página). Para reducir la
confusión, algunas fichas sólo se muestran cuando es necesario.
11. Cuadro de nombres: muestra la referencia a la celda activa, como por ejemplo, A1.
Desde aquí también podemos asignar nombres personalizados para identificar las
diferentes celdas con las que estemos trabajando.
12. Selector: Si hacemos clic con el mouse aquí, se seleccionará la hoja de cálculo en su
totalidad, es decir, completa.

¿Qué es un rango?

Rango: Se refiere a la selección de un grupo de celdas.


Rango continúo: Selección de celda adyacentes, ejemplo; C2:K25.
Rango aleatorio: Selección de celda sin tener un orden definitivo, ejemplo; C2, J25, D4,
H100, F59.

Formatos de número disponibles

Al aplicar diferentes formatos de número, puede cambiar la apariencia de un número sin


modificarlo. El formato de número no afecta el valor real de la celda que usa Excel para
realizar los cálculos. El valor real se muestra en la barra de fórmulas.

Barra de fórmulas y celda relacionada

En la siguiente tabla se muestra un resumen de los formatos de número que están


disponibles en el grupo Número de la pestaña Inicio. Para ver todos los formatos de
número disponibles, haga clic en el Selector de cuadro de diálogo situado junto a Número.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 7

Formato Descripción
General Formato de número predeterminado que Excel aplica cuando se escribe
un número. La mayor parte de los números a los que se aplica el formato
con la opción General se muestran tal y como se escriben. No obstante,
si la celda no es lo suficientemente ancha para mostrar todo el número,
el formato General redondea los números con decimales. El
formato General también usa la notación científica (exponencial) para
los números grandes (12 o más dígitos).
Número Se usa para la presentación de números en general. Se puede especificar
el número de posiciones decimales que se va a usar, el uso de un
separador de miles y el modo en que se muestran los números
negativos.
Moneda Se usa con los valores monetarios y muestra el símbolo de moneda
predeterminado junto a los números. Se puede especificar el número de
posiciones decimales que se va a usar, el uso de un separador de miles y
el modo en que se muestran los números negativos.
Contabilidad Este formato también se usa para valores monetarios, pero alinea los
símbolos de moneda y las comas decimales en una columna.
Fecha Muestra los números de serie que representan fechas y horas como
valores de fecha, según el tipo y la configuración regional (ubicación)
especificados. Los formatos de fecha que comienzan con un asterisco (*)
responden a cambios de la configuración regional de fecha y hora, que
se especifican en el Panel de control. Los formatos sin asterisco no se
ven afectados por la configuración del Panel de control.
Hora Muestra los números de serie que representan fechas y horas como
valores de hora, según el tipo y la configuración regional (ubicación)
especificados. Los formatos de hora que comienzan con un asterisco (*)
responden a cambios de la configuración regional de fecha y hora, que
se especifica en el Panel de control. Los formatos sin asterisco no se ven
afectados por la configuración del Panel de control.
Porcentaje Multiplica el valor de la celda por 100 y muestra el resultado con un
símbolo de porcentaje (%). Puede especificar el número de posiciones
decimales que desea usar.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 8

Formato Descripción
Fracción Muestra un número como fracción, según el tipo de fracción que se
especifique.
Científico Muestra un número en notación exponencial, en el que se reemplaza
parte del número por E+n, donde E (exponente) multiplica el número
anterior por 10 elevado a n. Por ejemplo, un formato Científico de 2
decimales muestra 12345678901 como 1,23E+10; 1,23 se multiplica por
10 elevado a la décima potencia. Se puede especificar el número de
posiciones decimales que se desea usar.
Texto Este formato trata el contenido de una celda como texto y lo muestra tal
como se escribe, incluso si se escriben números.
Especial Muestra un número como un código postal, un número de teléfono o un
número de seguridad social.
Personalizado Permite modificar una copia de un código de formato de número
existente. Use este formato para crear un formato personalizado que se
agregue a la lista de códigos de formato de número. Se pueden agregar
entre 200 y 250 formatos de número personalizados, según la versión
de idioma de Excel que esté instalada en su equipo.

1.4. FÓRMULAS Y FUNCIONES.

Para introducir cualquier fórmula o función siempre debemos comenzar por el signo = de
manera que Excel pueda identificar que los datos introducidos no son textos o datos
numéricos.

Formula =(c5+f6+b1+a3)^(1/2)

Función= Raiz(c5+f6+b1+a3)

Las funciones son herramientas especiales que efectúan cálculos de diversa complejidad en
un solo paso. Excel contiene funciones especializadas en cálculos matemáticos, financieros,
funciones lógicas, etc.

Las fórmulas en Excel son expresiones que se utilizan para realizar cálculos o procesamiento
de valores, produciendo un nuevo valor que será asignado a la celda en la cual se introduce
dicha fórmula. En una fórmula, por lo general, intervienen valores que se encuentran en
una o más celdas de un libro de trabajo.

La utilización de las funciones, además de simplificar el desarrollo de modelos sobre hojas


de cálculo, permite efectuar dichos cálculos sin conocer el procedimiento matemático, por

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 9

ejemplo, podemos calcular el VAN (Valor Actual Neto) de una inversión aunque no
recordemos la fórmula, simplemente utilizando la función correspondiente.

Elementos de las funciones en Excel:

Nombre: Es un término descriptivo abreviado, tal como SUMA, PROMEDIO, VNA, etc.
Argumentos: Son los datos que necesita la función para operar correctamente. Por ejemplo,
la función SUMA tendrá como argumentos el rango de valores a sumar, en la función que
calcula el VAN de una inversión, los argumentos serán el tipo de interés o coste de capital,
así como el rango de los rendimientos obtenidos. Los argumentos se sitúan entre paréntesis
y van separados por "punto y coma"(;).

Las funciones pueden introducirse

Escribiéndola directamente sobre la celda (si conocemos su sintaxis y los argumentos a


ingresar)
Desde la barra de fórmulas, presionando (fx) para insertar función.
Desde la ficha Fórmulas en el fragmento Biblioteca de funciones, presionando el botón
Insertar función.
Las indicaciones para escribir una fórmula son:

Siempre comience a escribir con un signo de igual delante.


En una fórmula puede haber uno o más operadores (aritméticos, de comparación, etc.).
Toda fórmula necesita por menos dos valores combinados con operadores, para realizar
una comparación y en base a eso realizar la comparación.
Todos los valores de texto que deba devolver una fórmula como resultado deberán ir entre
comillas.
Los nombres de las funciones nunca llevan acentuación ni espacios.
El nombre de la función puede estar escrito en mayúsculas o minúsculas, indistintamente.
Los argumentos o valores que contiene una función siempre van entre paréntesis.
Los argumentos se deberán separar con punto y coma.

1.5. MACROS.

Las macros de Excel nos permiten automatizar tareas que realizamos cotidianamente de
manera que podamos ser más eficientes en nuestro trabajo. Una macro no es más que una
serie de comandos o instrucciones que permanecen almacenados dentro de Excel y que
podemos ejecutar cuando sea necesario y cuantas veces lo deseemos.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD I: Introducción a la computación y hoja de cálculo. 10

GRABAR UNA MACRO


Grabar una Macro en Excel es un proceso especialmente sencillo. Para ello, sólo tendrás
que seguir estos pasos:

 En el grupo Código en la pestaña Programador, haz click en Grabar macro. Después,


dar Aceptar para comenzar a grabar.

 Realiza algunas acciones en la hoja de cálculo como, por ejemplo, escribir algún texto,
seleccionar algunas columnas o filas o rellenar con algunos datos. En definitiva, deja
volar tu imaginación.

 Cuando hayas terminado, en el grupo Código en la pestaña Programador,


pulsa en Detener grabación.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II

DESARROLLO DE LA LÓGICA
ALGORÍTMICA.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 12

2.1. METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS.

La resolución de los problemas consta de cinco etapas que garantizan la llegada correcta a
la solución: identificación del problema, planteamiento de alternativas de solución, elección
de una alternativa, desarrollo de la solución y evaluación de ésta.

1. Identificación del problema


La identificación del problema es una fase muy importante en la metodología, pues de ella
depende el desarrollo anterior en busca de la solución. Un problema bien delimitado es una
gran ayuda para que el proceso general avance bien; un problema mal definido provocará
desvíos conceptuales que serán difíciles de remediar posteriormente. En esta etapa es
fundamental el análisis de la información inicial (entrada) con el fin de distinguir los datos
pertinentes de los que no lo son, de manera que se pueda elegir la configuración más
conveniente respecto a las soluciones posibles. También deben definirse los datos de salida
que garanticen la continuidad del proceso para que sea más fácil eliminar las expectativas
negativas.

2. Planteamiento de alternativas de solución


Después de la definición del problema y del análisis de los datos de entrada, el proceso
continúa con el análisis de las alternativas de solución. Por lo general, la solución de un
problema puede alcanzarse por distintas vías. Es útil tratar de plantear la mayor cantidad
de alternativas posibles de solución, pues de esta forma las probabilidades aumentan a
favor de encontrar la vía correcta. Se debe destacar que no es conveniente extender
demasiado el número de alternativas, pues si el número de éstas es demasiado alto, se
presentará una mayor dificultad para elegir la mejor de todas, que es en definitiva el
objetivo del proceso.

3. Elección de una alternativa


Después de tener todo el repertorio de alternativas, es necesario pasar a otra etapa: la
elección de la mejor entre todas las posibilidades. Esta fase es muy importante porque de
la elección realizada depende el avance final hasta la solución. La orientación hacia delante
supone la irreversibilidad si la decisión es acertada o una "reversibilidad onerosa", pues si
la decisión no es acertada, es necesario retroceder, lo que afecta la "optimidad" del proceso.

Por lo tanto, es necesario que cada alternativa sea bien analizada para que la toma de
decisiones sea bien justificada. Deberás elegir la alternativa que sea la más adecuada para
la solución del problema, tomando en cuenta las características del problema y las
características que deberá tener la solución, así como los elementos, datos o información
con la que cuentas.

4. Desarrollo de la solución
Después de decidir cuál es la mejor alternativa de todas, se llega a la etapa de la solución.
En esta fase, a partir de los datos relacionados con la alternativa seleccionada, se aplican
las operaciones necesarias para solucionar el problema. La selección de los procesos

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 13

también debe ser determinada en función de lo óptimo, es decir, las operaciones deben
llegar a la solución por el camino más corto para garantizar la mayor eficiencia en el
funcionamiento. Si la alternativa es la óptima, llevará a la solución deseada que fue prevista
en la identificación del problema.

5. Evaluación de la solución
Luego de haber desarrollado la solución queda aún una etapa, que es la evaluación. En los
procesos industriales a este procedimiento se le llama control de la calidad y consiste en
determinar que la solución obtenida es lo que se esperaba conseguir comprobando que el
resultado sea correcto. En esta fase se deben "pulir" los procesos ya realizados y tratar de
llevarlos a un grado mayor de optimización , pues el algoritmo más eficiente en la solución
de un problema es el que llega a su objetivo final con la mayor economía de procedimientos
que sea posible. A continuación, puedes observar un ejemplo de la aplicación de la
metodología a la solución de un problema simple. Es importante saber que los problemas
complejos también se resuelven con esta estructura.

Desarrollo en cascada.

En Ingeniería de software el desarrollo en cascada, también llamado modelo en cascada


(denominado así por la posición de las fases en el desarrollo de esta, que parecen caer en
cascada “por gravedad” hacia las siguientes fases), es el enfoque metodológico que ordena
rigurosamente las etapas del proceso para el desarrollo de software, de tal forma que el
inicio de cada etapa debe esperar a la finalización de la etapa anterior.1 Al final de cada
etapa, el modelo está diseñado para llevar a cabo una revisión final, que se encarga de
determinar si el proyecto está listo para avanzar a la siguiente fase. Este modelo fue el
primero en originarse y es la base de todos los demás modelos de ciclo de vida.

Metodología de desarrollo en
cascada es:

Análisis de requisitos.
Diseño del sistema.
Diseño del programa.
Codificación.
Pruebas.
Implementación del programa.
Mantenimiento.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 14

De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce


necesariamente al rediseño y nueva programación del código afectado, aumentando los
costos del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la
gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de
un proyecto.

2.2. METODOLOGÍA PARA EL DISEÑO DE SOFTWARE: TOP DOWN, BOTTOM UP,


MODULAR Y PROGRAMACIÓN ESTRUCTURADA.

Programación modular o top down

• Esta metodología, conocida como modularización o diseño Top Down, es una de las
técnicas más importantes para lograr un buen diseño de programa.
• La programación modular es uno de los métodos de diseño más flexibles y potentes para
• mejorar la productividad de un programa. La descomposición de un programa en módulos
• Independientes más simples se conoce también como el método de “divide y vencerás".
Se diseña cada módulo con independencia de los demás y, siguiendo un método
descendente, se llega hasta la descomposición final del problema en módulos en forma
jerárquica.
• En consecuencia, el programa se divide en módulos (partes independientes), cada uno de
los cuales ejecuta una única actividad o tarea.

Programación estructurada

La programación estructurada es una forma de escribir programación de computadora de


forma clara, para ello utiliza únicamente tres estructuras: secuencial, selectiva e iterativa;
siendo innecesario y no permitiéndose el uso de la instrucción o instrucciones de
transferencia incondicional ( GOTO ).

Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de
programación existentes en los años 60, principalmente debido a las aplicaciones gráficas,
por lo que las técnicas de programación estructurada no son suficientes lo que ha llevado
al desarrollo de nuevas técnicas tales como la programación orientada a objetos y el
desarrollo de entornos de programación que facilitan la programación de grandes
aplicaciones.

Ventajas de la programación estructurada

Con la programación estructurada, elaborar programas de computador sigue siendo una


labor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este estilo
podemos obtener las siguientes ventajas:

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 15

1. Los programas son más fáciles de entender, ya que pueden ser leído de forma secuencial,
sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los bloques de
código para entender la lógica.
2. La estructura del programa es clara puesto que las instrucciones están más ligadas o
relacionadas entre sí.
3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa
("debugging") se facilita debido a la estructura más visible, por lo que los errores se pueden
detectar y corregir más fácilmente.
4. Reducción de los costos de mantenimiento de los programas.
5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).
6. Los bloques de código son auto explicativos, lo que facilita a la documentación.
7. Los GOTO se reservan para construir las instrucciones básicas (selección e iteración)

Inconvenientes de la programación estructurada

El principal inconveniente de este método de programación, es que se obtiene un único


bloque de programa, que cuando se hace demasiado grande puede resultar problemático
su manejo, esto se resuelve empleando la programación modular, definiendo módulos
interdependientes programados y compilados por separado. Un método un poco más
sofisticado es la programación por capas, en la que los módulos tienen una estructura
jerárquica muy definida y se denominan capas.

2.3. ELEMENTOS Y REGLAS DE LOS LENGUAJES ALGORÍTMICOS.

Definición de Algoritmo.

"Un algoritmo se define como un método que se realiza paso a paso para solucionar un
problema que termina en un número finito de pasos".

Las características fundamentales que debe cumplir todo algoritmo son:

• Debe ser preciso e indicar el orden de realización de cada paso.


• Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez.
• 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.

Diseñar un algoritmo para cambiar una llanta a un coche.

1. Inicio.
2. Traer gato.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 16

3. Levantar el coche con el gato.


4. Aflojar tornillos de las llantas.
5. Sacar los tornillos de las llantas.
6. Quitar la llanta.
7. Poner la llanta de repuesto.
8. Poner los tornillos.
9. Apretar los tornillos.
10. Bajar el gato.
11. Fin.

Definición de Lenguajes Algorítmicos.

Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos
lenguajes permiten describir los pasos con mayor o menor detalle.

La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera:

• Lenguaje Natural.
• Lenguaje de Diagrama de Flujo.
• Lenguaje Natural de Programación.
• Lenguaje de Programación de Algoritmos.

Lenguaje Natural.

Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un
vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan términos
especializados de una determinada ciencia, profesión o grupo.

Lenguaje de Diagrama de Flujo.

Es aquél que se vale de diversos símbolos para representar las ideas o acciones a
desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de
etapas posteriores para implementarse en un sistema de cómputo.

Lenguaje Natural de Programación.

Son aquéllos que están orientados a la solución de problemas que se definen de una
manera precisa. Generalmente son aplicados para la elaboración de fórmulas o métodos
científicos.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 17

El lenguaje natural tiene las siguientes características:

• Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).


• Son precisos y bien definidos.
• Utilizan términos familiares al sentido común.
• Elimina instrucciones innecesarias.

2.3.1. DIAGRAMAS DE FLUJO.

Definición de Diagrama de flujo.

Un diagrama de flujo es la forma más tradicional de especificar los detalles algorítmicos de


un proceso. Se utiliza principalmente en programación, economía y procesos industriales;
estos diagramas utilizan una serie de símbolos con significados especiales. Son la
representación gráfica de los pasos de un proceso, que se realiza para entenderlo mejor.
Son modelos tecnológicos utilizados para comprender los rudimentos de la programación
lineal.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 18

2.3.2. PSEUDOCÓDIGO.

Definición de Pseudocódigo.

Es un lenguaje de especificación de algoritmos y no puede ser ejecutado por una


computadora, la ventaja del pseudocódigo es que el programador se puede concentrar en
la lógica y en las estructuras de control y no preocuparse de las reglas de un lenguaje
específico. Es fácil de modificar y puede ser rápidamente traducido a un lenguaje de
programación. Representa acciones sucesivas en un lenguaje similar al humano.

Para ejemplificar los problemas a resolver o para clarificar los conceptos, se usarán
herramientas comunes y familiares para los programadores, estas herramientas son:
pseudocódigo y diagramas de flujo. En esta sección se detallarán las reglas del
pseudocódigo que se utiliza en las diferentes unidades de este material.

Para definir las variables a utilizar

• VARIABLES. Se deben especificar las variables a utilizar así como su tipo (entero,
alfanumérico, etcétera). Esto sirve para familiarizarse con la creación de variables e ir
creando una estandarización propia de cada programador.

Ejemplo:
VARIABLES Num, Suma de tipo entero
En los casos anteriores se usan mayúsculas para identificar el nombre del algoritmo y el o
los nombres de las variables a utilizar.

Especificar donde comienza el cuerpo del algoritmo con la palabra Inicio

Es muy importante definir donde comienzan las instrucciones del algoritmo, para que el
programador sepa dónde debe empezar a idear la forma en que trabajará el programa.

Especificar donde termina el cuerpo del algoritmo con la palabra Fin


Indicar dónde termina el cuerpo del algoritmo facilita la lectura del mismo.

• Ejemplo
ALGORITMO Suma
VARIABLES Num, Suma, Cont de tipo entero
• INICIO
Cuerpo del algoritmo
• FIN

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 19

* Notas:
1.-Es muy importante tomar en cuenta la interpretación, esto hará más claro nuestro
pseudocódigo.
2.-Cada programador fija sus reglas y estándares para la creación de pseudocódigo, los
creadores de este material trataron de igualarlo lo más posible al lenguaje natural para que
las personas que están empezando a familiarizarse con estas herramientas lograran una
mejor comprensión del mismo.
3.-Un buen programador hace uso de estas herramientas como apoyo en la creación,
mantenimiento y documentación de sus programas.

2.4. IMPLEMENTACIÓN DE ALGORITMOS.

Prueba De Escritorio

Técnica para desarrollar cada paso de un algoritmo de manera escrita, con la finalidad de
detectar errores de entrada y salida de datos, así como errores de sintaxis y de lógica.

Consiste en dar valores a las variables que hemos definido y que siguen el flujo del
programa para comprobar si al final el resultado es el acertado.

Por ejemplo:
- No ingresar un dato de nacimiento que sea mayor que la fecha actual.
- No ingresar un número negativo donde deber ir uno positivo o sin decimales;
- No ingresar un valor numérico donde solo debe ir texto;
- No ingresar un valor fuera del rango establecido;
etc.,

En casos de generar algún error, el programa tendrá que enviar al usuario un mensaje
indicándole esto y dándole la oportunidad de corregir.

Una vez todo haya funcionado bien en el papel, entonces ya podemos escribir el
pseudocódigo siguiendo el diagrama de flujo.

Esta prueba es para no perder tiempo escribiendo el programa y luego tener que buscar EN
DONDE está el error y como debemos corregirlo.

También sirve para optimizar un algoritmo viendo cómo podemos llegar a un determinado
resultado con menos pasos.

IMPORTANTE: Casi siempre pasa que NUNCA el programa va a funcionar correctamente la


primera vez. SIEMPRE deberemos hacerle ajustes y correcciones. Y eso es parte de la
garantía que damos cuando diseñamos un Sistema a medida.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 20

NO OLVIDAR que el programa deber ser lo más intuitivo posible y tener, en algunos casos,
carteles de ayuda cuando presione la tecla programada (generalmente la F1 como cualquier
programa comercial). Para salir utilizar la tecla ESC (como en cualquier...)
Esto hace a la profesionalidad del sistema.

2.4.1. SECUENCIALES.

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en


secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el fin del proceso.

En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:

2.4.2. SELECTIVOS.

Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se suelan
denominar también estructuras de decisión o alternativas y son utilizadas en todos los
lenguajes de programación.

En las estructuras selectivas se evalúan una condición y en función del resultado de la misma
se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La
representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then,
else o bien en español si, entonces, si_no), las estructuras selectivas pueden ser:

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 21

Simples

Las estructuras selectivas simples o condicionales están compuesta únicamente de una sola
condición si es verdadera ejecutara la acción o acciones si la condición es falsa no hará nada.

Dobles

Las estructuras selectivas dobles están compuesta únicamente de una sola condición, si es
verdadera ejecutara la acción o acciones y si la condición es falsa ejecutara las acciones para
la condición falsa. Esta estructura selectiva solo se debe utilizar únicamente cuando existen
dos condiciones, si hubiera más de dos condiciones se puede utilizar varias selectivas
simples o una selectiva múltiple.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 22

Múltiples

Las estructuras selectivas múltiples o anidadas están compuesta múltiples selectivas


simples que están unidas por el comando else if el resultado que se obtiene con una
selectiva múltiple se puede obtener con varias selectivas simples, entonces, ¿cuál es la
diferencia? el código es más pequeño, aunque, yo siempre he recomendado a mis alumnos
que cuando recién se está aprendiendo a programar es recomendable que al principio se
trabaje con selectivas simples, a medida que se va aprendiendo y ganando destreza se
puede comenzar a utilizar las selectivas múltiples en los casos que ellos crean conveniente
y necesarios.

Anidadas

Las estructuras alternativas anidadas están compuestas por estructuras alternativas simples
y/o dobles que tienen en si interior una o mas estructuras alternativas simples y/o dobles,
la regla para realizar este tipo de anidamientos, es que antes de terminar el bloque de
acciones de la estructura alternativa externa debe cerrarse la estructura alternativa interna.
si < condición externa> entonces si < condición interna> entonces < acción 1> si_no < acción
2> fin_si fin_si.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 23

2.4.3. REPETITIVOS.

Iterativas

Las computadoras están especialmente diseñadas para todas aquellas aplicaciones en las
cuáles una operación o conjunto de ellas deben repetirse muchas veces. Un tipo importante
de estructura es el necesario para repetir una o varias acciones un número determinado de
veces.

Iterativas Las estructuras que repiten una secuencia de instrucciones un número


determinado de veces se denominan ciclos, y se llama iteración al hecho de repetir la
ejecución de una secuencia de acciones. Las dos principales preguntas a realizar en el diseño
de un ciclo son: ¿qué contiene el ciclo? Y ¿cuántas veces debe repetirse el ciclo?

Estructura mientras (while)

La estructura iterativa mientras es aquella en que el cuerpo del ciclo se repite mientras se
cumple una determinada condición. Cuando se ejecuta la instrucción mientras, la primera
cosa que sucede es que se evalúa la condición (una expresión lógica). Si se evalúa como
falsa, no se entra al ciclo y el programa prosigue en la siguiente instrucción después del ciclo.
Si la expresión lógica es verdadera, entonces se ejecuta el cuerpo del ciclo, después de lo
cual se evalúa de nuevo la expresión lógica. Este proceso se repite una y otra vez mientras
la condición es verdadera.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 24

Estructura repetir (repeat - do - do while)

Existen muchas situaciones en las que se desea que el ciclo se ejecute al menos una vez
antes de comprobar la condición de repetición. La estructura repetir se ejecuta hasta que
se cumpla una condición determinada que se comprueba al final del ciclo. El ciclo repetir se
ejecuta hasta que una condición que originalmente es falsa, se hace verdadera.

Estructura para o desde (for)

En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar


las acciones de un ciclo. En este caso el número de iteraciones es fijo, se debe usar la
estructura desde. La estructura desde ejecuta la acciones del cuerpo del ciclo un número
especificado de veces y de modo automático controla el número de iteraciones o pasos a
través del ciclo.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD II: Desarrollo de lógica algorítmica. 25

2.5. PRUEBAS Y DEPURACIÓN.

Realizar ejercicios del cuadernillo de prácticas.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III

INTRODUCCIÓN A LA
PROGRAMACIÓN DE UN LENGUAJE
ESTRUCTURADO.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
27
estructurado.

3.1 INTRODUCCIÓN Y ESTRUCTURA DEL ENTORNO DE UN LENGUAJE DE


PROGRAMACIÓN.

Entorno de programación

Las actividades mejor soportadas por herramientas de desarrollo son normalmente las
centrales: codificación y pruebas de unidades. El conjunto de herramientas que soportan
estas actividades constituyen lo que se llama un entorno de programación. A veces se
utilizan las siglas IDE (Integrated Development Environment) para designar estos entornos,
aunque no son un entorno de desarrollo completo, sino sólo una parte de él.

Siguiendo la terminología anterior, de niveles funcionales, es el banco de trabajo del


programador
Da soporte a las actividades de la fase de codificación (preparación del código y prueba de
unidades)
Los mismos productos sirven también para el diseño detallado y para las pruebas de
integración.
Se sitúa, por tanto, en la parte central del ciclo de desarrollo

Funciones de un Entorno de Programación

Como se ha dicho, la misión de un Entorno de Programación es dar soporte a la preparación


de programas, es decir, a las actividades de codificación y pruebas.

Las tareas esenciales de la fase de codificación son:

- Edición (creación y modificación) del código fuente


- Proceso/ejecución del programa
- Interpretación directa (código fuente)
- Compilación (código máquina) - montaje – ejecución
- Compilación (código intermedio) – interpretación

Otras funciones:

- Examinar (hojear) el código fuente


- Analizar consistencia, calidad, etc.
- Ejecutar en modo depuración
- Ejecución automática de pruebas
- Control de versiones
- Generar documentación, reformar código y otras muchas más ...

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
28
estructurado.

Tipos de Entornos de Programación

Un entorno de programación puede estar concebido y organizado de maneras muy


diferentes. A continuación se mencionan algunas de ellas.

En las primeras etapas de la informática la preparación de programas se realizaba mediante


una cadena de operaciones tales como la que se muestra en la figura para un lenguaje
procesado mediante compilador. Cada una de las herramientas debía invocarse
manualmente por separado. En estas condiciones no puede hablarse propiamente de un
entorno de programación
Desarrollo con compilador

 Editor es un editor de texto simple.


 El compilador traduce cada fichero de código fuente a código objeto
 El montador (linker / builder / loader) combina varios ficheros objeto para generar
un fichero ejecutable
 El depurador maneja información en términos de lenguaje de máquina
 Un entorno de programación propiamente dicho combina herramientas como éstas,
mejoradas y mejor integradas. A veces se nombra con las siglas IDE (Integrated
Development Environment).

Entorno integrado

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
29
estructurado.

3.2 ESTRUCTURA BÁSICA DE UN PROGRAMA.

C++:

Es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne


Stroustrup, un lenguaje de programación C con mecanismos que permiten la manipulación
de objetos, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un
lenguaje híbrido.

Componente estructural básico; Funciones:

Directivas de preprocesador
Declaraciones globales (variables globales, funciones,…)
Función main()
{
Secuencia de declaraciones e instrucciones
}
función1 ()
{
Secuencia de declaraciones e instrucciones
}

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
30
estructurado.

Función ()
{
Secuencia de declaraciones e instrucciones
}

 Directivas del preprocesador


Los compiladores de C++ proporcionan bibliotecas de funciones.
Cada biblioteca de funciones tiene asociado un archivo de definición que se denomina
cabecera.

Para utilizar algo de una biblioteca en un programa, hay que colocar al principio del
programa una directiva de pre-procesamiento seguida de la cabecera de la biblioteca entre
ángulos.

Instrucciones al compilador antes de que se compile el programa principal

Las directivas más usuales son:


# include
# define
# include <iostream.h>

Indica al compilador que lea las directivas antes de compilar la función principal

* La función main()
Una función C++ es un subprograma que devuelve un valor, un conjunto de valores o realiza
una tarea específica. Todo programa C++ tiene una única función main() que es el punto
inicial de entrada al programa. Si se intenta declarar dos funciones main() dentro del
programa se produce error.

Estructura de un programa C++

Las sentencias escritas entre las llaves se denominan BLOQUE

#include <iostream.h>
int main()
{
entrada_datos();
proceso_datos();
return 0;
...
}
Llamadas a otras funciones.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
31
estructurado.

3.3 TIPOS DE DATOS.

Tipos de datos básicos en C++

El tipo de dato determina la naturaleza del valor que puede tomar una variable.Un tipo de
dato define un dominio de valores y las operaciones que se pueden realizar con éstos
valores.
C++ dispone de unos cuantos tipos de datos predefinidos (simples) y permite al
programador crear otro tipo de datos.

Tipo de datos básicos


 int ( Números enteros )
 float ( Números reales )
 double ( Números reales más grandes que float )
 bool ( Valores lógicos )
 char ( Caracteres y cualquier cantidad de 8 bits )
 void ( Nada. Sirve para indicar que una función no devuelve valores).

Declaración de variables en C++

<tipo> <lista de variables>;

Ejemplos:
int a = 1234;
bool seguir = true, encontrado;

3.4 IDENTIFICADORES.

Los identificadores

Son los nombres que se les da a los objetos de un programa.

Los identificadores en c++ están formados por letras y dígitos.


El primer carácter debe ser una letra, considerando en este caso el carácter guión bajo ( _ )
como una letra. No pueden contener otros caracteres especiales.

Ejemplos Identificadores válidos en C++:

X y12 suma_1 _nota nombres


area porc_imp TABLA

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
32
estructurado.

Ejemplo Identificadores no válidos en C++:

4numeros "x" orden-no


contador! nº $edad

Como norma general, un identificador debe tener los suficientes caracteres para que su
significado se reconozca fácilmente, pero se debe evitar un excesivo número de caracteres.
Un identificador puede tener cualquier número de caracteres, pero dependiendo del
compilador utilizado, solo son significativos los n primeros caracteres. Por tanto, dos
identificadores son diferentes si difieren al menos en uno de los “n” primeros caracteres.
No se permite el uso de la ñ ni de las tildes en los identificadores, aunque sí pueden ser
utilizados en comentarios.

C++ diferencia mayúsculas y minúsculas, por lo tanto, nombre y Nombre son identificadores
diferentes.

3.5 ALMACENAMIENTO, DIRECCIONAMIENTO Y REPRESENTACIÓN EN MEMORIA.

Almacenamiento:

Hay dos clases, almacenamiento primario, que son los que usa la CPU directamente
(memoria principal, memoria caché, etc) y el almacenamiento secundario, a los cuales la
CPU no accede directamente, sino que deben almacenarse previamente en uno primario.
Son de almacenamiento secundario los discos magnéticos, ópticos, cintas magnéticas,
tambores magnéticos, etc.El almacenamiento de datos puede usarse también para copias
de seguridad, ver backup.Con el correr de los años, el almacenamiento de datos
informáticos ha ido bajando de precio. Por ejemplo, 1 GB de memoria en 1956 costaba 8,2
millones de dólares. En 1980, 184 mil dólares; en 1990 eran 5.200 dólares; en 2000 eran 12
dólares, y en 2006 fueron 1,2 dólares.

Direccionamiento

Los llamados Modos de direccionamiento son las diferentes maneras de especificar en


informática un operando dentro de una instrucción (lenguaje ensamblador). Cómo se
especifican e interpretan las direcciones de memoria según las instrucciones. Pueden ser:

Inmediato: En la instrucción está incluido directamente el operando.


Directo: El campo de operando en la instrucción contiene la dirección en memoria donde
se encuentra el operando.
Indirecto: El campo de operando contiene una dirección de memoria, en la que se
encuentra la dirección efectiva del operando.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
33
estructurado.

Absoluto: El campo de operando contiene una dirección en memoria, en la que se


encuentra la instrucción.
De registro: Sirve para especificar operandos que están en registros.
Indirecto mediante registros: El campo de operando de la instrucción contiene un
identificador de registro en el que se encuentra la dirección efectiva del operando.
De desplazamiento: Combina el modo directo e indirecto mediante registros
De pila: Se utiliza cuando el operando está en memoria y en la cabecera de la Pila.

Representación De Memoria

Podemos representar a las colas de dos formas:

Como arreglos
Como listas ordenadas

En esta unidad trataremos a las colas como arreglos de elementos, en donde debemos
definir el tamaño de la cola y dos apuntadores, uno para accesar el primer elemento de la
lista y otro que guarde el último.

En lo sucesivo, al apuntador del primer elemento lo llamaremos F, al del último elemento A


y MAXIMO para definir el número máximo de elementos en la cola.

Cola (Definición)

Una cola es una estructura de almacenamiento, donde la podemos considerar como una
lista de elementos, en la que éstos van a ser insertados por un extremo y serán extraídos
por otro. Las colas son estructuras de tipo FIFO (first-in, first-out), ya que el primer elemento
en entrar a la cola será el primero en salir de ella. Existen muchísimos ejemplos de colas en
la vida real, como por ejemplo: personas esperando en un teléfono público, niños
esperando para subir a un juego mecánico, estudiantes esperando para subir a un camión
escolar, etc.

3.6 PROPOSICIÓN DE ASIGNACIÓN.

La forma de una proposición de asignación es: a = b donde b es una expresión permitida, y


a es el nombre de la variable donde se dejará el valor resultante de evaluar b.
Por expresión permitida se entiende a aquella expresión matemática que ocupa las
operaciones y funciones nombradas como existentes, y escritas de la forma que para ellas
se señala, respetando así la sintaxis en cada instrucción.
El signo igual, " = ", de a = b tiene el sentido de asignar a la variable a el valor que resulte de
evaluar la expresión permitida b. Es decir, a = b. Que no es la misma definición usada en
matemáticas para el signo: =

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
34
estructurado.

El computador, al ejecutar una proposición de asignación evalúa la expresión del lado


derecho del signo igual con los valores que en ese momento tengan las variables ahí
ocupadas. Así, la expresión entregará valores probablemente distintos en las diversas
ocasiones que por programa se evalúe esa expresión. Las siguientes son proposiciones de
asignación correctas, A = 2.5 TO = 1 + XT I = I + 1 Y no son correctas las siguientes:

A + B = C 20 = 16.2 + 3.8 AL = (AT+3.4) / 110.302

3.7 OPERADORES, OPERANDOS Y EXPRESIONES.

Operadores.

En todos los lenguajes de programación se utilizan operadores para efectuar operaciones


aritméticas. Combinando las variables y constantes en expresiones aritméticas por medio
de funciones adecuadas. Una expresión es un conjunto de datos o funciones unidos por
operadores aritméticos, los cuales son: SUMA, RESTA, MULTIPLICACION, DIVISION,
EXPONENCIAL Y MODULO.

Operador de comparación

En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores,


esto se realiza utilizando los operadores relaciones, los cuales son: Mayor que, menor que,
menor igual que, mayor igual que, igual a, distinto a o diferente de.

Operando.

Referente a la parte de la instrucción de lenguaje máquina de la computadora que designa


la dirección de los datos con los que se debe operar.

Expresiones.

Las expresiones son combinaciones de constantes, variables, símbolos de operación,


paréntesis y nombres de funciones especiales. Por ejemplo:
a + (b + 3) / c

Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas. Una expresión consta de
operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las
expresiones en: Aritméticas, Relacionales, Lógicas

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
35
estructurado.

3.8 PRIORIDAD DE OPERADORES, EVALUACIÓN DE EXPRESIONES.

Prioridad

Se llama prioridad al orden en el que se evalúa una expresión. 4D tiene una estricta
prioridad izquierda-a-derecha. Por ejemplo: 3+4*5 devuelve 35 porque la expresión es
evaluada como 3+4, dando 7, el cuál es multiplicado por 5, resultando 35. Se pueden utilizar
paréntesis para cambiar la prioridad izquierda-a-derecha. Por ejemplo:

3+(4*5) devuelve 23 porque se evalúa primero la expresión (4*5), por estar entre paréntesis.
El resultado es 20, lo cual es añadido el 3, dando el resultado final 23. Se pueden insertar
paréntesis dentro de otros grupos de paréntesis. Es necesario asegurarse de que cada
paréntesis izquierdo tiene su correspondiente derecho. La falta o el uso incorrecto de los
paréntesis pueden provocar resultados inesperados o expresiones no válidas.

Evaluación de expresiones

Cuando en una expresión concurre más de una operación, los paréntesis indicarán prioridad,
es decir, la operación encerrada entre paréntesis se realizará en primer lugar. Además,
algunos operadores tendrán preferencia sobre otros. Por ejemplo, en la operación a + b / c,
primero se realizará b / c y posteriormente se le sumará a. En caso de que el programador
quiera que se sume primero a y b para posteriormente dividir por c, tendríamos que hacer
(a + b) / c. Si todos los operadores de una expresión tienen la misma prioridad, la operación
se hará de izquierda a derecha, salvo cuando tengamos exponenciales, en tal caso, el orden
será de derecha a izquierda, por ejemplo, al hacer 2**3**2 resulta el valor 2**9 = 512.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
36
estructurado.

Tablas de Verdad

Donde:

p , q = Entradas
V = Verdadero
F = Falso

3.9 ELABORACIÓN DE PROGRAMAS.

Fases para la elaboración de un programa.

El desarrollo de un programa o de un conjunto de aplicaciones se basa en un concepto


llamado ciclo de vida. Son una serie de etapas o fases que hay que seguir secuencialmente.

Las fases o etapas son:

• Análisis.
• Diseño.
• Codificación o construcción.
• Implantación o explotación.
• Mantenimiento.

ANÁLISIS

En esta fase se establece el producto a desarrollar, siendo necesario especificar los procesos
y estructuras de datos que se van a emplear. Debe existir una gran comunicación entre el
usuario y el analista para poder conocer todas las necesidades que precisa la aplicación. En
el caso de falta de información por parte del usuario se puede recurrir al desarrollo de
prototipos para saber con más precisión sus requerimientos.
En el análisis estructurado se pueden emplear varias técnicas como:

Diagramas de flujo de datos: Sirven para conocer el comportamiento del sistema mediante
representaciones gráficas.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
37
estructurado.

Modelos de datos: Sirven para conocer las estructuras de datos y sus características.
(Entidad relación y formas normales)

Diccionario de datos: Sirven para describir todos los objetos utilizados en los gráficos, así
como las estructuras de datos.

Definición de los interfaces de usuario: Sirven para determinar la información de entrada y


salida de datos.

Al final de esta fase tenemos que tener claro las especificaciones de la aplicación.

DISEÑO

En esta fase se alcanza con mayor precisión una solución óptima de la aplicación, teniendo
en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos, comunicaciones,
etc…) y los recursos lógicos. (Sistema operativo., programas de utilidad, bases de datos,
etc…)
En el diseño estructurado se pueden definir estas etapas:

Diseño externo: Se especifican los formatos de información de entrada y salida. (Pantalla y


listados)

Diseño de datos: Establece las estructuras de datos de acuerdo con su soporte físico y lógico.
(Estructuras en memoria, ficheros y hojas de datos)

Diseño modular: Es una técnica de representación en la que se refleja de forma


descendente la división de la aplicación en módulos. Está basado en diagramas de flujo de
datos obtenidos en el análisis.

Diseño procedimental: Establece las especificaciones para cada módulo, escribiendo el


algoritmo necesario que permita posteriormente una rápida codificación. Se emplean
técnicas de programación estructurada, normalmente ordinogramas y pseudocódigo.

Al final de esta etapa se obtiene el denominado cuaderno de carga.

CODIFICACIÓN

Consiste en traducir los resultados obtenidos a un determinado lenguaje de programación,


teniendo en cuenta las especificaciones obtenidas en el cuaderno de carga. Se deben de
realizar las pruebas necesarias para comprobar la calidad y estabilidad del programa.
Las pruebas se pueden clasificar en:

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
38
estructurado.

Pruebas unitarias: Sirven para comprobar que cada módulo realice bien su tarea.

Pruebas de interconexión: Sirven para comprobar en el programa el buen funcionamiento


en conjunto de todos sus módulos.

Pruebas de integración: Sirven para comprobar el funcionamiento correcto del conjunto de


programas que forman la aplicación. (el funcionamiento de todo el sistema)

EXPLOTACIÓN

En esta fase se realiza la implantación de la aplicación en el sistema o sistemas físicos donde


van a funcionar habitualmente y su puesta en marcha para comprobar el buen
funcionamiento.

Actividades a tener en cuenta o realizar:

• Instalación del/los programa/s.


• Pruebas de aceptación al nuevo sistema.
• Conversión de la información del antiguo sistema al nuevo (si hay una aplicación
antigua)
• Eliminación del sistema anterior.

Al final de esta fase se debe de completar la información al usuario respecto al nuevo


sistema y su uso. Así como facilitarle toda la documentación necesaria para una correcta
explotación del sistema (manual de ayuda, manual de uso, guía de la aplicación, etc.)

MANTENIMIENTO

Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de solventar los
posibles errores o deficiencias de la aplicación. Existe la posibilidad de que ciertas
aplicaciones necesiten reiniciar el ciclo de vida.

Tipos de mantenimiento:

Mantenimiento correctivo: Consiste en corregir errores no detectados en pruebas


anteriores y que aparezcan con el uso normal de la aplicación. Este mantenimiento puede
estar incluido en la garantía o mantenimiento de la aplicación.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
39
estructurado.

Mantenimiento adaptativo: Consiste en modificar el programa a causa de cambio de


entorno gráfico y lógico en el que estén implantados. (Nuevas generaciones de ordenadores,
nuevas versiones del sistema operativo, etc.)

Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicación al recibir por


parte de los usuarios propuestas sobre nuevas posibilidades y modificaciones de las
existentes.

Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida, debiendo


proceder de nuevo al desarrollo de cada una de sus fases para obtener un nuevo producto.

ELABORAR UN PROGRAMA EN LENGUAJE Dev C++

PASO 1: INICIAR DEV C++

Inicio > Todos los programas > Bloodshed Dev-C++ > Dev-C++

PASO 2: CREAR ARCHIVO NUEVO

Archivo > Nuevo > Código fuente

PASO 3: GUARDAR COMO...

Archivo > Guardar Como...

Seleccionar carpeta. Por ejemplo: C:\programas-c\ o C:\c\


Introducir el nombre del archivo. Por ejemplo: hola-mundo (sin extensión)
Seleccionar tipo "C source files (*.c)".
Pulsar el botón de Guardar.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
40
estructurado.

PASO 4: EDITAR

Teclear el código fuente del programa. Por ejemplo:

/* Programa: Hola mundo */

#include <conio.h>
#include <stdio.h>

int main()
{
printf( "Hola mundo." );

getch(); /* Pausa */

return 0;
}
En la pantalla se verá algo parecido a:

PASO 5: COMPILAR

Ejecutar > Compilar

Si no hay fallos, el resultado de la compilación será Errors: 0 y Warnings: 0.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
41
estructurado.

PASO 6: EJECUTAR

Ejecutar > Ejecutar

PASO 7: SALIR

Archivo > Salir

PASO 8: VER ARCHIVOS


El código fuente está en C:\c\hola-mundo.c
El archivo ejecutable es C:\c\hola-mundo.exe

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD III: Introducción a la programación de un lenguaje
42
estructurado.

3.10 PRUEBAS Y DEPURACIÓN.

Realizar ejercicios del cuadernillo de prácticas.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV

ESTRUCTURAS SELECTIVAS Y DE
REPETICIÓN.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV: Estructuras selectivas y de repetición. 44

4.1 SELECTIVA SIMPLE.

Permite ejecutar una acción o grupo de acciones solo si se cumple una determinada
condición, es decir, donde la condición “C” es un grupo de condiciones a evaluarse. El
bloque “A” representa la operación o conjunto de operaciones a realizar si la condición “C”
es verdadera.

Pseudocodigo En C++
Si(C) if(C)
A {
Finsi A
}

También se puede decir que se evalúa la condición “C” si es verdadero (true) se ejecuta
todas las sentencias que están dentro de las llaves (en C++), hasta el Finsi (en pseudocódigo)
para luego continuar con la siguiente línea de código que esta después.

En caso que la condición “C” sea falsa (false) no se ejecutara las sentencias dentro de las
llaves (en C++), hasta el Finsi (en pseudocódigo), y el control pasa a la siguiente instrucción
de programa (en orden descendente).

4.2 SELECTIVA DOBLE.

Permite seleccionar una ruta de dos posibles, en base a la verdad (V) o falsedad (F) de la
condición.

Pseudocódigo En C++
if(condicion)
Si(Condicion) {
a1 a1;
a2 a2;
a3 a3;
. .
.
.
.
. an;
an }
Sino else
b1 {
b1 b1;
b1 b2 ;
. b3;
. .
. .
bn .
Finsi bn;
}

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV: Estructuras selectivas y de repetición. 45

Si (if) la condición es verdadera, se ejecutan las sentencias: {a1, a2, a3, …, an} , sino (else)
se ejecutaran las sentencias: {b1, b2, b3, …, bn}
Si la sentencia solo tiene una línea no es necesario poner llaves.

4.3 SELECTIVA ANIDADA.

Una estructura de decisión puede estar anidada dentro de otra estructura de decisión, hay
que tener en cuenta que el anidamiento sea total.

Se debe mantener el concepto que una estructura de decisión debe tener una sola entrada
y una sola salida tanto para la estructura que anida como para la estructura anidada.

Pseudocódigo En C++
if(Condicion1)
Si(Condicion1) {
Si(Codicion2) if(Condicion2)
Ejecuta bloque de {
acciones 1 Ejecuta bloque de
Sino acciones1
Ejecuta bloque de }
acciones 2 else
Finsi {
Sino Ejecuta bloque de
Ejecuta bloque de acciones 3 acciones2
Finsi }
}
else
{
Ejecuta bloque de
acciones3
}

4.4 SELECTIVA MÚLTIPLE.

También se conoce como CASE.

Esta instrucción se utiliza para seleccionar una alternativa dentro de múltiples opciones
disponibles.
El contenido de la variable selector debe ser ordinal, es decir debe ser de tipo int o char o
sus variantes de int: long int, short int, no están permitido datos de tipo float.
Es decir si la variable selector es exactamente igual a la constante J, entonces se ejecutara
la sentencia J(s), luego de encontrar la instrucción break, hará que el control del programa
salga fuera del switch.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV: Estructuras selectivas y de repetición. 46

Si no cumple la condición anterior pasara a evaluar el siguiente caso y así sucesivamente. Si


ninguno de los casos se cumple ejecuta las sentencias default.

Pseudocódigo C++
Según sea(Valor) switch (valor)
Caso <condicion1> {
Sentencia1(s) Case : <condicion1>
Salto Sentencia1(s);
Caso <condicion2> break;
Case : <condicion2>
Sentencia2(s)
Sentencia2(s);
Salto break;
Caso <condicion3> Case : <condicion3>
Sentencia3(s) Sentencia3(s);
Salto break;
Caso <condicion4> Case : <condicion4>
Sentencia4(s) Sentencia4(s);
Salto break;
Default default:
SentenciaD(s) SentenciaD(s);
Salto break;
FinSegunsea }

4.5 REPETIR MIENTRAS.

CONCEPTOS

Bucle
El buque es un conjunto de instrucciones que se repiten.

Interacción
Es cada una de las veces que se ejecuta el bucle.

Contador
Un contador es una variable cuyo valor incrementa o decrementa en una cantidad fija se
utiliza en los siguientes casos.

Ø Para contabilizar el número de veces que se desea una operación o grupo de operaciones.
Ø Un contador toma un valor inicial antes de empezar sus funciones y se debe codificar en
el siguiente formato:

cont=cont +1
cont=cont -1

Dónde: cont es el nombre de tu variable contador.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV: Estructuras selectivas y de repetición. 47

Acumulador

Un acumulador se encarga de almacenar en una variable el resultado de una o varias


operaciones matemáticas que se encuentran dentro de una sentencia repetitiva, para
obtener un total acumulado.

Un acumulador se debe inicializar a cero (0) en caso de suma y en uno (1) en caso de
producto y se codifica bajo el siguiente formato:

acum=acum+variable
acum=acum*variable

Dónde: acum es el nombre de tu variable acumulador.

La estructura mientras que (while) es aquella en la que el número de repeticiones de


bucle no se conoce por anticipado, y el cuerpo del buque se repite mientras se cumple
una determinada condición.

 Condición es una expresión booleana (puede ver verdadera o falsa) que se evalua
al principio del bucle y antes de cada iteración de las sentencias.
 Si la condición es verdadera, se ejecuta el bloque de sentencias y se vuelve al
principio del bucle.
 Si la condición es falsa, no se ejecuta el bloque de sentencias y se continúa con la
siguiente sentencia del programa.

Una representación gráfica seria como sigue:

Pseudocódigo Código C++


Mientras (condicon) Hacer while(condicion){

grupo de sentencias grupo_de_sentecias

FinMientras }

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV: Estructuras selectivas y de repetición. 48

4.6 REPETIR HASTA.

En un bucle do while, primero se ejecuta el bloque de instrucciones y, después, se evalúa


la condición. En el caso de que ésta sea verdadera, se vuelve a ejecutar el bloque de
instrucciones. Y así sucesivamente, hasta que, la condición sea falsa.

Por consiguiente, cuando el flujo de un programa llega a un bucle do while, existen dos
posibilidades:
Se ejecuta el bloque de instrucciones y, después, si la condición se evalúa a falsa, el bloque
realizado una sola iteración.
Se ejecuta el bloque de instrucciones y, a continuación, si la condición se evalúa a verdadera,
el bloque de instrucciones se vuelve a ejecutar. Y así sucesivamente, hasta que la condición
sea falsa.
El <bloque_de_instrucciones> de un bucle do while puede ejecutarse una o más veces
(iteraciones). También hay que prevenir que el bucle no sea infinito.

Pseudocódigo Código C++


Repetir do{

grupo de sentencias }while(<expresión_lógica>);

Hasta (Condicion)

4.7 REPETIR DESDE o PARA.

Un bucle for hace que una instrucción o bloque de instrucciones se repitan un número
determinado de veces mientras se cumpla la condición.

Pseudocódigo Código C++


Para (Declaracion; Condicion; for(inicialización; condicion;
Incremento/Decremento) incremento/decremento)

grupo de sentencias {

Fin para <bloque_de_instrucciones>

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD IV: Estructuras selectivas y de repetición. 49

4.8 ELABORACIÓN DE PROGRAMAS.

Realizar ejercicios del cuadernillo de prácticas.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V

ARREGLOS Y ARCHIVOS.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 51

Un arreglo es una colección de datos (cada uno de los cuales es del mismo tipo). Cada pieza
del arreglo se llama elemento. Para acceder a un elemento de un arreglo, utiliza el operador
de corchetes ( [] ) y un índice entero que indica la ubicación del elemento en el arreglo.

5.1 ARREGLO UNIDIMENSIONALES.

El primer elemento en un arreglo tiene un índice 0, el segundo tiene un índice 1 y así


sucesivamente. Por lo tanto, los índices en un arreglo de n elementos estarán en el rango
de 0 a n - 1. Los elementos del arreglo son almacenados contiguamente en memoria.
Un arreglo es declarado especificando el tipo de sus elementos, seguido por corchetes.
Considera la siguiente declaración:
int[ ] ages;
El tipo de los elementos del arreglo es int, mientras que el tipo del arreglo en sí es int[ ]. El
nombre del arreglo es el identificador ages. El identificador ages es una variable de
referencia y sus valores son null inicialmente.

Cuando se crea un nuevo objeto arreglo, sus elementos son inicializados a sus valores
predeterminados Para crear un objeto arreglo, utiliza el operador new, seguido por el tipo
de los elementos y el tamaño del arreglo deseado. El tamaño del arreglo no debe ser
negativo.
ages = new int[5];

names = new String[3];

Existe otra forma de crear un objeto arreglo: la declaración del arreglo puede incluir un
inicializador, el cual es una lista separada por comas de los elementos iniciales entre
corchetes. Un inicializador puede ser utilizado solamente en la instrucción de declaración.
int[ ] ages = {21, 19, 35, 27, 55};

String[ ] names = {"Bob", "Achebe", null};

5.2 ARREGLO BIDIMENSIONAL Y MULTIDIMENSIONAL.

La inicialización de arreglos multidimensionales es muy similar a la que se describió para


arreglos de un solo índice. Otra vez es necesario enlistar los valores de cada uno de los
elementos del arreglo entre llaves y separados por comas. La diferencia sin embargo, es que
es necesario tener más de un grupo de valores encerrados entre llaves. Por ejemplo:

int x[2][3]={{1,2,3},{4,5,6}};

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 52

Observe que tenemos un conjunto de llaves que encierra a otros grupos de números
también encerrados entre llaves y separados por comas. ¿Cuántos grupos de números se
tienen encerrados por las llaves de los extremos?, porque la dimensión del primer índice es.
¿Cuántos números se tienen en cada uno de los grupos? , por el tamaño correspondiente
al segundo índice es 3.

El ejemplo equivaldría a tener el siguiente arreglo de números. El primer índice


representaría al renglón y el segundo índice a la columna:
123
x[0][0] x[0][1] x[0][2]

456
x[1][0] x[1][1] x[1][2]7

ARREGLOS DE CARÁCTERES

A diferencia de otros lenguajes de programación que emplean un tipo denominado cadena


string para manipular un conjunto de símbolos, en C, se debe simular mediante un arreglo
de caracteres, en donde la terminación de la cadena se debe indicar con nulo. Un nulo se
especifica como '\0'. Por lo anterior, cuando se declare un arreglo de caracteres se debe
considerar un carácter adicional a la cadena más larga que se vaya a guardar. Por ejemplo,
si se quiere declarar un arreglo cadena que guarde una cadena de diez caracteres, se hará
como:
char cadena[11];

Se pueden hacer también inicializaciones de arreglos de caracteres en donde


automáticamente C asigna el carácter nulo al final de la cadena, de la siguiente forma:
char nombre_arr[ tam ]="cadena";

Por ejemplo, el siguiente fragmento inicializa cadena con ``hola'':


char cadena[5]="hola";
El código anterior es equivalente a:
char cadena[5]={'h','o','l','a','\0'};

UTILIZACIÓN DE ARREGLOS

Un arreglo es una colección de datos (cada uno de los cuales es del mismo tipo). Cada pieza
del arreglo se llama elemento. Para acceder a un elemento de un arreglo, utiliza el operador
de corchetes ( [] ) y un índice entero que indica la ubicación del elemento en el arreglo.
El primer elemento en un arreglo tiene un índice 0, el segundo tiene un índice 1 y así
sucesivamente. Por lo tanto, los índices en un arreglo de n elementos estarán en el rango
de 0 a n - 1. Los elementos del arreglo son almacenados contiguamente en memoria.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 53

5.3 APERTURA, ENTRADA-SALIDA DE DATOS, Y CIERRE DE ARCHIVOS.

Operaciones de escritura en archivos

El archivo de cabecera fstream.h define las clases ifstream, ostream y fstream para
operaciones de lectura, escritura y lectura/escritura en archivos respectivamente. Para
trabajar con archivos debemos crear objetos de éstas clases de acuerdo a las operaciones
que deseamos efectuar. Empezamos con las operaciones de escritura, para lo cual
básicamente declaramos un objeto de la clase ofstream, después utilizamos la función
miembro open para abrir el archivo, escribimos en el archivo los datos que sean necesarios
utilizando el operador de inserción y por último cerramos el archivo por medio de la función
miembro close, éste proceso está ilustrado en nuestro primer programa, archiv01.cpp.

//***********************************************
// archiv01.cpp
// Demuestra la escritura básica en archivo
//***********************************************

#include <fstream.h>
int main()
{
ofstream archivo; // objeto de la clase ofstream
archivo.open("datos.txt");

archivo << "Primera línea de texto" << endl;


archivo << "Segunda línea de texto" << endl;
archivo << "Última línea de texto" << endl;

archivo.close();
return 0;
}

En el programa se ha creado un objeto de la clase ofstream llamado archivo, posteriormente


se utiliza la función miembro open para abrir el archivo especificado en la cadena de texto
que se encuentra dentro del paréntesis de la función. Podemos invocar a la función
constructora de clase de tal manera que el archivo también se puede abrir utilizando la
siguiente instrucción:

ofstream archivo("datos.txt"); // constructora de ofstream

Naturalmente, al utilizar la función constructora ya no es necesario utilizar la función


miembro open, ésta forma de abrir un archivo es preferida porque el código es más
compacto y fácil de leer. De la misma forma que se utilizan manipuladores de salida para
modificar la presentación en pantalla de los datos del programa, igual es posible utilizar

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 54

estos manipuladores al escribir datos en un archivo como lo demuestra el programa


archiv02.cpp, observe que se utiliza un constructor para crear y abrir el archivo llamado
Datos.txt:

//***********************************************
// archiv02.cpp
// Demuestra el uso de manipuladores
//***********************************************

#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>

int main()
{
ofstream archivo("Datos.txt"); // constructor de ofstream
int numero;

cout << "Introduzca un numero:" << endl;


cin >> numero;
archivo << "El valor introducido en base 10 es: " << numero << endl;

archivo << resetiosflags(ios::dec);


archivo << setiosflags(ios::oct);
archivo << "en base octal es: " << numero << endl;
archivo << resetiosflags(ios::oct);
archivo << setiosflags(ios::hex);
archivo << "y en base hexadecimal es: " << numero << endl;
archivo << setiosflags(ios::uppercase|ios::showbase);
archivo << "utilizando los manipuladores uppercase y showbase"
<< " el valor es: " << numero << endl;
archivo << resetiosflags(ios::uppercase|ios::showbase);
archivo << resetiosflags(ios::hex);
archivo << setiosflags(ios::showpos|ios::showpoint|ios::fixed);
archivo << "Utilizando los manipuladores showpos," << " showpoint y fixed: " <<
(float)numero << endl;
archivo << resetiosflags(ios::showpos|ios::showpoint|ios::fixed);
archivo << "Finalmente el valor es " << numero << endl;

archivo.close();

return 0;
}

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 55

Modos de apertura de archivo

Al especificar la apertura de un archivo como se ha mostrado en los programas anteriores,


el programa sobreescribe cualquier archivo existente llamado Datos.txt en el directorio de
trabajo del programa. Dependiendo del propósito del programa es posible que sea
necesario agregar datos a los ya existentes en el archivo, o quizá sea necesario que las
operaciones del programa no se lleven a cabo en caso de que el archivo especificado exista
en el disco, para éstos casos podemos especificar el modo de apertura del archivo
incluyendo un parámetro adicional en el constructor, cualquiera de los siguientes:

ios::app Operaciones de añadidura.


ios::ate Coloca el apuntador del archivo al final del mismo.
ios::in Operaciones de lectura. Esta es la opción por defecto para objetos de la clase ifstream.
ios::out Operaciones de escritura. Esta es la opción por defecto para objetos de la clase
ofstream.
ios::nocreate Si el archivo no existe se suspende la operación.
ios::noreplace Crea un archivo, si existe uno con el mismo nombre la operación se suspende.
ios::trunc Crea un archivo, si existe uno con el mismo nombre lo borra.
ios::binary Operaciones binarias.

De esta manera, podemos modificar el modo de apertura del programa archiv02.cpp para
que los datos del programa se concatenen en el archivo Datos.txt simplemente escribiendo
el constructor así: ofstream archivo("Datos.txt", ios::app);. Si deseamos que el programa no
sobreescriba un archivo existente especificamos el constructor de ésta manera: ofstream
archivo("Datos.txt", ios::noreplace);. Utilizando los especificadores de modo de apertura se
puede conseguir un mayor control en las operaciones de E/S en archivos.

Operaciones de lectura de archivos

Para abrir un archivo y realizar operaciones de lectura se crea un objeto de la clase ifstream
y se procede prácticamente de la misma forma que lo expuesto en el apartado anterior.
Después de abrir el archivo se puede leer su contenido utilizando la función miembro de la
clase ifstream o bién el operador de extracción. Cuando se lee un archivo, por lo general se
empieza al principio del mismo y se leerá su contenido hasta que se encuentre el final del
archivo. Para determinar si se ha llegado al final del archivo se puede utilizar la función
miembro eof como condición de un bucle while. Además se puede utilizar la función
miembro fail para detectar un error al abrir el archivo, esto se demuestra en el siguiente
programa, archiv03.cpp:

//***********************************************
// archiv03.cpp
// Demuestra operaciones de lectura de archivos
//***********************************************

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 56

#include <fstream.h>

int main()
{
ifstream archivo("Pruebas.txt", ios::noreplace);
char linea[128];
long contador = 0L;

if(archivo.fail())
cerr << "Error al abrir el archivo Pruebas.txt" << endl;
else
while(!archivo.eof())
{
archivo.getline(linea, sizeof(linea));
cout << linea << endl;
if((++contador % 24)==0)
{
cout << "CONTINUA...";
cin.get();
}
}
archivo.close();
return 0;
}

El programa crea un objeto de la clase ifstream para abrir el archivo llamado Pruebas.txt
utilizando el constructor de clase y especificando la bandera ios::noreplace que evita que el
archivo sea sobreescrito. Si por algún motivo ocurre un error al abrir el archivo se genera el
mensaje de error especificado en la línea 16. En ausencia de errores el programa entra en
un bucle while el cual está evaluado por efecto de la función miembro eof( ) de tal manera
que el bucle se ejecuta hasta encontrar el final del archivo. Utilizando la función miembro
getline( ) se obtiene una línea de texto y se exhibe en pantalla, línea 21, luego utilizamos
una instrucción condicional if con el operador de módulo (%) para determinar si se han leído
24 líneas de texto. Cada vez que el contador de líneas dividido entre 24 dé como resultado
un resíduo de cero el programa se detiene permitiendo leer las 24 líneas de texto previas.
Para continuar se debe presionar la tecla enter y entonces el programa leerá y mostrará en
pantalla las siguientes 24 líneas de texto, líneas 22 a la 26.

Analizando el éxito de E/S de archivos

En el programa archiv03.cpp se utilizó la función miembro fail( ) para determinar el éxito de


la operación de apertura del archivo Pruebas.txt. La función miembro fail( ) produce el valor
de 1 si ocurre un error en la operación de archivo. Similarmente es recomendable utilizar
otras funciones para verificar no solo la apertura de archivo sino también las operaciones

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 57

de lectura y escritura, las funciones miembro que nos permiten éstas pruebas son las
siguientes:

good Produce un 1 si la operación previa fue exitosa.


eof Produce un 1 si se encuentra el final del archivo.
fail Produce un 1 si ocurre un error.
bad Produce un 1 si se realiza una operación inválida.

Tres de las cuatro funciones enlistadas quedan demostradas en el siguiente programa


llamado archiv04.cpp el cual copia el contenido del archivo llamado Pruebas.txt en uno
llamado Copia.txt. En primer lugar se crea un objeto de la clase ifstream llamado origen que
nos sirve para abrir el archivo Pruebas.txt para operaciones de lectura, la función miembro
origen.fail( ) nos indica la existencia de un error, en caso de que éste exista se despliega un
mensaje en pantalla y el programa termina. Si la apertura del archivo Pruebas.txt fué exitosa
se procede entonces a la siguiente parte del programa donde se crea un objeto de la clase
ofstream llamado destino para operaciones de escritura el cual especifica que el archivo a
crear se llamará Copia.txt y de acuerdo a la bandera ios::noreplace, si existe un documento
con el nombre de Copia.txt la función constructora fallará, éste proceso es detectado por la
función miembro destino.fail( ) desplegando un mensaje en pantalla y terminando el
programa. archiv04.cpp es un programa que sirve para copiar un archivo basado en
caracteres ASCII.

//*********************************************************
// archiv04.cpp
// Demuestra éxito en operaciones de E/S de archivos
//*********************************************************

#include <fstream.h>
#include <stdlib.h>

int main()
{
ifstream origen("Pruebas.txt");
char linea[128];

if(origen.fail())
cerr << "Error al abrir el archivo Pruebas.txt" << endl;
else
{
ofstream destino("Copia.txt", ios::noreplace);
if(destino.fail())
cerr << "Error al crear el archivo: Copia.txt" << endl;
else
{

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 58

while(!origen.eof())
{
origen.getline(linea, sizeof(linea));
if(origen.good()) // si lectura ok y
if(origen.eof()) // si eof, -> termina
exit(1); // el programa
else
destino << linea << endl;
if(destino.fail())
{
cerr << "Fallo de escritura en archivo" << endl;
exit(1);
}
}
}
destino.close();
}
origen.close();

return 0;
}

En caso que las operaciones de apertura de los archivos involucrados en el programa


archiv04.cpp sean exitosas, entonces se inicia un bucle en donde se lee en primer lugar una
línea de texto, línea 27 del programa, el éxito de ésta operación es monitoreado por la
función miembro origen.good( ), si ésta función indica que la lectura del archivo fué exitosa
entonces la función miembro origen.eof( ) verifica si la línea en cuestión es el final del
archivo, si no es así, entonces la línea leída se escribe en el archivo Copia.txt, entonces le
corresponde a la función miembro destino.fail( ) verificar que el proceso de escritura tuvo
éxito, línea 33 del programa. El bucle se repite hasta encontrar el final del archivo, condición
que se verifica tanto en la línea 25 como en la 29 del programa.

Operaciones con archivos binarios

Las operaciones de flujos de archivos se ejecutan en forma predeterminada en modo de


texto, sin embargo hay ocasiones en donde se requiere realizar operaciones en archivos
binarios, como sucede con archivos de estructuras de datos ó aquellos que contienen datos
numéricos de punto flotante. A manera de prueba trate de realizar una copia de un archivo
ejecutable utilizando el programa archiv04.cpp, se dará cuenta que si bién, el programa no
marca errores, el resultado sencillamente no es el esperado. La prueba definitiva es
comparar el tamaño en bytes del archivo original contra el tamaño del archivo copiado.

El programa archiv05.cpp ejecuta operaciones de E/S en archivos utilizando el modo binario


(ios::binary), éste programa puede copiar efectivamente un archivo ejecutable, en el

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 59

ejemplo Archiv04.EXE, generando un nuevo archivo llamado Copia.EXE, el nuevo código,


basado en archiv04.cpp es el siguiente:

//*********************************************************
// archiv05.cpp
// Demuestra operaciones con archivos binarios
//*********************************************************

#include <fstream.h>
#include <stdlib.h>

int main()
{
ifstream origen("Archiv04.exe", ios::binary);
char linea[1];

if(origen.fail())
cerr << "Error al abrir el archivo: Archiv04.exe" << endl;
else
{
ofstream destino("Copia.exe", ios::binary);
if(destino.fail())
cerr << "Error al crear el archivo: Copia.exe" << endl;
else
{
while(!origen.eof()&&!origen.fail())
{
origen.read(linea, sizeof(linea));
if(origen.good())
{
destino.write(linea, sizeof(linea));
if(destino.fail())
{
cerr << "Error en el archivo: Copia.exe" << endl;
exit(1);
}
}
else if(!origen.eof())
{
cerr << "Error en el archivo: Archiv04.exe" << endl;
exit(1);
}
}
}

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 60

destino.close();
}
origen.close();

return 0;
}

Observará que se utiliza la función miembro origen.read( ) para leer un byte del archivo
especificado por el objeto de la clase ifstream llamado origen, línea 27. En forma similar, se
utiliza la función miembro destino.write( ) para escribir un byte en el archivo especificado
para el objeto de la clase ofstream llamado Copia.EXE, línea 30 del programa. La
comprobación de las operaciones de E/S se realizan como se indicó para el programa
archiv04.cpp. Si se desea utilizar los operadores de inserción y extracción para operaciones
de E/S en archivos binarios se requiere sobrecargar éstos operadores, ésto lo trataremos
más adelante cuando se aborde el tema de la sobrecarga de operadores en C++.

Lectura y escritura en un archivo

Hasta este punto hemos efectuado operaciones, sea de escritura o bién de lectura en un
archivo, tanto en formato de texto como en formato binario pero todavía no se han
efectuado ámbas operaciones en un mismo archivo. En ciertas aplicaciones es necesario
efectuar operaciones de lectura/escritura en un archivo como es el caso de una base de
datos, para esto es necesario crear un objeto de la clase fstream. Cuando un programa abre
un archivo para operaciones de E/S éste mantiene el registro de dos apuntadores de archivo,
uno para operaciones de lectura y otro para operaciones de escritura. Como en la mayoría
de los casos en que se abre un archivo para operaciones de E/S se efectúa acceso aleatorio,
analizaremos ésta condición.

Acceso aleatorio de archivos

En los programas presentados hasta este punto se han realizados operaciones secuenciales
en el archivo, ya sea para escritura ó lectura de datos, empezando por el principio y
continuando hasta el final del mismo. Las operaciones aleatorias en un archivo no
necesariamente inician por el principio del archivo, en lugar de ésto es posible desplazarse
por el contenido del archivo para realizar una operación de E/S. Para mover los apuntadores
de archivo a posiciones específicas se utilizan dos funciones: seekg( ) coloca el apuntador
de escritura de archivo en un lugar específico, y seekp( ) mueve el apuntador de lectura a
una posición específica en el archivo, la sintáxis de las funciones es ésta:

seekp(desplazamiento, posicion)
seekg(desplazamiento, posicion)

El parámetro desplazamiento especifica la cantidad de bytes que se moverá el apuntador


de archivo, puede ser un valor positivo ó negativo. El parámetro posición especifica el lugar

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 61

del archivo a partir del cual se moverá el apuntador de archivo, de acuerdo a las siguientes
banderas

ios::beg Desde el principio del archivo


ios::cur Desde la posición actual del apuntador
ios::end Desde el fin del archivo

Para demostrar las operaciones aleatorias conviene generar un breve archivo de texto en
donde poder efectuar algunas operaciones de E/S, use el siguiente código:

//***********************************************
// letras.cpp
// Genera un abecedario
//***********************************************

#include <fstream.h>

int main()
{
ofstream archivo("Letras.txt");

for(char letra='A'; letra <='Z'; letra++)


archivo << letra;
archivo.close();

return 0;
}

El código genera un alfabeto en el archivo llamado Letras.txt, ahora utilizaremos el


programa archiv06.cpp para "navegar" por el contenido del archivo y generar una palabra
amigable en pantalla:

//*********************************************************
// archiv06.cpp
// Demuestra lectura y escritura en un archivo
//*********************************************************

#include <fstream.h>

int main()
{
char letra;
fstream letras("Letras.txt", ios::in|ios::out);

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 62

letras.seekg(7, ios::beg); // obtiene la letra H


letra=letras.get();
letras.seekp(0, ios::end);
letras << letra; // coloca la letra al final
letras.seekg(-13, ios::end); // obtiene la letra O
letra = letras.get();
letras.seekp(0, ios::end);
letras << letra;
letras.seekg(-17, ios::end); // obtiene la letra L
letra = letras.get();
letras.seekp(0, ios::end);
letras << letra;
letras.seekg(0, ios::beg); // obtiene la letra A
letra = letras.get();
letras.seekp(0, ios::end);
letras << letra;
letras.seekg(-4, ios::end);
while(!letras.eof())
cout.put((char)letras.get());

letras.close();

return 0;
}

Observe que para posicionar el apuntador de lectura de archivo a partir del fin del mismo
se utiliza un número negativo y además la lectura avanza hacia el final del archivo. Por la
naturaleza del programa archiv06.cpp solo desplegará el mensaje HOLA en pantalla una sola
vez, esto es porque las letras que forman la palabra "HOLA" se leen del archivo y a su vez se
escriben al final del mismo, el código toma en cuenta las letras previamente escritas, lineas
19 a la 32. Para un mejor entendimiento del funcionamiento del programa utilice el
depurador de errores de su compilador en la modalidad de paso por paso.

Salida a impresora

De la misma manera en que es posible escribir la salida en un archivo, habrá ocasiones en


las que es necesario producir constancia en papel utilizando una impresora. En general es
posible tratar a la impresora como uno más de los dispositivos disponibles para la salida de
datos, se crea un objeto de la clase ofstream especificando como nombre de archivo la
palabra PRN, tal y como lo demuestra el último programa de este tutorial, archiv07.cpp:

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 63

//***********************************************
// archiv07.cpp
// Demuestra la salida a impresora
//***********************************************

#include <fstream.h>
#include <stdlib.h>

int main()
{
char texto[256];
ofstream impresora("PRN");
ifstream archivo("Pruebas.txt");

if (archivo.fail())
cerr << "Error al abrir el archivo: Pruebas.txt" << endl;
else
{
while (!archivo.eof())
{
archivo.getline(texto, sizeof(texto));
if (archivo.good())
{
impresora << texto << endl;
if (impresora.fail())
{
cerr << "Error de escritura en impresora" << endl;
exit(1);
}
}
else if (!impresora.eof())
{
cerr << "Error al leer el archivo: Pruebas.txt" << endl;
exit(1);
}
}
archivo.close();
impresora.close();
}

return 0;
}

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD V: Arreglos y archivos. 64

5.4 ELABORACIÓN DE PROGRAMAS.

Realizar ejercicios del cuadernillo de prácticas.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD VI

FUNCIONES.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD VI: Funciones. 66

6.1 INTRODUCCIÓN.

Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general
toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de salida o
valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no
existir.

Tal vez parezca un poco precipitado introducir este concepto tan pronto en el curso. Sin
embargo, las funciones son una herramienta muy valiosa, y como se usan en todos los
programas C++, creo que debemos tener, al menos, una primera noción de su uso. A fin de
cuentas, todos los programas C++ contienen, como mínimo, una función.

¿Funciones, métodos o procedimientos?

En el mundo de la programación, muchos acostumbramos hablar indistintamente de estos


tres términos sin embargo poseen deferencias fundamentales.

Funciones:

Las funciones son un conjunto de procedimiento encapsulados en un bloque, usualmente


reciben parámetros, cuyos valores utilizan para efectuar operaciones y adicionalmente
retornan un valor. Esta definición proviene de la definición de función matemática la cual
posee un dominio y un rango, es decir un conjunto de valores que puede tomar y un
conjunto de valores que puede retornar luego de cualquier operación.

Métodos:

Los métodos y las funciones son funcionalmente idénticos, pero su diferencia radica en el
contexto en el que existen. Un método también puede recibir valores, efectuar operaciones
con estos y retornar valores, sin embargo en método está asociado a un objeto,
básicamente un método es una función que pertenece a un objeto o clase, mientras que
una función existe por sí sola, sin necesidad de un objeto para ser usada.

Procedimientos:

Los procedimientos son básicamente lo un conjunto de instrucciones que se ejecutan sin


retornar ningún valor, hay quienes dicen que un procedimiento no recibe valores o
argumentos, sin embargo en la definición no hay nada que se lo impida. En el contexto de
C++ un procedimiento es básicamente una función void que no nos obliga a utilizar una
sentencia return.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD VI: Funciones. 67

6.2 FUNCIONES ESTÁNDAR.

Una función estándar. Es un conjunto de líneas de código que realizan una tarea específica
y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su
funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en
tareas simples y para implementar operaciones que son comúnmente utilizadas durante un
programa y de esta manera reducir la cantidad de código. Cuando una función es invocada
se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto
al punto desde el cual la función fue llamada.

<tipo> [clase::] <nombre> ( [Parámetros] ).


{
cuerpo;
}

Ejemplo de una función

Para comenzar, vamos a considerar el caso en el cual se desea crear la función cuadrado(),
que deberá devolver el cuadrado de un número real (de punto flotante), es decir,
cuadrado() aceptará números de punto flotante y regresará una respuesta como número
flotante.

Nota: aunque para la función que veremos el tipo de retorno coincide con el tipo de
parámetro pasado, algunas veces las cosas pueden cambiar, es decir, no es obligatorio que
una función reciba un parámetro de un tipo y que tenga que regresar una respuesta de
dicho tipo.

// Regresar el cuadrado de un número

double Cuadrado(double n)
{
return n*n;
}

6.3 ENTRADA Y SALIDA DE DATOS.

Llamar a una función

Para llamar a la función cuadrado() vista anteriormente, podemos emplear:

cout << cuadrado(25);


cout << cuadrado(X);
R = cuadrado(X); // guardar en R el cuadrado de X

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD VI: Funciones. 68

6.4 FUNCIONES DEFINIDAS POR EL USUARIO. (PARAMETROS)

Normalmente, las funciones operan sobre ciertos valores pasados a las mismas ya sea como
constantes literales o como variables, aunque se pueden definir funciones que reciban
parámetros. Existen dos formas en C++ de pasar parámetros a una función; por referencia
o por valor. El hecho es que si en una declaración de función se declaran parámetros por
referencia, a los mismos no se les podrá pasar valores literales ya que las referencias
apuntan a objetos (variables o funciones) residentes en la memoria; por otro lado, si un
parámetro es declarado para ser pasado por valor, el mismo puede pasarse como una
constante literal o como una variable. Los parámetros pasados por referencia pueden ser
alterados por la función que los reciba, mientras que los parámetros pasados por valor o
copia no pueden ser alterados por la función que los recibe, es decir, la función puede
manipular a su antojo al parámetro, pero ningún cambio hecho sobre este se reflejará en el
parámetro original.

6.5 PASE POR VALOR.

Parámetros por valor

La función cuadrado(), es un clásico ejemplo que muestra el paso de parámetros por valor,
en ese sentido la función cuadrado() recibe una copia del parámetro n. En la misma función
se puede observar que se realiza un cálculo ( n*n ), sin embargo el parámetro original no
sufrirá cambio alguno, esto seguirá siendo cierto aún cuando dentro de la función hubiera
una instrucción parecida a n = n * n; o n*=n;

// Regresar el cuadrado de un número

double Cuadrado(double n)
{
return n*n;
}

6.6 PASE POR REFERENCIA.

Parámetros por referencia

Para mostrar un ejemplo del paso de parámetros por referencia, vamos a retomar el caso
de la función cuadrado, salvo que en esta ocasión cambiaremos ligeramente la sintaxis
para definir la misma:

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


UNIDAD VI: Funciones. 69

// Regresar el cuadrado de un número


double cuadrado2(double &n)
{
n *= n;
return n;
}
Al poner a prueba las funciones cuadrado() y cuadrado2() se podrá verificar que la primera
de estas no cambia el valor del parámetro original, mientras que la segunda sí lo hace.

6.7 ELABORACIÓN DE PROGRAMAS.

Realizar ejercicios del cuadernillo de prácticas.

Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”


Prof. Alejandro Domínguez Mendoza. “SI SE PUEDE IMAGINAR, SE PUEDE PROGRAMAR”

También podría gustarte