Introducción a la Programación en C Funciones

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

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

Elementos de un programa en C

Programación. Test Autoevaluación Tema 3

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

Tema 13: Apuntadores en C

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

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

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Tema 10: Tipos de datos definidos por el usuario

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

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

Funciones Tipos de funciones y Recursividad

funciones printf scanf

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

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

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

Fundamentos de programación

Funciones en Lenguaje C

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Guía práctica de estudio 05: Diagramas de flujo

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

LENGUAJE. Tema 1 - Introducción

Estructuras de Datos Declaraciones Tipos de Datos

PROGRAMACION ORIENTADA A OBJETOS EN C++

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

Procesadores de lenguaje Tema 6 La tabla de símbolos

Lenguajes de programación

Aspectos de los LP. Diseño de compiladores. Estático vs. Dinámico. Estático vs. Dinámico. Scope. Scope 24/03/2015

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Escuela Politécnica Superior de Elche

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

2.2 Nombres, Ligado y Ámbito

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Tema 16: Tipos de datos estructurados en lenguaje C

Las plantillas permiten definir funciones genéricas.

Lenguaje C [Apuntadores y arreglos]

Informática Ingeniería en Electrónica y Automática Industrial

Fundamentos de Programación 2017-I

Lenguaje de programación C. Introducción

OPERADORES Y EXPRESIONES

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

TIPOS DE DATOS BASICOS EN LENGUAJE C

Funciones básicas del depurador

Introducción al Lenguaje de Programación C

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

El lenguaje C. 1. Estructuras. Principios de Programación Definicion de estructuras

Tema 14: Arreglos estáticos en C

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

Procesos e Hilos en C

<tipo> Tipo de dato de los elementos del vector

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

LENGUAJE. Tema 2 Elementos de un programa

Programación En Lenguaje C

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

Instrucciones de control

Java Avanzado Facultad de Ingeniería. Escuela de computación.

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Sistemas Operativos Practica 1: procesos y concurrencia.

Fundamentos de Programación 2017-I

Se guardan en archivos con extencion c y los cabezales con extension h

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

El lenguaje C. 1. Identificadores, constantes y variables

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

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

Contenido. Capítulo 1. Introducción a lenguaje C 1

TEMA 8: Gestión dinámica de memoria

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Funciones como Subprogramas en C++

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

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

FUNDAMENTOS DE INFORMÁTICA

Tema: Repaso sobre uso de Funciones, Arreglos y Punteros en C++.

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

PASO DE PARÁMETROS O ARGUMENTOS EN C. POR DEFECTO, POR VALOR O POR REFERENCIA. SIZEOF MEMORIA (CU00550F)

INTRODUCCIÓN AL LENGUAJE C

Tema 2. El lenguaje JAVA

Programación Estructurada

Lección 2 Introducción al lenguaje C

SUBPROGRAMAS PL/SQL César Martínez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

Programación estructurada (Introducción a lenguaje C)

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

TEMA 4. ESTRUCTURAS DE CONTROL

Apuntadores en C y C++

El lenguaje C. 1. Introducción, Funciones. Principios de Programación Módulos de programa en C Funciones

Transcripción:

Christopher Expósito-Izquierdo cexposit@ull.edu.es Airam Expósito-Márquez aexposim@ull.edu.es Israel López-Plata ilopezpl@ull.edu.es Belén Melián-Batista mbmelian@ull.edu.es José Marcos Moreno-Vega jmmoreno@ull.edu.es

Contenidos Introducción Llamadas a 1 Introducción 2 3 Ejemplo Sentencia return 4 Llamadas a 5 6 Por Valor Por Referencia Paso de Arrays 7

Introducción: Introducción Llamadas a Hasta ahora los programas realizados contienen un único bloque de código: el de la función main Escribir todo el código en un único bloque tiene desventajas claras: La complejidad del código se incrementa debido a la dependencia entre sentencias Número de errores elevado y difíciles de encontrar Alta complejidad para desarrollar código por un grupo de programadores La programación estructurada surge como solución a los problemas anteriores

Introducción Llamadas a : Función Una función es un pequeño programa que obtiene unos resultados a partir de unos parámetros de entrada Las funciones constituyen las unidades mínimas con sentido y denominación propia dentro de un programa Las funciones se agrupan en módulos (archivos de código que incluyen funciones relacionadas lógicamente entre sí que se compilan por separado y se enlazan entre sí para formar un programa)

Introducción Llamadas a : entrada 1 entrada 2... entrada n Función salida

Introducción Llamadas a : Para definir funciones hay que tener en cuenta lo siguiente: El lenguaje C se basa en el uso de funciones. No se puede escribir ninguna línea de código ejecutable (excluyendo declaraciones y definiciones) que no pertenezcan a una función Todas las funciones devuelven algo, aunque sea un valor vacío (i.e., void) No se puede definir una función dentro de otra función En todo programa escrito en C debe existir una función main

: Introducción Llamadas a Ejemplo Sentencia return Una función se define tal como sigue: tipodatoretorno idfunción(tipoparám1 idparám1, tipoparám2 idparám2,..., tipoparámn idparámn) { } sentencias tipodatoretorno: es el tipo de datos a devolver por la función idfunción: es el identificador de la función tipoparám1, tipoparám2,..., tipoparámn: son los tipos de datos de los parámetros idparám1, idparám2,..., idparámn: son los identificadores de los parámetros. Se conocen como parámetros formales

: Ejemplo Introducción Llamadas a Ejemplo Sentencia return 1 int multiply(int a, int b) { 2 int multiplication = a * b; 3 return multiplication; 4 } Explicación: 1 Define una función cuyo identificador es multiply, que recibe dos parámetros de tipo int identificados como a y b y devuelve un int 2 Multiplica los dos valores recibidos por parámetro y los asigna a una variable, multiplication 3 Devuelve el valor asignado a la variable multiplication

Introducción Llamadas a : Sentencia return Ejemplo Sentencia return La sintaxis de la sentencia return es como sigue: return expresión; expresión debe ser del mismo tipo que el tipo a devolver por la función La sentencia return puede estar situada en cualquier lugar del cuerpo de una función Cuando se ejecuta una sentencia return sucede lo siguiente: 1 Finaliza la ejecución de la función 2 Se devuelve el valor de expresión a la función que realizó la llamada

Llamadas a : Introducción Llamadas a Para ejecutar una función es necesario realizar una llamada desde otra función. La sintaxis es la siguiente: identificadorfunción(expresiónparám1, expresiónparám2,..., expresiónparámn); identificadorfunción: es el identificador de la función a llamar expresiónparám1, expresiónparám2,..., expresiónparámn: son expresiones empleadas como parámetros en la llamada. Se conocen como parámetros reales

Llamadas a : Introducción Llamadas a 1 El valor resultante de evaluar los parámetros reales es copiado en las variables de la función que actúan como parámetros formales 2 Una vez instanciados los parámetros formales se procede a ejecutar el conjunto de sentencias de la función (hasta llegar al final de la función o encontrar la sentencia return)

Llamadas a : Introducción Llamadas a 1 #include <stdio.h> 2 3 float calculatemaximum(float a, float b) { 4 float max; 5 if (a > b) { 6 max = a; 7 } else { 8 max = b; 9 } 10 return max; 11 } 12 13 void main(void) { 14 float x; 15 float y; 16 printf( Introduce el valor de x: ); 17 scanf( %f, &x); 18 printf( Introduce el valor de y: ); 19 scanf( %f, &y); 20 float maximum = calculatemaximum(x, y); 21 printf( El maximo es %f\n, maximum); 22 }

: Introducción Llamadas a Si se quiere utilizar una función es suficiente con definirla para que pueda ser llamada desde cualquier punto del programa El compilador necesita saber (i) el tipo de dato que devuelve la función y (ii) los parámetros que acepta Cuando una función llama a otra definida anteriormente, el compilador conoce sus parámetros y el tipo de dato a devolver Cuando una función llama a otra definida posteriormente hay que emplear los prototipos de funciones

: Introducción Llamadas a Un prototipo de función se define tal como sigue: tipodatoretorno idfunción(tipoparám1 idparám1, tipoparám2 idparám2,..., tipoparámn idparámn); En el prototipo de una función se indica el identificador de la función, el tipo de dato a devolver y los parámetros que acepta, finalizando con punto y coma Un prototipo declara una función y la definición incluye el código de la misma Habitualmente los prototipos de las funciones se incluyen al principio del módulo. De esta manera se podrá llamar a todas las funciones del módulo sin preocuparse de dónde están situadas

: Introducción Llamadas a 1 #include <stdio.h> 2 3 float readnumber(); 4 float calculatemaximum(float a, float b); 5 6 void main(void) { 7 float x = readnumber(); 8 float y = readnumber(); 9 float maximum = calculatemaximum(x, y); 10 printf( El maximo es %f\n, maximum); 11 } 12 13 float readnumber() { 14 float number; 15 printf( Introduce un numero: ); 16 scanf( %f, &number); 17 return number; 18 } 19 20 float calculatemaximum(float a, float b) { 21 float max; 22 if (a > b) { 23 max = a; 24 } else { 25 max = b; 26 } 27 return max; 28 }

: Introducción Llamadas a Por Valor Por Referencia Paso de Arrays En la mayoría de los lenguajes de alto nivel se cuenta con dos formas de realizar el paso de parámetros a una función: Paso de parámetros por valor Paso de parámetros por referencia

Introducción Llamadas a : Por Valor Por Valor Por Referencia Paso de Arrays En el lenguaje de programación C todos los parámetros se pasan por valor Cuando se pasa un parámetro a una función, éste no resultará modificado una vez termine dicha función Es posible emular el paso de parámetros por referencia en el lenguaje C haciendo uso de variables de tipo puntero Cuando se pasa un parámetro por valor, lo que se hace es copiar el valor del parámetro real en el parámetro formal. A continuación, la función trabaja con el parámetro formal Si se modifica internamente el valor del parámetro formal, estos cambios no afectan a los parámetros reales, que seguirán sin cambios cuando finalice la función

Introducción Llamadas a : Por Valor Por Valor Por Referencia Paso de Arrays 1 #include <stdio.h> 2 3 void myfunction(int a, int b); 4 5 void main(void) { 6 int x = 10; 7 int y = 20; 8 printf( Antes de la llamada: %d %d\n, x, y); 9 myfunction(x, y); 10 printf( Despues de la llamada: %d %d\n, x, y); 11 } 12 13 void myfunction(int a, int b) { 14 a = 0; 15 b = 0; 16 printf( Dentro de la llamada: %d %d\n, a, b); 17 }

Introducción Llamadas a : Por Referencia Por Valor Por Referencia Paso de Arrays Lo que se pasa a la función es una referencia a la dirección de memoria donde se almacena dicho dato La función utiliza dicha referencia para modificar el dato real, en lugar de trabajar sobre una copia del dato El programador debe realizar el paso de parámetros por referencia de forma explícita mediante punteros La función puede modificar el parámetro que se pasa a la función

Introducción Llamadas a : Por Referencia Por Valor Por Referencia Paso de Arrays 1 #include <stdio.h> 2 3 void increment(int *value); 4 5 void main(void) { 6 int x = 10; 7 printf("antes de la llamada: %d\n", x); 8 increment(&x); 9 printf("despues de la llamada: %d\n", x); 10 } 11 12 void increment(int *value) { 13 *value = *value + 1; 14 printf("dentro de la llamada: %d %d\n", *value); 15 }

Introducción Llamadas a : Paso de Arrays Por Valor Por Referencia Paso de Arrays Un array se puede pasar como parámetro de una función Hay que recordar que un array representa la dirección de comienzo del mismo Cuanso se pasa un array a una función, lo que realmente se está pasando es la dirección del primer elemento Dentro de una función se pueden modificar los valores del array Si se desea que una función no pueda modificar los valores de un array se debe poner la palabra reservada const delante del tipo de datos del mismo Habitualmente se debe pasar el tamaño del array a las funciones que los manipulan

Introducción Llamadas a : Paso de Arrays Por Valor Por Referencia Paso de Arrays 1 #include<stdio.h> 2 #define ELEMENTS 10 3 4 double getaverage(int array[], int length) { 5 double average = 0.0; 6 int i; 7 for (i = 0; i < length; i++) { 8 average += array[i]; 9 } 10 return average / length; 11 } 12 13 void main() { 14 int numbers[elements], i; 15 printf( Introduce the numbers:\n ); 16 for (i = 0; i < ELEMENTS; i++) { 17 scanf( %d, &numbers[i]); 18 } 19 double average = getaverage(numbers, ELEMENTS); 20 printf( The average value in the array is %.2f\n, average); 21 }

: Introducción Llamadas a Utilizar punto y coma en la definición de una función. Cuando se define una función, su cabecera no termina en punto y coma. El punto y coma se utiliza en los prototipos de las funciones Llamar a una función con un número diferente de parámetros. Cuando se pasan a una función más o menos parámetros de los que espera, el compilador sólo avisa, pero no genera un error de compilación Devolver un valor que no coincide con el tipo de la función. Cuando devuelve un valor utilizando return hay que asegurarse de que el resultado de la expresión correspondiente coincide con el tipo a devolver por la la función No utilizar return en una función que devuelve un valor

Introducción Llamadas a Christopher Expósito-Izquierdo cexposit@ull.edu.es Airam Expósito-Márquez aexposim@ull.edu.es Israel López-Plata ilopezpl@ull.edu.es Belén Melián-Batista mbmelian@ull.edu.es José Marcos Moreno-Vega jmmoreno@ull.edu.es