SUBPROGRAMAS FUNCIONES

Documentos relacionados
Laboratorio de Informática GRADO EN FÍSICA

Formato para Prácticas de Laboratorio

Formato para Prácticas de Laboratorio

Tema 5: Subprogramas Estructura y Contenidos

Programcaión Básica. Arreglos y Estructuras de Datos (2)

Funciones como Subprogramas en C++

Ingeniería Electrónica, Telecomunicaciones y Ambiental. Anexo Teórico Informática para el Práctico 2

Unidad 2. La lógica de programación. Tema 5. Subprogramas

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

Computación I: Fundamentos

Tipos de datos y operadores en C++

TEMA 5: Subprogramas, programación modular

DESCOMPOSICIÓN FUNCIONAL (I Parte)

1. factorial(4) := 4 * factorial(3) Se invoca a si misma y crea una segunda variable cuyo nombre es

Funciones en lenguaje C

Laboratorio 4 Tema 6. Procedimientos: Acciones, Funciones y Pase de Parámetros

CAPITULO 6: FUNCIONES

Repaso Lenguaje C Área de Servicios Programación (Ing. Elect. y Prof. Tec.), Programación I (TUG y TUR) y Electrónica programable (TUE)

Departamento de Computación UNAN - LEON. Funciones

Ámbito y Funciones. Lenguaje de Programación Estructurado. Siempre imaginé el Paraíso como algún tipo de biblioteca.

Examen de Traductores, Intérpretes y Compiladores. Convocatoria ordinaria de Junio de 2007 er. 3 Curso de I.T. Informática de Sistemas.

Funciones: Pasos por Referencia Recursividad

Subrutinas o Funciones

Procedimientos y funciones

Instrucciones de lectura/escritura. Programación en C 1

Introducción a c++ Introducción a la programación EIS Informática III

Unidad IV: Funciones

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

funciones printf scanf

Programación de Ordenadores

Capitulo 2. Programación Modular

Programación 1 Tema 5. Instrucciones simples y estructuradas

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Programación 1 Tema 5. Instrucciones simples y estructuradas

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Introducción a Funciones

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

Elementos de un programa en C

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

Funciones Definición de función

PROGRAMACION ESTRUCTURADA: Tema 3. Funciones

Una función es un miniprograma dentro de un programa. Las funciones contienen varias

Software es el sustantivo que denomina a los programas y datos de computadora.

TEÓRICO ID ; = [ ], $

Variables locales y globales. Funciones sin parámetros. Paso de parámetros

Lenguaje C, tercer bloque: Funciones

Entrada de datos y salida de resultados.

Programación I Teoría II.

Programación 2. Lección 3. Introducción a la recursividad

Fundamentos de la programación

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación en C. (Segunda Parte) DATSI, FI, UPM José M. Peña. Programación en C

REPRESENTACIÓN DE DATOS

Funciones II. Fundamentos de Programación Fundamentos de Programación I

Tema: Plantillas en C++.

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

U.A.B.C. Facultad de Ingeniería Programación Estructurada UNIDAD III

Introducción al lenguaje C

Metodología de la Programación II. Recursividad

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv

Introducción general al Lenguaje C (2010/2011)

LABORATORIO 6 FUNCIONES

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

TECNOLOGÍA ROBÓTICA. TEMA 6. CONTROL POR ORDENADOR.

Programación Unidad 4. Modularidad. Programación TIG - TUP. Sede Regional Orán UNIVERSIDAD NACIONAL DE SALTA

Macros LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO

Programación 1 Tema 7. Desarrollo modular y descendente de programas

Tipos de Datos Simples Contenido del Tema

Subprogramas en Fortran 90. Seminario de Computación 2009

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

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 1. Problemas de tratamiento de información, algoritmos y programas

FUNCIONES CON Y SIN PARÁMETROS EN C. INVOCAR. SIGNATURAS. ARGUMENTOS. TIPO DE RETORNO (CU00549F)

Lenguaje de Programación: C++ Funciones

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

Prof. Dr. Paul Bustamante

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Tema 14: Diseño Estructurado (Modularidad)

Indique la veracidad o falsedad de cada una de las afirmaciones siguientes, explicando detalladamente en cada caso el motivo de su respuesta.

Lenguaje de Programación: C++ Repaso de Material C++

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Funciones y paso de parámetros

Métodos CON valor de retorno

Fundamentos de programación

Lenguaje de Programación: C++ Funciones

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

Dr. Oscar Ricardo droscarbruno.wordpress.com

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:

Soluciones a los ejercicios planteados en el curso

Introducción rápida a la programación (estructurada ) con C++

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

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

Programación 1. Tema II. Diseño de programas elementales. Lección 7. Diseño modular y descendente de programas

Programación en C++ L.I Gerardo Benavides Pérez

Introducción a la Programación en C Funciones

Transcripción:

SUBPROGRAMAS FUNCIONES 1

INTRODUCCIÓN En la mayoría de los casos, un determinado problema complejo lo podemos (y debemos) dividir en problemas más sencillos. (Módulos o Subprogramas) TÉCNICA DE DISEÑO TOP DOWN Se tratará de descomponer el problema original en partes. Se pueden codificar de forma independiente e incluso por diferentes personas. El problema final queda resuelto y estructurado en forma de módulos, lo que hace más sencilla su lectura y mantenimiento. Ventajas: Ahorro de espacio. Más fácil entender el algoritmo. Más fácil de codificar y mantener. Se evita repetir código 2

Un subprograma es una serie de instrucciones escritas independientemente del programa principal. Está ligado al programa principal mediante un proceso de transferencia/retorno. Principal Transferencia Subprograma Transferencia Subprograma Retorno Retorno Transferencia Subprograma Retorno C++ es un lenguaje modular, y por ésta razón, se puede dividir en varios módulos, cada uno de los cuales realiza una tarea determinada. Cada módulo es un subprograma llamado FUNCIÓN. Una función "especial" y que se usa siempre es la función main(). 3

Estructura de una función <tipo_resultado> <nombre_función> ( lista_de_parámetros ) cuerpo_de_la_función ; return <expresión>; <tipo_resultado> tipo de dato que devuelve la función. lista_de_parámetros cada parámetro <tipo><identificador>. Son valores que se pasan a la función. return <expresión> punto de retorno de la función. Devuelve un valor del tipo declarado en la función. El tipo de datos de retorno puede ser tipo void. En este caso la función no devuelve ningún valor y se denominan PROCEDIMIENTOS. Puede tener cualquier número de sentencias return, pero al menos debe de haber una. 4

EJEMPLOS //funcion01.cpp using namespace std; int suma(int x, int y); //prototipo de la función int main () //función main int a,b; a=5; b=13; cout<<suma(a,b); return 0; int suma(int x, int y) //función suma return x+y; //funcion02.cpp using namespace std; void mostrar_caracter(char c); //prototipo de procedimiento int main () //función main int i=10; for (int i=1;i<10;i++) mostrar_caracter('x'); return 0; void mostrar_caracter(char c) //Procedimiento cout<<c; return; 5

Las funciones trabajan con dos tipos de datos: 1. Variables locales: declaradas en el cuerpo de la función. Estas variables solo son conocidas dentro de la función y se crean y se destruyen con la función. 2. Lista de Parámetros: Permiten la comunicación de la función con el resto del programa mediante transferencia de datos. C++ proporciona dos métodos para realizar ésta transferencia de datos a la función: Paso de parámetros por valor. El compilador reserva memoria y hace copia para los parámetros de la función y se destruyen en el retorno. Un cambio de valor de estos parámetros NO AFECTA a los usados en la llamada. Por defecto el paso de parámetros es por valor salvo en los tipos arrays Paso de parámetros por referencia. El compilador no reserva memoria para los parámetros de la función sino que usa la misma dirección de memoria de los parámetros en la llamada. Un cambio de valor de estos parámetros AFECTA a los usados en la llamada. Para este caso se utiliza el símbolo & en la declaración de los parámetros (int & x) 6

//funcion03.cpp using namespace std; int cuadrado_01(int x); int cuadrado_02(int & x); int main () //función main int i=8; cout<<cuadrado_01(i)<<endl; cout<<i<<endl; cout<<cuadrado_02(i)<<endl; cout<<i; i 8 main() x Cuadrado_01 8 Paso por valor int cuadrado_01(int x) // Paso parámetros por valor return x*=x; int cuadrado_02(int & y) //Paso parámetros por referencia return y*=y; y Cuadrado_02 Paso por referencia 7

Los arrays se pasan siempre por referencia aunque no lleven &. //funcion04.cpp using namespace std; void cuadrados_vector(int v[],int elementos); void muestra_vector(int v[],int elementos); int main () int numeros[5]=0,1,2,3,4; muestra_vector(numeros,5); cuadrados_vector(numeros,5); muestra_vector(numeros,5); //Los elementos del vector han cambiado return 0; void cuadrados_vector(int v[],int elementos) int i; for (i=0;i<elementos;i++) v[i]*=v[i]; //El paso de parámetros es por referencia en los arrays void muestra_vector(int v[],int elementos) int i; for (i=0;i<elementos;i++) cout<<v[i]<<endl; 8

Biblioteca <math.h> BIBLIOTECAS FUNCIONES EN C++ (Predefinidas) Función Sintaxis Descripción abs(i) int abs(int i); Devuelve el valor absoluto de i acos(d) double acos(double d); Devuelve el arco coseno de d asin(d) double asin(double d); Devuelve el arco seno de d atan(d) double atan(double d); Devuelve la arco tangente de d. ceil(d) double ceil(double d); Devuelve un valor redondeado por exceso al siguiente entero mayor cos(d) double cos(double d); Devuelve el coseno de d cosh(d) double cos(double d); Devuelve el coseno hiperbólico de d exp(d) double exp(double d); Eleve e a la potencia fabs(d) double fabs(double d); Devuelve el valor absoluto de d floor(d) double floor(double d); Devuelve un valor redondeado por defecto al entero menor mas cercano fmod(d1, d2) double fmod(double d1, double d2); Devuelve el resto de d1/d2 (con el mismo signo que d1) labs(l) long int labs(long int l); Devuelve el valor absoluto de 1 log(d) double log(double d); Devuelve el logaritmo natural de d log10(d) double log10(double d); Devuelve el logaritmno (en base 10) de d pow(d1, d2) double pow(double d1, double d2); Devuelve d1 elevado a la potencia d2 sin(d) double sin(double d); Devuelve el seno de d sinh(d) double sinh(double d); Devuelve el seno hiperbolico de d sqrt(d) double sqrt(double d); Devuelve la raiz cuadrada de d tan(d) double tan(double d); Devuelve la tangente de d tanh(d) double tanh(double d); Devuelve la tangente hiperbolica de d 9

//funcion05.cpp Estudio de una ecuación de segundo grado #include <math.h> using namespace std; void entrada_coeficientes(double & a, double & b, double & c); double discriminante(double a, double b, double c); double solucion_1(double a, double b, double c); double solucion_2(double a, double b, double c); int main () double a,b,c; entrada_coeficientes(a,b,c); if (discriminante(a,b,c) < 0) cout<<"no hay solución real"; else if (discriminante(a,b,c) == 0) cout<<"solución doble"<<solucion_1(a,b,c); else cout<<"primera solucion:"<<solucion_1(a,b,c)<<endl; cout<<"segunda solucion:"<<solucion_2(a,b,c); void entrada_coeficientes(double & a, double & b, double & c) cout<<endl<<"valor de a="; cin>>a; cout<<endl<<"valor de b="; cin>>b; cout<<endl<<"valor de c="; cin>>c; double discriminante(double a, double b, double c) return pow(b,2)-4*a*c; double solucion_1(double a, double b, double c) return (-b+sqrt(discriminante(a,b,c)))/(2*a); double solucion_2(double a, double b, double c) return (-b-sqrt(discriminante(a,b,c)))/(2*a); 10

//funcion06.cpp Trigonométricas #include <math.h> using namespace std; const double pi=3.141592; int main () double angulo, radianes; cout<<"valor del ángulo en grados:"; cin >> angulo; radianes = angulo*pi/180; cout<<"seno de "<<angulo<<"="<<sin(radianes)<<endl; cout<<"coseno de "<<angulo<<"="<<cos(radianes)<<endl; cout<<"tangente de "<<angulo<<"="<<tan(radianes)<<endl; 11

//tipostruct02.cpp using namespace std ; struct complejo float real ; float imaginaria ; ; void leer_complejo (complejo & z) complejo z1 ; cout<<"parte real:"; cin>>z.real; cout<<"parte imaginaria:"; cin>>z.imaginaria; void mostrar_complejo (complejo z) cout<<"("<<z.real<<","<<z.imaginaria<<"i)"<<endl; complejo producto_complejos(complejo a, complejo b) complejo z; z.real=a.real*b.real - a.imaginaria*b.imaginaria; z.imaginaria=a.real*b.imaginaria+a.imaginaria*b.real; return z; int main () complejo z1, z2 ; leer_complejo(z1); leer_complejo(z2); mostrar_complejo(z1); mostrar_complejo(z2); mostrar_complejo(suma_complejos(z1,z2)); mostrar_complejo(producto_complejos(z1,z2)); complejo suma_complejos(complejo a, complejo b) complejo z; z.real=a.real+b.real; z.imaginaria=a.imaginaria+b.imaginaria; return z; 12

Ordenación Burbuja 23 12 5 1 15 12 5 1 15 23 5 1 12 15 23 Tabla incial de 5 elementos 1º Iteración. (j=1) Desde 1º al último-1. 2º Iteración. (j=2) Desde 1º al último-2. 1 5 12 15 23 3º Iteración. (j=3) Desde 1º al último-3. 1 5 12 15 23 4º Iteración. (j=4) Desde 1º al último-4. Iterar tantas veces como elementos-1 tenga el vector. En cada iteración j, se compara el elemento i con i+1 desde el primero hasta el último-j quedando ordenado el elemento último-j+1. 13

//Método de ordenación de la burbuja using namespace std; void entrada_vector(int v[],int elementos); void muestra_vector(int v[],int elementos); void ordenacion_burbuja(int v[],int elementos); int main() int numeros[10]; cout<<"entrada de datos"; entrada_vector(numeros,10); ordenacion_burbuja(numeros,10); cout<<"dastos ordenados"; muestra_vector(numeros,10); return 0; void entrada_vector(int v[],int elementos) int i; for (i=0;i<elementos;i++) cout<<"elemento "<<i<<"="; cin >> v[i]; void muestra_vector(int v[],int elementos) for (int i=0;i<=elementos;i++) cout<<v[i]<<endl; void ordenacion_burbuja(int v[],int elementos) int i,j,aux; for ( i=1;i<=elementos-1;i++) for (j =0; j<=elementos-i;j++) if (v[j]>v[j+1]) aux=v[j]; v[j]=v[j+1]; v[j+1]=aux; 14

FUNCIONES RECURSIVAS 15

Se dice que una función es recursiva cuando se define en función de si misma. Para definir la función: 1. Definir valor devuelto en el caso base (Evitar bucles infinitos) 2. Definir el caso recursivo ( Nos debe llevar al caso base) Función factorial. Definida para números naturales. Factorial(0)=1 Factorial(1)=1 Factorial (2)=2*1=2 Factorial (3)=3*2*1=6 Factorial (4)=4*Factorial(3)=24 Caso Base Factorial(n)=Factorial(n-1)*n Caso recursivo 16

//Función factorial recursivo using namespace std; long double factorial (int n); int main(void) int a; cout<<"ingrese el número="; cin >> a; if (a >= 0) cout<<"el factorial es "<<factorial(a); else cout<<"no definido para números negativos"; return 0; long double factorial (int n) if (n==0) return 1; else return n*factorial(n-1); 17