Capitulo 4 - PowerPoint PPT Presentation

1 / 38
About This Presentation
Title:

Capitulo 4

Description:

Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings Ordenamiento Bubble Sort Ordenamiento Burbuja Existen numerosos algoritmos para ordenar. – PowerPoint PPT presentation

Number of Views:144
Avg rating:3.0/5.0
Slides: 39
Provided by: Thin186
Category:

less

Transcript and Presenter's Notes

Title: Capitulo 4


1
Capitulo 4
  • Arreglos o Arrays
  • Unidimensionales
  • Bidimensionales
  • Strings
  • Ordenamiento Bubble Sort

2
Arreglos - Arrays
  • Supongan que tenemos 10 variables
  • a b c d e f g h i j
  • Si se desea manipular las variables debemos poner
    sus nombres cada vez que se requiera.
  • Un enfoque más general es utilizar las variables
    con el mismo nombre, pero diferenciándolas con un
    numero.
  • Semejante a como los libros de matemáticas
    utilizan los vectores y las tuplas.
  • a1 a2 a3 a4 a5 a6 a7 a8 a9 a10

3
Arreglos - Arrays
  • Ahora sumar las variables, es mucho más fácil

4
Arreglos - Arrays
  • Suponer que se quieren leer 5000 enteros y hacer
    algún tipo de operación con ellos
  • Con los contenidos que conocemos(?) hasta ahora
    necesitamos utilizar 5000 variables.
  • Problemas
  • De comprensión en la codificación.
  • De utilización de memoria.
  • La solución es utilizar ARREGLOS o ARRAYS.

5
Arreglos - Arrays
  • Los arreglos son conjuntos de variables que
    comparten un mismo nombre, permiten almacenar
    una colección de datos del mismo tipo.
  • Pueden ser referenciadas de manera individual con
    ayuda de uno o más índices.
  • Los arreglos en C, se almacenan en
    posiciones contiguas de memoria y tienen un
    tamaño definido en tiempo de compilación.
  • Tenemos según su dimensionalidad
  • Unidimensionales (Ej. Vector Matemático).
  • Bidimensionales (Ej. Matriz).
  • Tridimensional (Ej. Cubo).
  • Multidimensionales.

6
Ejemplos
UNIDIMENSIONAL
BIDIMENSIONAL
TRIDIMENSIONAL
7
Ejemplos
  • // Enteros tamaño 4
  • int numeros 2, 0, 0, 7
  • //arreglo de caracteres de tamaño 5
  • char alfabeto 5 'A', 'B', 'C', 'D', 'E'
  • //5 filas y columnas a lo mas de 40 caracteres.
  • char nombres 40 francisco,
    sebastian", daniela,liliana, alfonso
  • //arreglo bidimensional de enteros
  • int coordenadas 2 2 0, 0 , 1, 1

8
Observación
  • En C los índices de los arreglos comienzan en
    cero. El primer elemento, es el elemento cero.
  • Todos los elementos son del mismo tipo.
  • Se debe conocer el largo del arreglo en tiempo de
    compilación.

9
Arreglos Unidimensionales
  • Es una lista o vector.
  • Declaración
  • Tipo_dato nom_arreglo tamaño
  • Tipo_dato de que tipo serán los elementos.
  • Recordar que todos los elementos son del mismo
    tipo
  • nom_arreglo nombre para la variable tipo
    arreglos .
  • nos indica que su dimensionalidad es uno
  • tamaño la cantidad de elementos que a los más
    podrá contener el arreglo.

10
Accediendo los elementos
  • Un elemento individual dentro de un arreglo es
    accedido por el uso de un índice. Un índice
    describe la posición de un elemento dentro de un
    arreglo. Recordar en C el primer elemento tiene
    el índice cero!

11
Ejemplo
  • include ltstdio.hgt
  • int main ( )
  • int muestra 10 , t
  • for ( t 0 t lt 10 t )
  • muestra t t t
  • for ( t 0 t lt 10 t )
  • printf ( "muestra d d", t, muestra t
    )
  • return ( 0 )

12
Trabajando con Arreglos
  • No se puede asignar un arreglo a otro
  • Lo siguiente es ilegal
  • int a 10 , b 10
  • a b //error ilegal
  • En vez, se debe hacer asignaciones por cada
  • elemento
  • int i
  • for ( i 0 i lt 10 i )
  • a i b i //mas
    adelante strcpy

13
Ejemplos
  • 1.- Realizar un programa en el que se ingresen 10
    enteros, y luego muestre la suma de ellos y su
    promedio.
  • 2.- Encontrar el máximo de una lista de 10
    elementos.
  • 3.- Desarrolle un programa que calcule el
    promedio de las notas de un curso.

14
Solución 1
  • includeltstdio.hgt
  • int main()
  • int i, max 0
  • int list 100
  • for ( i 0 i lt 100 i )
  • list i rand ( )
  • for ( i 0 i lt 100 i )
  • if ( max lt list i )
  • max list i
  • printf ( "max d", max )
  • return ( 0 )

15
Solución 2
  • include ltstdio.hgt
  • int main()
  • int x 10
  • int i, suma
  • printf ( "\n Ingrese 10 números\n )
  • for ( i 0 i lt 10 i )
  • scanf ("d",x i ) //lleva pq es componente
    a componente
  • suma 0
  • for ( i 0 i lt 10 i )
  • suma x i
  • printf ("\n El resultado de la suma es d ",
    suma )
  • printf ("\n El resultado del promedio es d ",
    suma / 10 )
  • return ( 0 )

16
Arreglos Bidimensionales
  • Un arreglo bidimensional es una lista de arreglos
    unidimensional
  • Para declarar un arreglo bidimensional de enteros
    int matriz34

17
Ejemplo
  • includeltstdio.hgt
  • int main ( )
  • int fila 3,col 4,matriz fila col
  • for ( fila 0 fila lt 3 fila )
  • for ( col 0 col lt 4 col )
  • matriz fila col fila col
  • return ( 0 )

18
Arreglos Bidimensionales
  • Por ejemplo Cada alumno tiene tres notas, una
    por cada certamen.
  • Entonces las notas de un alumno pueden contenerse
    en un arreglo de tamaño tres.
  • Ahora si queremos mantener las notas de un curso
    de 52 alumnos.
  • Podemos mantener las notas en un arreglo de 52
    arreglos de tamaño 3.

19
Notas del curso
  • includeltstdio.hgt
  • define alumnos 52
  • define notas 3
  • int main ( )
  • int curso alumnos notas , fila, col
  • for ( fila 0 fila lt alumnos fila )
  • for ( col 0 col lt notas col )
  • scanf ( "d, curso fila col )
  • return ( 0 )
  • Con lo cual curso 10, 2 representa la nota
    del tercer certamen del onceavo alumno.

20
Ejemplo
  • Desarrolle un programa que reciba como entrada
    las notas de cada pregunta del certamen 1 de
    programación, para todos los alumnos, y muestre
    como salida un resumen con las notas finales de
    todos los alumnos

21
Multidimensionales
  • No existe un limite lógico definido para la
    cantidad de dimensiones que puede tener un
    arreglo, físico sí, la memoria reservada.
  • C permite arreglos con mas de dos dimensiones
  • La forma general de una declaración de arreglo es
  • tipo nombre_vartamaño1tamaño2tamañoN
  • int a 3, b 4, c 5, i , j , k , arr a b
    c
  • for ( i 0 i lt a i )
  • for ( j 0 j lt b j )
  • for ( k 0 k lt c k )
  • arr i j k i j k

22
String
  • El uso más común para un arreglo unidimensional
    es guardar un arreglo de caracteres. Un string
    esta definido como un arreglo de
    caracteres terminado por un símbolo null ('\0').
  • Para que un arreglo contenga un string de
    10 caracteres, es necesario definirlo de largo
    11, ya que 11 hace lugar para el null al final
    del string.

23
String
  • Definición
  • char cadenatamaño
  • Asignación carácter a carácter
  • cadena0'h'
  • cadena1'o'
  • cadena2'l'
  • cadena3'a'
  • cadena4'\0'

24
String
  • Inicialización Se copia directamente en el array
    todos los caracteres y se incluye automáticamente
    el carácter '\0'
  • cadena"hola"
  • Para asignar un carácter a un char se utiliza la
    comilla simple
  • 'a' carácter con comilla simple
  • "ab una string, arreglo de caracteres

25
Ejemplo
  • include ltstdio.hgt
  • int main ( )
  • char str 80
  • printf ( "escribir string )
  • scanf ( "s", str ) //no lleva
  • return ( 0 )
  • / Lee un string hasta que encuentra un espacio
    vacío /

26
Ejemplo
  • include ltstdio.hgt
  • int main ( )
  • char str 80
  • printf ( "escribir string )
  • gets ( str ) //con espacios
  • return ( 0 )

27
String
  • La librería string.h, permite hacer operaciones
    con string. Los más usados son
  • strcpy ( ) copia caracteres de un string a
    otro.
  • strcat ( ) concatenación de strings.
  • strlen ( ) largo del string.
  • strcmp ( ) comparación de strings.

28
Ejemplo
  • Sean s1 y s2 string de largo fijo
  • strcpy ( s1, s2 ) copia s2 en s1 y devuelve s1.
  • strcat ( s1, s2 ) concatena s2 en s1, retorna s1.
  • strlen ( s1 ) devuelve el la longitud de s1.
  • strcmp ( s1, s2 ) compara s1 con s2
  • Si son iguales devuelve 0
  • si s1gts2 devuelve un nº gt0
  • si s1lts2 devuelve un nº lt0

29
Ejemplo
  • include ltstdio.hgt
  • include ltstring.hgt
  • int main ( )
  • char s 10 , c 10 iwi131
  • do
  • printf ( "ingrese su clave ")
  • scanf ( "s",s)
  • if ( strcmp ( s, c ) ! 0 )
  • printf ( "clave incorrecta, intente
    nuevamente\n )
  • while ( strcmp ( s, c ) ! 0 )
  • printf ( "la clave es correcta\n )
  • return ( 0 )

30
Ejemplo
  • include ltstring.hgt
  • include ltstdio.hgt
  • int main ( void )
  • char c1 80 , c2 80
  • printf ( \n Ingrese una cadena de caracteres
    )
  • scanf ( "s", c1 )
  • printf ( "\n Ingrese una cadena de caracteres
    )
  • scanf ( "s", c2 )
  • printf ( "\n Longitudes d d ", strlen ( c1 ),
    strlen ( c2 ) )
  • if ( ! strcmp ( c1, c2 ) )
  • printf ( "\nLas cadenas son iguales )
  • strcat ( c1, c2 )
  • printf ( "\n s", c1 )
  • return ( 0 )

31
String.h
32
Ejercicio
  1. Realizar un programa que convierta un string a
    mayúscula y contar número de dígitos.

33
Bonus Cadenas Inmutables
  • Las cadenas inmutables se declaran como un
    puntero a un char, representan un
    string constante y no requieren saber su largo.
  • Inicializando
  • char X 10 "hola
  • char Y "chao" // En profundidad en
    Estructura de datos
  • Asignando
  • char X 10
  • char Y // En profundidad Est de datos
  • strcpy ( X, "hola ) // X"hola" es un error
  • Y "chao // En profundidad Est de datos

34
Ordenamiento Burbuja
  • Existen numerosos algoritmos para ordenar. A
  • continuación se verá Ordenamiento Burbuja
    (bublesort).
  • Idea vamos comparando elementos adyacentes y
    empujamos los valores más livianos hacia arriba
    (los más pesados van quedando abajo).
  • Idea de la burbuja que asciende, por lo liviana
    que es.

35
Ordenamiento Burbuja Código
  • for ( i N - 1 i gt 0 i -- )
  • for ( j 0 j lt i j )
  • if ( V j gt V j 1 ) //lo siguiente se
    conoce
  • tmp f //como swap de variables
  • f g
  • g tmp

36
Ordenamiento Burbuja
37
Ordenamiento Burbuja Código
  • include ltstdio.hgt
  • define N 6
  • void intercambia ( int f, int g )
  • int tmp
  • tmp f
  • f g
  • g tmp
  • int main ( )
  • int i, j, v N 3, 4, 5, 2, 6, 8
  • for ( i N - 1 i gt 1 i -- )
  • for ( j 0 j lt i j )
  • if ( v j gt v j 1 )
  • intercambia ( v j , v j 1 )
  • for ( i 0 i lt N i )

38
Fin
  • Preparando la revancha
Write a Comment
User Comments (0)
About PowerShow.com