Está en la página 1de 12

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN

UNIVERSITARIA

INSTITUTO UNIVERSITARIO POLITÉCNICO

“SANTIAGO MARIÑO”

SEDE-BARCELONA

ARCHIVOS, MEMORIA DINÁMICA Y PUNTEROS

Profesor: Integrantes:

José Castillo Antonia Babikian C.I: 30.090.350

Eduardo Cabrera C.I: 28.476.875

Barcelona, 01 de Diciembre de 2022

1
Índice
Introducción.......................................................................................................................................3
Desarrollo...........................................................................................................................................4
¿Qué es un Archivo?..........................................................................................................................4
Componentes de un archivo..............................................................................................................4
Tipos de archivos según su organización...................................................................................................5
Tipos de archivos según su acceso:....................................................................................................6
Memoria dinámica.............................................................................................................................6
Punteros.............................................................................................................................................8
Conclusión........................................................................................................................................12

2
Introducción

El presente trabajo va a tratar sobre los arreglos, archivos y lectores, para


comenzar podemos decir un arreglo o array (en inglés) es una colección de
variables relacionadas a las que se hace referencias por medio de un nombre
común. En el lenguaje C++ un arreglo se le conoce como un tipo de dato
compuesto. Los arreglos pueden tener una o varias dimensiones.

Por otra parte los archivos juegan un papel importante dentro de la


informática específicamente cuando hablamos del software y el manejo de
aplicaciones, ya que gracias a estos podemos almacenar cantidades de
información ya sea de cualquier tipo (lenguaje maquina o tipo texto) por lo que
podremos acceder a estos en cualquier momentos.

Los lectores son una aplicación de software que trata de identificar e


interpretar aquello que se muestra en pantalla. Esta interpretación se
representa a continuación al usuario mediante sintetizadores de texto a voz,
iconos sonoros, o una salida braille. También un lector de pantalla es un
producto de apoyo específicamente diseñado para personas ciegas o con baja
visión. A través de su síntesis de voz, les permite acceder a un ordenador,
teléfono móvil o cualquier dispositivo electrónico.

3
Desarrollo

¿Qué es un Archivo?

Un archivo es un elemento que almacena un conjunto de datos para su


posterior uso. Estos elementos no son visibles, a priori, para el usuario, además
de que no son útiles por sí solos. Todos los datos que conforman un archivo
son imprescindibles para el mismo, y solo tienen utilidad para el usuario final si
se encuentran dentro del archivo.

Por ejemplo una imagen es un archivo, como también lo es una canción, un


vídeo, un documento de texto, Excel, PowerPoint… Cualquier elemento
individual dentro de un ordenador (virtualmente hablando) es un archivo. Una
carpeta, sin embargo, no lo es, pero puede contener varios archivos de todo
tipo, lo que nos lleva a comentar que existe una gran multitud de tipos de
archivo diferentes.

Componentes de un archivo

El “Sistema de Archivos” es un componente importante de un S. O. y suele


contener:

 Métodos de acceso: relacionados con la manera de acceder a los datos


almacenados en archivos. Se distinguen dos métodos de acceso principales:
acceso secuencial y acceso directo.
1. Método de acceso secuencial: cuando se usa el método de
acceso secuencial, lo único que se puede hacer es leer los
bytes del archivo en orden, empezando por el principio.
2. Método de acceso directo: con la llegada de los dispositivos
de acceso directo (como los discos magnéticos), surgió la
forma de acceso directo o aleatorio, a un archivo.

4
 Administración de archivos: referida a la provisión de mecanismos
para que los archivos sean almacenados, referenciados, compartidos
y asegurados.
 Administración del almacenamiento auxiliar: para la asignación de
espacio a los archivos en los dispositivos de almacenamiento
secundario.
 Integridad del archivo: integridad del archivo para garantizar la
integridad de la información del archivo.

Tipos de archivos según su organización:

 Centralizados: Hay una dependencia dentro de tu compañía que se


encarga de manera específica del manejo de los documentos. Este tipo de
departamento suele llamarse propiamente «archivo» y requiere de un orden
superior al promedio, con personal especializado encargado de realizar las
labores de conservación, organización, acceso y destrucción del archivo.
 Descentralizados: Se trata de un tipo de organización donde cada
dependencia de tu compañía se hace cargo de la documentación que genera,
incluyendo su clasificación y manejo. Si tu empresa cuenta con este sistema, es
probable que tengas dependencias internas como «archivo de contabilidad»,
«archivo de almacén», «archivo de recursos humanos», etcétera, pero no
necesariamente cuentas con personal especializado.
 Mixtos: Son aquellos que reúnen documentos de áreas aisladas o
dependencias, pero con un organismo central que los captura periódicamente,
los organiza y los conserva, apareciendo tanto en los registros de «archivo» por
departamento, como en los de «archivo central»

Este método permite contar con disponibilidad de los documentos en cada


área de tu empresa sin perder la posibilidad de tener un archivo histórico central
donde se almacenen los papeles menos inmediatos

5
Tipos de archivos según su acceso:

 Acceso Secuencial: Exige el tratamiento de elemento, para esto es


necesario una exploración secuencial comenzando desde el primer momento
(Pascal permite este acceso).
 Secuenciales: Archivo de texto que debe ser leído del principio hasta el
final.
 Acceso Directo: Permite procesar o acceder a un elemento determinado
y referencia directamente por su posición en el soporte de almacenamiento
(Turbo Pascal permite este acceso.
 Aleatorios: Es un archivo con registros de un mismo largo. Un programa
puede acezar directamente cualquier registro sin tener que leer los registros
previos.
 Binarios: Es un archivo que lee byte por byte sin asumir ninguna
estructura, los archivos Binarios no son un nuevo tipo de archivo, pero si una
nueva forma de manipular cualquier tipo de archivo. Las técnicas de archivo
binarios permiten leer o cambiar cualquier byte de un archivo.

Memoria dinámica

Cuando se habla de asignación dinámica de memoria se hace referencia


al hecho de crear variables anónimas, es decir, reservar espacio en memoria
para estas variables en tiempo de ejecución del programa, así como liberar el
espacio reservado para dichas variables anónimas, cuando ya no son
necesarias, también durante el tiempo de ejecución. La zona de la memoria
principal del computador donde se reservan espacios para asignarlos a variables
dinámicas se denomina heap o montón. Cuando el sistema operativo carga un
programa para ejecutarlo y lo convierte en proceso, le asigna cuatro partes
lógicas en memoria principal: instrucciones, datos (estáticos), pila y una zona

6
libre. Esta zona libre (heap) es la que va a contener los datos dinámicos. En cada
instante de la ejecución del programa, el heap tendrá partes asignadas a datos
dinámicos y partes libres disponibles para asignación de memoria

La manipulación de memoria en C se hace con un mecanismo muy


simple, pero a la vez muy propenso a errores. Los dos tipos de operaciones son
la petición y liberación de memoria. El ciclo es sencillo, cuando se precisa
almacenar un nuevo dato, se solicita tanta memoria en bytes como sea
necesaria, y una vez que ese dato ya no se necesita la memoria se devuelve
para poder ser reutilizada. Este esquema se conoce como “gestión explícita de
memoria” pues requiere ejecutar una operación para pedir la memoria y otra para
liberarla.

Existen cuatro operaciones principales para gestionar memoria en C, las cuales


son:

• void *malloc (size_t size). Es la función para reservar tantos


bytes consecutivos de memoria como indica su único parámetro. Devuelve la
dirección de memoria de la porción reservada. La memoria no se inicializa a
ningún valor.

• void *calloc (size_t nmemb, size_t size). Reserva espacio


para tantos elementos como indica su primer parámetro nmemb, y cada uno de
ellos con un tamaño en bytes como indica el segundo. En otras palabras, reserva
nmemb * size bytes consecutivos en memoria. Al igual que la función anterior
devuelve la dirección de memoria al comienzo del bloque reservado. Esta función
inicializa todos los bytes de la zona reservada al valor cero.

• void free (void *ptr). Función que, dado un puntero, libera el


espacio previamente reservado. El puntero que recibe como parámetro esta
función tiene que ser el que se ha obtenido con una llamada de reserva de
memoria. No es necesario incluir el tamaño. Una vez que se ejecuta esta

7
llamada, los datos en esa porción de memoria se consideran basura, y por tanto
pueden ser reutilizados por el sistema.

• void *realloc (void *ptr, size_t size). Función para


redimensionar una porción de memoria previamente reservada a la que apunta el
primer parámetro al tamaño dado como segundo parámetro. La función devuelve
la dirección de memoria de esta nueva porción redimensionada, que no tiene por
qué ser necesariamente igual al que se ha pasado como parámetro. Los datos se
conservan intactos en tantos bytes como el mínimo entre el tamaño antiguo y el
nuevo.

Una ventaja importante de la memoria dinámica es que se puede ir


incrementando durante la ejecución del programa. Esto permite, por ejemplo,
trabajar con arreglos dinámicos. Aunque en C, a partir del estándar C99 se
permite la creación de arreglos cuyo tamaño se determina en tiempo de
ejecución, no todos los compiladores implementan este estándar. Además, se
sigue teniendo la limitante de que su tamaño no puede cambiar una vez que se
especifica, cosa que sí se puede lograr asignando memoria de forma dinámica.

Una desventaja de la memoria dinámica es que es más difícil de manejar.


La memoria estática tiene una duración fija, que se reserva y libera de forma
automática. En contraste, la memoria dinámica se reserva de forma explícita y
continúa existiendo hasta que sea liberada, generalmente por parte del
programador.

Punteros

Un puntero es una variable que almacena la dirección de memoria de un


objeto. Los punteros se usan ampliamente en C y C++ para tres propósitos
principales:

 para asignar nuevos objetos en el montón,

8
 para pasar funciones a otras funciones
 para iterar sobre elementos en matrices u otras estructuras de datos.

En la programación de estilo C, se usan punteros básicos para todos estos


escenarios. Sin embargo, los punteros básicos son el origen de muchos errores de
programación graves. Por lo tanto, se desaconseja encarecidamente su uso,
excepto cuando proporcionan una ventaja significativa de rendimiento y no hay
ambigüedad en cuanto a qué puntero es el puntero propietario que es responsable
de eliminar el objeto. El lenguaje C++ moderno proporciona punteros inteligentes
para asignar objetos, iteradores para recorrer estructuras de datos y expresiones
lambda para pasar funciones. Al usar estas características del lenguaje y de la
biblioteca en lugar de punteros básicos, se tendrá un programa más seguro, más
fácil de depurar y más fácil de entender y mantener.

Declaración de un puntero

Un puntero, en C, se declara como sigue:

9
TIPO * nombre_puntero ;

Donde TIPO es cualquier tipo definido. Así, un puntero a caracter se declararía de


la siguiente forma:

char *pchar;

Diferencia entre "*" y "&"

En C, al contrario que en otros lenguajes de programación, se puede


obtener directamente la dirección de memoria de cualquier variable. Esto es
posible hacerlo con el operador unario "&"; de la siguiente manera:

char a; /* Variable 'a' de tipo char */

printf("la direccion de memoria de 'a' es: %p \n", &a);

y para obtener lo apuntado por un puntero se utiliza el operador unario "*"


de esta forma:

char a; /* Variable 'a' de tipo char */

char *pchar; /* Puntero a char 'pchar' */

pchar = &a; /* 'pchar' <- @ de 'a' */

10
printf("la direccion de memoria de 'a' es: %p \n", &a);

printf("y su contenido es : %c \n", *pchar);

Uno de los casos más comunes donde se ve la relación entre estos dos
operadores es la declaración y utilización de funciones:

void Funcion ( int *int_pointer )

/* Paso de una variable de tipo entero por REFERENCIA */

/* equivalente en Modula 2: PROCEDURE Funcion ( VAR


a:INTEGER ) */

int a;

a=6;

Funcion ( &a ); /* ya que la declaración de la función


pide la dirección de una variable de tipo entero */

11
Conclusión

Para concluir se puede recalcar que la utilización como lo son la memoria


de tipo dinámica o la utilización de punteros puede resultar muy útil en casos que
los requieren, pero no por esta razón significa que sean la mejor opción para todos
los escenarios, esta en manos del programador adaptar los métodos que utiliza a
las necesidades que se le presentan de cara a alcanzar el objetivo del programa y
administrar los recursos que posee de una manera óptima. Además de esto se
pudo notar que el lenguaje C se caracteriza por ser uno de los más importantes a
la hora de necesitar la optimización de memoria.

Referencias bibliográficas

 ¿Qué es un Archivo y para qué sirve? (s/f). GEEKNETIC. Recuperado el 29


de noviembre de 2022, de https://www.geeknetic.es/Archivo/que-es-y-para-
que-sirve
 (S/f-e). Blogspot.com. Recuperado el 29 de noviembre de 2022, de
https://mejiaalejandra327.blogspot.com/2014/01/tipos-de-archivos-segun...
 (S/f-f). Scribd.com. Recuperado el 29 de noviembre de 2022, de
https://es.scribd.com/.../Tipos-de-Archivos-Segun-Su-Organizacion
 (S/f-f). lcc.uma.es. Recuperado el 29 de noviembre de 2022, de
http://www.lcc.uma.es/~fvn/EleProg/punteros_apuntes_y_ejercicios.pdf
 (S/f-f). lsi.vc.ehu.es. Recuperado el 29 de noviembre de 2022, de
http://lsi.vc.ehu.es/pablogn/docencia/manuales/C/Punteros%20en
%20C.html

12

También podría gustarte