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

PROGRAMACIÓN EN C.
Abstracción de Datos Arrays.
Repaso para la construcción del intérprete 2012
Elementos básicos del Lenguaje
Procedimientos y Funciones
Clase 3: Punteros y Referencias
Programación I Teoría III
Programación I Teoría IV
Direcciones, Arreglos y Argumentos de Funciones
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Variables Prof. Gonzalo Pastor.
INFORMATICA I Arreglos 1 CLASE 17.
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
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.
Ingeniero Anyelo Quintero
¿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.
Funciones en lenguaje C
Funciones: conceptos básicos
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Tipos de Datos Básicos 1.
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.
Tema 6: Clases Antonio J. Sierra.
PUNTEROS Ó (apuntadores) EN LENGUAJE C
Diseño de algoritmos “Punteros”
Lenguaje C.
LENGUAJE “C” Programación.
Semana 5 Subprogramas..
Capítulo 5. Punteros y Cadenas de Caracteres
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
Índice. Revisando conceptos acerca de la memoria.
Clase 10: Estructuras de datos y arreglos.
Descomposición Modular. Funciones
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Programa Vespertino de Automatización Equipos y Sistemas de Control Digital Lenguaje C Profesor: Felipe Páez Mejías D e p a r t a m e n t o d e I n g e.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
PUNTEROS Ing Anghello Quintero.
FIEE VARIABLES Ing. José Antonio Poma G.. FIEE Variables Una variable es un identificador (nombre de la variable) que hace referencia a.
Unidad II Introducción a la programación en C++
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
Programación en C para electrónicos
Punteros.
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
APUNTADORES.
PROGRAMACIÓN MULTIMEDIA
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
FUNDAMENTOS DE PROGRAMACIÓN
Términos algoritmo diseñar algoritmo implementar algoritmo
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
PRINCIPIOS DE PROGRAMACIÓN

ARREGLOS (arrays).
Presente un cuestionario con los aspectos mas importantes sobre los
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Lic. Carla Aguirre Montalvo
 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.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
Informática Ingeniería en Electrónica y Automática Industrial
MEMORIA DINÁMICA.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
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
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Transcripción de la presentación:

Programación I MC José Andrés Vázquez Flores Apuntadores Programación I MC José Andrés Vázquez Flores

Definición Un apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable que contiene el dato. Los apuntadores también deben de seguir las mismas reglas que se aplican a las variables, tener nombre únicos y declararse antes de usarse. Cada variable que se utiliza en una aplicación ocupa una o más posiciones de memoria. Estas posiciones de memoria se accesan por medio de una dirección.

Definición En la figura el texto Hello ésta guardado en memoria, comenzando en la dirección 1000. Cada carácter ocupa un espacio de dirección único en memoria. Los apuntadores proporcionan un método para conservar y llegar a estas direcciones en memoria. 1000 1001 1002 1003 1004 *h H E L L O h

Operadores de Indirección y Dirección Hay 2 operadores que se usan cuando trabajan con direcciones en un programa C; el Operador de Indirección (*) y el de Dirección (&). El Operador de Dirección (&) regresa la dirección de una variable. Este operador está asociado con la variable a su derecha: &h Regresa la dirección de la variable h. El Operador de Indirección (*) trabaja a la inversa del operador de Dirección.

Operadores de Indirección y Dirección También esta asociado con la variable a su derecha, toma la dirección y regresa el dato que contiene esa dirección. Por ejemplo, la siguiente línea determina la dirección de la variable h y luego usa el operador de Indirección para accesar la variable y darle un valor de 42: *(&h)=42; La declaración de un puntero de manera general es: tipo *nom_ap; tipo: Especifica el tipo de objeto apuntado y puede ser de cualquier tipo. nom_ap: Es el identificador del apuntador.

Aritmética de Apuntadores Solamente se pueden realizar operaciones de incremento y decremento, y estos es de acuerdo a la longitud de su tipo de base. Por ejemplo supóngase que una máquina particular utiliza direccionamiento de byte, un entero requiere 4 bytes y el valor de la variable pi (declarada asi: int *pi) es 100, es decir, se apunta al entero *pi en la localidad 100. Entonces el valor de pi-1 es 96, el de pi+1 es 104 y el de pi+2 es 108.

Aritmética de Apuntadores El valor de *(pi-1) es el de los contenidos de los 4 bytes 96,97,98, y 99 , el de *(pi+1) es el del contenido de los bytes 104, 105,106 y 107, y el de *(pi+2) es el entero que esta en los bytes 108,109,110 y 111. main() { int x = 1, y = 2; int *ap; ap = &x; y = *ap; x = ap; *ap = 3; }

Aritmética de Apuntadores Importante: Cuando un apuntador es declarado apunta a algún lado. Se debe inicializar el apuntador antes de usarlo. Por lo que: main() { int *ap; *ap = 100; } Puede generar un error en tiempo de ejecución o presentar un comportamiento errático.

Aritmética de Apuntadores El uso correcto será: main() { int *ap; int x; ap = &x; *ap = 100; }

Aritmética de Apuntadores Con los apuntadores se puede realizar también aritmética entera, por ejemplo: main() { float *flp, *flq; *flp = *flp + 10; ++*flp; (*flp)++; flq = flp; }

Aritmética de Apuntadores NOTA: Un apuntador a cualquier tipo de variables es una dirección en memoria -- la cual es una dirección entera, pero un apuntador NO es un entero. Aun apuntador se le asocia un tipo de dato, es por que se debe conocer en cuantos bytes esta guardado el dato. De tal forma, que cuando se incrementa un apuntador, se incrementa el apuntador por un ''bloque'' de memoria, en donde el bloque esta en función del tamaño del dato.

Programación I MC José Andrés Vázquez Flores Funciones Programación I MC José Andrés Vázquez Flores

Introducción Las funciones son bloques con los que se construyen programas C, y en ellos se lleva a cabo toda actividad del programa. Una vez que una función ha sido escrita y depurada, puede utilizarse una y otra vez. Este es uno de los aspectos más importantes del C como lenguaje de programación.

Introducción Cuando una función se llama, el control se pasa a la misma para su ejecución y cuando ésta finaliza, el control es devuelto de nuevo al módulo que la llamó, para continuar con la ejecución del mismo, a partir de la secuencia que efectuó la llamada. main() { func1(); …. } func1() { func2(); …. return; } func2() { …. return; }

Introducción La definición de una función consiste en un encabezado y un cuerpo. De manera explicita, se puede decir que es un bloque o una proposición compuesta. La estructura básica de la definición de una función es: tipo nombre([,argumentos]) { [declaraciones] proposiciones [return(expresión);] }

Encabezado tipo: Indica el tipo del valor devuelto por la función. nombre: Es un identificador que indica el nombre de la función. [argumentos]: Es una secuencia de declaraciones de parámetros separados por comas.

Cuerpo El cuerpo de la función está formado por una sentencia compuesta que contiene sentencias que definen lo que hace la función. También puede contener declaraciones de variables utilizadas en dichas sentencias. Estas variables, por defecto son locales a la función.  [return(expresion)]: se utiliza para devolver el valor de la función el cual debe ser del mismo tipo declarado en el encabezado de la función.

Ejemplo La siguiente función usa dos argumentos de tipo entero y regresa un valor ( la suma de ambos argumentos) de tipo entero. int suma (int a, int b) { int valor; valor = a+b; return valor; }

Llamado a una función Para llamar a una función se hace mediante su nombre con los argumentos entre paréntesis. Generalmente se asigna el valor de la función a una variable del mismo tipo de esta. #include <stdio.h> main() { int res; res = suma(2,3); printf ("El resultado es: %d", res) }

Paso de parámetros En C existen dos tipos de paso de parámetros en el llamado a una función: Paso de parámetros por valor: Significa copiar los parámetros actuales en sus correspondientes lista de argumentos, operación que se hace automáticamente, con lo cual no se modifican los argumentos actuales. Paso de parámetros por referencia: Significa que lo transferido no son los valores, sino las direcciones de las variables que contienen esos valores, con lo cual los argumentos actuales de la función pueden verse modificados.

Paso de parámetros Cuando se llama a una función, los argumentos especificados en la llamada son pasados por valor, excepto los arrays (arreglos) que se pasan por referencia.

Paso de parámetros #include <stdio.h> /* función sumar*/ int sumar(int a, int b, int c, int *s) { b += 2; *s = a + b + c; } main () { int v = 5, res: sumar(4,v,v*2-1,&res) /* llamado a la función */ printf(“%d”,suma);

Alcance La regla básica de alcance consiste en que los identificadores son accesibles sólo dentro del bloque en el que se declararon, fuera de éste son desconocidos. { int a=5; printf("\n%d", a); { int a=7; /* Variable distinta */ } /* Aqui llega el alcance */ printf("\n%d", ++a); }

Variables globales y locales La regla de alcance es utilizada comúnmente para utilizar variables globales y locales. Las Variables Globales se declaran al inicio del programa fuera del main() y fuera de cualquier función. Las Variables Locales se declaran dentro e algún bloque.