Vectores y Arreglos en Programación
87 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

¿Cuál es una de las grandes ventajas de trabajar con punteros en la asignación dinámica de memoria?

  • Reservar toda la memoria de forma estática
  • Acceder a la memoria solo de forma secuencial
  • Declarar la longitud en tiempo de compilación
  • Decidir el tamaño en tiempo de ejecución (correct)

¿Qué función se utiliza para reservar memoria para una variable en C?

  • calloc()
  • malloc() (correct)
  • free()
  • realloc()

Al usar malloc(), ¿qué tipo de valor devuelve la función?

  • Un valor entero
  • Un puntero a entero
  • Un puntero a void (correct)
  • Un puntero a float

¿Qué es lo que se multiplica en la función malloc() para determinar la cantidad de memoria a reservar?

<p>El número de elementos por el tamaño del tipo de dato (A)</p> Signup and view all the answers

¿Qué es un vector en programación?

<p>Una colección de datos del mismo tipo ordenados secuencialmente. (D)</p> Signup and view all the answers

¿Cuál es la forma correcta de declarar un vector en C?

<p>tipo_dato identificadorV[dimensión]; (A)</p> Signup and view all the answers

¿Qué debe hacerse después de utilizar malloc() para tratar el puntero devuelto?

<p>Convertirlo al tipo de dato correspondiente (B)</p> Signup and view all the answers

¿Qué indica el índice de un vector?

<p>La posición de un elemento específico en la memoria. (C)</p> Signup and view all the answers

¿Qué significa el término 'reservar casillas' en el contexto de la programación dinámica?

<p>Asignar memoria según sea necesario durante la ejecución (C)</p> Signup and view all the answers

¿Cuál es una responsabilidad del programador al trabajar con punteros y memoria dinámica?

<p>Asegurar que no se acceda más allá de la última posición reservada (A)</p> Signup and view all the answers

¿Qué ocurre si se escribe fuera de los límites de un array?

<p>El contenido de otras posiciones de memoria podría alterarse. (D)</p> Signup and view all the answers

¿Cómo se pasa un vector como parámetro a una función?

<p>Usando el nombre del vector sin corchetes. (C)</p> Signup and view all the answers

Cuando se usa sizeof() en el contexto de malloc(), ¿qué determina?

<p>El tamaño en bytes de los tipos de datos (D)</p> Signup and view all the answers

¿Por qué no se pueden devolver vectores en una función?

<p>Porque siempre se pasan por referencia. (B)</p> Signup and view all the answers

¿Qué declaración es correcta para inicializar un vector de caracteres?

<p>char vector[] = &quot;hola&quot;; (D)</p> Signup and view all the answers

¿Qué responsabilidad tiene el programador respecto al índice de un vector?

<p>Verificar que el índice esté dentro de un rango seguro. (C)</p> Signup and view all the answers

¿Qué tipo de bucle se utiliza para recorrer un array de manera secuencial?

<p>Un bucle for desde 0 hasta el tamaño menos 1 (A)</p> Signup and view all the answers

¿Qué operador es innecesario al pasar un array como parámetro a una función en C?

<p>&amp; (C)</p> Signup and view all the answers

¿Cómo se accede a un elemento específico de una matriz en C?

<p>Identificador[fila][columna] (D)</p> Signup and view all the answers

¿Qué sucede al utilizar un bucle para inicializar todas las casillas de una matriz a cero?

<p>Es una tarea en principio absurda. (C)</p> Signup and view all the answers

¿Qué declaración es correcta para crear una matriz de notas con 30 alumnos y 4 asignaturas?

<p>float notas[30][4]; (B)</p> Signup and view all the answers

¿Cuál es la diferencia principal entre un registro y una unión en C?

<p>Una unión almacena todos los campos en la misma ubicación de memoria. (A)</p> Signup and view all the answers

¿Qué se necesita hacer al devolver un registro grande desde una función?

<p>Ambas B y C son correctas. (C)</p> Signup and view all the answers

¿Cuál es la forma correcta de inicializar un vector de registros en C?

<p>struct registro empleados[10]; (D)</p> Signup and view all the answers

¿Qué hace el typedef en C?

<p>Crea un alias para un tipo definido. (D)</p> Signup and view all the answers

¿Cómo se puede definir un tipo enumerado en C?

<p>enum Tenumerado {E1, E2, ..., En}; (D)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones es correcta sobre el acceso a los campos de un registro?

<p>Se usa el operador -&gt; para acceder a los campos de registros a través de punteros. (B)</p> Signup and view all the answers

¿Qué tipo de array se utiliza para mantener una lista de registros, como el registro de empleados?

<p>Array de registros. (B)</p> Signup and view all the answers

Al crear una unión, ¿qué se reserva en memoria?

<p>Memoria solo para el campo más grande. (A)</p> Signup and view all the answers

¿Qué implica la notación array == &array?

<p>El array es igual a un puntero a su primer elemento. (C)</p> Signup and view all the answers

¿Cuál de las siguientes afirmaciones describe correctamente el uso de 'typedef' en C?

<p>Permite establecer un alias para tipos de datos complejos. (B)</p> Signup and view all the answers

¿Cuál es el resultado de usar fopen() con el modo 'w' en un fichero que ya existe?

<p>El fichero se destruye y se crea uno nuevo. (C)</p> Signup and view all the answers

¿Qué función se utiliza para leer un carácter de un fichero en C?

<p>fgetc() (C)</p> Signup and view all the answers

¿Qué modo se utiliza para abrir un fichero en modo binario para escritura y creación si no existe?

<p>wb (C)</p> Signup and view all the answers

¿Cuál de las siguientes descripciones sobre fwrite() es correcta?

<p>Escribe múltiples datos de un solo tipo en un fichero. (B)</p> Signup and view all the answers

¿Cuál es el propósito de la función ftell()?

<p>Conocer la posición del cursor en el fichero. (A)</p> Signup and view all the answers

¿Qué indica el modo 'a' al abrir un fichero?

<p>El fichero se abre para escritura, añadiendo al final. (C)</p> Signup and view all the answers

¿Qué se logra al usar 'fgets()'?

<p>Leer una cadena de caracteres hasta un salto de línea. (C)</p> Signup and view all the answers

¿Qué parámetro se utiliza con 'fseek()' para volver al inicio del fichero?

<p>SEEK_SET (B)</p> Signup and view all the answers

¿Cómo se indicaría el modo para abrir un fichero en modo de lectura y escritura binaria, y que se cree si no existe?

<p>wb+ (C)</p> Signup and view all the answers

¿Qué devuelve la función fread()?

<p>El número de elementos leídos del fichero. (D)</p> Signup and view all the answers

¿A qué se refiere el símbolo '+' al usar fopen()?

<p>Permite operaciones de lectura y escritura en un archivo. (B)</p> Signup and view all the answers

¿Qué función se utilizaría para escribir una cadena en un fichero?

<p>fputs() (A)</p> Signup and view all the answers

¿Qué ocurre si se intenta abrir un fichero en modo 'r' pero no existe?

<p>Se devuelve un error. (D)</p> Signup and view all the answers

¿Cuál es la función de rewind()?

<p>Posicionar el indicador al principio del fichero. (A)</p> Signup and view all the answers

¿Cuál es la característica principal de un vector en programación?

<p>Los elementos pueden ser accedidos por su índice. (D)</p> Signup and view all the answers

Al declarar un vector, ¿qué tipo de datos indica al compilador cuántos bytes necesita cada elemento?

<p>Tipo de dato. (B)</p> Signup and view all the answers

¿Qué se debe evitar al acceder a un elemento en un array?

<p>Usar un índice negativo. (D)</p> Signup and view all the answers

¿Qué particularidad tiene un array cuando se pasa como parámetro a una función?

<p>Se pasa por referencia sin necesidad de especificar punteros. (B)</p> Signup and view all the answers

Cuando un array es declarado como variable local en una función, ¿cómo se utiliza?

<p>Igual que cualquier otra variable. (C)</p> Signup and view all the answers

¿Cuál es una consecuencia de escribir fuera de los límites de un array?

<p>Puede alterar otras variables o código en memoria. (B)</p> Signup and view all the answers

¿Cuál es la forma correcta de acceder a un elemento específico en un vector?

<p>identificadorV[n]; (C)</p> Signup and view all the answers

¿Qué ocurre si un vector se declara con un tamaño que resulta ser demasiado pequeño durante la ejecución del programa?

<p>Se produce un error de segmentación. (A), Se accede a posiciones no reservadas en el vector. (C)</p> Signup and view all the answers

¿Cuál es el propósito principal de la función malloc en programación?

<p>Reservar memoria dinámica para variables. (D)</p> Signup and view all the answers

Al usar malloc(), ¿qué se debe hacer después de recibir el puntero devuelto para evitar errores?

<p>Comprobar si el puntero es nulo antes de usarlo. (B)</p> Signup and view all the answers

¿Qué significa el resultado de malloc() al reservar memoria?

<p>Devuelve un puntero a tipo void. (D)</p> Signup and view all the answers

¿Qué se debe utilizar para calcular la memoria a reservar en malloc() según el tipo de dato?

<p>sizeof() para cada tipo de dato y la cantidad de elementos. (B)</p> Signup and view all the answers

¿En qué momento se debe decidir el tamaño de un array dinámico?

<p>Durante la ejecución del programa. (C)</p> Signup and view all the answers

¿Qué responsabilidad tiene el programador al usar punteros para acceder a la memoria reservada?

<p>Asegurarse de que no se accede más allá de la primera posición. (B)</p> Signup and view all the answers

¿Cuál es el resultado de usar la función sizeof() en el contexto de malloc()?

<p>Obtiene el tamaño de un tipo de dato específico en bytes. (B)</p> Signup and view all the answers

¿Qué modo se utiliza para abrir un fichero de texto para lectura y escritura sin destruir su contenido?

<p>r+ (D)</p> Signup and view all the answers

¿Qué función se utiliza para leer una cadena de caracteres de un fichero?

<p>fgets (C)</p> Signup and view all the answers

¿Qué indica el valor devuelto por la función ftell() en un fichero binario?

<p>La posición actual del indicador en el fichero (B)</p> Signup and view all the answers

¿Qué ocurre al abrir un fichero en modo 'a' y el fichero no existe?

<p>Se crea un nuevo fichero (A)</p> Signup and view all the answers

¿Cuál es la función correcta para escribir un carácter en un fichero?

<p>fputc (B)</p> Signup and view all the answers

¿Cuál es la consecuencia de utilizar la función fseek() incorrectamente?

<p>El indicador de posición se desincroniza (D)</p> Signup and view all the answers

¿Qué simboliza el modo 'rb' al abrir un fichero?

<p>Solo lectura en modo binario (D)</p> Signup and view all the answers

¿Qué devuelve fread() si se produce un error durante la lectura?

<p>0 (D)</p> Signup and view all the answers

¿Qué operación se realiza al invocar la función rewind()?

<p>Vuelve al inicio del fichero (B)</p> Signup and view all the answers

¿Cuál es el objetivo principal de usar fwrite()?

<p>Escribir bloques de datos en un fichero (C)</p> Signup and view all the answers

¿Qué parámetro se utiliza junto con fseek() para posicionar el indicador desde el final del fichero?

<p>SEEK_END (C)</p> Signup and view all the answers

¿Qué tipo de fichero serán los que solo contengan caracteres y líneas terminadas en saltos de línea?

<p>Ficheros de texto (A)</p> Signup and view all the answers

¿Qué función permite conocer la posición del indicador en un fichero?

<p>ftell (C)</p> Signup and view all the answers

¿Qué afirmación sobre un array pasado a una función es correcta?

<p>Siempre se considera un puntero a su primer elemento. (C)</p> Signup and view all the answers

¿Cómo se inicializa un array de caracteres en C?

<p>char vector[] = &quot;hola&quot;; (D)</p> Signup and view all the answers

¿Cuál es la forma correcta de declarar una matriz en C?

<p>int matriz[5][5]; (A)</p> Signup and view all the answers

¿Cuál es la razón principal para utilizar un puntero al devolver un registro grande en C?

<p>Para optimizar el rendimiento y evitar la copia completa. (B)</p> Signup and view all the answers

¿Qué es una unión en C?

<p>Un tipo de dato que permite almacenar diferentes tipos en el mismo espacio de memoria. (C)</p> Signup and view all the answers

¿Cómo se inicializa correctamente una matriz en su declaración?

<p>int m[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; (D)</p> Signup and view all the answers

¿Qué se necesita para acceder a un campo dentro de un registro?

<p>Primero se accede al registro y luego se utiliza el operador '.'. (B)</p> Signup and view all the answers

¿Qué declaración es correcta para definir un tipo enumerado en C?

<p>enum TEnum { E1 = 1, E2, E3 }; (A)</p> Signup and view all the answers

¿Cuál es el uso de 'typedef' en C?

<p>Para crear alias de tipos existentes y mejorar la legibilidad. (D)</p> Signup and view all the answers

¿Cómo se imprime el contenido de un vector en C?

<p>Se recorre el vector con un bucle y se imprime cada elemento. (C)</p> Signup and view all the answers

¿Qué se debe usar para recorrer secuencialmente una matriz?

<p>Dos bucles for anidados. (D)</p> Signup and view all the answers

¿Qué significa que el acceso a una matriz se almacena por filas en memoria?

<p>Se almacenan todos los datos de una fila contiguos en memoria. (B)</p> Signup and view all the answers

¿Qué tipo de bucle se recomienda para inicializar un array con ceros?

<p>Bucle for. (C)</p> Signup and view all the answers

¿Qué tipo de datos puede utilizarse en un registro?

<p>Cualquier tipo de dato, incluyendo otros registros. (C)</p> Signup and view all the answers

Flashcards

Vector o array

Un objeto que permite almacenar una colección de datos del mismo tipo, organizados secuencialmente en posiciones contiguas de memoria. Cada dato tiene un índice que indica su posición (0, 1, 2...).

Acceso a los elementos de un vector

Para acceder a un dato específico en un vector, se utiliza su índice entre corchetes, por ejemplo: vector[2] (accede al tercer elemento).

Declaración de vector

La declaración define el tipo de datos de cada elemento del vector y la cantidad de elementos que contiene.

Inicialización de un vector

Se inicializa en la declaración con valores. En el caso de vectores de caracteres (strings) solo se puede definir el tamaño si se inicializa.

Signup and view all the flashcards

Acceso a un elemento de un vector

Se puede acceder a un elemento mediante el operador de corchetes y su índice (identificadorV[indice]).

Signup and view all the flashcards

Vector como variable local

Un vector declarado como variable local de una función se usa igual que cualquier otra variable.

Signup and view all the flashcards

Vectores como parámetros de una función

Los vectores se pasan como parámetros por referencia, lo que significa que cualquier modificación dentro de la función afecta al vector original.

Signup and view all the flashcards

Devolver vectores desde una función

No se pueden devolver los vectores utilizando la instrucción 'return'.

Signup and view all the flashcards

Asignación dinámica de memoria

Los vectores se declaran con un tamaño máximo fijo, pero durante la ejecución del programa algunas posiciones pueden no utilizarse, desperdiciando memoria. Además, el tamaño inicial puede resultar insuficiente para la cantidad de datos que se necesita almacenar.

Signup and view all the flashcards

Punteros

Un puntero es una variable que almacena la dirección de memoria de otra variable, permitiendo acceder a datos en diferentes ubicaciones.

Signup and view all the flashcards

Arrays dinámicos

Los arrays dinámicos son arreglos que no tienen un tamaño fijo predefinido, su tamaño se determina durante la ejecución del programa.

Signup and view all the flashcards

Reserva dinamica de memoria

La asignación dinámica de memoria permite reservar memoria en tiempo de ejecución, lo que significa que el programa puede determinar cuánta memoria necesita mientras está funcionando.

Signup and view all the flashcards

Enfoques de reserva dinamica

La reserva dinámica de memoria puede realizarse utilizando dos enfoques: reservar la cantidad de memoria necesaria en tiempo de ejecución o reservar memoria de forma incremental durante la ejecución.

Signup and view all the flashcards

La función malloc()

La función malloc() se utiliza para reservar memoria dinámica para una variable. Toma como argumento el tamaño de la memoria que se quiere reservar, expresado en bytes.

Signup and view all the flashcards

Conversión de punteros malloc()

La función malloc() devuelve un puntero a void, que debe ser convertido al tipo de dato de la variable a la que se le quiere asignar la memoria.

Signup and view all the flashcards

Acceso a la memoria dinámica

La variable puntero que almacena la dirección devuelta por malloc() es la que permite acceder a la memoria reservada. Es responsabilidad del programador garantizar que el acceso a la memoria no supere el límite definido.

Signup and view all the flashcards

Tipo de datos cadena (string)

Un tipo de dato que representa una serie de caracteres.

Signup and view all the flashcards

typedef struct...

Un método para darle un nombre corto a una estructura o registro de datos compleja.

Signup and view all the flashcards

typedef tipobase tipoVector[DIM]

Se usa para evitar escribir las dimensiones de un arreglo en cada declaración de variable.

Signup and view all the flashcards

Flujo de datos (FILE *)

Un flujo de datos en C que puede corresponder a un fichero físico en disco.

Signup and view all the flashcards

Fichero de texto

Un fichero que contiene texto, dividido en líneas con caracteres y terminados en un salto de línea.

Signup and view all the flashcards

Fichero binario

Un fichero que puede contener cualquier tipo de datos y no tiene una estructura específica.

Signup and view all the flashcards

Abrir un fichero

Conecta un flujo de datos con un fichero físico en disco.

Signup and view all the flashcards

Modo de apertura 'r'

Abre un fichero para lectura. Devuelve error si no existe.

Signup and view all the flashcards

Modo de apertura 'w'

Abre un fichero para escritura. Crea uno nuevo si no existe, destruyendo el existente.

Signup and view all the flashcards

Modo de apertura 'a'

Abre un fichero para añadir datos al final. Crea uno nuevo si no existe.

Signup and view all the flashcards

Modo de apertura '+'

Abre un fichero para lectura y escritura.

Signup and view all the flashcards

Modo de apertura 'b'

Indica que el fichero se debe abrir en modo binario.

Signup and view all the flashcards

Modo de apertura 't'

Indica que el fichero se debe abrir en modo texto.

Signup and view all the flashcards

fgetc()

Lee un carácter del fichero y avanza el indicador de posición.

Signup and view all the flashcards

fgets()

Lee una cadena de caracteres del fichero y la copia en una cadena.

Signup and view all the flashcards

fscanf()

Lee datos de un fichero, similar a scanf(), pero con el flujo de lectura del fichero.

Signup and view all the flashcards

fread()

Lee un bloque de datos del fichero.

Signup and view all the flashcards

fputc()

Escribe un carácter en el fichero y avanza el indicador de posición.

Signup and view all the flashcards

fputs()

Escribe una cadena de caracteres en el fichero.

Signup and view all the flashcards

fprintf()

Escribe datos en el fichero de forma formateada.

Signup and view all the flashcards

fwrite()

Escribe un bloque de datos en el fichero.

Signup and view all the flashcards

ftell()

Devuelve la posición actual del indicador de posición en un fichero.

Signup and view all the flashcards

fseek()

Posiciona el indicador de posición en un fichero.

Signup and view all the flashcards

rewind()

Mueve el indicador de posición al principio del fichero.

Signup and view all the flashcards

Arreglos como Parámetros

Un error común para programadores principiantes en C es asumir que un arreglo pasado como parámetro a una función no se modificará dentro de la función. Esto no es necesariamente cierto.

Signup and view all the flashcards

Equivalencia de Arreglos y Direcciones

En C, el nombre de un arreglo se traduce en la dirección de memoria del primer elemento del arreglo. Por lo tanto, array == &array[0].

Signup and view all the flashcards

Vector o Arreglo

Un vector o arreglo es una colección de elementos del mismo tipo de datos, almacenados en un bloque de memoria contiguo.

Signup and view all the flashcards

Inicialización de Arreglos

Inicializar un arreglo es darle valores iniciales a cada elemento del arreglo. Se puede hacer en la declaración del arreglo, o más tarde usando un bucle.

Signup and view all the flashcards

Recorrer un Arreglo

Un bucle es necesario para recorrer secuencialmente un arreglo, ya que cada elemento tiene un índice único. Se itera desde el índice 0 hasta el índice final, que es el tamaño del arreglo menos 1.

Signup and view all the flashcards

Matriz

Una matriz es un arreglo multidimensional, es decir, un arreglo de arreglos. Se utiliza para representar estructuras de datos como tablas o matrices.

Signup and view all the flashcards

Declaración de Matrices

Las matrices se declaran especificando el tipo de dato, el nombre de la matriz, y la dimensión para cada dimensión. Por ejemplo int matrix[5][3]. La primera dimensión es el número de filas, la segunda el número de columnas.

Signup and view all the flashcards

Acceso a Elementos de Matriz

Para acceder a un elemento en una matriz, se utiliza la notación matriz[fila][columna]. Las filas y columnas se indexan desde 0.

Signup and view all the flashcards

Almacenamiento de Matrices en Memoria

Las matrices se almacenan realmente en memoria de forma secuencial,

Signup and view all the flashcards

Registro (Struct)

Los registros son estructuras de datos que agrupan variables de diferentes tipos bajo un mismo nombre. Cada variable dentro del registro se llama campo.

Signup and view all the flashcards

Vector de Registros

Un vector de registros es un arreglo donde cada elemento es un registro.

Signup and view all the flashcards

Registros Anidados

Los registros pueden tener campos que sean a su vez otros registros. Se utiliza el operador '.' para acceder a los campos de un registro.

Signup and view all the flashcards

Paso de Parámetros de Registro

Al pasar un registro a una función, se debe declarar el tipo de registro en la función y se debe utilizar el tipo de registro en la invocación de la función.

Signup and view all the flashcards

Funciones que Devuelven Registros

Se puede definir una función que devuelve un registro como tipo de retorno. Si el registro es grande, se puede usar un puntero para evitar copias innecesarias.

Signup and view all the flashcards

Uniones

Las uniones son como registros donde todos los campos comparten la misma ubicación de memoria. Solo un campo puede tener un valor válido a la vez.

Signup and view all the flashcards

Enumeraciones (Enums)

Las enumeraciones (enums) permiten definir conjuntos de constantes con nombre, facilitando la lectura del código y la organización del código.

Signup and view all the flashcards

TYPEDEF

El typedef se utiliza para crear un alias o nombre corto para un tipo de dato ya existente. Mejora la legibilidad y mantenimiento del código.

Signup and view all the flashcards

Uso de un array indexado

Un array indexado se utiliza de la misma forma que una variable del tipo base del vector: se le puede asignar un valor, se puede usar en expresiones.

Signup and view all the flashcards

Acceso a elementos de un vector

Para acceder a un dato específico en un vector, se utiliza su índice entre corchetes, por ejemplo: vector[2] (accede al tercer elemento).

Signup and view all the flashcards

Arrays como variables locales

Un array declarado como variable local de una función se usa igual que cualquier otra variable.

Signup and view all the flashcards

Escritura fuera de límites

Escribir fuera de los límites de un array (acceder a un índice inválido) es peligroso, ya que puede sobrescribir datos en memoria que podrían estar siendo utilizados por otras variables o el código del programa.

Signup and view all the flashcards

Declaración y dimensión de un vector

La dimensión de un vector se define cuando se declara, indicando cuántos elementos contiene. Es típico utilizar #define DIMENSION N para establecer la constante.

Signup and view all the flashcards

Función malloc()

malloc() se usa para reservar memoria para un tipo de dato específico. La cantidad de memoria que se necesita se especifica como parámetro y se devuelve un puntero al espacio de memoria reservado.

Signup and view all the flashcards

Puntero a void (void *)

Un void * es un puntero que no tiene un tipo de dato específico. La función malloc() devuelve un void * porque no sabe qué tipo de dato se va a almacenar en la memoria reservada.

Signup and view all the flashcards

Conversión de Punteros

Es la acción de convertir explícitamente un tipo de dato a otro. En el caso de malloc(), es necesario convertir el void * a un puntero del tipo de dato que se está reservando.

Signup and view all the flashcards

Reserva de memoria en tiempo de ejecución

Es el enfoque para gestionar la memoria que consiste en reservar la cantidad de memoria necesaria en el momento exacto en que se requiere. Se realiza mediante malloc() y se libera usando free().

Signup and view all the flashcards

Liberar memoria con free()

Para liberar la memoria que ha sido reservada con malloc(), se usa la función free(). Esta función recibe como argumento el puntero que se usó para reservar la memoria.

Signup and view all the flashcards

Study Notes

Vectores, Arreglos o Arrays

  • Objetos que almacenan datos del mismo tipo, ordenados secuencialmente en memoria (posiciones contiguas).
  • Cada dato ocupa una posición con un índice (0, 1, 2...).
  • El acceso a un dato se realiza indicando su número de posición.

Declaración de Vectores

  • tipo_dato identificadorV[dimensión]
  • El tipo_dato indica la cantidad de bytes necesarios para cada elemento.
  • La dimensión especifica el número de elementos.
  • Se suele definir la dimensión con #define dimensión N.
  • Se pueden inicializar al declararlos (ej: int vector={1,2,3};).
  • Los vectores de caracteres se declaran sin dimensión si están inicializados (ej: char vector[]="hola";).

Acceso a Elementos

  • identificadorV[índice]
  • índice es una variable numérica (int o char).
  • No se verifica si el índice está dentro de los límites (0 a dimensión-1), la gestión de límites es responsabilidad del programador.
  • Escribir fuera de límites es peligroso, altera datos en memoria (variables, código, etc.).

Arrays y Funciones

  • Un array declarado como variable local en una función se usa como cualquier otra variable.
  • Un array como parámetro en una función:
    • Se escribe el nombre del array sin corchetes en la llamada a la función.
    • Se declara como parámetro formal en la cabecera sin tamaño (ej: tipo nombreVector[]).
  • Los arrays se pasan por referencia, no por valor.
  • Cualquier cambio en la función afecta al array original.
  • No se necesita el operador & al pasar un array como parámetro. El nombre del array representa la dirección del primer elemento.

Manipulaciones Básicas de Vectores

  • Inicialización: Se inicializan directamente con valores al declararlos. (ej: int vector={1,2,3};)
  • Recorrido: Se usan bucles for para recorrer todos los elementos. (ej: recorriendo para asignar un valor de 0).

Matrices (Arrays Multidimensionales)

  • Pueden tener dos o más dimensiones (ej: 2D).
  • Se representan como tablas (filas y columnas).
  • Se indexan desde 0.
  • Acceso a elementos usando dos índices (fila y columna).
  • Almacenamiento en memoria por filas.

Manipulaciones Básicas de Matrices

  • Inicialización: Se inicializan con valores por filas y columnas al declararlos (int m={{1,2,3},{4,5,6}};)
  • Recorrido: Se usan dos bucles anidados (for) para recorrer todos los elementos.

Vectores de Registros

  • Para almacenar conjuntos de datos con estructuras relacionadas (ej: empleados).
  • Consisten en vectores donde el tipo base es un registro.
  • Permite agrupar datos de diferente tipo.

Accediendo a Campos

  • Se usan los operadores ‘.’ (punto) para acceder a los componentes de un objeto registro

Registros y Funciones

  • El tipo de registro debe ser global (fuera de cualquier función).
  • Los registros como parámetros se pasan por referencia.
  • Si un registro es muy grande, no se devuelve directamente con return. Se pasa como parámetro por referencia.

Uniones

  • Todos los campos se almacenan en la misma región de memoria.
  • Se reserva memoria solo para el tipo de dato más grande en la unión.
  • No permite dos elementos con valores a la vez en la unión.

Tipos Enumerados

  • Se definen explícitamente todos los valores posibles de una variable.
  • Se utiliza enum seguida de un nombre y una lista de valores.
  • Por defecto, los valores son enteros consecutivos (0, 1, 2...). Se pueden asignar valores fijos usando E1=10

typedef

  • Crea alias de tipos existentes para mejorar la legibilidad.
  • Se utiliza typedef tipoAntiguo aliasNuevo;

Archivos

  • Un flujo de datos puede estar asociado a un archivo en disco.
  • Se declara un flujo de datos como FILE *.
  • Los archivos pueden ser de texto o binarios.
  • Se abren con funciones (ej: fopen).
  • Modos de apertura (ej: r (lectura), w (escritura), a (añadir), + (lectura/escritura), b (binario), t (texto)).
  • Se usa fopen(nombre_archivo, modo) para abrir el archivo.

Funciones de Lectura/Escritura de Archivos

  • Lectura/escritura de caracteres (fgetc, fputc).
  • Lectura/escritura de cadenas (fgets, fputs).
  • Lectura/escritura formateada (fscanf, fprintf).
  • Lectura/escritura de bloques (fread, fwrite).

Funciones de Posicionamiento de Archivos

  • ftell: Obtener posición del puntero actual.
  • fseek: Mover el puntero a una posición específica. (Las constantes SEEK_SET, SEEK_CUR, SEEK_END para especificar dónde mover el puntero).
  • rewind: Mover el puntero al principio del archivo.

Asignación Dinámica de Memoria

  • Permite reservar memoria en tiempo de ejecución.
  • Útil para vectores de tamaño variable.
  • Usando malloc para reservar memoria.
  • Usando sizeof para calcular el tamaño necesario.
  • Importancia de liberar la memoria reservada con free cuando ya no se necesite.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Description

Este cuestionario aborda conceptos fundamentales sobre vectores y arreglos, incluyendo su declaración, inicialización y acceso a elementos. Es importante entender cómo se almacena y se gestiona la información en estructuras de datos secuenciales para evitar errores comunes.

More Like This

Use Quizgecko on...
Browser
Browser