Empleando apuntadores una función puede entregar múltiples resultados / /Esta función no funciona #include void intercambiaValores(float a, float b) {

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 5: DECLARACIÓN, INICIALIZACIÓN Y USO DE VARIABLES Ing. Ronald Criollo.
Advertisements

El lenguaje C Introducción.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Fundamentos de la Programación Estructurada
Direcciones, Arreglos y Argumentos de Funciones
Tipos de Datos Básicos y Estructurados
Punteros Universidad Nacional Mayor de San Marcos
INFORMATICA I Funciones CLASE 13.
Tema 1. Introducción a la programación (Lenguaje java).
Funcionamiento, programación
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Implementación de Listas
Programación Orientada a Objetos en Java
SOBRECARGA DE FUNCIONES
Estructuras de Datos Memoria y Variables. Conceptos Computador: CPU + Memoria + Dispositivos E/S La memoria se encarga de almacenar los datos y los programas.
Unidad 3 Punteros.
1 Chapter 8 Scope Dale/Weems/Headington. 2 Tópicos del Capítulo 8 l Local Scope vs. Global Scope of an Identifier l Detailed Scope Rules to Determine.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.

Chapter 7 Functions Dale/Weems/Headington. 2 Tópicos Capítulo 7 l Writing a Program Using Functional Decomposition l Writing a Void Function for a Task.
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
Tema 6: Clases Antonio J. Sierra.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
Diseño de algoritmos “Punteros”
Programación orientada a objetos
1 Chapter 15 Pointers, Dynamic Data, and Reference Types Dale/Weems/Headington.
Características de “C”
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
Introducción a los punteros
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Archivos.
Programación III Clase 08 Arreglos.
1 Chapter 11 Structured Types, Data Abstraction and Classes Dale/Weems/Headington.
1 Chapter 12 Arrays Dale/Weems/Headington. 2 Chapter 12 Topics l Declaring and Using a One-Dimensional Array l Passing an Array as a Function Argument.
Prof. Mayra M. Méndez Anota.  Herramientas  Características  Convenciones  Estructura de una clase  Sintaxis de: métodos, atributos, constructores.
Unidad VI Registros (estructuras, uniones y enumeraciones)
PUNTEROS Ing Anghello Quintero.
Informática Ingeniería en Electrónica y Automática Industrial
El lenguaje de programación C - Vectores y matrices -
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Manejo de Punteros y objetos en memoria dinámica en C++
Unidad II Introducción a la programación en C++
Clase 10 Apuntadores & Memoria Dinámica
Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.
Punteros.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
PUNTEROS Y REFERENCIAS
1 Algunas ideas básicas en C++ Agustín J. González ELO-329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Los punteros Programación modular.
Radio Volumen esfera m. m #include.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Estructuras Una estructura es una colección de datos de diferente tipo. Se construye en dos pasos: 1- Creación del esqueleto de la estructura 2.- Colocación.

1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)
Programación orientada a objetos Capítulo 4 Agrupar objetos.
Laboratorio de programación
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
TIPOS DE DATOS PARCIAL III Punteros. Un puntero es una variable que hace referencia a una dirección de memoria Sintaxis: Tipo_Dato *nombre_variable_puntero;
Repaso C Ficheros, memoria dinámica, … Pablo San Segundo (C-206)
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Transcripción de la presentación:

Empleando apuntadores una función puede entregar múltiples resultados / /Esta función no funciona #include void intercambiaValores(float a, float b) { float tmp = a; a = b; b = tmp; } int main() { float pa = 2, pe = 3; intercambiaValores(pa, pe); printf("%f, %f\n", pa, pe); // imprime: 2, 3 }

Para que funcione se le debe de enviar la dirección de las variables #include void intercambiaValores(float a, float b) { float tmp = a; a = b; b = tmp; } int main() { float pa = 2, pe = 3; intercambiaValores(&pa, &pe); // produce error de sintaxis printf("%f, %f\n", pa, pe); // imprime: 2, 3 } Para que funcione se le debe de enviar la dirección de las variables y recibirlas en apuntadores #include void intercambiaValores(float *a, float *b) { float tmp = *a; *a = *b; *b = tmp; } int main() { float pa = 2, pe = 3; intercambiaValores(&pa, &pe); printf("%f, %f\n", pa, pe); // imprime: 3, 2 }

Apuntadores y Arreglos El identificador de un arreglo tiene asociado la dirección de su primer elemento float b[6] = {4.,6.,8.}; b y &b[0] Se refieren a la misma dirección b[0] b[1] b[2] b[3] b[4] b[5] Valores

#include int main() { float c, *a, b[3] = {4.,6.,8.}; c = b[2]; a = b; // pongo en el apuntador a la dirección del primer elemento de b a++; // manipulación de la dirección *a = *a + 1.; // manipulación del contenido, ahora vale 7 a--; c = *(a + 2);// Observar esta línea printf("%f %f\n",*a,c); // imprime 4 8 getchar(); return 0; } b[0] b[1] b[2] b[3] b[4] b[5] Valores // También se puede hacer así: c = a[2]; // a no es un arreglo pero lo puedo manipular como si lo fuera

¿ Cual es entonces la diferencia entre arreglo y apuntador ? ARREGLO: La dirección que contiene el identificador del arreglo es constante. APUNTADOR: La dirección que contiene el apuntador es variable. float c, *a, b[4]; a = b; a = &c; b = &c; /* error, no se puede cambiar la dirección que contiene b, que es la dirección del primer elemento del arreglo */

Aplicaciones frecuentes del apuntador 1.- Entrega de valores múltiples por parte de una función. 2.- Creación dinámica de arreglos empleando las funciones malloc y free. 3.- Paso de funciones a otras funciones

malloc function Purpose: Allocates an object of the specified size. Syntax: void * malloc(size_t size); Declared in: Description: The malloc function allocates space for an object whose size is specified by size and whose value is indeterminate. Returns: A null pointer if the new object could not be allocated, otherwise a pointer to the new object. The allocated space is guaranteed to be suitable aligned for all basic data types Ayuda que proporciona Pelles C para la función malloc

Ayuda que proporciona Pelles C para la función free free function Purpose: Deallocates an object. Syntax: void free(void *ptr); Declared in: Description: The free function causes the space pointed to by ptr to be deallocated, that is, made available for further allocation. If ptr is a null pointer, no action occurs. Otherwise, if the argument does not match a pointer earlier returned by the calloc, malloc, or realloc function, or if the space has been deallocated by a call to free or realloc, the behavior is undefined.callocmallocreallocfree Returns: Nothing

#include #include void miFun(float *a, int n) { a = (float *) malloc(sizeof(float) * n); // Le asigno un bloque de memoria for (int i = 0; i < n; i++) a[i] = i * 2 + 1; for (int i = 0; i < n ; i++) printf("%f \n", *(a + i )); free(a); // Libero el bloque de memoria return 0; } int main()( { float *p miFun(p, 100); // aquí p se puede usar para realizar otra cosa retun 0; } Ejemplo

Paso de funciones a otras funciones Declaración de la función anfitriona: tipoDeDato anfitriona(tipoDeDato ( *huesped ) (tipo1, tipo2 ), tipoDatoArg1, tipoDatoArg2); Ejemplos: float miFun1(double ( *miFun2) (int, int), double a, double b); void miFun3(double ( *miFun4) (void) ) );

Paso de funciones a otras funciones #include #define PI double miFun(double (*fun)(double a), double a) { return fun(a); } int main() { float r = miFun(cos, PI); printf("%f\n", r); return 0; }

#include #define PI double recip(double a) { return 1/ a; } double miFun(double (*fun)(double a), double a) { return fun(a); } int main() { float r = miFun(cos, PI); // imprime el coseno de PI printf("%f\n", r); float r = miFun(sin, PI); // imprime el seno de PI printf("%f\n", r); r = miFun(recip, 100); // imprime el recíproco de 100 printf("%f\n", r); return 0; }