INFORMATICA I Arreglos 1 CLASE 17.

Slides:



Advertisements
Presentaciones similares
Arreglos.
Advertisements

el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Abstracción de Datos Arrays.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
PROGRAMACIÓN ESTRUCTURADA EN PSEUDÓCODIGO
El lenguaje C Introducción.
Ing. Eduard Antonio Lozano Córdoba
Clase 3: Punteros y Referencias
Estructuras de Datos (ARRAYS)
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
MANEJO DE ARRAYS EN C.
FUNCIONES EN C.
ESTRUCTURAS DE DATOS.
INFORMATICA I Arreglos 2 CLASE 18.
Informática II Prof. Dr. Gustavo Patiño MJ
INFORMATICA I Funciones CLASE 13.
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
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.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
VECTORES.
ARREGLOS Estructuras de datos.
Unidad 3 Punteros.
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.
FUNCIONES EN C.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Programación I Teoría VI: Recursividad

Programación Orientada a Objetos usando C++
POO Java Módulo 3 Elementos de programas Identificadores
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.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
FUNCIONES EN C.
UNIDAD V Arreglos y Cadenas
Informática Ingeniería en Electrónica y Automática Industrial
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Clase 10: Estructuras de datos y arreglos.
Unidad VI Registros (estructuras, uniones y enumeraciones)
PUNTEROS Ing Anghello Quintero.
El lenguaje de programación C - Vectores y matrices -
Fundamentos de Programación
Unidad II Introducción a la programación en C++
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
APUNTADORES.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Registros Departamento de Computación
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
LENGUAJE “C” Programación.
Arrays multidimensionales en JAVA
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
MEMORIA DINÁMICA.
OBJETIVOS DEFINIR LA ESTRUCTURA DE ARREGLOS. DECLARAR ARREGLOS EN C.
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
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computació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.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Transcripción de la presentación:

INFORMATICA I Arreglos 1 CLASE 17

Resumen: Ámbito de las variables El ámbito de un elemento en C depende de donde se sitúe la definición y de los modificadores que le acompañan. En resumen, se puede decir que un elemento definido dentro de una función tiene ámbito local, o si se define fuera de cualquier función, se dice que tiene un ámbito global. program.c #include < libreriaX.h> #define CONST 10 int funcion1(void); /*Las vbles. declaradas aquí tienen un ambito global. Cualquier función dentro de este mismo archivo puede hacer uso de ellas.*/ int main(void) { ….. } int funcion1() /*Las vbles. declaradas aquí tienen un ambito local a funcion1. Ninguna otra función puede hacer uso de ellas.*/ /*Los apuntadores le permiten a otras funciones manipular estas vbles*/

Zona de Preguntas… Funciones en C //Declaracion de las funciones CICLOS #include <stdio.h> //Prototipos void a(void); void b(void); void c(void); void d(int x); int x=1; int main(void){ int x=5; printf("%d\n",x); { int x=7; } a(); b(); c(); d(x); return 0; //Declaracion de las funciones void a(void){ int x=25; printf("%d\n",x); x++; } void b(void){ static int x=50; void c(void){ x*=10; void d(int x){ x--; Funciones en C

Estructurando funciones en archivos separados Hasta ahora todos los programa se han escrito en un solo archivo (.c), solo se ha hecho uso de la inclusión de algunas librerias (archivos .h) del sistema. Los programas grandes son más fáciles de gestionar si se dividen en varios archivos fuente, también llamados módulos, cada uno de los cuales puede contener una o más funciones.

Ejemplo Creación de Librerías program.c program.c funcion1.c archivo.h #include < libreriaX.h> #include "archivo.h" int varGlobal; int main(void){ ….. } program.c #include < libreriaX.h> #define CONST1 10 int funcion1(void); int funcion2(int); int funcion3(float); int varGlobal; int main(void){ { ….. } int funcion1(void){ int varLocal; printf("%d",CONST1); int funcion2(int x){ int varLocal= CONST1; int funcion3(float x){ varLocal=2*CONST1; …. funcion1.c #include < libreriaX.h> #include "archivo.h " extern int varGlobal; int funcion1(void){ int varLocal; printf("%d",CONST1); ….. } archivo.h archivo.c #define CONST1 10 int funcion1(void); int funcion2(int); int funcion3(float); #include < libreriaX.h> #include "archivo.h" extern int varGlobal; int funcion1(void){ int varLocal; printf("%d",CONST1); ….. } int funcion2(int x){ int varLocal= CONST1; int funcion3(float x){ varLocal=2*CONST1; …. funcion2.c #include < libreriaX.h> #include "archivo.h " extern int varGlobal; int funcion2(int x){ int varLocal=CONST1; ….. } funcion3.c #include < libreriaX.h> #include "archivo.h " extern int varGlobal; int funcion3(float x){ int varLocal; varLocal=2*CONST1; …. }

Compilando y Enlazando librerías Creación de Librerías Compilando y Enlazando librerías Archivo Fuente 1 Archivo Fuente 2 Archivo Fuente 3 Archivo Fuente n COMPILADOR Archivo objeto 1 Archivo objeto 2 Archivo objeto 3 Archivo objeto n Librerias internas ENLAZADOR PROGRAMA EJECUTABLE Revisar Makefile. Forma de realizar todo este proceso de una manera Automática e “Inteligente”

AGENDA Introducción Introducción Declaración Inicialización Ejemplos 1 Introducción 1 Introducción 2 Declaración 3 Inicialización 4 Ejemplos 5 Cadena de Caracteres

Definición Definición: Un array es una colección de variables del mismo tipo de datos con un mismo nombre. En los arrays: Hay un número de piezas de datos contenidos en el mismo nombre. Hay un método ordenado para la extracción de datos individuales del array

Ejemplo Arreglos Problema: INTRODUCCION Problema: Supongamos el señor Burns le solicita a usted un programa que le permita llevar un registro de la identificación de cada uno de los empleados de la planta nuclear de Springfield, ¿Cómo lo haría? Solución 1: Crear una variable especifica por empleado en la cual se almacene la identificación de cada uno de los empleados.

Ejemplo Arreglos Problema solución anterior: INTRODUCCION Problema solución anterior: El problema se vuelve mas difícil a medida que el numero de empleados aumenta, pues implicara la creación de mas variables individuales (id5, id6, …)

Ejemplo Arreglos Solución al problema anterior: INTRODUCCION Ejemplo Arreglos Solución al problema anterior: En los arrays se encuentra la respuesta. Pues un array es como una caja para guardar de manera organizada elementos tal como un archivador. Utiliza un sistema de indexación para encontrar el valor de cada una de las variables almacenadas en su interior.

Introducción Ejemplo: Arreglo con la edad de los alumnos de una clase INTRODUCCION Ejemplo: Arreglo con la edad de los alumnos de una clase Arreglo con las temperaturas de cada día de un mes en una ciudad determinada Arreglo con los precios de cada uno de los productos de una tienda…. Edad 24 17 31 … Temp 10 12 16 … Precios 1700 850 2300 … Edad 24 17 31 16 21 26 … 18 Temp 10 12 16 20 18 14 15 … Precios 1700 850 2300 300 1000 … 1800

Introducción Un array se identifica con un nombre. INTRODUCCION Un array se identifica con un nombre. Y contiene N elementos. Los elementos de un array se enumeran consecutivamente 0, 1, 2, 3, .. (N-1) Esta enumeración se denomina valores índice o subindice del array. Y sirven para accesar cualquier elemento del array. Subíndices Edad 1 2 3 4 5 6 7 8 9 24 17 31 16 21 26 18 23 Edad 24 17 31 16 21 26 18 23 Nombre Número de elementos = 10

Introducción INTRODUCCION El arreglo edad tiene 10 elementos (edades), los indice van desde 0 hasta 9. Cada elemento se accede con el nombre del arreglo y con el indice al que corresponda. El elemento 0 del vector Edad vale 24 El elemento 5 del vector Edad vale 17 Nombre Subíndices Edad 1 2 3 4 5 6 7 8 9 24 17 31 16 21 26 18 23 Valores Número de elementos = 10

AGENDA Introducción Declaración Declaración Inicialización Ejemplos 1 Introducción 2 Declaración 2 Declaración 3 Inicialización 4 Ejemplos 5 Cadena de Caracteres

Declaración de Arreglos Un arreglo es un espacio en memoria al cual hay que reservarle ese espacio. Al igual que con las variables los arreglos hay que declararlos antes de utilizarlos, y se pueden inicializar o no. La declaración de los arreglos tiene la misma connotación de la Vbles. tipoDatos nombreArreglo[#deElementos]; Nombre que Representa al arreglo Entero Positivo int, float,char,…

Declaración de Arreglos Ejemplo: 7 espacios de memoria int Edad[7]; 1 2 3 4 5 6 30 espacios de memoria int Temp[30]; ... 1 2 3 … 28 29

Inicialización de Arreglos En el momento de declarar el arreglo, se puede inicializar. Se utiliza las {} para inicializar un arreglo. int edad[10]={16,22,19,21,21,18,19,15,32,28}; Se crea el arreglo y se inicializa edad 1 2 3 4 5 6 7 8 9 16 22 19 21 21 18 19 15 32 28 float temp[4]={21.3, 23.5, 27.5, 26.4}; Se crea el arreglo y se inicializa temp 1 2 3 21.3 23.5 27.5 26.4

AGENDA Introducción Declaración Utilización Utilización Ejemplos 1 Introducción 2 Declaración 3 Utilización 3 Utilización 4 Ejemplos 5 Cadena de Caracteres

Accediendo a los arreglos Un array así como las variables ordinarias debe ser declarado antes de ser usado. int edad[10]; Cada dato de un arreglo puede ser utilizado como si fuera una variable mas. edad[i] Un dato de un arreglo se referencia así: índice Nombre del arreglo Nombre Subíndices Edad 1 2 3 4 5 6 7 8 9 Valores Número de elementos = 10

Asignación de valores al Arreglo INICIALIZACIÓN Una vez declarado el arreglo se puede escribir o leer cualquier posición del arreglo int edad[9]; //Declaración edad[2]=21; edad[5]=17; edad[9]=edad[5]; Asignando valor a un elemento Solo se crea el arreglo edad 1 2 3 4 5 6 7 8 9 21 17 17

AGENDA Introducción Declaración Inicialización Ejemplos Ejemplos 1 Introducción 2 Declaración 3 Inicialización 4 Ejemplos 4 Ejemplos 5 Cadena de Caracteres

Ejemplo 1 EJEMPLOS Realice un programa que encuentre el promedio de los elementos del siguiente vector: 12 4 65 21 6 25

Ejemplo 1 #include <stdio.h> int main (void){ EJEMPLOS #include <stdio.h> int main (void){ int num[7]={12, 4, 65, 21, 4, 6, 25}; int i, promedio, suma; for (i=0; i<7; i++){ suma= suma + num[i]; } promedio = suma / 7; printf(“El promdio del vector es: %d\n”,promedio); return 0;

Ejemplo 2 EJEMPLOS Realice un programa que inicialice con 0s (mediante un ciclo for) un vector de 10 posiciones:

Ejemplo 2 #include <stdio.h> int main (void){ int num[10]; EJEMPLOS #include <stdio.h> int main (void){ int num[10]; int i; for (i=0; i<10; i++){ num[i]=0; } printf(“Elemento Value\n”); for(i=0; i<=9; i++){ printf(“%7d%13d\n”,i,num[i]); return 0;

Ejemplo 3 EJEMPLOS Realice un programa que inicialice con 2, 4, 6,… 20 (mediante un ciclo for)un vector de 10 posiciones:

Ejemplo 3 #include <stdio.h> #define SIZE 10 int main (void){ EJEMPLOS #include <stdio.h> #define SIZE 10 int main (void){ int num[SIZE]; int i; for (i=0; i<SIZE; i++){ num[i]=2 + 2*i; } printf(“Elemento Value\n”); for(i=0; i<=SIZE-1; i++){ printf(“%7d%13d\n”,i,num[i]); return 0;

Ejemplo 4 EJEMPLOS Realice un programa que determine cuantos elementos pares e impares tiene un vector de N posiciones. N y los datos son asignados por el usuario:

Ejemplo 4 #include <stdio.h> int main (void){ EJEMPLOS #include <stdio.h> int main (void){ int N, i, par=0, impar=0; printf(“Ingrese el numero de elementos: ”); scanf(“%d”,&N); int num[N]; for (i=0; i<N; i++){ printf(“Ingrese el valor: ”); scanf(“%d”,&num[i]); } for(i=0; i<N; i++){ if(num[i]%2==0){ par=par+1; }else{ impar++; printf(“Pares: %d\n”, par); printf(“Impares: %d\n”, par); return 0;

AGENDA Introducción Declaración Inicialización Ejemplos 1 Introducción 2 Declaración 3 Inicialización 4 Ejemplos 5 Cadena de Caracteres 5 Cadena de Caracteres

CADENAS DE CARACTERES CADENA DE CARACTERES Un tipo de arreglo muy útil es el arreglo que maneja elementos tipo caracter. Sirve para manejar mensajes. Se declara e inicializa arreglo de caracteres: char marca[4]= {‘F’,’I’,’A’,’T’}; char nombre[5]= {‘L’,’U’,’I’,’S’}; char apellido[10]= {‘S’,’U’,’A’,’R’, ’E’, ’Z’, ’\0’};

CADENA DE CARACTERES(2) CADENAS DE CARACTERES CADENA DE CARACTERES(2) Es muy común y muy útil marcar con un caracter especial el final de un arreglo de caracteres (\0).Un arreglo de caracteres que tenga el caracter de finalización lo llamamos cadena de caracteres. char nombre[5]= {‘L’,’U’,’I’,’S’,’\0’}; char nombre[10]= “ANA”; char nombre[]= “ANA”; char nombre[]= {‘L’,’U’,’I’,’S’,´\0´}; Si un vector no se le indica el tamaño, este se define automáticamente de acuerdo a la inicialización Tamaño 4

Ejemplo CADENAS DE CARACTERES Almacenar la palabra pereira en una cadena que se llame ciudad. Almacenar la palabra manzana en una cadena llamada frutas char ciudad[30] = “pereira”; char ciudad[] = “pereira”; char ciudad[30] = {‘p’, ‘e’, ‘r’, ‘e’, ‘i’, ‘r’, ‘a’, ‘\0’}; char ciudad[] = {‘p’, ‘e’, ‘r’, ‘e’, ‘i’, ‘r’, ‘a’, ‘\0’}; char frutas[30] = “manzana”; char frutas[] = “manzana”; char frutas[30] = {‘m’, ‘a’, ‘n’, ‘z’, ‘a’, ‘n’, ‘a’, ‘\0’}; char frutas[] = {‘m’, ‘a’, ‘n’, ‘z’, ‘a’, ‘n’, ‘a’, ‘\0’};

Lectura y Escritura de Cadenas CADENAS DE CARACTERES Lectura y Escritura de Cadenas Leer una cadena introducida por teclado: letra=getchar; //igual que scanf (“%c”,&letra); gets(linea); // cadena completa hasta '\n' scanf(“%s”, palabra); // 1 palabra Sin espacios Escribir una cadena en la pantalla: putchar(letra); //Igual que printf(“%c”,letra); puts(palabra); printf(“%s”,palabra);

CADENAS DE CARACTERES Ejemplo Escribir un programa en C que lea una secuencia de caracteres ASCII y que escriba este mensaje codificado: Si el carácter es una letra o dígito, será reemplazado por el siguiente carácter en el conjunto de caracteres, excepto Z que será reemplazado por A, z por a y 9 por 0. Por tanto, 1 se transforma en 2, C en D, p en q, etc. Cualquier carácter que no sea letra o dígito será reemplazado por un punto (.).

#include <stdio.h> #define MAXCAR 60 void main() { char LIN[MAXCAR], LOUT [MAXCAR]; int i; puts("INGRESE TEXTO A CODIFICAR: \n"); gets(LIN); puts("EL TEXTO CODIFICADO ES: \n"); for (i= 0; LIN[i] != '\0'; i++){ if (((LIN[i] >='0')&&(LIN[i] < '9'))||((LIN[i] >='A‘)&&(LIN[i] < 'Z'))||((LIN[i] >='a') && (LIN[i] < 'z'))) { LIN[i]= LIN[i] + 1; } else if (LIN[i] == '9') LOUT[i]='0'; else if (LIN[i] == 'Z') LOUT[i]='A'; else if (LIN[i] == 'z') LOUT[i]='a'; else LOUT[i]='.'; putchar(LOUT[i]); putchar('\n');

FUNCIONES PARA MANIPULAR CADENAS CADENAS DE CARACTERES FUNCIONES PARA MANIPULAR CADENAS FUNCIÓN DESCRIPCIÓN EJEMPLO #include <string.h> Librería necesaria - strlen Devuelve longitud Longit=strlen(cad); strcpy Copia la cad1 a la cad2 strcpy(cad1, cad2); strcmp Compara la cad1 y la cad2 strcmp(cad1,cad2); strcat Copia la cad2 al final de la cad1 strcat(cad1,cad2);

Bibliografía Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo8. Google

GRACIAS POR SU ATENCIÓN