Beruflich Dokumente
Kultur Dokumente
FUNDAMENTOS DE PROGRAMACIN
Leccin 1: Consolidacin en la Modularizacin de Programas
if(eresMuyChevere) { strcpy(invitado, Estas invitado!; } else { strcpy(invitado, Lo sentimos, pero ya se lleno la fiesta.; }
Tomar Decisiones
tipo variable;
Inicializar una variable tipo nombre_variable = expresin; Duracin de una variable
Locales y Globales
Regla nmero 1: Inicia el nombre de la variable con una letra o un guin bajo.
Regla nmero 2: Luego, puedes usar cualquier nmero de letras, dgitos numricos o guin bajo. Regla nmero 3: Asegrate de no usar palabras reservadas del lenguaje de programacin.
auto
break case char
else
enum extern float
long
register return short
switch
typedef union unsigned
const
continue default do
for
goto if int
signed
sizeof static struct
void
volatile while _Packed
double
Categoras Unarios Multiplicacin, Divisin y Mdulo Suma y Sustraccin Relacionales Igualdad Y lgico O lgico Asignacin
Asociacin DI ID ID ID ID ID ID DI
(9 / 5) * tempC + 32
Cul es el resultado si tempC es 10? strcat(strcat(Numero, ), 2); Cul es la cadena resultante?
level >= 5;
Cul es el resultado cuando level es 10? Y si level es 5? color != rosado; Cul es el resultado si color es azul? (2 * PI) * r; Cul es el resultado si r es 3?
instrucciones;
break; default: instrucciones; break; }
while(condicion) { sentencias;
}while(condicin);
#include <stdio.h> #include <stdlib.h> int main() { int a, b, result _____, __________; printf("Este programa permite multiplicar dos valores por el m%ctodo de sumas sucesivas.\n\n", _____); do{ printf("Digite el primer valor positivo: "); scanf(____", &a); if(a <= 0) printf("Por favor, digite un valor positivo.\n\n"); }while(a <= 0);
// En este punto, ya a es el valor mayor y b el menor. // Procedemos a la multiplicacin sucesiva. while(b > 0) { result+=a; ______; }
float tempPorHora[24];
tempPorHora[0] = 59.2; tempPorHora[1] = 60.1; tempPorHora[2] = 63;
int x = 1138;
int y = 3/8; char s[] = 3-8; x = y;
____
____ ____ ____
int n = 3 uno;
____
z--;
CONSOLIDACIN EN LA MODULARIZACIN
Estructura de un Programa
CONSOLIDACIN EN LA MODULARIZACIN
#include #define Incluir librerias de C Definir constantes/macros
Estructura de un Programa
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
Funcin Es un segmento del programa que realiza determinadas tareas. Siempre regresa cero o un valor nico.
Una funcin puede recibir cero o ms valores de entrada, los cuales reciben el nombre de argumentos o parmetros.
Valores Introducidos
FUNCIN
Valor Regresado
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
Una funcin puede ser llamada desde cualquier parte de un programa. Cuando esto sucede, el programa se detiene y pasa el control a la funcin, la cual al completarse su ejecucin retorna a la instruccin de donde fue invocada (su punto de referencia) y el programa retoma el control.
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
Elementos
int maximo(int a, int b, int c) { int m; m=a; if (b > m) m=b; if (c > m) m=c; return m;
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
Asociacin de Parmetros
en el programa
Prototipo de una Funcin Es cuando declaramos una funcin. Contiene el tipo de dato de retorno, el nombre de la funcin y la lista de parmetros encerrados entre parntesis y terminando con un punto y coma (;).
CONSOLIDACIN EN LA MODULARIZACIN
Pase de Parmetros Por Valor: La funcin reciba una copia de los valores de los parmetros. Si se cambia el valor dentro de la funcin, este cambio slo afecta el mbito de la funcin.
Funciones
Por Referencia: La funcin puede modificar los valores de los parmetros. Aqu se pasa la direccin de memoria del valor del parmetro a la funcin.
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
Pase de Parmetros Por Valor: int main() { int i = 6; func(i); return 0; 6 6 void func( int i) { printf(%d,i) i++; }
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
#include <stdio.h> #include <math.h> void pvalor(float,float); void preferencia(float *,float *); void pvalor(float x,float y) { x= x*x; y= y*y; } void preferencia(float *x,float *y) { *x= (*x) * (*x); *y= (*y) * (*y); }
int main() { float a,b; a = 5.0, b=1.0e2; printf("\n Valores Iniciales: \n "); printf("\n a = %.1f \t b = %.1f \n", a, b); pvalor(a, b); printf("\n Valores luego del pase por valor: \n "); printf("\n a = %.1f \t b = %.1f ",a,b); preferencia(&a, &b); printf("\n\n Valores luego del pase por referencia: \n "); printf("\n a = %.1f \t b = %.1f \n \n ",a,b);
CONSOLIDACIN EN LA MODULARIZACIN
Funciones
Ejercicios: Realice un programa que, utilizando una funcin con un prototipo que tiene una lista variable de argumentos permita a otra funcin consultar cul es el mximo de los valores tipo double pasados. La aplicacin deber luego imprimir dicho mximo. Realice un programa que, utilizando una librera propia haga una llamada a una funcin esPrimo() para generar los primeros N nmeros primos, segn especifique el usuario.
Consolidacin en la Modularizacin
Funciones Recursivas
Una funcin recursiva es una funcin que se llama a s misma directa o indirectamente de forma repetitiva hasta que se satisface determinada condicin de parada. Se puede utilizar como una alternativa a la iteracin.
Directa: Indirecta: Se llama a s misma desde el mismo cuerpo de la funcin. Intervienen varias funciones donde una llama a la otra.
Consolidacin en la Modularizacin
Funciones Recursivas
Tanto la iteracin como la recursin se basan en una estructura de control; la primera es repetitiva y la recursin hace llamadas repetidas a funciones (estructura de seleccin). Ambas evalan condiciones de terminacin; la primera termina cuando la condicin es falsa y la segunda cuando se reconoce el caso base (axioma, condicin de salida).
Todo problema que se puede resolver recursivamente, se puede resolver tambin iterativamente; la recursividad se ha de evitar a menos que est justificada, debido a que la misma consume memoria adicional y emplea tiempo adicional.
Se prefiere la recursividad en situaciones en que sta resulta ms natural para resolver ciertos problemas y produce un programa ms fcil de comprender y depurar.
Consolidacin en la Modularizacin
Funciones Recursivas
Para construir una funcin recursiva, es necesario considerar los siguientes tres puntos:
Caso base (condicin de parada o axioma): Es el caso de salida de la recursin, en el que se retornara algn valor puntual o se dejara de llamar recursivamente la funcin. Normalmente es sencillo y se ubica al inicio de la funcin recursiva, aunque esto ltimo no es una regla. Cuerpo de la funcin: Son las instrucciones que conforman la funcin. Notar si el cuerpo estar antes, durante o despus de la llamada recursiva, ya que esto afecta significantemente los resultados. Llamada recursiva: Se refiere a la sentencia que invocar recursivamente la funcin. Debe de promover un cambio en los argumentos o circunstancias de manera que eventualmente se acerque al caso base.
Consolidacin en la Modularizacin
Funciones Recursivas
Ej. El factorial. n! = nx(n-1)x(n-2)....x3x2x1.
1
n! =
si n=0
n(n-1)!, si n>0
Consolidacin en la Modularizacin
Funciones Recursivas
1
n! =
si n=0
n 5
5 120
n 5
4 24
n 4
3 6
n 3
2 2
n 2
1 1
n 1
Consolidacin en la Modularizacin
#include <stdio.h> #include <stdlib.h> #define EOLN '\n' void inverso(void); main() { printf("\n Digite una linea de Texto \n" ); inverso(); system("PAUSE"); } void inverso(void) { char c; int i=0; if((c=getchar()) != EOLN) inverso(); putchar(c); printf("\n llamado # %d",i++); return ; }
Funciones Recursivas
La funcin inverso procede a leer caracteres hasta se de la condicin de final de lnea (\n).
Consolidacin en la Modularizacin
Funciones Recursivas
Ej. El fibonacci
0, 1,
F(n-1)+F(n-2),
Fn =
Consolidacin en la Modularizacin
Funciones Recursivas
Ejercicios:
Realice un programa que permita imprimir una lnea de texto de manera inversa utilizando una funcin recursiva sin emplear arreglos.
Consolidacin en la Modularizacin
Funciones Recursivas
Ejercicios:
Realice un programa que capture un arreglo de valores enteros de tamao N y los invierta utilizando una funcin recursiva void inverso_arreglo(int[], int, int); La aplicacin deber al final imprimir el contenido invertido de dicho arreglo.
Consolidacin en la Modularizacin
Funciones Recursivas
Ejercicios:
Realice un programa que dado una cadena de enteros permita realizar una bsqueda binaria recursiva, recibiendo en la funcin recursiva: - El arreglo a recorrer. - El elemento que se desea consultar. - El ndice inferior de la bsqueda. - El ndice superior de la bsqueda. Deber retornar el ndice del elemento encontrado, o -1 si no se encontr.
Consolidacin en la Modularizacin
Funciones Recursivas
Ejercicios:
Programar un algoritmo recursivo que permita sumar los elementos de una matriz de enteros.
Consolidacin en la Modularizacin
Funciones Recursivas
Ejercicios:
Realice un programa que permita invertir una matriz de datos ya sea por filas o por columnas, utilizando un algoritmo recursivo en una funcin que reciba un enum para la alternativa (invertir por fila o por columna), cantidad total de filas y de columnas y la posicin actual.
Consolidacin en la Modularizacin
Funciones Recursivas
Ejercicios:
Algoritmos de ordenamiento: BubbleSort SelectionSort InsertionSort MergeSort QuickSort