Programación I Teoría IV

Slides:



Advertisements
Presentaciones similares
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Advertisements

Funciones y recursividad
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Procedimientos y Funciones
Programación I Teoría III
Direcciones, Arreglos y Argumentos de Funciones
Estructuras de datos. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
INFORMATICA I Funciones CLASE 13.
Tema 1. Introducción a la programación (Lenguaje java).
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Estructuras Compuestas.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Ismael Camarero1. 2 ¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria.
Implementación de Listas
Estructuras de Datos Punteros y algo más.
Unidad 3 Punteros.
Ingeniero Anyelo Quintero
Herramientas para el acceso directo a memoria en C++
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Vectores en java.
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.
Programación I Teoría II
Programación I Teoría VI: Recursividad

POO Java Módulo 3 Elementos de programas Identificadores
Diseño de algoritmos “Estructuras”
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Diseño de algoritmos “Punteros”
Tema 9 Estructuras.
Semana 5 Subprogramas..
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Concepto de tupla Las tuplas son estructuras de datos que constan de varios campos que pueden contener datos de tipos distintos. El acceso al contenido.
Introducción a los punteros
Arreglos.
Capítulo 5. Punteros y Cadenas de Caracteres
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Índice. Revisando conceptos acerca de la memoria.
Estructuras.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Descomposición Modular. Funciones
Unidad VI Registros (estructuras, uniones y enumeraciones)
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-
Tipo de Datos Básicos.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
PUNTEROS Ing Anghello Quintero.
El lenguaje de programación C - Vectores y matrices -
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Informática Ingeniería en Electrónica y Automática Industrial
Memoria estática versus dinámica con Estructuras
Programación en C para electrónicos
Punteros.
PUNTEROS Y REFERENCIAS
APUNTADORES.
Memoria dinámica con Estructuras. Memoria dinámica ¿Qué hacer cuando las variables declaradas son insuficientes o cuando no se conoce anticipadamente.
PROGRAMACIÓN MULTIMEDIA
Los punteros Programación modular.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
Registros Departamento de Computación
LENGUAJE “C” Programación.
Estructura de Datos En C++
TIPOS DE DATOS PARCIAL III FUNCIONES. Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores.
MEMORIA DINÁMICA.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Transcripción de la presentación:

Programación I Teoría IV http://proguno.unsl.edu.ar proguno@unsl.edu.ar

Registros Llamados también tuplas, estructuras, records, structs, … Estructura heterogénea Selector: identificador de campo del registro (explícito) Capacidad estática. Operaciones: asignación e inspección. No hay orden en sus elementos.

Registros en C: Structs struct nombre-registro { tipo nombre-campo; . . . } /*Tipo struct fecha */ struct fecha{ int anio; int mes; int dia; Los campos de un struct pueden ser de cualquier tipo simple o estructurado

Registros en C: Structs struct fecha{ int anio; int mes; int dia; } varFecha; struct fecha fechaNacimiento, fechaCasamiento; Declaración del tipo struct fecha y de la variable varFecha. Reserva memoria para la variable. Declaración de las variables fechaNacimiento y fechaCasamiento de tipo struct fecha. Cada declaración reserva memoria.

Registros en C: Structs No es obligatorio darle un nombre al struct: struct { int anio; int mes; int dia; } varFecha; sin embargo, no lo vamos a poder usar en otra declaración. Siempre debe estar presente, al menos, el nombre de la estructura o el nombre de la variable.

Operaciones con structs Es posible asignar un struct a otro, siempre que sean del mismo tipo, pero no se pueden comparar: struct fecha{ int anio; int mes; int dia; } fechaNacimiento = { 1988, 10, 5}; struct fecha copiaFecha; copiaFecha = fechaNacimiento; /*OK*/ if (copiaFecha == fechaNacimiento) printf(“Iguales”); /* Error */

Operaciones con structs Obtener la dirección de un struct usando el operador de dirección (&). Acceder a sus campos por medio de su selector. Usar el operador sizeof para determinar su tamaño en bytes. Los structs pueden ser pasados como parámetros de una función y pueden también ser devueltos como resultado.

Inicialización de los structs Una variable de tipo struct también puede inicializarse al momento de la declaración struct { int anio; int mes; int dia; } fechaNacimiento = { 1988, 10, 5} Si faltan valores, inicializa en 0. Si no se hace al momento de la declaración, entonces hay que hacerlo campo a campo.

Acceso a los campos de un struct int anio; int mes; int dia; } fechaNacimiento = { 1988, 10, 5}; fechaNacimiento.dia = 29; fechaNacimiento.mes = 6; printf(“La fecha de nacimiento de Juana es el %d/%d/%d\n”, fechaNacimiento.dia, fechaNacimiento.mes,fechaNacimiento.anio);

Pasaje de un struct como parámetro de una función Al igual que cualquier otra variable en C, las variables de tipo struct son pasadas por valor. Para pasar un registro por dirección deberemos simular el pasaje por dirección anteponiendo el operador de dirección & al parámetro actual, declarando el parámetro formal de tipo puntero al struct y usando el operador * de desreferenciación o indirección dentro del cuerpo de la función.

Ejemplo de pasaje de un struct como parámetro de una función #include <stdio.h> /* declaracion global del tipo struct fecha*/ struct fecha{ int anio; int mes; int dia; };

Pasajes por valor del struct fecha void muestraFecha(struct fecha f){ printf("%d/%d/%d\n", f.dia, f.mes, f.anio); } struct fecha modificaFecha(struct fecha f){ f.dia = 29; f.mes = 6; f.anio = 2000; return f; main(){ struct fecha fechaNacimiento = { 1988, 10, 5}; muestraFecha(fechaNacimiento); fechaNacimiento = modificaFecha(fechaNacimiento); return 0; Pasajes por valor del struct fecha

Pasaje por dirección de struct fecha void muestraFecha(struct fecha f) { printf("%d/%d/%d\n", f.dia, f.mes, f.anio); } void modificaFecha(struct fecha *f) { (*f).dia = 29; (*f).mes = 6; (*f).anio = 2000; main(){ struct fecha fechaNacimiento = { 1988, 10, 5}; muestraFecha(fechaNacimiento); modificaFecha(&fechaNacimiento); return 0;   Pasaje por dirección de struct fecha

Uso de typedef struct fecha{ int anio; int mes; int dia; }; Permite crear sinónimos o alias para tipos de datos ya definidos: struct fecha{ int anio; int mes; int dia; };  typedef struct fecha Fecha ; void muestraFecha(Fecha f); void modificaFecha(Fecha *f); Fecha fecNac;

Uso de typedef void muestraFecha(Fecha f); typedef struct { int anio; int mes; int dia; } Fecha; void muestraFecha(Fecha f); void modificaFecha(Fecha *f); Fecha fecNac;

Punteros a structs typedef struct triangulo { float base; float altura; } Triangulo; Triangulo t = {5.0, 10.0}; Triangulo *pTriang; pTriang = &t;