Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compendio Programación U - 3 - 4
Compendio Programación U - 3 - 4
3. Bibliografía 23
2
1. Informacion de la unidad
Tema de la semana:
» Objetivo:
» Tema:
Vectores
» Subtemas:
1. Definición
2. Operaciones con vectores
3. Algoritmos de ordenación
4. Algoritmos de búsqueda
» Unidad:
3
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
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.
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.
Subíndices
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.
COLEGIOS(n) 17 DE SEPTIEMBRE
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.
5
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
Memoria
NUMEROS[1] Dirección X
… …
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.
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.
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
7
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
Implementación en lenguaje C
Declaración de un Arreglo
tipo nombre_variable[tamaño];
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.
9
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
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
Asumiendo
Leer(A[i])
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
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
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
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
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
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
13
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
14
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
Existen varios algoritmos básicos de ordenación, pero en este caso estudiaremos los
más básicos:
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.
15
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
16
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
17
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
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.
18
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
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.
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
20
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
21
Datos estructurados: Vectores, cadenas de texto y vectores multidimensionales - Vectores
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.,.
23
ÍNDICE
3. Bibliografía 27
2
1. Informacion de la unidad
Tema de la semana:
» Objetivo:
» Tema:
» Subtemas:
» Unidad:
3
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
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
4
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
» 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.
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)
6
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
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.
7
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
Escriba un programa en C donde muestre si “4” y “*” es un digito o no, por ejemplo, si
© Universidad Estatal de Milagro – UNEMI
8
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
» 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
9
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
De acuerdo al concepto de la función isalpha. Se requiere saber si “J”, “l”, “$” y “9” son
letras o no.
» 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
10
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
» 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)
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.
13
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
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.
Explicación:
» Con printf mostramos por pantalla "La cadena \"458.0\" convertida a double es
© Universidad Estatal de Milagro – UNEMI
15
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
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.
Explicación
16
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
Función atoi
17
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
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.
» Se Inicializa la cadena
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.
20
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
21
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
» 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
22
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
23
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
» Se declara ambas variables de tipo char que son las que se van a comprar
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)
Escriba un programa en c que permita ver un carácter ingresado por teclado, utilizando la
función getchar.
© Universidad Estatal de Milagro – UNEMI
25
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
» Retornamos 0;
26
Datos estructurados: Vectores, cadenas de texto ( strings) y vectores multidimensionales - Cadenas de texto (strigns)
3. Bibliografía
27
ÍNDICE
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:
» 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:
3
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
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
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
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)
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
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
6
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
7
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
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)
{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)
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
int matriz4[3][4]
matriz4[i][j]=1;
int matriz5[5][5]
scanf(“%f”,&matriz5[i] [j] );
© Universidad Estatal de Milagro – UNEMI
9
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
» 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
» Retornamos 0;
10
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
11
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
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.
Fuente
Ahora veamos el ejemplo realizado en (elab.
lenguaje C propia)
© Universidad Estatal de Milagro – UNEMI
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
Fuente(elab. propia)
13
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
14
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
de matrices.
15
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores 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.
16
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
17
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
18
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
asignatura.
19
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
20
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
21
Datos estructurados: Vectores, cadenas de texto( strings) y Vectores multidimensionales
3. Bibliografía
22
ÍNDICE
2
1. Informacion de la unidad
Tema de la semana:
» Objetivo:
» 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:
» Duración de la asignatura
144 Horas
3
Introducción a la Programación estructurada – Expresiones y Operadores
4
Introducción a la Programación estructurada – Expresiones y Operadores
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.
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.
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
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
definiciones
instrucciones
seguido de paréntesis.
7
Introducción a la Programación estructurada – Expresiones y Operadores
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”.
• 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.
• 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.
RETURN expresión;
RETURN ;
NOTA IMPORTANTE:
Ejemplo:
9
Introducción a la Programación estructurada – Expresiones y Operadores
Prototipo de funciones
© Universidad Estatal de Milagro – UNEMI
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
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)
11
Introducción a la Programación estructurada – Expresiones y Operadores
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.
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
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.
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
“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).
Ejemplo:
Crear una función que intercambien el contenido de sus dos parámetros actuales de
tipo entero.
© Universidad Estatal de Milagro – UNEMI
14
Introducción a la Programación estructurada – Expresiones y Operadores
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.
Sintaxis de vectores:
Sintaxis de matrices:
Nota 1: Es opcional anotar el tamaño dentro del primer par de paréntesis, el segundo
corchete debe tener el tamaño definido.
16
Introducción a la Programación estructurada – Expresiones y Operadores
17
Introducción a la Programación estructurada – Expresiones y Operadores
» Parámetros formales: Son los que se especifican cuando se define una función.
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:
Figura 11: Código en C del programa mayor número de tres valores diferentes.
Fuente: Elaboración del autor.
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:
19
Introducción a la Programación estructurada – Expresiones y Operadores
20
Introducción a la Programación estructurada – Expresiones y Operadores
3 Bibliografía
21
Introducción a la Programación estructurada – Expresiones y Operadores
4
ÍNDICE
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
144H
3
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
4
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
/* Declaraciones locales */
/*sentencias ejecutables */
5
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
denominan “variables locales” es decir que son declaradas y usadas solo por el
procedimiento.
6
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
Prototipo de procedimientos
7
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
8
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
Los parámetros formales van hacen sustituidos por los parámetros actuales.
Ejemplo:
9
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
punteros.
10
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
Los procedimientos se los puede usar para realizar tareas independientes, es decir se
los puede utilizar para cualquier tipo de proceso.
Ejemplos
11
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
12
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
13
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
» 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)
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)
𝑛 ∗ (𝑛 − 1) ∗ (𝑛 − 2) ∗ … ∗ 1
factorial = 1;
factorial *= contador;
𝑛! = 𝑛 ∗ (𝑛 − 1)!
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)
Retorna 1
1! 1!
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.
18
Subprogramas: Funciones, procedimientos y recursividad – Procedimiento (Subrutinas)
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.,.
20