clase 17. resumen: Ámbito de las variables el ámbito de un elemento en c depende de donde se...

39
INFORMATICA I CLASE 17 Arreglos 1

Upload: piedad-canedo

Post on 03-Feb-2015

5 views

Category:

Documents


1 download

TRANSCRIPT

Page 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

INFORMATICA I

CLASE 17

Arreglos 1

Page 2: 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

Zona de Preguntas…

Funciones en C

CICLOS#include <stdio.h>

//Prototiposvoid 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;printf("%d\n",x);}

printf("%d\n",x);a();b();c();d(x);a();b();c();d(x);printf("%d\n",x);

return 0;}

//Declaracion de las funcionesvoid a(void){

int x=25;printf("%d\n",x);x++;printf("%d\n",x);

}void b(void){

static int x=50;printf("%d\n",x);x++;printf("%d\n",x);

}void c(void){

printf("%d\n",x);x*=10;printf("%d\n",x);

}void d(int x){

printf("%d\n",x);x--;printf("%d\n",x);

}

Page 3: 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

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.

Page 4: 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

#include < libreriaX.h>#include "archivo.h"

int varGlobal;

int main(void){ …..}

program.c

#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){ int varLocal; varLocal=2*CONST1; ….}

archivo.carchivo.h

#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){ int varLocal; varLocal=2*CONST1; ….}

program.c

#include < libreriaX.h>#include "archivo.h "extern int varGlobal;int funcion1(void){ int varLocal; printf("%d",CONST1); …..}

funcion1.c

funcion2.c

funcion3.c

#include < libreriaX.h>#include "archivo.h "extern int varGlobal;int funcion2(int x){ int varLocal=CONST1; …..}

#include < libreriaX.h>#include "archivo.h "extern int varGlobal;int funcion3(float x){ int varLocal; varLocal=2*CONST1; ….}

Creación de Librerías

#define CONST1 10

int funcion1(void);int funcion2(int);int funcion3(float);

Ejemplo

Page 5: 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

Archivo Fuente 1

Archivo Fuente 2

Archivo Fuente 3

Archivo Fuente n

Archivo objeto 1

Archivo objeto 2

Archivo objeto 3

Archivo objeto n

COMPILADOR

Librerias internas

ENLAZADOR

PROGRAMA EJECUTABLE

Compilando y Enlazando libreríasCompilando y Enlazando libreríasCreación de Librerías

Revisar Makefile. Forma de realizar todo este proceso de una manera Automática e “Inteligente”

Page 6: 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

AGENDA

1 Introducción

2 Declaración

3 Inicialización

1 Introducción

4 Ejemplos

5 Cadena de Caracteres

Page 7: 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

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

Definición

Page 8: 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

Ejemplo Arreglos

Solución 1:Crear una variable especifica por empleado en la cual se almacene la identificación de cada uno de los empleados.

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?

INTRODUCCION

Page 9: 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

Ejemplo Arreglos

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, …)

INTRODUCCION

Page 10: 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

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.

INTRODUCCIONEjemplo Arreglos

Page 11: 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

Introducción• 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 17 26 26 … 18

Temp 10 12 16 20 18 14 15 10 … 16

Precios 1700 850 2300 300 1000 … 1800

INTRODUCCION

Page 12: 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

Introducción

• 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.

Edad 24 17 31 16 21 17 26 26 18 23Edad

0 1 2 3 4 5 6 7 8 924 17 31 16 21 17 26 26 18 23

Número de elementos = 10

Subíndices

INTRODUCCION

Nombre

Page 13: 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

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

Edad0 1 2 3 4 5 6 7 8 9

24 17 31 16 21 17 26 26 18 23

Número de elementos = 10

Subíndices

Valores

Nombre

IntroducciónINTRODUCCION

Page 14: 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

AGENDA

1 Introducción

2 Declaración

3 Inicialización

2 Declaración

4 Ejemplos

5 Cadena de Caracteres

Page 15: 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

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.

DECLARACIÓN

tipoDatos nombreArreglo[#deElementos];

int, float,char,… Nombre queRepresenta alarreglo

Entero Positivo

Page 16: 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

Declaración de Arreglos

• Ejemplo:

DECLARACIÓN

7 espacios de memoria

int Edad[7];

0 1 2 3 4 5 6

...

30 espacios de memoria

int Temp[30];

0 1 2 3 … 28 29

Page 17: 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

Inicialización de Arreglos INICIALIZACIÓN

En el momento de declarar el arreglo, se puede inicializar. Se utiliza las {} para inicializar un arreglo.

edad0 1 2 3 4 5 6 7 8 9 Se crea el

arreglo y se inicializa

int edad[10]={16,22,19,21,21,18,19,15,32,28};

temp0 1 2 3 Se crea el

arreglo y se inicializa

float temp[4]={21.3, 23.5, 27.5, 26.4};

16 22 19 21 21 18 19 15 32 28

21.3 23.5 27.5 26.4

Page 18: 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

AGENDA

1 Introducción

2 Declaración

3 Utilización3 Utilización

4 Ejemplos

5 Cadena de Caracteres

Page 19: 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

Accediendo a los arreglos

Un array así como las variables ordinarias debe ser declarado antes de ser usado.

edad[i]índice

Nombre del arreglo

int edad[10];

Cada dato de un arreglo puede ser utilizado como si fuera una variable mas.

Un dato de un arreglo se referencia así:

Edad0 1 2 3 4 5 6 7 8 9

Número de elementos = 10

Subíndices

Valores

Nombre

Page 20: 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

Asignación de valores al Arreglo

• 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];

INICIALIZACIÓN

edad0 1 2 3 4 5 6 7 8 9

21 17 17

Solo se crea el arregloAsignando valor a un elemento

Page 21: 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

AGENDA

1 Introducción

2 Declaración

3 Inicialización

4 Ejemplos

5 Cadena de Caracteres

4 Ejemplos

Page 22: 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

Ejemplo 1

Realice un programa que encuentre el promedio de los elementos del siguiente vector:

EJEMPLOS

12 4 65 21 4 6 25

Page 23: 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

Ejemplo 1 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;}

Page 24: 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

Ejemplo 2

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

EJEMPLOS

Page 25: 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

Ejemplo 2 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;}

Page 26: 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

Ejemplo 3

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

EJEMPLOS

Page 27: 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

Ejemplo 3 EJEMPLOS

#include <stdio.h>#define SIZE 10int 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;}

Page 28: 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

Ejemplo 4

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:

EJEMPLOS

Page 29: 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

Ejemplo 4 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;}

Page 30: 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

AGENDA

1 Introducción

2 Declaración

3 Inicialización

4 Ejemplos

5 Cadena de Caracteres5 Cadena de Caracteres

Page 31: 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

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’};

CADENAS DE CARACTERES

Page 32: 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

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´};

CADENAS DE CARACTERES

Si un vector no se le indica el tamaño,

este se define automáticamente de acuerdo a la inicialización

Tamaño 4

Page 33: 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

EjemploAlmacenar la palabra pereira en una cadena que

se llame ciudad.

Almacenar la palabra manzana en una cadena llamada frutas

CADENAS DE CARACTERES

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’};

Page 34: 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

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

Page 35: 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

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 (.).

CADENAS DE CARACTERES

Page 36: 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

#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');

}

Page 37: 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

FUNCIONES PARA MANIPULAR CADENAS

CADENAS DE CARACTERES

FUNCIÓN DESCRIPCIÓN EJEMPLO

#include <string.h> Librería necesaria -

strlen Devuelve longitud Longit=strlen(cad);

strcpyCopia la cad1 a la

cad2strcpy(cad1, cad2);

strcmpCompara la cad1 y la

cad2strcmp(cad1,cad2);

strcatCopia la cad2 al final

de la cad1strcat(cad1,cad2);

Page 38: 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

Bibliografía

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

• Google

Page 39: 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

GRACIAS POR SU ATENCIÓN