Integrantes: Samuel Pérez, Ojeda Christian, Anthony Mayta
Integrantes: Samuel Pérez, Ojeda Christian,
Anthony Mayta
INDICE GENERAL:
Capítulo 1
Fundamentos de programación
1.1: Algoritmos y programas…………………………………………………………………………………………………………….
1.2: Conceptos básicos de la programación………………………………………………………………………………………
1.3: C, un lenguaje estructurado. El compilador………………………………………………………………………………
1. 4: Comenzando a programar……………………………………………………………………………………………………….
1.5: Estructuras estáticas………………………………………………………………………………………………………………….
1.6: Estructuras externas…………………………………………………………………………………………………………………
1.7: Estructuras dinámicas……………………………………………………………………………………………………………….
1.8: Programación avanzada……………………………………………………………………………………………………………
1.9: Estructura básica de un programa en C…………………………………………………………………………………….
1.11:Estructuras de Repetición en C………………………………………………………………………………………………
1.12: Estructuras de control…………………………………………………………………………………………………………..
Capítulo 2
Desarrollo de funciones en el sistema informático
2. 1: Características del sistema de desarrollo elegido………………………………………………………………………
2.2: Arquitectura del sistema operativo……………………………………………………………………………………………
2.3: Ficheros……………………………………………………………………………………………………………………………………
2.4: Ficheros especiales…………………………………………………………………………………………………………………..
2.5: Procesos estructura. Creación…………………………………………………………………………………………………..
2.6: Tipos d variables ………………………………………………………………………………………………………………..
2.7: Ejemplos de programas realizados en turbo c++……………………………………………………………………
INTRODUCCION
C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en
los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado
en BCPL.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas
Operativos, concretamente Unix. C es apreciado por la eficiencia del código
que produce y es el lenguaje de programación más popular para crear
software de sistemas, aunque también se utiliza para crear aplicaciones.
Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado,
de medio nivel pero con muchas características de bajo nivel. Dispone de las
estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de
construcciones del lenguaje que permiten un control a muy bajo nivel. Los
compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar
código en ensamblador con código C o acceder directamente
a memoria o dispositivos periféricos.
La primera estandarización del lenguaje C fue en ANSI, con el estándar
X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente
como ANSI C. Posteriormente, en 1990, fue ratificado como
estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy
amplia por lo que, si los programas creados lo siguen, el código es portátil
entre plataformas y/o arquitecturas.
CAPITULO 1
1.1: Algoritmos y programas INDICE
Este capítulo trata de ser una introducción a la metodología y tecnología de
la programación con el objetivo de proporcionar al lector los procedimientos
y técnicas para el desarrollo de programas
1.2: Conceptos básicos de metodología de la programación
Un lenguaje de programación es un lenguaje formal diseñado para expresar
procesos que pueden ser llevados a cabo por máquinas como las
computadoras.
Pueden usarse para crear programas que control el comportamiento físico y
lógico de una máquina, para expresar algoritmos con precisión, o como modo
de comunicación humana.
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas
que definen su estructura y el significado de sus elementos y expresiones.
https://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n
1.3: C, un lenguaje estructurado. El compilador INDICE
Un compilador es un programa informático que traduce un programa escrito
en un lenguaje de programación a otro lenguaje de programación, generando
un programa equivalente que la máquina será capaz de interpretar.
Usualmente el segundo lenguaje es lenguaje de máquina, pero también
puede ser un código intermedio (bytecode), o simplemente texto. Este
proceso de traducción se conoce como compilación.
Un compilador es un programa que permite traducir el código fuente de un
programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior
De esta manera un programador puede diseñar un programa en un lenguaje
mucho más cercano a cómo piensa un ser humano, para luego compilarlo a
un programa más manejable por una computadora.
https://es.wikipedia.org/wiki/Compilador
1.4: Comenzando a programar INDICE
Para empezar a programar en lenguaje C, necesitaras un compilador como
Turbo C++. Si usas un sistema operativo Linux este por defecto trae algún
compilador C.
Lo pueden descargar de forma gratis en el siguiente link:
http://www.mediafire.com/download/178ko5ssd5458mx/TurboC%2B%2B.zi
p
Posteriormente procedemos a descomprimir el archivo con winrar si no lo
tienen le dejamos en el siguiente link:
http://www.mediafire.com/download/fi14yhi1cc16z61/Winrar+by.+2011corr
idos.exe
Al haber descomprimido abrimos la carpeta de turbo c++.
Buscamos el instalador que ahí se encuentra (INSTALL.EXE)
Domos doble clic y nos aparece la siguiente ventana:
Grafico#1
Titulo: Nos da la bienvenida e turbo c ++.
Debemos pulsar enter para continuar. Entonces nos aparecerá otra ventana.
Ahora debemos escribir la letra de la unidad donde se encuentran los
ficheros de instalación. Si éstos se encuentran en la unidad C, pulsaremos la
tecla C y después enter:
Grifico#2
Título : Nos muestra en donde está el instalar.
A continuación se muestra otra ventana en la que aparece por defecto el
directorio donde se encuentran los archivos de instalación. Lo normal será
que aquí simplemente pulsemos enter para continuar.
Grafico#3
Título: donde vamos a instalar el programa.
La siguiente ventana nos indica en primer lugar el directorio donde se
instalará Turbo C++, que siguiendo el ejemplo será:C:\TC Con los cursores nos
desplazamos hasta la opción Start Installation y pulsamos enter, que iniciará
la instalación.
Grafico#4
Título: Presionamos para comenzar la instalación.
Mientras se instala, en la parte inferior de la ventana aparecerán los ficheros
que se están copiando, como se muestra en la siguiente figura:
Grafico#5
Título: Comienza la estación
Una vez se hayan copiado todos los archivos, saldrá una un cuadro (como el
que se muestra bajo este párrafo) que nos informa de los últimos pasos de la
instalación. Pulsamos enter para continuar.
Grifico#6
Titulo: Finaliza la instalación.
Tras pulsar enter nos aparece el contenido del fichero "leeme" de Turbo C++:
Grafico#7
Título: muestra un manual del programa.
Para finalizar pulsamos Escape.
Para ejecutar nuestro programa nos tenemos que dirigir a C:\TC\BIN y
localizar el ejecutable para acceder al compilador (TC.EXE).
Grafico#8
Título: el ejecutable del programa.
He aquí un pantallazo del compilador funcionando …
Grafico#9
Título: Este es el programa.
Para poder comenzar a programar debemos saber la estructura básica de
turbo c++ que les mostramos a continuación.
#include <stdio.h>-------- (biblioteca estándar)
int main() ----------(estándar para que regrese un entero “resultado”)
{---------------------- (inicialización del programa el programa)
printf("¡Hola, mundo!\n"); (El printf nos sirve para visualizar un mensaje )
getchar();----------------(Nos sirve para parar el programa para que se pueda
visualizar el menjaje)
}
1.5: Estructuras estáticas INDICE
Son aquellas en las que el tamaño ocupado en memoria se define antes de
que el programa se ejecute y no puede modificarse dicho tamaño durante la
ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes.
Su principal característica es que ocupan solo una casilla de memoria, por lo
tanto una variable simple hace referencia a un unico valor a la vez, dentro de
este grupo de datos se encuentra: enteros, reales, caracteres, boléanos,
enumerados y subrangos (los últimos no existen en algunos lenguajes de
programación).
http://estructura-quique.blogspot.com/2012/10/estructura-estatica-y-estructura.html
1.6: Estructuras externas INDICE
El término estructura externa o configuración externa de un autómata
programable industrial se refiere al aspecto físico exterior del mismo,
bloques o elementos en que está dividido.
Actualmente son tres las estructuras más significativas que existen en el
mercado:
1: Estructura compacta.
2: Estructura semimodular. ( Estructura Americana)
3: Estructura modular. (Estructura Europea)
Estructura compacta
Este tipo de autómatas se distingue por presentar en un solo bloque todos
sus elementos, esto es, fuente de alimentación, CPU, memorias,
entradas/salidas, etc..
Son los autómatas de gama baja o nanoautómatas los que suelen tener una
estructura compacta. Su potencia de proceso suele ser muy limitada
dedicándose a controlar máquinas muy pequeñas.
Estructura semimodular
Se caracteriza por separar las E/S del resto del autómata, de tal forma que en
un bloque compacto están reunidas las CPU, memoria de usuario o de
programa y fuente de alimentación y separadamente las unidades de E/S .
Son los autómatas de gama media los que suelen tener una estructura
semimodular.
Estructura modular
Su característica principal es la de que existe un módulo para cada uno de los
diferentes elementos que componen el autómata como puede ser una
fuente de alimentación, CPU, E/S, etc. La sujeción de los mismos se hace por
carril DIN, placa perforada o sobre RACK, en donde va alojado el BUS externo
de unión de los distintos módulos que lo componen.
http://www.grupo-
maser.com/PAG_Cursos/Auto/auto2/auto2/PAGINA%20PRINCIPAL/PLC/ESTRUCTURAS/ESTRUCTU
RA%20EXTERNA/estructura_externa.htm
1.7: Estructuras dinámicas INDICE
ESTRUCTURA DINAMICA
No tienen las limitaciones o restricciones en el tamaño de memoria ocupada
que son propias de las estructuras estáticas.
Mediante el uso de un tipo de datos especifico, denominado puntero, es
posible construir estructuras de datos dinámicas que no son soportadas por
la mayoría de los lenguajes, pero que en aquellos que si tienen estas
características ofrecen soluciones eficaces y efectivas en la solución
de problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a un
grupo de casillas de memoria. Es decir un dato estructurado tiene varios
componentes.
http://estructura-quique.blogspot.com/2012/10/estructura-estatica-y-estructura.html
1.8: Programación avanzada INDICE
1.9: Estructura básica de un programa en C
En general, un programa en C consta de las siguientes partes:
Directivas al preprocesador. Definición de tipos de datos. Declaración de variables. Definición de funciones.
Cualquier programa debe poseer una función, llamada main, que es la función que toma el control cuando se corre el programa.
El primer programa
El ejemplo siguiente muestra un programa completo en C, que imprime un texto en pantalla.
#include <stdio.h>
int main()
{
printf(" Mi primer programa\n");
getch();
}
1.11: Estructuras de Repetición en C INDICE
Las estructuras de repetición generan ciclos que permiten repetir una o mas
veces ciertas instrucciones. Es importante para el uso de estas estructuras
tener especial cuidado que la condición lógica tenga un punto de termino,
para así evitar un bucle infinito en un caso no deseado. En el lenguaje de
programación C se utilizan 3 tipos de estructuras de repetición
Estructura de repetición While
Mientras la condición lógica resulte verdadera se repetirán las instrucciones
del cuerpo de while.
Estructura:
while (condición_lógica){
... cuerpo ...
}
Ejemplo
#include <stdio.h>
int main() {
int repetir = 1;
while(repetir==1) {
printf("Ingrese un valor: ");
scanf("%d", &repetir);
}
return 0;
}
Estructura de repetición Do While
Para este caso se ejecutan las instrucciones del cuerpo y posteriormente se
evalúa la condición lógica y mientras resulte ser verdadera se repetirá el
cuerpo. Esta estructura de repetición nos asegura que al menos se ejecutará
una vez el cuerpo de la estructura.
Estructura:
do{
... cuerpo ...
} while(condición lógica);
Ejemplo
#include <stdio.h>
int main() {
int repetir;
do {
printf("Ingrese un valor: ");
scanf("%d", &repetir);
} while(repetir==1);
return 0;
}
Estructura de repetición For
Esta estructura consta de 2 campos de asignación y uno de condición.
Normalmente se usa para ciclos controlados, con una variable de iteración,
asignándole un valor de inicio, la condición de término y la asignación de
cambio. El cuerpo de "for" se repite mientras la condición sea verdadera.
Estructura del for:
for(asignación_inicial; condición_lógica; asignación_de_cambio){
... cuerpo ...
}
Ejemplo
#include <stdio.h>
int main() {
int i;
for(i=0; i<10; i++) {
printf("i: %d\n", i);
}
return 0;
}
http://wiki.decom-uv.cl/index.php/Estructuras_de_Repetici%C3%B3n_en_C
1.12: Estructuras de control INDICE
En lenguajes de programación, las estructuras de control permiten modificar
el flujo de ejecución de las instrucciones de un programa.
Con las estructuras de control se puede:
De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-
Else)
De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias
(Select-Case)
Todas las estructuras de control tienen un único punto de entrada y un
único punto de salida. Las estructuras de control se puede clasificar
en : secuenciales, iterativas y de control avanzadas.
Tipos de estructura de control
Sentencias if
Se trata de una estructura de control que permite redirigir un curso de acción
según la evaluación de una condición simple, sea falsa o verdadera.
Si la condición es verdadera, se ejecuta el bloque de sentencias 1, de lo
contrario, se ejecuta el bloque de sentencias 2.
IF (Condición) THEN
(Bloque de sentencias 1)
ELSE
(Bloque de sentencias 2)
END IF
Se pueden plantear múltiples concisiones simultáneamente, si se cumple la
(Condición 1), se ejecuta (Bloque de sentencias 1) en caso contrario se 2),
comprueba la (Condición si es cierta se ejecuta (Bloque de sentencias 2), y así
sucesivamente hasta n condiciones, si ninguna de ellas es cumple se ejecuta
(Bloque de sentencias else).
IF (Condición 1)
(Bloque de sentencias 1)
ELSE
IF (Condición 2)
(Bloque de sentencias 2)
.....
ELSEIF (Condición n)
(Bloque de sentencias n)
ELSE
(Bloque de sentencias ELSE)
Select-Case
Sentencia Select-Case
Esta sentencia permite ejecutar una de entre varias acciones en función del
valor de una expresión. Es una alternativa a if then else cuando se compara la
misma expresión con diferentes valores.
Se evalúa la expresión, dando como resultado un número.
Luego, se recorren los "Case" dentro de la estructura buscando que el
número coincida con uno de los valores.
Es necesario que coincidan todos sus valores.
Cuando se encuentra la primera coincidencia, se ejecuta el bloque de
sentencias correspondiente y se sale de la estructura Select-Case.
Si no se encuentra ninguna coincidencia con ningún valor, se ejecuta el
bloque de sentencias de la sección "Case Else".
SELECT (Expresión)
CASE Valor1
(Bloque de sentencias 1)
CASE Valor2
(Bloque de sentencias 2)
CASE Valor n
(Bloque de sentencias n)
CASE ELSE
(Bloque de sentencias "Else")
END SELECT
http://es.wikipedia.org/wiki/Estructuras_de_control
CAPITULO 2
2.1: Características del sistema de desarrollo elegido INDICE
Características del lenguaje C++
Las principales características del Lenguaje C son:
1.-Tiene un conjunto completo de instrucciones de control.
2.-Permite la agrupación de instrucciones.
3.-Incluye el concepto de puntero (variable que contiene la dirección de otra
variable).
4.-Los argumentos de las funciones se transfieren por su valor.
5.-No forma parte del lenguaje, sino que se proporciona a través de una
biblioteca de funciones.
Permite la separación de un programa en módulos que admiten compilación
independiente.
Se conoce como un lenguaje de programación de sistemas, no se adapta mal
al resto de aplicaciones. De hecho, hoy en día un alto porcentaje de software
para ordenadores personales está escrito en Lenguaje C. Por ejemplo, el
sistema operativo MS-DOS.
Algunas de las características más importantes que definen el lenguaje de
programación son:
Tamaño pequeño.
Uso extensivo de llamadas a funciones.
Comandos breves .
Lenguaje estructurado.
Programación de bajo nivel
Implementación de apuntadores - uso extensivo de apuntadores para la
memoria, arreglos, estructuras y funciones
Las diversas razones por la cual se ha convertido en un lenguaje de uso
profesional son:
El uso de constructores de alto nivel.
El poder manejar actividades de bajo-nivel.
El generar programas eficientes.
La posibilidad de poder ser compilado en una variedad de computadoras, con
pocos cambios .
Un punto en contra es que tiene una detección pobre de errores, lo cual en
ocasiones es problemático para los principiantes.
Links:
http://teoria-de-programacion.globered.com/categoria.asp?idcat=34
2.2: Arquitectura del sistema operativo INDICE
Es un conjunto de programas, rutinas, Funciones software, etc. que hace de
Interfaz entre el usuario y el hardware de un sistema informático.
El núcleo
El núcleo es la componente del sistema operativo que siempre está residente
en la memoria real del computador. La función primordial del núcleo es
transformar los recursos reales del computador en recursos estándares y
cómodos de usar.
La API del núcleo
Una API (Interfaz de Programación de Aplicaciones) es el conjunto de
servicios que ofrece un sistema a las aplicaciones usuarias de ese sistema. Las
aplicaciones invocan estos servicios a través de llamadas a procedimientos.
La API queda definida por lo tanto por los nombres de estos procedimientos,
sus argumentos y el significado de cada uno de ellos.
Ejemplos de llamadas al sistema en Unix son:
Manejo de Procesos: creación ( fork), destrucción ( kill), término ( exit),
sincronización ( wait), carga de un binario ( exec).
Manejo de memoria: extensión de la memoria de datos ( sbrk).
Manejo de archivos y dispositivos: open, read, write y close.
Los drivers para dispositivos
La operación de los dispositivos es altamente dependiente de su
implementación. Es así como un disco SCSI se opera de una forma distinta de
un disco IDE. Para independizar el código del núcleo de los variados
mecanismos de interacción con los dispositivos, el núcleo define clases de
dispositivos. Ejemplos de clases son disco, cinta, puerta de comunicación,
interfaz de red, etc. Para cada clase se define una interfaz estándar para
interactuar con cualquier dispositivo que pertenezca a la clase. Esta interfaz
corresponde a las declaraciones de un conjunto de procedimientos no
implementados.
Links
http://asignaturas.diatel.upm.es/ffacc/doc/Arquitectura%20Sistemas%20Operativos.pdf
http://users.dcc.uchile.cl/~jpiquer/Docencia/SO/aps/node16.html
2.3: Ficheros INDICE
6. Introducción a ficheros
Hasta ahora un programa podía almacenar información en la memoria
mediante las variables declaradas . Este almacenamiento es temporal y está
limitado al tiempo de ejecución del programa.
Cuando surge la necesidad de almacenar información de manera
permanente se deben usar ficheros. Un fichero es una entidad que contiene
información de un conjunto de elementos. El fichero puede estar guardado
en algún medio de almacenamiento secundario como por ejemplo disco
rígido, disckette, etc. La agrupación de ficheros relacionados entre sí por
algún concepto se denomina base de datos.
Un fichero puede estar compuesto por registros, cada uno de los cuales
contiene información sobre un elemento..
Ejemplo: se tiene un fichero de registros o estructuras Articulo
struct Articulo
{
int codigo;
char descripcion[maxdesc];
float precio;
};
La clave de acceso de cada registro es el campo codigo, pues dado un código
en particular se puede identificar un único registro. En cambio, el campo
precio no sirve como clave de acceso pues puede existir más de un artículo
con el mismo precio.
Ejemplo: el almacenamiento en una cinta es de acceso secuencial.
El modo de organización lógica de los datos de un fichero puede ser de tres
maneras:
Secuencial: las consultas de los registros se hace secuencialmente desde el
primer elemento hasta el elemento i-ésimo. La alta de un nuevo registro se
realiza al final del fichero.
Directa: se establece una relación entre la clave del registro y la posición del
registro en el fichero. Para acceder al elemento i-ésimo se aplica una función
de acceso que calcula la posición del registor en el fichero de acuerdo a la
clave del mismo.
Ejemplo: se tiene un fichero de registros Articulo cuyo campo clave es el
código. Los códigos son numeros que van de 10 en 10, ej. 10, 20, 30, 40, 50,
etc. Se realiza la siguiente función de acceso F:
F (código) = código / 10;
la cual que devuelve la posición del registro a partir del código, y por lo tanto
puede accederse a él directamente.
Indexada: básicamente es una organización secuencial a la que se le agrega
una o más tablas de índices que permiten acceder a los registros de manera
más directa.
Ejemplo: se tiene un fichero de registros Articulo cuyo campo clave es el
código. Los códigos son numeros que no siguen un orden determinado, por
lo tanto no se puede construir una función de acceso directo. Se construye
una tabla de índices que permite acceder directamente a los registros cuyo
código se encuentra en un rango dado. Si se desea buscar los registros
mediante parte de su descripción, se puede construir otra tabla de índices
que permita, por ejemplo, acceder a todos los registros cuya descripción
comienza con una letra o una serie de letras dadas.
6.2. Operaciones con ficheros
Existen operaciones que afectan a todo el fichero, entre las cuales se
enumeran:
Crear un fichero
Borrar un fichero
Ordenar un fichero según algún criterio de orden
Fusionar dos ficheros para formar un tercer fichero
Dividir un fichero en dos o más ficheros
Además, existen otras operaciones que afectan a uno o más registros del
fichero, entre las cuales se enumeran:
Alta de un nuevo registro
Baja de un registro
Modificación de uno o más registros
Consulta de uno o más registros
6.3. Ficheros en /C++
6.3.1. Streams
Existe una manera de manipular ficheros en C++ mediante los
denominados streams.
Un stream representa un flujo de información:
desde el programa a un dispositivo o periférico de salida, o
desde un periférico de entrada al programa
La manera de utilizar un stream de entrada es:
stream_entrada >> variable;
La manera de utilizar un stream de salida es:
stream_salida << información;
Hasta el momento se han utilizado dos streams predefinidos:
cin es un stream de entrada asociado al teclado
cout es un stream de salida asociado a la pantalla
Pueden definirse stream de entrada y/o salida y asociarlos a un fichero, de
manera que se puedan recibir datos del fichero y/o enviar datos al fichero
respectivamente.
La librería que se debe utilizar es <fstream.h>.
Se debe declarar un stream mediante el constructor:
fstream nombre_stream (nombre_fichero, opciones);
Los parámetros son optativos. Si están presentes sirven para realizar la
apertura del fichero. El nombre del fichero es un string que indica la ruta del
fichero que se asocia al stream.
Las opciones indican diferentes modos entre los cuales se encuentran:
ios::in: crea un stream de entrada, es decir, para lectura de datos del fichero
ios::out: crea un stream de salida, es decir, para escritura de datos en el
fichero
ios::ate: hace que la posición inicial sea al final del fichero
ios::app: se sitúa al final del fichero antes de cada escritura
ios::trunc: borra cualquier cosa que pudiera haber en el fichero
ios::nocreate: si el fichero no existe fallará
ios::noreplace: si el fichero existe fallará
ios::bin: abre el fichero como binario
Entre las operaciones disponibles se encuentran:
Ejemplo:
if (fichero1.eof()){
//fin de fichero, no hay más datos
}
Se debe considerar que para leer o escribir un stream existe un "cabezal" que
se posiciona en el lugar a realizar la operación. Las siguientes funciones
informan la posición o manipulan el cabezal.
tellp(), es una función que devuelve como resultado la posición actual (tipo
pos_type) de un stream de salida
seekp(posición, posición_inicial), sitúa el lugar de escritura indicada en
posición en forma relativa a posicion_inicial, la cual puede ser ios::beg
(comienzo), ios::cur (actual), ios::end (fin).
Ficheros de estructuras
Cuando se quiere guardar información de estructuras o registros en C++ se
deben utilizar las funciones de ficheros de la librería <stdio.h>.
Existe un tipo de datos denominado FILE por medio del cual se manipulan los
ficheros.
Entre las funciones definidas para trabajar con ficheros se encuentran:
FILE* fopen (const char *name, const char *mode)
La función fopen recibe como parámetros:
un string name con el nombre del fichero
un string mode con el modo de apertura del fichero que puede ser:
"r" : abre fichero existente para lectura. Si no existe falla la operación
"w" : abre fichero para escritura. Si existe, sus contenidos se borran.
"a" : abre fichero para escritura. Si existe, se agregan los datos al final
"r+" : abre fichero para lectura y escritura. El fichero debe existir.
"w+" : abre fichero para lectura y escritura. Si existe, sus contenidos se
borran
"a+" : abre fichero para lectura y escritura. Si existe, se agregan datos al final
Devuelve un puntero a un fichero, que en caso de error en la operación será
NULL.
int fclose (FILE *file)
La función fclose cierra el fichero abierto file.
Devuelve un int que si es 0 indica que la operación se realizó con éxito.
size_t fread (void *pbuffer, size_t size, size_t number, FILE *file)
La función fread se usa para leer desde el fichero, y recibe como parámetros:
un puntero a FILE del fichero file desde el cual se quiere leer
un número number de tipo size_t que indica la cantidad de elementos que se
quiere leer
un número size de tipo size_t que indica el tamaño en bytes de cada
elemento
un puntero pbuffer a un lugar donde se copiarán los elementos leídos.
Considerar que el tamaño que debe tener el buffer apuntado por pbuffer
tiene que se lo suficientemente grande como para albergar la cantidad de
elementos indicada.
Devuelve un número de tipo size_t que indica el número de elementos que
se han leído.
size_t fwrite (void *pbuffer, size_t size, size_t number, FILE *file)
La función fwrite se usa para escribir en el fichero, y recibe los mismos
parámetros que la función fread.
Devuelve un número de tipo size_t que indica el número de elementos que
se han escrito.
int fseek (FILE *file, long offset, int mode)
La función fseek desplaza el cabezal de lectura, y recibe los parámetros:
un long offset que indica la cantidad de bytes que se desplaza
un int mode que indica desde dónde se desplaza, con uno de los siguientes
valores:
SEEK_SET: desde el comienzo
SEEK_CUR: desde el cursor
SEEK_END: desde el final
Devuelve un int que si es 0 indica que la operación se realizó con éxito.
int ftell (FILE *file)
La función ftell devuelve un int que indica el número de bytes desde el
comienzo hasta la posición donde se encuentra el cabezal de lectura.
int feof (FILE *file)
Luego del primer intento de lectura más allá de la señal de fin de fichero, la
función feof devuelve un valor diferente de 0.
Devuelve 0 mientras las lecturas hehcas no lleguen al final del fichero.
void rewind (FILE *file)
La función rewind sitúa el cabezal de lectura al inicio del fichero.
Cabe destacar que tanto las funciones fread, fwrite, fseek, ftell manejan
posiciones o tamaños indicados en bytes. Para obtener el tamaño en bytes
de una estructura dada puede usarse la función
sizeof (estructura)
y con este valor pueden calcularse los parámetros necesarios de las funciones
anteriores.
Ejemplo: Crear un fichero de artículos. Se debe permitir agregar artículos,
modificar un artículo existente y listar todos los artículos existentes.
#include <iostream.h>
#include <stdio.h>
const int maxart = 100;
const int maxdesc = 30;
struct articulo {
int codigo;
char descripcion[maxdesc];
float precio;
Link:
http://dmi.uib.es/~abasolo/foninf/2002-2003/capitulos/6-ficheros.html
http://dmi.uib.es/~abasolo/foninf/2002-2003/capitulos/6-ficheros.html
2.4: Ficheros especiales INDICE
breFichero)
{
ifstream in;
TPersona persona;
in.open(nombreFichero, ios::binary);
if (in.bad())
{
cout << "Error al abrir el fichero: " << nombreFichero << endl;
}
else
{
LeePersonaFicheroBIN(in,persona);
while (!in.eof())
{
EscribirPersona(persona);
LeePersonaFicheroBIN(in,persona);
pausa();
}
in.close();
}
}
void LeePersonaFicheroBIN(ifstream &fichero, TPersona &p)
{
fichero.read((char *)(&p),sizeof(TPersona));
}
void EscribePersonaFicheroBIN(ofstream &fichero, TPersona p)
{
fichero.write((char *)(&p),sizeof(TPersona));
}
Link:
http://www.lcc.uma.es/~pastrana/LP/curso0405/P13_05.pdf
2.5: Procesos estructura. Creación INDICE
Estructura general de un programa en C
/* Comentarios de un parrafo completo
comprendidos entre /*.....*/, sirven para
aclarar qué el programa o una parte del programa */
// Comentarios de 1 sola línea
// Zona de ficheros de cabecera de las librerías
#include <....... . h> // h de Head
#include <....... . h>
// Zona de prototipos de funciones
int Potencia (int x,y)
// Zona de variables globales
int valor;
float media_total;
void main (void) // Prog. ppal. típico de Turbo C
{
// llave de inicio del programa
// codigo del programa
.......
.......
.......
// fin del programa
}
// Desarrollo del código de las funciones anteriores
Link:
http://mimosa.pntic.mec.es/~flarrosa/lengc.pdf
2.6: Tipos d variables
Existen varios tipos de variables, y cada uno corresponde a un tamaño
máximo de un número, un carácter o una verdad.
1.1 bool
Por lo general utiliza 1 byte de memoria, valores: true o false.
1.2 char
Utiliza generalmente 1 byte de memoria, permite almacenar un carácter,
valores; 256 caracteres.
1.3 unsigned short int
Utiliza generalmente 2 bytes de memoria, valores: de 0 a 65 535
1.4 short int
Utiliza generalmente 2 bytes de memoria, valores: de -32768 a 32767.
1.5 unsigned long int
Utiliza generalmente 4 bytes de memoria, valores: de 0 a 4 294 967 295.
1.6 long int
Utiliza generalmente 4 bytes de memoria, valores: de -2 147 483 648 a 2 147
483 647.
1.7 int (16 bits)
Utiliza generalmente 2 bytes de memoria, valores: de -32 768 a 32 767.
1.8 int (32 bits)
Utiliza generalmente 4 bytes de memoria, valores: de -2 147 483 648 a 2 147
483 647.
1.9 unsigned int (16 bits)
Utiliza generalmente 2 bytes de memoria, valores: de 0 a 65 535.
1.10 unsigned int (32 bits)
Utiliza generalmente 2 bytes de memoria, valores: de 0 a 4 294 967 295.
1.11 double
Utiliza generalmente 8 bytes de memoria, valores: de 2.2e-308 a 3.4e-38.
1.12 float
Utiliza generalmente 4 bytes de memoria, valores: de 1.2e-308 a 3.4e-38.
Atención!
El tamaño de las variables en memoria puede variara de un PC a otro.
2.7: Ejemplos de programas realizados en turbo c++
Link de descarga de los ejercicios
http://www.mediafire.com/download/avehq4zbu61himd/ejercicios+recopila
dos2+.CPP
Para realizar este menú utilizamos los siguientes ciclos adicionales:
Gotoxy Para esto tilizamos pentium dar un reciente la librería math.h nos regala la función sin gente ( ).
La pantalla de turbo c ++ está compuesto por dos ejes "x y"
Ejemplo:
gotoxy(30,2);printf(" ESCOJA UNA OPCION ");
Donde (30,2)
30 equivale al eje de las x .
2 equivale al eje de las y.
-Textcolor
Esta función selecciona el color de texto especificado.
void textcolor(int color);
Ejemplo
textcolor( LIGHTRED );
cprintf( "Este mensaje tiene otro color de fondo y
de texto.\r\n" );
Colocamos cprintf ,c para que le pueda coger el
color al texto.
Colores:
-Recuadros en C++ ” margen”
Ya sabemos usar los ciclos for y el gotoxy, vamos a hacer un recuadro en c++,
es decir, un margen o contorno para darle más presentación a un programa.
#include<stdio.h>
#include<conio.h>
int main()
{
int x=0;
for(x=1;x<=80;x++)
{
gotoxy(x,1);printf(".");
gotoxy(x,22);printf(".");
gotoxy(4,23);printf("Nombre: Programa: Numero: ");
gotoxy(x,24);printf(".");
if(x<=24)
{
gotoxy(1,x);printf(".");
gotoxy(80,x);printf(".");
}
}
getch();
}
Lenguaje c
En este libro nos
introducimos en
el lenguaje de
programación C creado
en 1972 por Dennis M.
Ritchie en los Laboratorios
Bell como evolución del
anterior lenguaje B, a su
vez basado en BCPL.
Al igual que B, es un
lenguaje orientado a la
implementación de Sistemas
Operativos,
concretamente Unix. C es
apreciado por la eficiencia
del código que produce y es
el lenguaje de
programación más popular
para crear software de
sistemas, aunque también
se utiliza para crear
aplicaciones.