Está en la página 1de 114

ÍNDICE

1. Información de la unidad / Tema de la semana


3

2. Información de los subtemas 4


3
2.1 Definición 4
38
2.2 Operaciones con vectores

2.3 Algoritmos de ordenación 15

2.4 Algoritmos de búsqueda 21

3. Bibliografía 23

2
1. Informacion de la unidad
Tema de la semana:

» Objetivo:

Comprender la estructura de los vectores y su utilización para la resolución de


problemas.

» Tema:

Vectores

» Subtemas:

1. Definición
2. Operaciones con vectores
3. Algoritmos de ordenación
4. Algoritmos de búsqueda

» Unidad:

Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales

» Total de horas de la asignatura:


9H

3
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

2. Informacion de los subtemas

2.1 Definición

Arreglos

Los arreglos o arrays (en inglés), son un conjunto ordenado de datos del mismo tipo,
tienen una secuencia de elementos y cada elemento puede ser identificado.

Los arreglos son conocidos como matrices en matemáticas y tablas en cálculos


financieros (Joyanes, 2008).

Los arreglos se clasifican por el número de índices de acceso a los elementos, el


número de índice define su dimensión por ejemplo: unidimensionales de 1 índice,
bidimensionales de dos índices y Multidimensionales de n índices (Montalvo, 2015) .

El tipo de arreglo más simple es conocido como vector o arreglo de una dimensión. Por
ejemplo : El arreglo unidimensional “País”, consta de “n” elementos, puede ser
representado como en la tabla 3.1 donde País (I) contendrá un elemento, será tipo
cadena y contendrá el nombre de un País, Ej.: PAIS(1) contiene “ECUADOR”, PAIS(2)
contiene “CHILE”, …, etc.

Tabla 3.1 Vector PAIS

PAIS(1) PAIS(2) PAIS(3) … PAIS(I) … PAIS(N)

Subíndices

Los subíndices dentro de los vectores indican la posición de un elemento dentro de su


© Universidad Estatal de Milagro – UNEMI

ordenación y se define con un número entero.

Donde, si partimos del ejemplo de la Tabla 3.1, podemos leer que PAIS(1)
representa al vector PAIS en la posición 1, PAIS(2) representa al vector PAIS en la
posición 2 y así sucesivamente.

Limites

Ahora que conocemos los subíndices, podemos determinar que los vectores, tienen
principio y fin.

4
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Para representar los límites del vector PAIS, podemos usar la notación PAIS(1:N).
Donde 1 es el límite inferior del vector, y N es el límite superior.

Los límites del vector también permiten identificar el rango del mismo, ya que el rango
será igual al número de elementos del vector.

Elementos de un vector
Los vectores contienen dentro de sí, datos, estos pueden ser de cualquier tipo:
numéricos, caracteres o tipo de cadena de caracteres.

Un ejemplo de un vector que representa el listado de COLEGIOS en una región como


se ve en la tabla 3.2

Tabla 3.2 Vector COLEGIOS

COLEGIOS(1) VELASCO IBARRA

COLEGIOS(2) SIMON BOLIVAR

COLEGIOS(i) TECNICO MILAGRO

COLEGIOS(n) 17 DE SEPTIEMBRE

Haciendo una retroalimentación, podemos decir:

» Dentro del vector COLEGIOS en la posición 1 tenemos almacenado un dato de


tipo cadena “VELASCO IBARRA”
» En la posición 2 del vector se ubica el colegio “SIMON BOLIVAR”
© Universidad Estatal de Milagro – UNEMI

» En la posición n del vector almacenamos el valor “17 DE SEPTIEMBRE”


que es de tipo cadena

Ya que los datos dentro de la memoria del ordenador se ubican de forma continua,
podemos representar un vector llamado NÚMEROS en la tabla 3.3 con 20 posiciones
de memoria sucesivamente.

Tabla 3.3 Vector NUMEROS

5
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Memoria

NUMEROS[1] Dirección X

NUMEROS[2] Dirección X+1

NUMEROS[3] 25 Dirección X+2

… …

NUMEROS[20] Dirección X+19

Los elementos de un vector pueden ser procesados como una variable, ya que ocupan
una posición de memoria, Entonces,
NÚMEROS[3] ← 25
Se almacena el valor real o entero 25 en la posición número 3 del vector NÚMEROS y
para especificarlo como una instrucción de salida escribimos

escribir (NUMEROS[3])
Con esto podremos visualizar el valor del vector en la posición 3, es decir se va a
presentar el valor de 25.

Esto significa que se puede acceder directamente a cada elemento de un vector, ya


que este permite almacenar un conjunto de datos.(Joyanes, 2003)

Con la premisa anterior, podemos decir que se puede acceder al valor de los vectores
en cada una de sus posiciones, entonces plantearemos el vector A compuesto de 5
elementos, con valores de tipo real.

Tabla 3.4 vector A

A[1] A[2] A[3] A[4] A[5]


© Universidad Estatal de Milagro – UNEMI

9.0 10.0 7.5 6.8 7.0

Elemento Elemento Elemento Elemento Elemento


1° 2° 3° 4° 5°

Operaciones básicas que podemos realizar con el vector NOTAS de la tabla 3.4
Acciones Resultados
» escribir(A[1]) Presenta el valor de A en la posición 1, y es 9.0

6
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

» A[3]←10 Asigna el valor de 10 en la posición 3 del vector A


» SUMA ←A[1]+A[2] Asigna a SUMA, A[1] +A[2], es decir SUMA = 19.0
» SUMA ← SUMA+A[5] Asigna a SUMA, la suma de su valor anterior + el
valor A[5], SUMA = 26.0
» A[5] ← A[5]+1,5 Asigna en A[5] el valor de A[5] sumado en 1,5,
quiere decir que A[5] = 8.5
» A[3] ← A[1]+A[2] Asigna en A[3] el valor de A[1]+A[2]= 19.0
© Universidad Estatal de Milagro – UNEMI

2.2 Operaciones con vectores

7
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

2.2 Operaciones con vectores


Operaciones a realizar con vectores en la resolución de problemas:
» Asignación
» Lectura – Escritura
» Recorrido
» Actualización Añadir, borrar
» Ordenación
» Búsqueda

Implementación en lenguaje C

C es un lenguaje de programación, para propósitos generales, este lenguaje


fue diseñado para el sistema operativo UNIX, por Dennis Ritchie, quien lo implanto
sobe el ordenador DEC PDP-11(Kernighan & Ritchie, 1991)

Los ejemplos que se muestran a continuación serán escritos en lenguaje C para


su explicación.

Este lenguaje que permitirá el ingreso de 5 tipos de datos, ya sean básicos


o estructurados, además nos permite convertir varios tipos de datos, sea de entero
a carácter o viceversa, podremos usar sentencias para ciclos y de decisión.(Salas, 1991)

Los subíndices o simplemente índices deben ser enteros de constantes, variables o


expresiones, y el primer valor de los índices comienza siempre por cero. El lenguaje C
no comprueba los límites del arreglo, por lo que esos límites pueden ser desbordados
en cualquier extremo del arreglo. Por lo tanto, el programador debe proporcionar una
comprobación de los límites del arreglo (Montalvo, 2015).
© Universidad Estatal de Milagro – UNEMI

Declaración de un Arreglo

La forma general de declaración de un arreglo unidimensional es:

tipo nombre_variable[tamaño];

ejemplo: int notas [10]; note que termina en ;

donde:

8
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

- tipo, declara el tipo base del arreglo, que es el tipo de cada elemento del mismo, int,
significa tipo de números entero.

- tamaño, indica el número de elementos que tendrá el arreglo, 10.

- nombre_variable, es el nombre del arreglo, notas.

En la figura 3.1 se detalla un algoritmo como ejemplo para la declaración de un vector


en lenguaje C, en el cual se declaran 2 vectores números[] y decimales[]
correspondientemente, el vector números[] se declara en “0”, en la línea 7 del código
se le asigna el valor de 3 en la posición 1, y en la línea 8 se asigna el valor de 5 en la
posición 2.

Figura 3.1 Algoritmo para la declaración de un vector en C


© Universidad Estatal de Milagro – UNEMI

Figura 3.1.2 Presentación del algoritmo

9
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Pregunta 1: En la línea 15 de la figura 3.1 se declara al vector, y se insertan 2 valores


como decimales, donde el primero es “3.000078”, y al imprimirse este cambia a
“3.000008” ¿Por qué pasa esto?

Debido a que al declarar un valor como float este permite solamente 7 dígitos, en
binario 32 bits, por lo que este se redondea. Si se desea presentar el valor de 8 dígitos,
el vector debe declararse como doublé ya que este permite hasta 64 bits, o sea 15-16
dígitos.(David, 2017)

Pregunta 2: En la línea 19 de la figura 3.1 ¿Por qué para presentar por pantalla al
vector decimales[], se colocan los elementos en el índice “0” y “1”?

Esto se hace debido a que los vectores generalmente empiezan desde el índice “0”,
por lo que los valores ingresados se irán acomodando desde 0, al momento de la
declaración.

Asignación

La asignación de valores a los elementos del vector, gráficamente será con su


instrucción “←”

A[5] ←1 Asigna al vector A en la posición 5 el valor de 1

Asumiendo

Leer(A[i])

Introducimos los valores 1, 2, 3, 4, 5 mediante asignación

A[1] ←1
© Universidad Estatal de Milagro – UNEMI

A[2] ←2
A[3] ←3
A[4] ←4
A[5] ←5

10
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Recordemos que, para trabajar con arreglos, tenemos un inicio y un fin, entonces
podemos utilizar expresiones como desde y hasta para referirnos a un rango dentro
del vector.

Entonces si queremos asignar un mismo valor a cada elemento del vector A, podemos
usar un formato de algoritmo simple como

desde i=1 hasta 5


A[i] ←0
Fin_desde
Donde el vector A, asignara el valor numérico de 0 en cada uno de sus elementos,
desde la posición 1 hasta la 5.

A[1] ←0
A[2] ←0
A[3] ←0
A[4] ←0
A[5] ←0
En el lenguaje C, ya que los arreglos ocupan espacio en memoria, debemos de
especificar el tipo de cada arreglo y número de elementos que este necesita, y así la
computadora pueda reservar la cantidad necesaria de memoria.(Deitel & Deitel, 2004)

Para indicarle al ordenador que reserve 5 espacios para el arreglo F, declaramos así:

Int F[5];
Así mismo podemos indicar al computador que reserve 3 elementos para el arreglo A,
y 6 para el arreglo O de la siguiente manera:
© Universidad Estatal de Milagro – UNEMI

Int A[3], O[6];


Recorrido

Para leer los elementos de un vector, se debe recorrer de inicio a fin dicho vector,
dentro de los lenguajes de programación se usa la sentencia for y dentro de este se
presenta por pantalla el elemento del vector en su posición y lo que contiene, o sea su
valor.

11
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Como algoritmo podemos expresar la lectura de un vector F con 5 elementos como

i ←1
mientras i <=5
leer(F[i])
i←i+1
fin_mientras
Indica que el ordenador, leerá datos, mientras i sea menor o igual a 5, donde i
representa la posición de los elementos.

Suponiendo que los datos ingresados por teclado en la sentencia anterior fueron

F[1] = 1 F[2] = 3 F[3] = 5 F[4] = 7 F[5] = 11


La sentencia escribir también se escribe dentro de un ciclo repetitivo ya que debe
recorrer al vector.

i ←1
mientras i <=5
escribir(F[i])
i←i+1
fin_mientras
La sentencia escribir, presentara todos los valores que contienen los elementos del
vector F, es decir: 1, 3, 5, 7 y 11

Actualización de un vector

Los vectores pueden añadir valores a los elementos o modificarlos siempre y cuando
existan los espacios de memoria respectivos.
© Universidad Estatal de Milagro – UNEMI

12
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Implementaciòn de arreglos en C

Dentro del lenguaje C, aprenderemos instrucciones para que nuestros algoritmos


funcionen, y podamos hacer prácticas, para este trabajo usaremos el programa DEV
C++.

El ejemplo de la Figura 3.2 usa instrucciones for, para inicializar en “0” todos los
elementos de un arreglo, 10 en total, y se ha impreso todos los valores de dicho
arreglo de forma tabular, por medio de la instrucción printf, dentro de los comentarios
(/* */) entre las líneas 13 y 17, además de las líneas 22 a 27, se explica cómo se
establecen en la instrucción de impresión las tabulaciones, el resultado se presenta en
la Figura 3.2.2
© Universidad Estatal de Milagro – UNEMI

Figura 3.2 Función en C de un arreglo y su presentación

13
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Figura 3.2.2 Impresión de datos del arreglo


© Universidad Estatal de Milagro – UNEMI

14
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

2.3 Algoritmos de ordenación


Un vector puede pasar a ser considerado como un listado de elementos, por lo que
también pueden ser comparados, y al comparar un elemento entre otro, podemos
definir si uno es mayor o menor que otro.(Yáñez, 2014)

Los algoritmos de ordenación permiten organizar los vectores por sentido:

» Descendente – De mayor a menor


» Ascendente – De menor a mayor

Existen varios algoritmos básicos de ordenación, pero en este caso estudiaremos los
más básicos:

» Ordenación por inserción


» Ordenación por selección
» Ordenación por el método de burbuja

Ordenación por inserción

Por medio de este procedimiento se realiza una búsqueda secuencial dentro del
vector, el algoritmo de ordenación por inserción (ascendente) funciona de la siguiente
manera.

Tenemos una lista desordenada como la siguiente: 3, 1, 5, 7, 2, 8

» La lista contendrá como primer valor 3


» 1 es menor que todos los elementos de la lista así que se inserta al inicio y se
desplaza el 3 hacia la derecha : 1, 3
© Universidad Estatal de Milagro – UNEMI

» 5 es el mayor elemento de la lista, así que lo insertamos al final: 1, 3, 5


» 7 es el mayor elemento de la lista, así que lo insertamos al final: 1, 3, 5, 7
» 3 es el tercer elemento mayor que el nuevo elemento o sea “2”, entonces
desplazamos todos los elementos desde “3” hacia la derecha: 1, 2, 3, 5, 7
» 8 es el mayor elemento de la lista, así que lo insertamos al final: 1, 2, 3, 5, 7, 8

15
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

La figura 3.3 muestra la implementación de un algoritmo de ordenación por inserción


dentro del lenguaje C, en un vector lista[] de 10 elementos desordenados.

La figura 3.3.1 muestra la compilación y ejecución del algoritmo, presentando en


formato tabular los elementos del vector en primera instancia desordenados, y al final
con el mismo formato, los datos ya ordenados.
© Universidad Estatal de Milagro – UNEMI

16
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Figura 3.3 Algoritmo de ordenación por inserción en C


© Universidad Estatal de Milagro – UNEMI

Figura 3.3.1 Ejecución del algoritmo

17
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Ordenación por selección directa

El método de ordenación por selección directa permite ordenar valores, haciendo uso
de dos vectores, o listas, la lista principal almacena los datos desordenados, mientras
que por medio de un procedimiento se la recorre en búsqueda del elemento mínimo
quien se colocará primero en la segunda lista la cual irá recibiendo los elementos
mínimos de la lista principal para agruparlos de menor a mayor.

La figura 3.4 muestra el algoritmo en lenguaje C de este método haciendo uso de un


vector, con dos índices para simular las 2 listas.
© Universidad Estatal de Milagro – UNEMI

Figura 3.4 Ordenación Método Selección Directa

18
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Ordenación por método de burbuja

Este método se encarga de encontrar el menor valor dentro del vector, cuando lo
encuentra, lo desplaza a la izquierda, haciendo un intercambio con el elemento que
reemplaza, el cual se almacena en una variable auxiliar, como se expresa en el
algoritmo de la figura 3.6.

Figura 3.5 Método de la burbuja


Link: https://bit.ly/3007DuD

Tal como se observa en la figura 3.5 cuando un elemento se encuentra con otro menor
a él, este se queda ubicado en la misma posición, y el elemento con menor valor
empieza a compararse con los restantes.
© Universidad Estatal de Milagro – UNEMI

19
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

Figura 3.6 Ordenación Método burbuja


© Universidad Estatal de Milagro – UNEMI

20
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

2.4 Algoritmos de búsqueda


Los vectores al contar con un índice, nos dan la facilidad de encontrar los elementos
que buscamos y su respectiva posición.

A continuación en la figura 3.7 se muestra un algoritmo hecho en C, para la búsqueda


de un elemento dentro de un vector, recorriéndolo en su totalidad, imprimiendo cada
una de las posiciones en caso de que el elemento no se encuentre, y la posición y el
elemento en sí , en caso de encontrarlo.

Figura 3.7 Algoritmo en C para la búsqueda de un elemento


© Universidad Estatal de Milagro – UNEMI

21
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

El algoritmo cuenta con un vector de 10 elementos ya insertados, y por medio de la


inserción de un dato por teclado se hará la búsqueda de uno de los elementos, la
ejecución del algoritmo, insertando por teclado el elemento “11” se muestra en la
figura 3.7.

Figura 3.7.1 Ejecución del algoritmo


© Universidad Estatal de Milagro – UNEMI

22
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores

3. Bibliografía
» David, V. V. (2017). Curso: Programación.

» Deitel, H., & Deitel, P. J. (2004). Como_Programar en C/C++ yJava. (Pearson Educación
de México, Ed.) (4ta ed.). Naucalpan de Juárez: PRENTICE-HALL, INC.,.

» Joyanes, L. (2003). Fundamentos de programación: Libro de problemas. Algoritmos,


estructuras de datos y objetos (2a. ed.). Recuperado de www.fullengineeringbook.net

» Joyanes, L. (2008). Fundamentos de Programación algoritmos, estructuras. (S. A. U.


McGRAW-HILL/INTERAMERICANA DE ESPAÑA, Ed.) (cuarta). Madrid.

» Kernighan, B. W., & Ritchie, D. M. (1991). El lenguaje de programación C. Pearson


Educación.

» Montalvo, E. G. (2015). Lenguaje C TEORÍA Y EJERCICIOS. (ESPE, Ed.). Espe. Recuperado


de www.repositorio.espe.edu.ec.

» Salas, A. (1991). Curso de lenguaje «c».

» Yáñez, L. (2014). Fundamentos Programacion. Licencia CC (Creative Commo.


© Universidad Estatal de Milagro – UNEMI

23
ÍNDICE

1. Información de la unidad / Tema de la semana


3

2. Información de los subtemas

21. Fundamentos de cadenas y caracteres


4
3
22. La biblioteca de manipulación de caracteres 7
3
23. Funciones de conversión de cadenas 14
24. Otras Funciones 22

3. Bibliografía 27

2
1. Informacion de la unidad
Tema de la semana:

» Objetivo:

Examinar la estructuración y operación en estructuras (arrays) de elementos de


datos del mismo tipo.

» Tema:

Cadenas de texto (strigns)

» Subtemas:

1. Fundamentos de cadenas y caracteres


2. La biblioteca de manipulación de caracteres
3. Funciones de conversión de cadenas
4. Otras Funciones

» Unidad:

Datos estructurados: Vectores, cadenas de texto ( strings) y vectores


multidimensionales

» Total de horas de la asignatura:


9H

3
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

2. Informacion de los subtemas

2.1 Fundamentos de cadenas y caracteres


Cadenas y caracteres.

Los caracteres en bloques ayudan a construir los programas, un programas contiene


una secuencia de caracteres agrupados que el computador los interpreta como un
conjunto de instrucciones que ejecutan una acción. (Deitel & Deitel, 2004)

El valor de una constante de carácter se escribe entre comillas simples.


Ejemplo:
» Caracteres de dígitos: ‘5’, ‘4’,’3’
» Caracteres especiales: ‘+’
» Caracteres alfabéticos mayúscula: ‘M’,’N’, ‘O’
» Caracteres alfabéticos minúsculas: ‘m’, ‘n’, ‘o’

Una cadena es un arreglo de elementos de tipo char, terminado por un carácter nulo,
representado por: ‘\0’, esto nos permite controlar donde termina la cadena. Puede
contener dígitos, caracteres especiales como +, -, *, / etc. (Deitel & Deitel, 2004).
Pueden ser declaradas de la siguiente manera dentro de comillas dobles:

» char nomb [15] = “Como”; ---> cadenas con arreglo puede ser definido así
© Universidad Estatal de Milagro – UNEMI

también, char nomb [15] = { ‘c’, ‘o’, ‘m’, ‘o’, ‘\0’ };

» char nombre [] =” Hola mundo”; ---> Sin especificar tamaño de arreglo

A continuación, veamos un ejemplo de cadena con arreglos realizado en lenguaje C

4
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Figura 1 Código fuente y ejecución del programa en C - Cadena de caracteres


con arreglos.

Fuente: (elaboración del autor)

Explicación del ejercicio:

» Primero se declara las librerías en este caso <stdio.h>

» Se define la función int main

» Se declara la variable con el tipo de dato char y como identificador le


llamaremos arrecadena el cual contiene un arreglo que reserve 15 espacios

» Se asigna con doble comillas una cadena en este caso “Como estas”, contando
los caracteres nos podemos dar cuenta que se tiene 10, pero como ya se
mencionó anteriormente al final de cada cadena se le agrega un carácter nulo.

» Finalmente, se le imprime la cadena con printf, donde se le da la referencia de


donde esta almacenada la cadena. Y se le da click en ejecutar y compilar

En la figura 2 podemos observar un ejemplo de una cadena de caracteres con un


© Universidad Estatal de Milagro – UNEMI

apuntador

Figura 2 Código fuente y ejecución del programa en C - Cadena de caracteres con apuntador. Fuente: (elaboración del autor)

5
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Explicación del ejercicio :

» Primero se declara la librería <stdio.h>

» Se define la función int main

» Se declara un apuntador de tipo de dato char, seria de la siguiente manera:


char * apCadena y se le asigna la cadena de caracteres “Hola mundo”

» Lo que hace el compilador es que primero crea el arreglo en la memoria es


decir genera las casillas necesarias para la cadena, y la primera dirección del
carácter es asignado al apuntador.

» Finalmente, se lo imprime con printf, se cierra la función main, se le da a


compilar y ejecutar
© Universidad Estatal de Milagro – UNEMI

6
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

2.2 Biblioteca de manipulación de caracteres


Existen librerías para manipular los caracteres estas contienen funciones las cuales
ayudan a manipular estos tipos de datos.

Entre ellas tenemos a ctype.h, este archivo de encabezado de la biblioteca del lenguaje
C, declara varias funciones que son útiles para probar y asignar caracteres. Cada una
de las funciones reciben como argumento un tipo de carácter que es simbolizado
como un tipo de dato entero (int), cuyo valor debe ser EOF que representa un valor sin
signo, se usa el tipo de dato entero ya que los caracteres tambien pueden ser
manejados como int, debido a que en lenguaje c un tipo de dato char puede ser
representado por un entero de 1 byte.

Todas las funciones devuelven un valor distinto de cero es verdadero si cumple la


condición dada y devuelve falso si no. (Deitel & Deitel, 2004)

A continuación, en la figura 3 tenemos algunas bibliotecas, para manipular estos


caracteres, algunas de las funciones que tenemos son: isdigt, isalpha, isalnum, isxdigit
entre otras. Tambien la función scanf utiliza la función de isspace para poder saber si
existen espacios en blanco en la parte interna de una caja de texto de entrada. (Deitel
& Deitel, 2004)
© Universidad Estatal de Milagro – UNEMI

7
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Figura 3 Biblioteca de manejo de caracteres.

Fuente: (Deitel & Deitel, 2004)

Ejemplo de la función isdigit

Escriba un programa en C donde muestre si “4” y “*” es un digito o no, por ejemplo, si
© Universidad Estatal de Milagro – UNEMI

Figura 4 Función isdigit.

Fuente: (elaboración del autor)

8
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

es un digito deberá salir 4 es un digito, caso contrario saldrá que no es.

Explicación del ejercicio:

» Se incluyen las librerías en este caso <stdio.h> y <ctype.h>

» Se define la función int main

» Con printf se muestra por pantalla un mensaje: “De acuerdo con isdigit”

» En la siguiente línea se le indica que debe imprimir la salida del carácter que ha
sido evaluado, y la función que se va a usar poniendo entre paréntesis el digito
que se quiere evaluar, se usa un signo de interrogación(?) como un operador
condicional que nos permite determinar si es o no un digito, luego esto
imprime la salida de caracter evaluado

» Finalmente se cierra la función main, se compila y ejecuta el programa.

Figura 5 Ejecución del programa.

Fuente: (elaboración del autor)


© Universidad Estatal de Milagro – UNEMI

9
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Ejemplo de la función isalpha

De acuerdo al concepto de la función isalpha. Se requiere saber si “J”, “l”, “$” y “9” son
letras o no.

Figura 6 Función isalpha.

Fuente: (elaboración del autor)

Explicación del ejercicio:

» Se incluyen las librerías <stdio.h> y <ctype.h>.

» Se define la función int main ().

» Con printf muestra por pantalla un mensaje, aquí se le especifica si es una


cadena de caracteres con un “%s ", “De acuerdo con isalpha”.

» En la siguiente línea imprime la salida del carácter que ha sido evaluado como,
por ejemplo: ¿isalpha (‘J’)? "J es una ": "J no es una ", "letra \n". Se le indica la
© Universidad Estatal de Milagro – UNEMI

función que se va a usar poniendo entre paréntesis el digito que se quiere


evaluar, se usa un signo de interrogación (?) como un operador condicional.

» Finalmente se cierra la función main, se compila y ejecuta el programa.

10
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Figura 7 Ejecución del programa- Función isalpha.

Fuente: (elaboración del autor)

Ejemplo de las funciones isxdigit

Figura 8 Función isxdigi.

Fuente: (elaboración del autor)

Explicación del ejercicio:

» Se incluyen las librerías <stdio.h> y <ctype.h>

» Se define la función int main


© Universidad Estatal de Milagro – UNEMI

» Con printf se muestra por pantalla un mensaje en este caso es : “De acuerdo
con isxdigit”

» En la siguiente línea se le indica que debe imprimir la salida del carácter que ha
sido evaluado, y la función que se va a usar poniendo entre paréntesis el digito
que se quiere evaluar, se usa un signo de interrogación(?) como un operador
condicional que nos permite determinar si es o no un digito

11
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

» luego esto imprime la salida de carácter evaluado

» Finalmente se cierra la función main, se compila y ejecuta el programa,

Figura 9 Ejecución del programa - Usando la función isxdigit.

Fuente: (elaboración del autor)

Ejemplo de la función islower, isupper, touper y tolower

Figura 10 Ejemplo usando las funciones islower, isupper,toupper y tolower.


© Universidad Estatal de Milagro – UNEMI

Fuente: (elaboración del autor)

Explicación del ejercicio:

» Se incluyen las librerías <stdio.h> y <ctype.h>

» Se define la función int main

12
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

» Con printf se mostramos por pantalla el mensaje que queremos que salga al
momento de ejecutarse. En la siguiente línea se le indica que debe imprimir la
salida del carácter que ha sido evaluado, y la función que se va a usar poniendo
entre paréntesis el digito que se quiere evaluar.

» Finalmente se cierra la función main, se compila y ejecuta el programa

Figura 11 Ejecución del programa - Funciones islower, isupper, toupper,


tolower.

Fuente: (elaboración del autor)


© Universidad Estatal de Milagro – UNEMI

13
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

2.3 Funciones de conversión de cadenas


Entre las funciones de conversiones de las cadenas de caracteres tenemos la Liberia
general como lo es <stdlib.h>, esta es un archivo de cabecera del lenguaje de
programación en C, lo que hace esto es convertir cadenas tanto de dígitos enteros
como flotantes. A continuación, se presenta algunas de las funciones para convertir
cadenas de caracteres que están dentro de la librería stdlib.h. (Deitel & Deitel, 2004)

Figura 12 Funciones de conversión cadena de la librería stdlib.h

Fuente: (Deitel & Deitel, 2004)

En la figura 12 se puede observar que se usa const esto indica que el valor del
argumento que no puede ser modificado, tambien para poder declarar una variable de
tipo ptrN (apuntador) esta variable es leída de izquierda a derecha.
© Universidad Estatal de Milagro – UNEMI

14
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Función atof
Esta función puede convertir su valor, esta cadena representa un tipo de datos flotante
a un double. A continuación, un ejemplo usando la función atof.

Figura 13 Código fuente- Función atof.

Fuente: (elaboración del autor)

Explicación:

» Se incluyen las librerías <stdio.h> y <stdlib.h>.

» Se define la función int main ().

» Se declara el tipo de dato double con la variable para almacenar la cadena


convertida.

» Se ingresa la variable donde será almacenada la cadena y se le asigna la función


atof con el valor que se desea convertir

» Con printf mostramos por pantalla "La cadena \"458.0\" convertida a double es
© Universidad Estatal de Milagro – UNEMI

", d. "El valor convertido dividido entre 4 es ", d / 4.0 );

» Esto deberá imprimir la salida del carácter que ha sido evaluado.

» Finalmente se cierra la función main, compila y ejecuta el programa

15
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Figura 14 Ejecución del programa- uso de la función atof.

Fuente: (elaboración del autor)

La función atol

Esta función lo que hace es convertir su valor, una cadena de dígitos que son
representados como enteros largos a un argumento long.

A continuación, se presenta un ejemplo de cómo hacer la conversión con esta función.

Figura 15 Código fuente - función atol.

Fuente: (elaboración del autor)

Explicación

» Se incluyen las librerías <stdio.h> y <stdlib.h>.


© Universidad Estatal de Milagro – UNEMI

» Se define la función int main ().

» Se define la variable para almacenar la cadena.

» Se ingresa la variable definida anteriormente y se le asigna la función atol


con el valor que se desea convertir.

» Con printf mostramos por pantalla, la cadena que deseamos convertir y la


variable de almacenamiento.

16
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

» En la siguiente línea se muestra por pantalla el valor convertido divido para


dos.

» Finalmente se cierra la función main, se compila y ejecuta el programa.

Figura 16 Ejecución del programa- función atol.

Fuente: (elaboración del autor)

Función atoi

Transforma las cadenas a un valor entero. A continuación, veamos un ejemplo


Convertir la cadena “.

Figura 17 Código fuente – Función atoi.

Fuente: (elaboración del autor)


© Universidad Estatal de Milagro – UNEMI

17
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Explicación del ejercicio:

» Se incluyen las librerías <stdio.h> y <stdlib.h>.

» Se define la función int main ().

» Se define la variable para almacenar la cadena.

» Se ingresa la variable definida anteriormente y se le asigna la función atoi


con el valor que se desea convertir.

» Con printf mostramos por pantalla, la cadena que deseamos convertir y la


variable de almacenamiento.

» En la siguiente línea se muestra por pantalla el valor convertido mes 805 ,


se le envía la función atoi por medio de la variable i, y a restar.

» Finalmente se cierra la función main, se ejecuta y compila el programa

Figura 18 Ejecución del programa. – Función atoi.

Fuente: (elaboración del autor)


© Universidad Estatal de Milagro – UNEMI

18
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Función strtod

Esta función convierte la cadena a la que apunta el argumento str en un número de punto
flotante. A continuación, un ejemplo para convertir la cadena.

Figura 19 Código fuente – Función strtod. Fuente: (elaboración del autor)

Explicación del ejercicio:

» Se incluyen las librerías <stdio.h> y <stdlib.h>.

» Se define la función int main ().

» Se Inicializa la cadena

» Se define la variable para almacenar la secuencia de la cadena convertida

» Se crea un apuntador de tipo char.

» Se declara la variable que va a contener la funcion strtod la cual se le envia


por parámetros la variable cadena y el apuntador

» Con printf mostramos por pantalla, la cadena que deseamos convertir y la


variable de almacenamiento.
© Universidad Estatal de Milagro – UNEMI

» En la siguiente línea se muestra por pantalla el valor convertido.

» Finalmente se cierra la función main, se ejecuta y compila el programa

Figura 20 Ejecución del programa. – Función atoi. Fuente: (elaboración del autor)

19
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Función strtol

Esta función convierte la parte inicial de la cadena en str en un valor int largo de
acuerdo con la base dada. A continuación, un ejemplo.

Figura 21 Código fuente- Función strtol. Fuente: (elaboración del autor)

Explicación del ejercicio:

» Se incluyen las librerías <stdio.h> y <stdlib.h>.

» Se define la función int main ().

» Se define la variable para almacenar la cadena.

» Se ingresa la variable definida anteriormente y se le asigna la función atoi


con el valor que se desea convertir.
© Universidad Estatal de Milagro – UNEMI

» Con printf mostramos por pantalla, la cadena que deseamos convertir y la


variable de almacenamiento.

» En la siguiente línea se muestra por pantalla el valor convertido mes 805 ,


se le envía la función atoi por medio de la variable i, y a restar.

» Finalmente se cierra la función main, se ejecuta y compila el programa

20
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Figura 22 Ejecución del programa- Función strtol.

Fuente: (elaboración del autor)


© Universidad Estatal de Milagro – UNEMI

21
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

2.4 Otras funciones


El lenguaje C proporciona una librería estándar que contienen funciones que nos
ayuda a manejar de manera más fácil las cadenas de caracteres. Esta librería se le
llama string.h
Estas deben ser declaradas en el encabezamiento del programa. (Ñacato, 2016)
Entre las funcionas que más se utilizan están las siguientes:

» Strleng : Esta función devuelve una cadena la amplitud de una cadena de


caracteres, aquí no se incluye el carácter nulo o “\0”.
Por ejemplo :

char ciudad [] = “Milagro”


Int longitud;
longitud = streng (ciudad)

» Strdup: Esta función devuelve una cadena igual a la que se pasa por parámetro.
Por ejemplo :
char cadena1[] = “Como están”;
char* cadena2;// cadena2 se define como una variable de puntero
cadena2 = strdup(cadena1); // la cadena2 contiene “Como están”
» Strcpy: Esta función copia los caracteres que se encuentran en la cadena de
(destino, origen ).
Por ejemplo
Char cadena1 [15] = “bien gracias”;
Char cadena2 [15];
strcpy(cadena2, cadena1);
© Universidad Estatal de Milagro – UNEMI

» Strcat: Esta función permite la unión de 2 cadenas, y tambien todos los


caracteres de origen los añade al final.
Por ejemplo:
Char cadena1 [15] = “Que tengas”;
Char cadena2 [] = “ Linda tarde”
Char cadena3 [30];

22
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Cadena3= strcat(cadena1, cadena2);// la cadena 3 va a contener


“Que tengas, linda tarde”

» Strcmp: Esta función sirve para comparar 2 cadenas de caracteres según su


ordenamiento alfabético, tambien se puede usar strncmp esta función es mas
segura que la anterior y sirve para comparar los primeros caracteres.

Ejemplo la utilización de la función stncmp en lenguaje c


© Universidad Estatal de Milagro – UNEMI

Figura 23 Ejemplo de comparación de caracteres- Función strncmp.

Fuente: (elaboración del autor).

23
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Explicación del ejercicio:

» Se incluyen las librería <stdio.h> y <string.h>

» Se define la función int main ().

» Se declara ambas variables de tipo char que son las que se van a comprar

» Luego definimos nuestro valor de retorno con un tipo de dato int

» Añadimos la función de comparación aquí se le debe mandar las variables


de tipo char declaradas anteriormente, se debe especificar el numero de
caracteres que va a contener nuestra función

» Se utilizará la declaración if y elf la cual define cual cadena tiene mayor


longitud. Con un printf mostrara el mensaje por pantalla

» Finalmente se compila y ejecuta el programa

Funciones de entrada y salida de las Liberia estándar

En esta biblioteca pueden definirse dos medios por donde se puede comunicar un
programa entre ellos esta las entras stdin y las salidas estandarizadas stdout. Estas
pueden asociarse en el terminar de nuestro programa de forma que al momento de
que se impriman nuestros datos estas aparezcan en nuestro terminal. Los datos que
son enviados a las salidas son de tipo carácter si por ejemplo tenemos datos numéricos
estos deberán ser convertidos en texto. (Ñacato, 2016)

Existen funciones de entradas y salidas que están dentro de la librería stdio.h, estas en
general sirven más que todo para manejar los datos en formatos de cadenas de
caracteres. A continuación, en la figura observemos las distintas funciones de e/s que
© Universidad Estatal de Milagro – UNEMI

existen .

24
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Figura 24 Funciones de biblioteca de entrada y salida.

Fuente (Deitel & Deitel, 2004)

Ejemplo de la utilización de la función getchar

Escriba un programa en c que permita ver un carácter ingresado por teclado, utilizando la
función getchar.
© Universidad Estatal de Milagro – UNEMI

Figura 25 Código fuente -Función getchar.

Fuente: (elaboración del autor).

25
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

Explicación del ejercicio:

» Se incluye la librería <stdio.h>.

» Se define la función int main ().

» Se declara la variable caracter con el tipo de dato char.

» Con printf mostramos por pantalla, “ ingrese un carácter”

» Capturamos el carácter mediante la función getchar

» En la siguiente línea imprimimos el carácter que ha sido atrapado

» Retornamos 0;

» Finalmente se compila y ejecuta el programa.

Figura 26 Ejecución del programa -Función getchar.

Fuente: (elaboración del autor).


© Universidad Estatal de Milagro – UNEMI

26
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)

3. Bibliografía

» Deitel, H., & Deitel, P. J. (2004). Como_Programar en C/C++ yJava. (Pearson


Educación de México, Ed.) (4ta ed.). Naucalpan de Juárez: PRENTICE-HALL,
INC.,.
» Ñacato, J. (2016). Programación estructurada con C/C++ (Grupo Treb).
© Universidad Estatal de Milagro – UNEMI

27
ÍNDICE

1. Información de la unidad / Tema de la semana


3

2. Información de los subtemas

4
21. Definición y declaración
3
22. Inicialización de un Arreglo Bidimensional 8
3
23. Multiplicación de matrices 12
24. Ejemplos de aplicación 3
16
3
3. Bibliografía
22

2
1. Informacion de la unidad
Tema de la semana:

» Objetivo:

Examinar la estructuración y operación en estructuras (arrays) de elementos de


datos del mismo tipo.

» Tema:

Vectores multidimensionales

» Subtemas:

1. Definición y declaración
2. Inicialización de un Arreglo Bidimensional
3. Multiplicación de matrices
4. Ejemplos de aplicación

» Unidad:

Datos estructurados: Vectores, cadenas de texto ( strings) y vectores


multidimensionales

» Total de horas de la asignatura:


9H

3
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

2. Informacion de los subtemas

2.1 Definición y declaración


Definición de arreglo bidimensional
Un arreglo bidimensional también llamado matrices, es un ordenamiento de filas y
columnas, que son manejadas por dos índices uno para las filas y otro para las
columnas.

Por ejemplo: si tenemos una matriz de 3 x 5, significa que tiene 3 filas y 5 columnas.
El elemento buscado en la matriz se encuentra en la intersección entre la fila y la
columna. En la matriz siguiente podemos observar que el elemento 8 se encuentra en
la fila 2 y columna 4.

Columna 4

5 8 2 4 3

Fila 2 7 5 1 8 7

2 8 16 15 14

Figura 1. Representación de una matriz (Elab. propia)

Las matrices son vectores de vectores, podemos observar en la matriz que definimos
© Universidad Estatal de Milagro – UNEMI

anteriormente, que es similar a un vector que contiene 3 elementos, en este caso son
las filas, y a su vez cada fila es otro vector de 5 elementos. A continuación, su
representación. (Ñacato, 2016)

4
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Vector de 5 elementos

5 8 2 4 3 7 5 1 8 7

7 5 1 8 7 = 5 8 2 4 3

2 8 16 15 14
2 8 16 15 14

7 5 1 8 7 5 8 2 4 3 2 8 16 15 14

Figura 2. Análisis de los componentes de una matriz (elab. propia)

Declaración de arreglos bidimensionales

Para declarar un arreglo bidimensional primero se ingresa el tipo de dato que vamos a
usar, seguido el nombre de la matriz y entre corchetes el número de fila y el número
de columnas. (Ñacato, 2016)

tipodedato nombredelamatriz [fila][columna] ;

Veamos algunos ejemplos :


© Universidad Estatal de Milagro – UNEMI

Se tiene una matriz de nombre matriz2 de 3 x 4 enteros se escribe de la


siguiente manera.
Int matriz2 [3] [4];
Se tiene una matriz de nombre matriz3 de 5 x 7 caracteres se escribe de la
siguiente manera.
char matriz [3] [4];

5
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

De igual manera que en los arreglos de una dimensión cada índice que está en la
matriz puede tomar valores entre cero y n – 1 (n tamaño ). Veamos el siguiente
arreglo bidimensional.
1 2 3 4 5 <- COLUMNAS

8 4 10 5 2
Matriz1 [5] [3] 1
2 6 1 5 20 11
FILAS - >
1 20 6 4 7
3

Figura 3. Matriz

Si queremos almacenar el elemento que está en la fila 2 en la columna 4 en una


variable podemos hacerlo de la siguiente manera:
Int matriz1 [5][3];
X = matriz1 [2][4];
Para modificar algo que está dentro de la matriz, primero se debe indicar el nombre de
la matriz con la fila y columna donde está ubicado nuestro número a modificar, por
ejemplo:
matriz1 [2][4] = 30;

Matriz original Matriz modificada

8 4 10 5 2 8 4 10 5 2

6 1 5 20 11 6 1 5 30 11
© Universidad Estatal de Milagro – UNEMI

1 20 6 4 7 1 20 6 4 7

Figura 4. Modificación de un elemento (Elab. propia)

Definición de arreglos multidimensionales:


En este tipo de arreglos se pueden definir n dimensiones, esto requiere que los valores
de n subíndices deban ser específicos para de este modo poder identificar los

6
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

elementos individuales de un array. Si un array se compone de n subíndices, entonces


se dice que solo es de n dimensiones. (Joyanes, 2008)

Figura 5 Array de 3 dimensiones.

Fuente: (Joyanes, 2008)

Declaración de un arreglo multidimensional:

Un arreglo multidimensional puede ser declarado de manera similar al arreglo


bidimensional, primero ingresamos el tipo de dato, seguido del identificador o nombre
de la matriz, luego se asignan las dimensiones, pueden ser N dimensiones, esto se
vería de la siguiente manera. (Joyanes, 2008)

Tipo de dato Dimension1

char matriz2 [2] [3] [2];


© Universidad Estatal de Milagro – UNEMI

Identificado Dimension2 Dimension3


r
Figura 6. Definicón de arreglo multidimencional (Elab. propia)

7
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

2.2 Inicialización de un Arreglo bidimensional

Al igual que los vectores, los arreglos bidimensionales también pueden ser inicializados
de la misma manera.

Para inicializar este arreglo, los componentes deben estar entre llaves, de la misma
manera los valores que están en el interior. (Ñacato, 2016)

» Dándole valores durante el proceso de declaración.

Int matriz2 [4][4] ={ {5,4,3,2}, {7,6,5,4} ,{7,6,5,4},

{8,7,5,2} }

Cuando es declarada una matriz así, los elementos van siendo almacenados por filas,
primero las filas con un índice de cero y luego la de índice uno. Esto lo que hace es ir
tomando tanto los valores que están en las columnas como los que están en las
filas.(Ñacato, 2016)

» Haciendo uso de sentencias declarativas:

int matriz1[3] [2];

matriz1[0][0]=1;

matriz1[0][1]=4;
© Universidad Estatal de Milagro – UNEMI

matriz1[1][0]=5;

matriz1[1][0]=8;

matriz1[2][1]=11;

matriz1[2][0]=16;

8
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

» En forma de ciclos estructurales.

int matriz4[3][4]

for(i = 0; i<3 : i++)

for(j =0; j<4 : j++ )

matriz4[i][j]=1;

» Inicializando por medio del teclado

int matriz5[5][5]

for(i = 0; i<5 : i++)

for(j =0; j< : j++ )

printf(“ingrese algún dato:”);

scanf(“%f”,&matriz5[i] [j] );
© Universidad Estatal de Milagro – UNEMI

A continuación, veamos un ejemplo realizado en lenguaje de programación de C

9
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Escriba un programa en C que muestre cuantas personas viven dentro de un


departamento en un edificio, considerando cuantos departamentos hay y cuantos
pisos. Por ejemplo, va a mostrar como mensaje: “El número de personas que viven en

Figura 7 Código fuente - Ejemplo de una matriz.

Fuente: (elab. propia).

el departamento 21 del piso 3 es: ”

Explicación del ejercicio:

» Se incluyen la librería <stdio.h> y <stdlib.h>


» Se define la función int main ().

» Se declara la matriz y sus índices [fila] [columna] con el tipo de dato int.
» Se inicializa la matriz declarada con los datos que se quieren presentar en este
caso en que piso y en qué departamento (piso 3 y departamento 4) , y se le
asigna la cantidad de personas que viven dentro (8).
© Universidad Estatal de Milagro – UNEMI

» Con printf mostramos por pantalla, un mensaje enviándole como parámetros la


matriz que ha sido inicializada.

» Retornamos 0;

10
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

» Finalmente cerramos la función main, se compila y ejecuta el programa.

Figura 8 Ejecución del programa- ejemplo de matrices.

Fuente: (elab. propia).


© Universidad Estatal de Milagro – UNEMI

11
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

2.3 Multiplicación de matrices

En matemáticas una multiplicación de matrices, deben coincidir las columnas y filas. En


el caso de tener una matriz C Y D = E será otra matriz donde sus elementos serán
obtenidos de la multiplicación de cada renglón o fila por la primera de cada columna
de la segunda. (Joyanes, 2008)

Es decir, si se tiene dos matrices una A de 2x3 y otra B de 3x3 podemos darnos cuentas que B
tiene 3 columnas y B tiene 3 filas por lo tanto si se pueden multiplicar.

Figura 9 Multiplicación de matrices.

Fuente
Ahora veamos el ejemplo realizado en (elab.
lenguaje C propia)
© Universidad Estatal de Milagro – UNEMI

Ejemplo de multiplicación de matrices en C

Se introduce por teclado una matriz de 3x2 y 2x3, Cree un programa que permita
multiplicar las dos matrices e imprima la matriz resultante.

12
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
© Universidad Estatal de Milagro – UNEMI

Figura 10 Código fuente de multiplicación de matrices.

Fuente(elab. propia)

13
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Explicación del ejercicio de multiplicación de matrices:

» Se incluye la librería <stdio.h>


» Se define la función void main ().
» Se declaran la primera y segunda matriz, se declara una tercera matriz la cual
va a guardas los resultados de la multiplicación
» Se declaran variables i, j, c, las cuales servirán como contadores
» Abrimos un ciclo for para recorrer la matriz , se utiliza i para las filas de la
matriz resultante
» En la siguiente línea tenemos otro ciclo for esta vez con la variable j para las
columnas de la matriz
» Igualamos nuestra matriz resultante a 0
» Tenemos otro ciclo for para recorrer las columnas y filas el cual es para ingresar
matriz
» Con printf muestra por pantalla un mensaje, “introduzca el primer valor” el
cual sería de la primera matriz y con scanf guardamos el resultado.
» Hacemos el mismo procedimiento para ingresar los datos de nuestra segunda
matriz
» Luego abrimos otro ciclo for para guardar las 2 matrices (mat1 y mat2) en
nuestra variable resultado.
» Luego se presenta la primera y segunda matriz que ha sido ingresada
anteriormente.
» Luego realizamos la multiplicación de la matriz
» Finalmente se cierra la función main, se compila y ejecuta el programa.
© Universidad Estatal de Milagro – UNEMI

14
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Figura 11 Ejecución del programa – Resultado de la multiplicación


© Universidad Estatal de Milagro – UNEMI

de matrices.

Fuente: (elab. propia)

15
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

2.4 Ejemplos de aplicación


En esta sección se realizará algunos ejercicios de aplicación sobre matrices
bidimensionales y multidimensionales.

1. Crear un programa en lenguaje c que nos indica cuales son los valores mínimos,
máximos y la posición de los valores que están dentro de la matriz.

Figura 12 Código fuente - Máximos , mínimos y posición en una matriz.

Fuente: (elab. propia)


© Universidad Estatal de Milagro – UNEMI

16
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Explicación del ejercicio:

» Se incluye las librerías <stdio.h> y <math.h>


» Se define la función int main ().
» Se declaran variables num, i, j, las cuales servirán como contadores y para
almacenar
» Se declaran la primera y segunda matriz
» En la siguiente línea declaramos las variables máximo y mínimo con las
funciones fmax y fmin
» Abrimos un ciclo for para recorrer la matriz y mandar a imprimir el mensaje y
guardarlo con scanf. Cerramos los ciclos for.
» Inicializamos las variables may y min igualándolas a la matriz
» Abrimos otro ciclo for para recorrer las filas y otro para las columnas, cerramos
ciclo for.
» Añadimos una estructura simple if con una expresión lógica ( si tablamat es
mayor que may, esta será igualada a la matriz.
» Se declara la función fmax tanto para las filas (i) como para las columnas (j)
» Realizamos el mismo procedimiento que para may, pero ahora preguntamos si
tablamat es menor que min.
» Cerramos las sentencias if
» Con printf mostramos el resultado de cual es mayor o menos, en qué posición y
en que fila y columna se encuentra.
» Finalmente se cierra la función main, se compila y ejecuta el programa.
© Universidad Estatal de Milagro – UNEMI

17
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Figura 13 Ejecución del programa- Máximos , mínimos y posición en una


matriz.

Fuente: (elab. propia)

2. Crear un programa en lenguaje C utilizando arreglos, el cual nos presente el total


de los alumnos que están matriculados en cada asignatura.
© Universidad Estatal de Milagro – UNEMI

Figura 14 Código fuente- Total de alumnos matriculados en una asignatura.

Fuente: (elab. propia)

18
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

Explicación del ejercicio:

» Se incluye las librerías <stdio.h> y <math.h>


» Se define la función int main ().
» Se declara la variable total el cual va a almacenar la respuesta.
» Se declara la matriz
» Se declaran las variables que servirán para recorrer las filas y columnas
» Rellenamos la matriz con el ciclo for.
» Mandamos un mensaje que indique que se debe ingresar el número de
estudiantes que están matriculados. Lo guardamos con scanf
» Cerramos el ciclo for
» Abrimos otro for para contar cuantos alumnos hay
» Con printf mandamos a imprimir el número de asignaturas que hay
» Cerramos el ciclo for
» Finalmente se cierra la función main, se compila y ejecuta el programa.
© Universidad Estatal de Milagro – UNEMI

Figura 15 Ejecución del programa- Total de alumnos matriculados en una

asignatura.

Fuente: (elab. propia)

19
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

3. A partir de una matriz de números, Crear un programa que permita buscar si el


valor determinado está en la matriz, presentar un mensaje de que el valor ha sido
encontrado indicando su posición, caso contrario indicara que no se existe el valor.

Figura 16 Código fuente- Búsqueda en una matriz.

Fuente: (elab. propia)

Explicación del ejercicio:

» Se incluye las librerías <stdio.h> y <math.h>


© Universidad Estatal de Milagro – UNEMI

» Se define la función int main ().


» Se declaran variables num, i, j, las cuales servirán como contadores y para
almacenar
» Declaramos la matriz, con los números a buscar.
» Abrimos otro ciclo for para recorrer las filas y otro para las columnas
» Con printf mostramos la matriz con los números que se van a buscar y hacemos
un salto de línea, cerramos ciclo for

20
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

» Mandamos un mensaje que indique que se debe ingresar el número de que se


quiera buscar
» Abrimos la estructura do while, este ejecuta la instrucción dada y luego evalúa
la condición, cerramos el do while
» En caso de que la condición sea verdadera manda a imprimir que se ha
encontrado el valor caso contrario mostrara que no existe
» Finalmente se cierra la función main, se compila y ejecuta el programa.

Figura 17 Ejecución del programa - Búsqueda en una matriz.

Fuente: (elab. propia)


© Universidad Estatal de Milagro – UNEMI

21
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales

3. Bibliografía

» Joyanes, L. (2008). Fundamentos de Programación algoritmos, estructuras. (S.


A. U. McGRAW-HILL/INTERAMERICANA DE ESPAÑA, Ed.) (cuarta). Madrid.

» Ñacato, J. (2016). Programación estructurada con C/C++ (Grupo Treb).


© Universidad Estatal de Milagro – UNEMI

22
ÍNDICE

1. Información de la unidad / Tema de la semana 3


2. Información de los subtemas 4
2.1 Concepto de función 4
2.2 Declarando funciones. 7
2.3 Llamada a una función 12
2.4 Parámetros de una función 18
3. Bibliografía 21

2
1. Informacion de la unidad
Tema de la semana:

» Objetivo:

Examinar el diseño y construcción de módulos de programas mediante


funciones y procedimientos.

» Tema:

Funciones.

» Subtemas:

1. Concepto de Función.
2. Declaración de funciones.
3. Llamada a una función.
4. Parámetros de una función.

» Unidad:

Subprogramas: Funciones, procedimientos y recursividad

» Duración de la asignatura

144 Horas

3
Introducción a la Programación estructurada – Expresiones y Operadores

2. Informacion de los subtemas

2.1 Concepto de Función.


Programación Modular

Un problema difícil se puede dividir en partes y tratar de buscar la solución de


cada una de esas partes y así resolver todo el problema general; en el diseño de
sistemas y focalizando la etapa de programación se puede aplicar la división del
problema en partes, esto de dividir, se considera la mejor práctica que
disponemos hoy para construir programas y dar el correspondiente
mantenimiento.

Construir los programas a partir de proceso menores o módulos, donde cada


módulo se centra en una funcionabilidad del gran programa, al ser más pequeño
es más fácil para analizar, programar y darle mantenimiento. Estos módulos se
escriben solamente una vez, pero pueden ser llamados en diferentes puntos del
programa principal o de cualquier otro módulo, dando paso a la reutilización de
código, y el código fuente total de los programas serán más pequeños.

Al método que plantea la solución de un problema principal partiendo de las


soluciones de sus subproblemas se le conoce como diseño descendente. Se
denomina así ya que inicia en la parte superior con un problema general y se
diseña las soluciones de los subproblemas.

La programación modular es una técnica que consiste en dividir un programa en


tareas, subprogramas o subrutinas, que dan origen a la creación de pequeños
© Universidad Estatal de Milagro – UNEMI

programas llamados módulos, cada módulo se codifica y se procesa de manera


independiente, sin importar los detalles de otros módulos. Esto facilita la
localización de un error cuando se produce. Este tipo de programación es uno de
los métodos de diseño más flexibles y potentes para mejorar la productividad de
un programa.

En lenguaje C a cada módulo o subprograma se le conoce como función; en este


lenguaje se trabaja a base de funciones y, de manera general, los programas se
elaboran combinando funciones que el programador escribe y funciones
“predefinidas” disponibles en la biblioteca estándar de C. La biblioteca estándar

4
Introducción a la Programación estructurada – Expresiones y Operadores

de C proporciona una rica colección de funciones para realizar cálculos


matemáticos comunes, manipulación de cadenas, manipulación de caracteres,
entrada/salida, y muchas otras operaciones útiles. Esto hace que el trabajo de
programador sea más fácil, debido a que estas funciones proporcionan muchas de
las capacidades que los programadores necesitan.

Las ventajas de la programación modular son las siguientes:

1. Facilita el diseño descendente.


2. Se simplifica un algoritmo complejo.
3. Cada módulo se puede elaborar de manera independiente, lo que permite
trabajar simultáneamente a varios programadores y con ello disminuir el tiempo
de elaboración del algoritmo.
4. La depuración se lleva a cabo en cada módulo.
5. El mantenimiento es más sencillo.
6. Creación de bibliotecas con módulos específicos (se pueden utilizar en otros
programas).

Concepto de Función

Una función tiene un bloque de sentencias, diseñadas para ejecutar una tarea
específica. Una de las razonas para utilizar funciones dentro de un programa, es para
evitar repeticiones de código. Definiendo la función adecuada se la puede usar cuantas
veces se la necesite en el programa, con el solo hecho de llamarla para que se pueda
ejecutar.

Cuando la función es muy generalizada, incluso se la puede utilizar en distintos


programas, si se la tiene disponible en una librería. Para poder incluir una función en el
programa se usa “#include”.
© Universidad Estatal de Milagro – UNEMI

Las funciones se las puede plantear como una caja negra, ya que son definidas por
medio de una entrada, que es la información que se le proporciona y una salida, esto
quiere decir el resultado obtenido de ella.

Los principales bloques que se construyen en un programa en lenguaje C son las


funciones, ya que estas permiten codificar y dividir todas las partes de un programa en
módulos separados. (Ñacato, 2016)

En C toda la codificación se realiza usando funciones, por ello todos los programas
cuentan con por lo menos su función main. “C fue diseñado como un lenguaje de
programación estructurado, también llamado programación modular. Por esta razón,

5
Introducción a la Programación estructurada – Expresiones y Operadores

para escribir un programa se divide éste en varios módulos”.(Joyanes & Zahonero,


2008)

Cada programa en C consiste en funciones llamadas desde main, esta puede llamar a
funciones de la biblioteca estándar para poder realizar tareas específicas, pero
también los programadores pueden definir sus propias funciones para resolución de
diferentes problemas.
© Universidad Estatal de Milagro – UNEMI

6
Introducción a la Programación estructurada – Expresiones y Operadores

2.2 Declaración de funciones.


Para la declaración de una función se toma el siguiente formato:

tipo-valor-retorno nombre-función (lista-parámetros)

{// cuerpo de funciòn

definiciones

instrucciones

Figura 1: Declaración de una función.


Fuente: (Evelio, 2015)

» El tipo-valor-retorno especifica el tipo de dato de lo que se va a devolver a la


invocación de la función, del resultado. void es un tipo-valor-retorno, este
indica que la función no va a retornar un valor. Cuando no se especifica algún
tipo-valor-retorno de una función, el compilador asume que devolverá un int.
Pero él no definir un tipo de retorno es algo incorrecto.

» El nombre-función, es el nombre que se le va a dar a la función, por la cual será


llamada, por ello se le debe dar un nombre que describa lo que realiza en su
ejecución.

» Lista-parámetros, es una lista de los nombres de las variables que se van a


utilizar dentro de la función, estos estarán separados por una coma, y deben de
tener el tipo respectivo para cada una.
Las variables que forman la lista de parámetros recibirán los valores de los
argumentos al momento que la función es llamada. Una función también
puede declararse sin parámetros en ese caso el nombre de la función irá
© Universidad Estatal de Milagro – UNEMI

seguido de paréntesis.

» Cuerpo de la función, está compuesto por las sentencias de código que


cumplen con el objetivo o el resultado que se quiere obtener de la función, esta
entre {}, de inicio de función y fin de función.

En la Figura 2 se observa la declaración de una función.

7
Introducción a la Programación estructurada – Expresiones y Operadores

Figura 2: Declaración de una función en C.


Fuente: Elaboración del autor

1. La función es de tipo entero “int”.


2. El nombre de la función “Producto” describe lo que se está realizando, una
multiplicación de dos números.
3. La lista de parámetros contiene dos variables de tipo entero “int”.
4. La función retorna la multiplicación de las dos variables, donde al llamarla se le
asignaran sus valores también llamados argumentos.

Variables Locales dentro del cuerpo de la funciòn

Al momento de declarar una función podemos definir muchas variables según se vayan
a utilizar, estas variables pueden ser de cualquier tipo. Las variables que están
declaradas dentro de una función solo pueden ser utilizadas en ella, se denominan
“variables locales”.

Consideraciones de las variables locales:

• Las variables son creadas cuando la ejecución del programa llega a la función
en la que están definidas. Al finalizar la función desaparecen de la memoria.

• Si dos variables, una global(definida en la función main() ) y una local(definida


© Universidad Estatal de Milagro – UNEMI

en la función), tienen el mismo nombre, el uso de la local prevalecerá sobre la


global dentro de la función en que ha sido declarada, es decir a la variable
global con el mismo nombre no se tiene acceso desde la función.

• Dos variables locales pueden tener el mismo nombre siempre que estén
declaradas en funciones diferentes, la variable que se utilizará será la local a la
función que se ejecuta en ese momento.

8
Introducción a la Programación estructurada – Expresiones y Operadores

Propias sentencias

La función contiene sus propias sentencias, las cuales ejecutan las acciones que fueron
declaradas para el cumplimiento de la tarea específica que realiza la función.

RETORNO DE VALORES EN EL NOMBRE DE LA FUNCIÓN

RETURN expresión;

La palabra return va a devolver el valor de la expresión en el nombre de la función


desde el sitio donde ha sido llamada. La expresión declara un tipo_devuelto y por ello
la expresión debe de ser del mismo tipo que el definido en el nombre de la función.
(Ñacato, 2016)

RETURN ;

• No Retorna valor, un return vacío de expresión.

NOTA IMPORTANTE:

• Si no existe Return al llegar a la llave } final de la función, retorna al punto


donde fue llamado.

Ejemplo:

Realizar un programa en C que calcule el cubo de un número mediante una función.


© Universidad Estatal de Milagro – UNEMI

Figura 3: Código en C del programa cubo de un número.


Fuente: Elaboración del autor.

9
Introducción a la Programación estructurada – Expresiones y Operadores

Explicación del ejercicio (Figura 3):

1. Se incluyen las librerías stdio.h y conio.h.


2. Reservamos una línea para el prototipo de función.
3. Definimos una función principal “main” de tipo “void”, abrimos llaves.
4. Declaramos dos variables de tipo entero “numero” y “resultado”.
5. Con un “printf” mostramos por pantalla en mensaje “ingrese un número:”
6. Con la siguiente línea guardamos el valor ingresado de tipo entero en la
variable “numero”.
7. En la variable “reultado” asignamos el resultado que devuelve la función al
invocarla.
8. Con un “printf” mostramos por pantalla el cubo del número ingresado.
9. Cerramos llaves, concluimos la función main.
10. Declaramos la función cubo de tipo int y con un parámetro de tipo entero,
abrimos llaves.
11. Declaramos la variable “resultadolocal” de tipo entero.
12. Asignamos a la variable “resultadolocal” el cálculo respectivo para obtener el
cubo de un número.
13. Retornamos la variable “resultadolocal”
14. Cerramos llaves de la función cubo, damos por concluido el programa.

Figura 4: Ejecución del programa cubo de un número.


Fuente: Elaboración del autor.

Prototipo de funciones
© Universidad Estatal de Milagro – UNEMI

Es una forma de dar un anticipo a la manera de la función que se va a declarar, además


indica al compilador que tipo de parámetros tendrá la función y el tipo de valor que va
a devolver.

Los prototipos pueden ubicarse dentro del mismo programa o en otros archivos
cabecera separados.

10
Introducción a la Programación estructurada – Expresiones y Operadores

Formato del prototipo de una función

valor-devuelto nombre-función (lista-parámetros);

Figura 5: Formato de prototipo de función.


Fuente: (Ñacato, 2016)

El prototipo de una función se declara de una maneja semejante al de una función su


diferencia es que este termina en “;”.

En el prototipo solo se puede colocar los nombres de los tipos sin los nombres de los
tipos sin los nombres de los parámetros formales. Esto se recomienda hacer cuando se
diseña un prototipo de rutinas, donde no se conoce de antemano la correspondencia
entre los parámetros reales y formales.(Ñacato, 2016)

Ejemplo anterior incorporando el prototipo de función (Figura 6):


© Universidad Estatal de Milagro – UNEMI

Figura 6: Ejemplo anterior con prototipo de función.


Fuente: Elaboración del autor.

En la línea 5 se define el prototipo de la función cubo que se desarrolla después de la


función main, este prototipo da un indicio de lo que se trata la función y da una mejor
estructura al programa.

11
Introducción a la Programación estructurada – Expresiones y Operadores

2.3 Llamadas a una función.


Para llamar a una función se debe considerar:

• Una función no se puede declarar dentro de otra función.


• Las funciones, para poder ser ejecutadas, han de ser llamadas.
• Cualquier expresión puede contener una llamada a una función que redirigirá el
control del programa a la función nombrada.
• Normalmente la llamada a una función se realizará desde la función principal
main ( ). También podrá ser llamada desde otra función.
• Definir otra vez un parámetro de función como una variable local dentro de la
función, es un error de sintaxis.

Las funciones pueden tener una lista de parámetros. Los parámetros proporcionan los
medios para transferir información entre funciones. Los parámetros de una función
también son variables locales de dicha función.

Hay dos formas de llamar a funciones con parámetros en lenguaje de programación:

» Llamada por valor


» Llamada por referencia

Llamadas por valor

Cuando los parámetros se pasan por valor, se hace una copia del valor del parámetro y
se pasa a la función que se llamó. Los cambios que puedan hacerse a la copia (variable
parámetro dentro de la función), no van afectar al original valor de la variable que se
encuentra en la función en el sitio que se invoca la llamada.

Ejemplo:

Crear una función que tome dos valores de tipo entero, realice la suma
© Universidad Estatal de Milagro – UNEMI

correspondiente e imprima el resultado.

12
Introducción a la Programación estructurada – Expresiones y Operadores

Figura 7: Código en C del programa suma de dos números, llamada por valor.
Fuente: Elaboración del autor.

Explicación del ejercicio (Figura 7):

1. Se incluyen las librerías stdio.h y conio.h.


2. Declaramos la función suma de tipo int y con dos parámetros formales de tipo
entero “x”, “y”, abrimos llaves.
3. Retornamos el cálculo de la suma de las dos variables, cerramos llaves y
culminamos con la fúnción.
4. Definimos una función principal “main” de tipo “void”, abrimos llaves.
5. Declaramos dos variables de tipo entero con sus valores respectivos “u=5”,
“v=5”.
6. Con un “printf” mostramos por pantalla la suma de los valores mediante la
llamada de la función suma.
7. Cerramos llaves de la función main, damos por concluido el programa.
© Universidad Estatal de Milagro – UNEMI

Figura 8: Ejecución del programa suma de dos números, llamada por valor.
Fuente: Elaboración del autor.
Los valores de la variable locales a la función “x” y la variable “y” al ejecutar la función
toman los valores de las variables globales “u” y “v”, luego de que se termine la
ejecución de la función estas variables locales x , y desaparecen.

13
Introducción a la Programación estructurada – Expresiones y Operadores

Llamadas por referencia

“Cuando una función debe modificar el valor del parámetro pasado y devolver este
valor modificado a la función llamadora, se ha de utilizar el método de paso de
parámetro por referencia o dirección” (Joyanes & Zahonero, 2008). La llamada por
referencia usa punteros para cambiar los valores de los parámetros actuales de la
función.

En lenguaje C, se hacen las llamadas por valor, es posible que se simule una llamada
por referencia por medio de operadores de indirección(*) y dirección(&). (Deitel &
Deitel, 2004).

El &, operador de dirección, es un operador unario que devuelve la dirección de su


operando(variable que está en memoria).

Ejemplo:

Crear una función que intercambien el contenido de sus dos parámetros actuales de
tipo entero.
© Universidad Estatal de Milagro – UNEMI

Figura 9:Código en C del programa intercambio de valores, llamada por referencia.


Fuente: Elaboración del autor.

14
Introducción a la Programación estructurada – Expresiones y Operadores

Explicación del ejercicio (Figura 9):

1. Se incluyen las librerías stdio.h y conio.h.


2. Declaramos la función intercambio de tipo int y con dos parámetros formales
de tipo puntero de dirección a variable entera (punteros: se lo hace con el *
delante de la variable) “*x”, “*y”, que significa trabajar con las misma variables
que están en la llamada de la función y no se realiza copia en otra variable
3. Declaramos un variable tipo entera “aux”
4. Se realiza el proceso del intercambio de valores entre las variables.
5. Retornamos los punteros *x, *y con los valores intercambiados.
6. Definimos una función principal “main” de tipo “void”, abrimos llaves.
7. Declaramos dos variables de tipo entero “u”, “v”.
8. Con un “printf” mostramos por pantalla en mensaje “ingrese el valor de u:”
9. Con la siguiente línea guardamos el valor ingresado de tipo entero en la
variable “u”.
10. Con un “printf” mostramos por pantalla en mensaje “ingrese el valor de v:”
11. Con la siguiente línea guardamos el valor ingresado de tipo entero en la
variable “v”
12. Con un “printf” mostramos por pantalla en mensaje “Intercambio”.
13. Invocamos a la función, dándole los parámetros actuales, note el uso del
símbolo &, para dar la dirección del contenido de la variable: “&u” y “&v”.
Esto hace que la función pueda modificar estas variables, ya que las recibe en
los parámetros tipo punteros (*x, *y).
14. Con un “printf” mostramos por los valores intercambiados de las variables “u” y
“v”.
15. Cerramos llaves de la función main, damos por concluido el programa.
© Universidad Estatal de Milagro – UNEMI

Figura 10: Ejecución del programa intercambio de valores, llamada por referencia.
Fuente: Elaboración del autor.

15
Introducción a la Programación estructurada – Expresiones y Operadores

Las variables “u” y “v” tienen los valores de 10 y 20 ingresados por pantalla, luego de la
llamada de la función se intercambian los valores entonces ahora “u” es igual a 20 y
“v” es igual a 10.

Paso de arreglos como parámetros en funciones

En C todos los arrays se pasan por referencia (dirección) automáticamente, la función


puede modificar los valores del arreglo que recibe como parámetro.

Sintaxis de vectores:

Se debe conocer el tamaño del arreglo o un indicador de fin de vector en caracteres


existe el carácter nulo al final del vector. En otros tipos se puede pasar un parámetro
indicando el tamaño del arreglo.

tipo_devuelto NombreFunción(tipo nombre_vector[]) cuando es char

Sintaxis de matrices:

tipo_devuelto NombreFunción(tipo nombre_matriz[] [tam])

Nota 1: Es opcional anotar el tamaño dentro del primer par de paréntesis, el segundo
corchete debe tener el tamaño definido.

Nota 2: Se aconseja utilizar parámetros como indicadores del tamaño de las


dimensiones del arreglos
© Universidad Estatal de Milagro – UNEMI

16
Introducción a la Programación estructurada – Expresiones y Operadores

Ejemplo de los operadores Unarios

Figura 6 Código fuente en C de operaciones de incremento y decremento.

Fuente: (elaboración del autor)


© Universidad Estatal de Milagro – UNEMI

Figura 7 Ejecución del programa en C.

Fuente: (elaboración del autor)

17
Introducción a la Programación estructurada – Expresiones y Operadores

2.4 Parámetros de una función.

Los parámetros se pueden definir en dos tipos: Parámetros formales y actuales.

» Parámetros formales: Son los que se especifican cuando se define una función.

» Parámetros actuales: Son los que se pasan a la función, cuando se realiza la


invocación de ella.

Es muy importante tener presente la diferencia entre los dos tipos de parámetros que
toman las funciones, a continuación, se muestra un ejemplo (Figura 7) donde se puede
observar el comportamiento de cada tipo de parámetro.

Ejemplo:

Escriba un programa en C donde defina cuál es el mayor número de tres valores


enteros diferentes por medio de una función.
© Universidad Estatal de Milagro – UNEMI

Figura 11: Código en C del programa mayor número de tres valores diferentes.
Fuente: Elaboración del autor.

Explicación del ejercicio (Figura 11):

16. Se incluyen las librerías stdio.h y conio.h.

18
Introducción a la Programación estructurada – Expresiones y Operadores

17. Se define el prototipo de la función mayor con tres parámetros tipo enteros.
18. Definimos una función principal “main” de tipo “void”, abrimos llaves.
19. Declaramos tres variables de tipo entero con sus valores respectivos “a=4”,
“b=6” y “c=2”.
20. Declaramos una variable de tipo entero “maximo”
21. En la variable “maximo” asignamos el resultado que devuelve la función al
invocarla donde colocamos los parámetros actuales.
22. Con un “printf” mostramos por pantalla el número mayor.
23. Cerramos llaves, concluimos la función main.
24. Declaramos la función mayor de tipo int y con tres parámetros formales de tipo
entero “x”, “y”, “z”, abrimos llaves.
25. Declaramos la variable “mayorlocal” de tipo entero.
26. Preguntamos si la variable “x” es mayor que la variable “y”.
27. Si es así, se le asigna a la variable “mayorlocal” el valor de “x”.
28. Caso contrario, se le asigna a la variable “mayorlocal” el valor de “y”.
29. Volvemos hacer una pregunta, si la variable “z” es mayor a la variable
“mayorlocal” que contiene el número mayor entre la variable “x” y la variable
“y”.
30. Si es así, asignamos a la variable “mayorlocar” el valor de “z”.
31. Retornamos la variable “mayorlocal”
32. Cerramos llaves de la función cubo, damos por concluido el programa.

Como observamos el ejemplo los parámetros formales de la función mayor son las
variables x, y, z. Los parámetros actuales estarían declarados por las variables a, b, c
que se encuentran en la función main.
Por lo tanto, los valores de correspondencia serían los siguientes:

a=4 b=6 c=2


© Universidad Estatal de Milagro – UNEMI

x=4 y=6 z=2

Figura 12: Valores de correspondencia del programa mayor numero.


Fuente: Elaboración del autor

19
Introducción a la Programación estructurada – Expresiones y Operadores

Las variables x, y, z tomaran los valores de las variables a, b y c.

Figura 13: Ejecución del programa mayor número de tres valores


diferentes.
Fuente: Elaboración del autor.
© Universidad Estatal de Milagro – UNEMI

20
Introducción a la Programación estructurada – Expresiones y Operadores

3 Bibliografía

» Deitel, H., & Deitel, P. J. (2004). Como_Programar en C/C++ yJava. (Pearson


Educación de México, Ed.) (4ta ed.). Naucalpan de Juárez: PRENTICE-HALL,
INC.,.
» Evelio, M. (2015). Lenguaje C TEORÍA Y EJERCICIOS. (ESPE, Ed.). Espe.
Recuperado de www.repositorio.espe.edu.ec.
» Joyanes, L., & Zahonero, I. (2008). Programación en c, metodologías y
algoritmos (cuarta).
» Ñacato, J. (2016). Programación estructurada con C/C++ (Grupo Treb).
© Universidad Estatal de Milagro – UNEMI

21
Introducción a la Programación estructurada – Expresiones y Operadores

Plan de actividades semanales online

TIEMPO PUNTAJE DURACIÓN NÚMERO


HORA FORMATO
N TIPO DETALLE POR URL/LINK DE
APLICA VALOR ENTREGA INICIO FIN
ACTIVIDAD ANEXO
Desarrollar en lenguaje C los .RAR 1
1 Actividades ejercicios planteados en la 3h 30 min Si 15 Subido al -
actividad. sistema
Relacionar la teoría con la
6 Funciones simples y
práctica sobre funciones en 15 min - - - -
con parámetros
C.
2 Experiencias Comprender más a fondo las
llamadas de funciones por Llamadas por valor y -
15 min - - -
valor y por referencia en por referencia
base a la práctica.

3 Lectura del material del -


Más Recursos 1h - - - - - -
autor
Se tomará un test de 10
© Universidad Estatal de Milagro – UNEMI

5 Test preguntas con opciones 1h Si 15 2


múltiples.
Video autor 25 min
4 Presencia virtual 3 Clase síncrona 2h
Sala de chat 35 min

4
ÍNDICE

1. Información de la unidad / Tema de la semana 3

2. Información de los subtemas 4

2.1 : Concepto de procedimientos 4

2.2 : Declaración de procedimientos 5

2.3 : Llamada de procedimientos 9

2.4 : Uso y diferencia con una función 11

2.5 : Definición de recursividad 15

2.6 : Aplicación de la recursividad 16

3. Bibliografía 20

2
1. Informacion de la unidad
Tema de la semana:
» Objetivo:
Examinar el diseño y construcción de módulos de programas mediante
procedimientos y recursividad.

» Tema 1 :

Procedimiento (Subrutinas)

» Subtemas:
1. Concepto de procedimientos.
2. Declaración de procedimientos
3. Llamada de procedimientos
4. Uso y diferencia con una función

» Tema 2 :

Recursividad

» Subtemas:

1. Definición de recursividad.
2. Aplicación de la recursividad.

» Unidad:
Subprogramas: Funciones, procedimientos y recursividad

» Total de horas de la asignatura:

144H

3
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2. Informacion de los subtemas


2.1 Concepto de procedimientos
Concepto

A menudo se necesitan subprogramas que realicen el cálculo de varios resultados y no


solo de uno, que ordenen una serie de números, modificar datos, entre otras
situaciones. En este caso se va a necesitar un procedimiento o también denominado
subrutina.

Un procedimiento es un subprograma de tipo subrutina que realiza la ejecución de un


proceso en específico, contiene un conjunto de sentencias que al ejecutarse no va a
devolver ningún valor es decir no se obtendrá resultados finales de dichas operaciones
descritas en él. Pueden contar con 0 o varios parámetros, estos procedimientos son
usados para presentar mensajes por pantalla, ya que esto es un efecto secundario.

Tanto la entrada de información al procedimiento como la devolución de resultados


desde el procedimiento al programa llamador se realizan a través de los parámetros. El
nombre de un procedimiento no está asociado a ninguno de los resultados que
obtiene. (Ñacato, 2016)

El procedimiento es un bloque de código, cumple con el hecho de realizar


© Universidad Estatal de Milagro – UNEMI

independientemente del programa en donde se encuentre, tareas específicas. Son


fragmentos reutilizables que no retornan valor alguno, es decir, nos permiten dar
nombre a el conjunto de líneas de código que se utilizan para resolver algún
subproblema con la ventaja de no repetir dicho código en todo el programa. Se lo
invoca, se ejecutan las acciones que lo conforman y seguido se continua con la
secuencia del programa.

4
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2.2 Declaración de procedimientos

La declaración de un procedimiento es similar a la declaración de una función, se toma


el siguiente formato:

void nombre-procedimiento (lista-parámetros-formales)

/* Declaraciones locales */

/*sentencias ejecutables */

Figura 1: Declaración de un procedimiento.


Fuente: (Montalvo, 2015)

» Void, esto indica que el procedimiento no va a retornar un valor.

» El nombre-función, es el nombre que se le va a dar al procedimiento, por el


cual será llamado o invocado, no se encuentra relacionado a ningún resultado
ya que el procedimiento no devuelve ningún valor.

» Lista-parámetros-formales, es una lista de los nombres de las variables que se


van a utilizar dentro del procedimiento. Las variables que forman la lista de
parámetros recibirán los valores de los parámetros actuales que se dan al
© Universidad Estatal de Milagro – UNEMI

momento que el procedimiento es llamado.

» Declaraciones locales, es decir las declaraciones de variables que van hacer


utilizadas dentro del procedimiento.

» Sentencias ejecutables, las acciones que se van a realizar en el procedimiento


para resolver una tarea en específico.

5
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

En la Figura 2 se observa la declaración de un procedimiento.

Figura 2: Declaración de un procedimiento en C.


Fuente: Elaboración del autor

1. El primer componente de la declaración del prototipo es el tipo “void”


2. El nombre del procedimiento es “presentar Mensaje” describe lo que se va a
realizar, se presentará por pantalla un mensaje.
3. La lista de parámetros contiene un puntero de tipo entero “char”.
4. El procedimiento no retorna ningún valor, al ser llamado solo cumplirá con la
tarea que se desea realizar que es presentar el mensaje contenido en él, y el
nuevo mensaje que se le asignará al ser llamado.

Cuando se declara un procedimiento se pueden declarar todas las variables que se


vayan a usar en él, estas pueden ser de cualquier tipo según las acciones que se
quieran realizar. Estas variables en los procedimientos al igual que en las funciones se
© Universidad Estatal de Milagro – UNEMI

denominan “variables locales” es decir que son declaradas y usadas solo por el
procedimiento.

El procedimiento ejecuta sus sentencias al momento de ser llamado, cumple con el


objetivo que se quiere y luego de esto le devuelve el control al programa para su
continuación en la siguiente sentencia donde fue llamado. (Joyanes, 2008)

6
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

Prototipo de procedimientos

El prototipo de un procedimiento realiza lo mismo que el de una función, da un indicio


del procedimiento que se declaró en el programa, su nombre y de sus tipos de
parámetros, así mismo le indica al compilador; de esta manera el programa se observa
con una mejor estructura.

Formato del prototipo de un procedimiento

void nombre-procedimiento (lista-parámetros);

Figura 3: Formato de prototipo de procedimiento.


Fuente: (Ñacato, 2016)

El prototipo de un procedimiento se declara de una manera similar al prototipo de una


función su diferencia es que empieza con tipo “void”.

En el prototipo colocamos el nombre del procedimiento y entre paréntesis se puede


declarar solo los tipos de los parámetros a utilizar o el tipo con el respectivo nombre
de los parámetros que se usarán en el procedimiento propio, luego de esto se termina
con un “;”. (Ñacato, 2016)
© Universidad Estatal de Milagro – UNEMI

7
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

Figura 4: Declaración del prototipo de un procedimiento en C.


Fuente: Elaboración del autor.

En la Figura 4 se ha declarado el prototipo del procedimiento anterior, se comienza


con “void” seguido del nombre del procedimiento que se va a desarrollar más adelante
en el programa el cual es “presentarMensaje” y luego entre paréntesis se escribe el
tipo del parámetro que tendrá la función seguido de su nombre, en este caso es un
punto denominado “*mensaje”.
© Universidad Estatal de Milagro – UNEMI

8
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2.3 Llamada de un procedimiento

Al momento que el programa llama a el procedimiento, los datos se comunican por


medio de la lista-parámetros que se han definido, logrando que entre los parámetros
formales y actuales realicen una correspondencia de valores automáticamente.

Los parámetros formales van hacen sustituidos por los parámetros actuales.

nombre-procedimiento (parámetros actuales);

Figura 5: Formato de la llamada a un procedimiento.


Fuente: Elaboración del autor.

Como se observa en la Figura 5, la llamada de un procedimiento es igual al de una


función.

Ejemplo:

Llamar al procedimiento anterior para la presentación de un mensaje por pantalla.


© Universidad Estatal de Milagro – UNEMI

Figura 6: Llamada del procedimiento anterior para presentar un mensaje en C.


Fuente: Elaboración del autor.

9
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

En la Figura 6 se observa la llamada del procedimiento en la función principal “main”,


al declarar el procedimiento se le atribuyó un parámetro formal de tipo carácter
“*mensaje”, dentro del procedimiento se especificó un mensaje a presentar siempre
que sea ejecutado “HolaMundo”, y luego la presentación del mensaje asignado como
parámetro actual al llamarlo, en este caso “Bienvenidos”. Entonces el resultado de la
ejecución es la siguiente:

Figura 7: Ejecución del programa presentar mensaje.


Fuente: Elaboración del autor.

Para el paso de parámetros en las llamadas de los procedimientos en C se utilizan los


mismos métodos aplicando el mismo concepto:

» Paso de parámetros por valor o también denominado llamadas por valor.

» Paso de parámetros por referencia o también denominado llamadas por


referencia, recordar que este método en lenguaje C se lo simula usando
© Universidad Estatal de Milagro – UNEMI

punteros.

10
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2.4 Uso y diferencia con una funcion


Uso

Al momento que un programa es organizado a través de procedimientos proporciona


los siguientes beneficios:

» Reducir código, ya que los procedimientos pueden ser llamados en cualquier


lugar del código del programa.
» Mejor estructura del programa.
» Los errores logran ser aislados, por ende, facilita depurar y refinar el programa.
» Son identificados de una manera más rápida para luego la modificación de lo
que se requiera.

Los procedimientos se los puede usar para realizar tareas independientes, es decir se
los puede utilizar para cualquier tipo de proceso.

Ejemplos

1. Realizar un procedimiento en C que permita leer un arreglo de 5 números


enteros, es decir le pida al usuario el ingreso por teclado de los 5 valores para
llenar el arreglo.
© Universidad Estatal de Milagro – UNEMI

Figura 8: Código en C del programa recorrer un arreglo con procedimiento.


Fuente: Elaboración del autor.

11
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

Explicación del ejercicio 1 (Figura 8):

1. Se incluye la librería stdio.h.


2. Escribimos el prototipo del procedimiento el cual tendrá el nombre
“LeerArreglo” y un parámetro que será el arreglo a leer “A[]”.
3. Definimos una función principal “main” de tipo “void”, abrimos llaves.
4. Declaramos el arreglo de dimensión 5 “A[5]”, para los valores a ingresar por el
procedimiento.
5. Dejamos libre la línea para llamar el procedimiento, cerramos llaves del main.
6. Declaramos el procedimiento a desarrollar, abrimos llaves.
7. Definimos una variable de tipo entero “i”.
8. Añadimos un ciclo for, donde inicializamos a la variable “i” con valor de 0, y en
la condición definimos que “i” sea menor a 5, posterior realizamos el
incremento de “1”.
9. Dentro del for, con un “printf” mostramos por pantalla el mensaje “Ingrese un
valor al arreglo A[%d]:” para cada posición del arreglo, al igual que se vaya
incrementando el número correspondiente a la posición en cada iteración en el
mensaje, esto para mostrar al usuario que el numero ingresado es el 1, 2, … 5
de las 5 posiciones, ya que las posiciones de un arreglo empiezan desde 0.
10. Con la siguiente línea guardamos cada valor ingresado de tipo entero en el
arreglo.
11. Cerramos el for y el procedimiento con sus respectivas llaves.
12. Regresamos al main para invocar al procedimiento, concluimos el programa.
© Universidad Estatal de Milagro – UNEMI

Figura 9: Ejecución del programa leer arreglo mediante un procedimiento.


Fuente: Elaboración del autor.

12
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2. A partir del programa anterior realizar un procedimiento en C que permita

mostrar los valores ingresados en el arreglo.

Figura 10: Código en C del procedimiento Mostrar Arreglo.


Fuente: Elaboración del autor.

Explicación del ejercicio 2 (Figura 10):

1. Escribimos el prototipo del procedimiento el cual tendrá el nombre “Mostrar


Arreglo” y un parámetro que será el arreglo a leer “A[]”.
© Universidad Estatal de Milagro – UNEMI

2. Declaramos el procedimiento a desarrollar, abrimos llaves.


3. Definimos una variable de tipo entero “i”.
4. Con un printf mostramos el mensaje “Mostrar Arreglo”
5. Añadimos un ciclo for, donde inicializamos a la variable “i” con valor de 0, y en
la condición definimos que “i” sea menor a 5, posterior realizamos el
incremento de “1”.
6. Dentro del for, con un “printf” mostramos la posición y el valor del arreglo
perteneciente a ella.

13
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

7. Cerramos el for y el procedimiento con sus respectivas llaves.

Figura 11: Ejecución del procedimiento Mostrar Arreglo.


Fuente: Elaboración del autor.

8. Regresamos al main para invocar al procedimiento, concluimos con lo


solicitado.

Diferencia entre un procedimiento con una función

Un procedimiento y una función tiene un formato de declaración y realizan un trabajo


similar, pero tienen esenciales diferencias entre ellos.

» Un procedimiento es invocado desde la función principal main, por medio de su


nombre y sus parámetros actuales. Cuando se llama un procedimiento la
ejecución del main realiza una pausa momentánea, el control se lo transmite al
procedimiento que se llamó para que este sea ejecutado, luego de esto el
control regresa a la main para que se continúe con las siguientes sentencias
© Universidad Estatal de Milagro – UNEMI

declaradas después del procedimiento.

» El procedimiento tiene su declaración igual que el de una función, pero el


nombre no tiene relación con ningún valor de los resultados que puede
obtener.

» Una función retorna un valor, un procedimiento puede retornar 0 valores, o varios por
medio de su lista de parámetros.

14
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2.5 Definicion de recursividad

Una función recursiva es una función que se llama a sí misma de manera directa o
indirecta a través de otra función. La recursividad es un tema complejo, los
métodos utilizados para resolver problemas mediante la recursividad tienen
elementos comunes.
La función recursiva es llamada para solucionar un problema. Esta función solo
resuelve los problemas para los casos bases. Si la función es invocada desde un
caso base, entonces está devuelve el resultado. Por otro lado, si la función es
invocada desde problemas complejos, se encarga de dividir el problema en dos
partes conceptuales, una de las partes de la función sabe cómo resolver y la otra
no lo sabe. (Deitel & Deitel, 2004)
Para que la recursividad sea posible, la segunda parte tiene que replantear el
problema complejo es decir el problema original, pero debe de hacerlo más
sencillo o pequeño. Como el problema replanteado se parece al original entonces
la función llama a una copia de sí misma para que se encargue de trabajar el
problema más sencillo, esto se lo conoce como “llamada recursiva”.
La llamada recursiva también incluye un return ya que el resultado que retorne se
va a combinar con la primera que la función si sabe cómo resolver; de esta manera
forma el resultado que se va a mostrar en la función donde sea invocada lo más
posible es que sea en la main. La llamada recursiva se va a ejecutar mientras la
invocación de la función original se encuentre abierta, es decir continúe con su
ejecución. La recursividad termina cuando la función original retorna un resultado
© Universidad Estatal de Milagro – UNEMI

final a la main.
Una función iterativa no puede resolver todos los problemas, la función recursiva
es una forma de dar un programa más sencillo, y además existen muchos
problemas cuya solución solo puede encontrarse mediante la recursividad.

15
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

2.6 Aplicacion de la recursividad

El caso más común para la aplicación d la recursividad es el de calcular el factorial de


un número entero no negativo:

𝑛 ∗ (𝑛 − 1) ∗ (𝑛 − 2) ∗ … ∗ 1

Por ejemplo: 6 factorial 6! = 6 ∗ 5 ∗ 4 ∗ 3 ∗ 2 ∗ 1, esto da un resultado de 720.

De manera no recursiva es decir iterativa, se puede resolver por medio de un for:

factorial = 1;

for (contador = numero; contador >=1; contador -- )

factorial *= contador;

Figura 12: Factorial de un número forma iterativa.


Fuente: Elaboración del autor

Utilizando la recursividad podemos definir la siguiente relación:

𝑛! = 𝑛 ∗ (𝑛 − 1)!

Es decir 6! Es lo mismo que 6*5!, como se observa:

6! = 6 ∗ 5 ∗ 4 ∗ 3 ∗ 2 ∗ 1
6! = 6 ∗ (5 ∗ 4 ∗ 3 ∗ 2 ∗ 1)
6! = 6 ∗ (5)!
© Universidad Estatal de Milagro – UNEMI

En la Figura 13 se puede observar cómo se realizan las llamadas recursivas hasta que
1 factorial se evalúa como 1, entonces allí termina la recursividad. Cada llamada
devuelve un resultado a la llamada original, para luego calcular y retornar el
resultado final.

16
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

Valor final = 720


6! 6!
6! = 6*120 retorna 720
6 * 5! 6 * 5!
5! = 5*24 retorna 120
5 * 4! 5 * 4!
4! = 4*6 retorna 24
4 * 3! 4 * 3!
3! = 3*2 retorna 6
3 * 2! 3 * 2!
2! = 2*1 retorna 2
2 * 1! 2 * 1!

Retorna 1
1! 1!

Figura 13: Secuencia de llamadas recursivas para ejemplo de número factorial.


Fuente: Elaboración del autor.

Realizar en C el programa que calcule los factoriales de los números enteros de 0


hasta 10 con llamadas recursivas.
© Universidad Estatal de Milagro – UNEMI

17
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

Figura 14: Código C del programa de cálculo factorial por medio de función recursiva.
Fuente: Elaboración del autor.

Explicación del ejercicio (Figura 14):

1. Se incluye la librería stdio.h.


© Universidad Estatal de Milagro – UNEMI

2. Escribimos el prototipo de la función de tipo “long” seguido del nombre


“factorial” y un parámetro tipo “long” con nombre de variable “número”. El
tipo long se define ya que los valores factoriales crecen rápidamente y el
planteamiento nos indica que se desea calcular los factoriales de los números
enteros hasta 10.
3. Definimos una función principal “main” de tipo “int”, abrimos llaves.
4. Declaramos una variable “i” que efectuará la acción de un contador.

18
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

5. Añadimos un for que se repetirá once veces y en cada iteración calculará el


factorial del contador “i” y a su vez desplegará el resultado obtenido, ya que se
invoca a la función. El especificador “%ld” es utilizado para imprimir valores de
tipo “long”
6. Retornamos 0, que indica la terminación exitosa; cerramos llaves y concluimos
con la función principal “main”.
7. Declaramos la función a desarrollar, abrimos llaves.
8. Declaramos el caso base, si el número es menor o igual a 1 factorial retorna 1,
entonces termina la recursividad y el programa.
9. Caso contrario, se expresa el problema como el producto del número como se
explicó anteriormente con la formula, y la llamada recursiva de la función
factorial, como se observa “factorial(numero-1)” es un problema más sencillo
que el original.
10. Cerramos el else y la función con sus respectivas llaves.
© Universidad Estatal de Milagro – UNEMI

Figura 14: Ejecución del programa de cálculo factorial por medio de función recursiva.
Fuente: Elaboración del autor.

19
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)

3. Bibliografía
» Deitel, H., & Deitel, P. J. (2004). Como_Programar en C/C++ yJava (4ta ed.;
Pearson Educación de México, ed.). Naucalpan de Juárez: PRENTICE-HALL,
INC.,.

» Joyanes, L. (2008). Programación en c, metodologías y algoritmos (cuarta).

» Montalvo, E. G. (2015). Lenguaje C TEORÍA Y EJERCICIOS (ESPE, ed.). Retrieved


from www.repositorio.espe.edu.ec.

» Ñacato, J. (2016). Programación estructurada con C/C++ (Grupo Treb).


© Universidad Estatal de Milagro – UNEMI

20

También podría gustarte