PROGRAMACION MODULAR FUNCIONES

Documentos relacionados
TEMA 5: Subprogramas, programación modular

Capitulo 2. Programación Modular

7.3. Estructura de un programa

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

Estructuración del programa en partes más pequeñas y sencillas

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Programación Estructurada

Programación I Funciones

Escuela Politécnica Superior de Elche

Introducción a la Programación en C Funciones

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Lenguaje C Funciones. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

PROGRAMACION ESTRUCTURADA: Tema 1. El lenguaje de programación C

Punteros. Programación en C 1

Modularización en lenguaje C. Funciones

Introducción a los Computadores Funciones y recursividad en C

Esquema de un programa en C: bloques básicos

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Funciones Definición de función

Examen de Fundamentos de la Programación (Modelo 1)

PROGRAMACION ESTRUCTURADA: Tema 3. Funciones

SESIÓN DE EJERCICIOS E1

LENGUAJE. Tema 1 - Introducción

Introducción a la Programación

Introducción al lenguaje C

El lenguaje de Programación C. Fernando J. Pereda

Prueba N o 1. Programación II

PROBLEMAS DEL TEMA 7 SUBPROGRAMAS Y MODULARIDAD

RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres

UNIDAD 3 Modularidad

Lenguaje de Programación: C++ Directivas al preprocesador

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

INTRODUCCIÓN AL LENGUAJE C

Tema 7: Recursividad

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Funciones Tipos de funciones y Recursividad

Tema 2. Diseño Modular.

Introducción a C++ y Code::Blocks

Programación En Lenguaje C

Programación. Test Autoevaluación Tema 3

Cuales son los tipos de instrucciones que se utilizan en la programación?

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Funciones y paso de parámetros

for(i = 0; i <= 45; i+=5) { x = (i*3.1416)/180; printf( seno(%d) = %f\n,i,seno(x));

Tipos de Datos en C. Palabras reservadas en C

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Bloque 4. La descomposición funcional y el diseño descendente

Ejercicios Tema 6. Funciones

SESIÓN DE EJERCICIOS E1

Lenguaje de Programación: C++, INPUT OUTPUT(Variables)

Lenguajes de programación

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

INTRODUCCIÓN A LA POO EN C++

8- LEX-Expresiones regulares

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

Fundamentos de programación

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

Funciones: Pasos por Referencia Recursividad

Tipos de datos y Operadores Básicos

Uso avanzado de punteros

Programación II Recursividad Dr. Mario Rossainz López

Fundamentos de Programación 2017-I

SOLUCION EXAMEN junio 2006

Programación en Lenguaje C

Java. Introducción a la Programación Orientada a Objetos

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

Lenguaje C, tercer bloque: Funciones

Lección 2 Introducción al lenguaje C

Operadores aritméticos

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Asignatura: Estructuras de Datos. Año Escolar: Grado y Sección: 6to INF A-B Docente: Ing. Yesika Medina

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C

Declaración. Introducción. Definición o implementación. Llamada. Un programa en C consta de una o más funciones.

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Fundamentos de la programación

El lenguaje C. if (a>3) { printf("hola"); // bloque printf("%d",a); // de getch(); //código } Partes de un programa en C.

Estructuras de Datos Estáticas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas

Descripción de un Programa

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

Transcripción:

PROGRAMACION MODULAR FUNCIONES Ventajas de la programación modular: Aumentar la legibilidad y comprensión del programa Reducir el tiempo de desarrollo, aprovechando módulos ya existentes Permitir la resolución del problema por varios programadores a la vez Facilitar la depuración del programa Facilitar el mantenimiento TÉCNICA DE DISEÑO DESCENDENTE ( Top Down Design) Problema Tarea1 Tarea2 Tarea3 Tarea4 T11 T12 T21 T31 T41 T42 T43

En el tratamiento de funciones ó subprogramas hay que distinguir tres instancias fundamentales: La declaración de la función La definición de la función La llamada a la función

#include <stdio.h> float suma ( float a, float b);.. int main (void) float x, y, z; x = 23.12; y = 14.33; z =suma ( x, y);. float suma ( flota a, flota b) return a+b; Parámetros Reales declaración llamada definición Parámetros Formales

Declaración de función en C: Tipo Nombre (lista de parámetros); Definición de funciones en C: Tipo Nombre (lista de parámetros formales) Cabecera de la función Declaraciones Cuerpo de la función Instrucciones return Valor; Valor de retorno Llamada de una función en C: Nombre(lista de parámetros reales);

Ejemplo: int main()... func1 ( );. func2 ( );... return 0; void func1 ( )... return; void func2 ()... return;

Ejemplo: float triple (float x); declaración int main() float x, y; x = triple(3) + 2; /* x = 9 + 2*/ llamada y = triple(triple(2)); /* y = triple(6) y = 18*/ llamada... float triple(float x) definición return (3 * x); Ejemplo: void Suma(int a, int b) printf( la suma es %d\n,a + b); return; Definición

ÁMBITO DE LAS VARIABLES Variables Globales Variables Locales Ejemplo de variables globales: int g1; /*g1 es global para todo el programa*/ void main( void)... int FunA( )... int g2; /*g2 es global para FunB y FunC*/ int FunB( )... float FunC( )...

Ejemplo de variables locales: float Fun( ) int loc1; /*loc1 es local a Func*/ int loc2; /*loc2 es local al bloque de código entre llaves*/... Ejemplo de variables con el mismo nombre: #include <stdio.h> int z; /* Variable Global */ int Sumar (int x, int y); declaración int main( void ) int suma; /* VariableLocal a main */ z = 3; suma = Sumar(2, 3); printf( %d\n,suma); printf( %d\n,z); return 0; int Sumar(int x, int y) int z; z = x + y; return z; /* z Local a Sumar. Oculta la z global*/ 5 3

LAS VARIABLES GLOBALES DEBEN EVITARSE!!!!!!! Ejemplo: int z; int Sumar(int x, int y); int main() int suma; z = 3; suma = Sumar(2, 3); /* -> 5*/ printf( %d,z); /*z -> 5*/ /*Efecto lateral no deseado*/ int Sumar(int x, int y) z = x + y; return z; Función no portable Dificultad para realizar cambios en el programa Imposible trabajar en grupo

TIPOS DE VARIABLES EN FUNCIÓN DEL ESPECIFICADOR DE ÁMBITO <Especificador de Ambito> <Modificador de Tipo> <Tipo> <Identificador> ; Las variables según el especificador de ámbito se pueden clasificar en: automáticas externas estáticas registro Variables automáticas: Son variables locales, palabra clave auto Variables externas: Fichero1 Fichero2 int a; extern int a; int b; extern int b; void main(void) FunB ( ).. FunA( ) FunC ( )..

Variables estáticas locales: Ejemplo: void main(void) int i; void Fun(void); for (i=0; i<10; i++) Fun( ); void Fun (void) static int count=1; count++; printf( %d \n, count); 2 3 4 5 6 7 8 9 10 11 Variables estáticas globales: Fichero1 Fichero2 int a; extern int a; static int b; void main(void) FunB ( ).. FunA( ) FunC ( )..

Variables registro: Ejemplo: void main(void) register int i; for (i=0,i<180;i++).. Paso de Parámetros a una Función Existen dos posibilidades para pasar parámetros a un subprograma: por valor por referencia.

Ejemplo Paso Por Valor: void Decremento(int x) x = x - 1; printf( %d\n,x); return; void main(void)... n = 4; Decremento(n); 3 printf( %d\n,n); 3 4 n no cambia su valor Ejemplo Paso por Referencia Los arreglos se pasan a las funciones por referencia

Ejemplo: void Decremento(int *x) *x = *x - 1; printf( %d\n,*x); return; void main(void)... 3 int n = 4; 3 Decremento(&n); 3 printf( %d\n,*x); El valor de n cambia después de llamar a la función. Ejemplo: void intercambio(int *x, int *y) int z; z = *x; *x = *y; *y = z; return;

Gestión de la memoria Ejemplo: int doble (int a);.. int main(void) int w;.. w = doble ( 2); int doble(int a) int z; z=2*a; return z; Variable Parámetro Pila z a LLamada z a Retorno

Traza de Programas Ejemplo: int a, b; /* variables globales */ void F1(int *c); int main() 1) a = 1; 2) b = 3; 3) F1(&a); 4) printf( %d %d \n,a,b); return 0; void F1(int *c) int b; 5) b = 2; 6) *c = a + b + 2; return; Traza: Linea a b/g c / *c b/l 1 1? 2 1 3 3 1 3 &a /1? 5 1 3 &a /1 2 6 5 3 &a /5 2 4 5 3 La traza se podrá verificar en el Laboratorio con el depurador del IDE.

Recursividad Ejemplo clásico: long fact(int n) long f; if (n > 1) 2) f = n*fact(n-1); Llamada recursiva else 3) f = 1; Caso base return f; Traza: R= fact(4) 24 4 *fact(3) 4* 6 3*fact(2) 3*2 2*fact(1) 2*1 1 1 Ejemplo: Mostrar en pantalla los dígitos de un número entero positivo en forma inversa 5675 5765 void cifras (int num) printf( %d,num%10); if(num/10!=0) cifras(num/10); return;

Compilación de un programa en un sólo fichero: Compilación separada Compilación de un programa en varios ficheros: Ejemplo: Programa para el cálculo de las combinaciones de m elementos tomados de a n mediante módulos

fact.h: /* Fichero de cabecera para calculo de factorial */ float fact(int n); /*declaración*/ fact.c: /* Funciones para el calculo del factorial */ #include "fact.h" float fact(int n) /*definicion*/ float f; int i; f = 1; for(i = 1; i <= n; i++) f = f * i; return f; combinatoria.cpp: /* Programa para el calculo de m sobre n */ #include <stdio.h> #include "fact.h" /*el archivo está en el directorio de trabajo*/ int main() int m,n; float comb; printf("introduce los valores de m y n"); scanf( %d %d,&m,&n); comb = fact(m) / (fact(n) * fact(m n) ); printf("\nel resultado es:",comb); return 0; Módulo1 Programa Principal

Argumentos de la Función main( ) main(int argc, char *argv[]) argc (argument count) Es un parámetro de tipo entero que contiene el número de argumentos que se han introducido considerando el nombre del ejecutable. argv ( argument values) Es un arreglo de punteros a cadenas de caracteres. Contiene los argumentos que se pasan desde el SO cuando se invoca el programa. Cada argumento debe estar separado por espacio ó una tabulación Ejemplo1: >prueba argc vale 1 argv[0] apunta a la cadena prueba

Ejemplo2: Programa que saluda al usuario cuyo nombre lo ingresa como argumento de main() por linea de comandos del SO. /*prueba.c*/ #include <stdio.h> main(int argc, char *argv[]) if(argc!=2) printf("adjunte su nombre al ejecutable.\n"); exit(1); printf("hola %s", argv[1]); >prueba Pepe argv[0] argv[1] argc = 2 >Hola Pepe >prueba Pepe Mario argc=3 >Adjunte su nombre al ejecutable >prueba Juan Lopez argc=2 >Hola Juan Lopez

NOTA: Si se ingresan cadenas de texto que deben ser convertidas en números utilizar las funciones que convierten una cadena de caracteres ASCII a float, int, long: atof( const char *cad), atol (const char *cad ), atoi (const char *cad). Ejemplo: Pasados por referencia la base y la altura de un triángulo. Calcular el área. /*prueba2.c*/ #include <stdio.h> void main(int argc,char*argv[]) float base, altura, area; if(argc>3) printf("demasiados parámetros.\n"); exit(1); else if(argc<3) printf("falta un parámetros.\n"); exit(1); base = atof(argv[1]); altura = atof(argv[2]); area = base * altura /2; printf("el area es: %f",area); >prueba2 2.3 >Falta un parámetro >prueba2 2.0 4.0 >El area es:4.0

Ejemplo: Programa que muestra en pantalla los argumentos entrados por linea de comandos. #include <stdio.h> void main(int argc, char*argv[]) while (--argc) printf( %s%c,*++argv, argc = = 1? \n : ); > pueba3 cual es la salida >...