SlideShare una empresa de Scribd logo
1 de 17
Aplicaciones
 Microprocesadores, como el 8X300, de Signetics, la familia 2900 de AMD y otros.
 Memorias RAM
 Memorias PROM
 PAL, Programmable Array Logic, consistente en una PROM que interconecta las entradas y cierto
número de puertas lógicas.
Implementación
Fundamental compuerta TTL
Entradas TTL son los emisores de un transistor de emisor múltiple. Esta estructura IC es
funcionalmente equivalente a múltiples transistores en las bases y los coleccionistas están
vinculados entre sí. La salida está amortiguada por un amplificador de emisor común.
Entradas tanto los lógicos. Cuando todas las entradas se llevan a cabo en alta tensión, las
uniones base-emisor del transistor de emisor múltiple son en polarización inversa. A diferencia
de DTL, una pequeña corriente "colector" es dibujado por cada una de las entradas. Esto es
debido a que el transistor está en modo inverso-activo. Un aproximadamente constante la
corriente fluye desde el carril positivo, a través de la resistencia y en la base del transistor de
emisor múltiple. Esta corriente pasa a través de la unión base-emisor del transistor de salida,
lo que le permite llevar a cabo y tirando de la baja tensión de salida.
Un cero lógico de entrada. Tenga en cuenta que la unión base-colector del transistor de
emisor múltiple y la unión base-emisor del transistor de salida están en serie entre la parte
inferior de la resistencia y tierra. Si una tensión de entrada se convierte en cero, la
correspondiente unión base-emisor del transistor de emisor múltiple es en paralelo con estos
dos uniones. Un fenómeno llamado actual de la dirección significa que cuando dos elementos
de tensión-estables con diferentes voltajes de umbral están conectados en paralelo, la
corriente fluye a través de la ruta de acceso con la tensión de umbral más pequeño. Como
resultado de ello, no fluye corriente a través de la base del transistor de salida, haciendo que
se detenga la realización y la tensión de salida se convierte en alta. Durante la transición del
transistor de entrada es brevemente en su región activa, por lo que atrae a una gran cantidad
de corriente lejos de la base del transistor de salida y se descarga por lo tanto, directamente a
su base. Esta es una ventaja crítica de TTL sobre DTL que acelera la transición sobre una
estructura de entrada de diodos.
La principal desventaja de TTL con una etapa de salida simple es la relativamente alta
resistencia de salida en la salida lógica "1" que está completamente determinada por la
resistencia del colector de salida. Limita el número de entradas que se pueden conectar.
Algunos ventaja de la etapa de salida simple es el nivel de alta tensión de la salida lógica "1"
cuando no se ha cargado la salida.
La lógica de este tipo se encuentra con más frecuencia con la resistencia de colector del
transistor de salida se omite, toma de una salida de colector abierto. Esto permite al diseñador
de fabricar la lógica mediante la conexión de las salidas de colector abierto de varias puertas
lógicas, y brindar una resistencia pull-up externa. Si alguna de las puertas de la lógica se
vuelve lógico bajo, la salida combinada será baja. Ejemplos de este tipo de puerta son el 7401
y 7403 series.
TTL con una etapa de salida "tótem"
Para resolver el problema con la alta resistencia de salida de la etapa de salida sencilla la
segunda esquemática añade a esto una salida "tótem". Se compone de los dos transistores
npn V3 y V4, el "trabajo" diodo V5 y la resistencia de limitación de corriente R3. Es impulsado
por la aplicación de la misma idea actual de la dirección que el anterior.
Cuando V2 es "off", V4 es "off", así y V3 opera en la región activa como un seguidor de
tensión produce alta tensión de salida. Cuando V2 es "on", se activa V4, la conducción bajo
voltaje a la salida. Uniones colector-emisor V2 y V4 V4 conectan unión base-emisor en
paralelo a la serie V3-conectado base-emisor y V5 uniones ánodo-cátodo. Corriente de base
V3 es privado, el transistor se pone en "off" y no tiene impacto en el resultado. En el medio de
la transición, la resistencia R3 limita la corriente que fluye directamente a través de la serie V3
conectado transistor, diodo y el transistor V4 V5 que están llevando a cabo todo. También
limita la salida de corriente en el caso de salida de conexión lógica "1" y corta al suelo. La
fuerza de la puerta se puede incrementar sin afectar proporcionalmente el consumo de
energía mediante la eliminación de la pull-up y pull-down resistencias de la etapa de salida.
La principal ventaja de la TTL con una etapa de salida "tótem" es la baja resistencia de salida
en salida lógica "1". Está determinada por la parte superior del transistor de salida V3 de
funcionamiento en la región activa como un seguidor de tensión. La resistencia R3 no
aumenta la resistencia de salida, ya que está conectada en el colector V3 y su influencia se
compensa por la retroalimentación negativa. Una desventaja de la etapa de salida "tótem" es
la disminución del nivel de tensión de la salida lógica "1". La razón de esta reducción son las
caídas de voltaje en la base-emisor V3 y V5 uniones ánodo-cátodo.
Consideraciones Interfacing
Como DTL, TTL es una lógica de sumidero de corriente ya una corriente deben extraerse de
las entradas para llevarlos a un nivel de 0 lógico. En bajo voltaje de entrada, la entrada de
corriente fuentes TTL que debe ser absorbida por la etapa anterior. El valor máximo de esta
corriente es aproximadamente 1,6 mA para una compuerta TTL estándar. La fuente de
entrada tiene que ser de baja resistencia suficiente para que la corriente que fluye crea sólo
una caída de tensión insignificante a través de ella, para la entrada para ser considerado como
un "0" lógico. Entradas TTL a veces se dejan simplemente flotando para proporcionar un "1"
lógico, aunque no se recomienda este uso.
Circuitos TTL estándar funcionan con una fuente de alimentación de 5 voltios. Una señal de
entrada TTL se define como "bajo" cuando entre 0 V y 0,8 V con respecto al terminal de tierra,
y "alta" cuando entre 2,2 V y 5 V. salidas TTL son típicamente restringido a los límites más
estrechos de entre 0 V y 0,4 V para una "baja" y entre 2,6 V y 5 V para un "alto",
proporcionando 0,4 V de inmunidad al ruido. Normalización de los niveles TTL era tan
omnipresente que las placas de circuitos complejos a menudo contenían chips TTL hechas
por muchos fabricantes diferentes seleccionados disponibilidad y coste, la compatibilidad está
asegurada, dos unidades de placa de circuito fuera de la misma línea de montaje en diferentes
días o semanas sucesivas pueden tener un diferente mezcla de las marcas de fichas en las
mismas posiciones en el tablero, de la reparación era posible con chips fabricados años más
tarde que los componentes originales. Dentro de los límites útil amplios, puertas lógicas
podían ser tratadas como dispositivos booleanas ideales sin preocuparse por las limitaciones
eléctricas.
En algunos casos, el nivel de tensión de la etapa de salida "tótem" en la salida lógica "1" se
puede aumentar hasta a VCC mediante la conexión de una resistencia externa entre el
colector V3 y el carril positivo. Se detiene en el cátodo V5 y los recortes-off del diodo. Sin
embargo, esta técnica se convierte en realidad el sofisticado salida "tótem" en una etapa de
salida sencilla que tiene una resistencia de salida importante cuando se conduce un alto nivel.
Embalaje
Al igual que la mayoría de los circuitos integrados del período 1965-1990, los dispositivos TTL
suelen ser envasados en orificio pasante, paquetes duales en línea con entre 14 y 24 hilos
conductores, por lo general de plástico o epoxi veces de cerámica. Beam-dados de chips sin
plomo paquetes se hicieron para el montaje en matrices más grandes como los circuitos
integrados híbridos. Piezas para aplicaciones militares y aeroespaciales fueron empaquetados
en paquetes planos, una forma de paquete de montaje en superficie, con conduce adecuado
para la soldadura o soldadura para placas de circuito impreso. Hoy en día, muchos
dispositivos compatibles con TTL están disponibles en paquetes de montaje en superficie, que
están disponibles en una gama más amplia de tipos de paquetes a través del agujero.
TTL se adapta particularmente bien a los circuitos integrados bipolares porque entradas
adicionales a una puerta sólo se pide emisores adicionales en una región de base compartido
del transistor de entrada. Si se utilizan transistores empaquetados individualmente, el coste de
todos los transistores desanimaría a uno del uso de una estructura de este tipo de entrada.
Pero en un circuito integrado, los emisores adicionales para entradas de la puerta adicionales
añaden sólo un área pequeña.
Comparación con otras familias lógicas
Dispositivos TTL consumen mucho más energía que los dispositivos CMOS equivalente en
reposo, pero el consumo de energía no aumenta con la velocidad de reloj mayor rapidez para
dispositivos CMOS. En comparación con los circuitos ECL contemporáneos, TTL utiliza menos
energía y tiene reglas de diseño más fácil, pero es sustancialmente más lenta. Los
diseñadores pueden combinar dispositivos TTL ECL y en el mismo sistema para lograr el
mejor rendimiento global y la economía, pero se requiere que los dispositivos de
desplazamiento de nivel entre las dos familias lógicas. TTL es menos sensible a los daños
causados por la descarga electrostática que los dispositivos de primeros CMOS.
Debido a la estructura de salida de los dispositivos TTL, la impedancia de salida es asimétrico
entre el estado alto y bajo, que los hace inadecuados para la conducción de líneas de
transmisión. Este inconveniente se suele superar al amortiguar las salidas con dispositivos de
controlador de línea especiales donde deben enviarse a través de cables de señales. ECL, en
virtud de su estructura de salida de baja impedancia simétrica, no tiene este inconveniente.
La estructura de salida TTL "tótem" a menudo tiene un solapamiento momentáneos cuando
tanto los transistores superior e inferior están llevando a cabo, lo que resulta en un impulso
sustancial de corriente extraída de la fuente de alimentación. Estos pulsos se puede acoplar
de manera inesperada entre varios paquetes de circuitos integrados, lo que resulta en una
reducción de margen de ruido y menor rendimiento. Sistemas TTL por lo general tienen un
condensador de desacoplamiento para cada uno o dos paquetes de circuitos integrados, de
modo que un impulso de corriente de un chip TTL no reduce momentáneamente la tensión de
alimentación a otra.
Varios fabricantes ya suministran CMOS equivalentes lógicos con los niveles de entrada
compatible con TTL y la salida, generalmente teniendo referencias similares al componente
TTL equivalente y con la misma asignación de señales. Por ejemplo, la serie 74HCT00 ofrece
muchos reemplazos directos para piezas bipolares serie 7400, pero utiliza la tecnología
CMOS.
Sub-tipos
Las sucesivas generaciones de la tecnología producen piezas compatibles con la mejora de
consumo de energía o velocidad de conmutación, o ambos. Aunque los vendedores
uniformemente comercializan estas diversas líneas de productos como TTL con diodos
Schottky, algunos de los circuitos subyacentes, tales como las usadas en la familia LS, en
lugar podría considerarse DTL.
Las variaciones de y sucesores a la familia TTL básica, que tiene un retardo de propagación
típica puerta de 10 ns y una disipación de potencia de 10 mW por puerta, para un producto de
alimentación de retardo o de la energía de conmutación de aproximadamente 100 PJ,
incluyen:
 Baja potencia TTL, que cambió la velocidad de conmutación para una reducción en el
consumo de energía
 De alta velocidad TTL, con cambio rápido que el estándar TTL, pero significativamente
mayor disipación de potencia
 Schottky TTL, introducido en 1969, que utiliza diodos Schottky abrazaderas en
entradas de la puerta para evitar el almacenamiento de carga y mejorar el tiempo de
conmutación. Estas puertas operado más rápidamente, pero tuvieron mayor disipación
de potencia
 Baja potencia Schottky TTL - utilizado los valores de resistencia más altas de baja
potencia TTL y los diodos de Schottky para proporcionar una buena combinación de
velocidad y menor consumo de energía, y PDP de 20 PJ. Probablemente el tipo más
común de TTL, éstos se utilizaron como lógica de cola en microordenadores, en
sustitución de esencialmente la antigua H, L, y S sub-familias.
 Variantes Rápido y Avanzado-Schottky de LS de Fairchild y TI, respectivamente,
alrededor de 1985, con circuitos de "Miller-killer" para acelerar la transición baja a alta.
Estas familias lograron PDP de 10 PJ y 4 PJ, respectivamente, el más bajo de todas
las familias TTL.
 TTL de baja tensión para fuentes de alimentación de 3,3 voltios, interfaces de memoria.
La mayoría de los fabricantes ofrecen gamas de temperaturas comerciales e extendido: por
ejemplo, piezas de la serie de Texas Instruments 7400 se han valorado de 0 a 70 º C, y los
dispositivos de la serie 5400 en el rango de temperatura militar especificación de -55 a 125 C.
Niveles especiales de calidad y piezas de alta fiabilidad están disponibles para aplicaciones
militares y aeroespaciales.
Dispositivos endurecidas a las radiaciones se ofrecen para aplicaciones espaciales.
Aplicaciones
Antes de la llegada de los dispositivos VLSI, circuitos integrados TTL eran un método estándar
de construcción para los procesadores de los procesadores de mini-ordenador y la unidad
central, tales como el DEC VAX y Data General Eclipse, y por equipos, tales como controles
de máquina herramienta numéricos, impresoras y video mostrar terminales. Como
microprocesadores hicieron más funcional, los dispositivos TTL se volvieron importantes para
aplicaciones de "pegamento" de lógica, como los conductores de autobuses rápidos en una
placa base, que unen a los bloques de funciones realizadas en elementos VLSI.
Aplicaciones analógicas
Aunque originalmente diseñado para manejar señales digitales de nivel lógico, un inversor TTL
puede estar sesgada como un amplificador analógico. Conexión de una resistencia entre la
salida y los sesgos de entrada del elemento TTL como amplificador de retroalimentación
negativa. Estos amplificadores pueden ser útiles para convertir las señales analógicas al
dominio digital, pero no se utiliza normalmente donde la amplificación analógica es el
propósito principal. Inversores TTL también pueden ser utilizados en los osciladores de cristal
en los que su capacidad de amplificación analógica es significativa.
 Corrección de errores, ¿Cómo funciona?, Un promedio de ruido para reducir los
errores, Tipos de FEC, Códigos FEC concatenados para mejorar el rendimiento, Baja
densidad de comprobación de paridad, Códigos de Turbo, Decodificación y pruebas de
los códigos locales, Intercalado, Lista de códigos correctores de errores
 Batalla de Sagrajas, Preparativos, Batalla, Secuelas
 Hidruro de uranio, Propiedades, Formación de uranio metálico, Otras reacciones
químicas, Historia, Aplicaciones
 Jerome Isaac Friedman, Vida y carrera, Publicaciones
 Heinrich Otto Wieland, Familia, Premio Heinrich Wieland
 McDonnell Douglas F/A-18 Hornet, Desarrollo, Diseño, Historia operacional, Variantes,
Operadores, Aviones en exhibición, Accidentes, Especificaciones, Apariciones notables
en los medios de comunicación
 Yevgeny Pepelyaev, Inicios de su carrera y la Segunda Guerra Mundial, Corea
 Imagen de alto rango dinámico, Fotografía, Escaneo de película, En representación de
imágenes HDR a LDR pantallas, Comparación con imágenes digitales tradicionales,
Historia de la fotografía HDR, Vídeo, Ejemplos, Galería
 Sulfuro de cadmio, Producción, Reacciones, Estructura y propiedades físicas,
Aplicaciones, Biológico
 Roundhay Garden Scene, Imágenes Remastered
 Philip Showalter Hench, Primeros años y educación, Carrera médica, Familia
 La Facultad, Parcela, Emitir, Producción, Recepción, Banda sonora, Locaciones de
Filmación, Lanzamiento en DVD, Blu-ray
 Filtro de densidad neutra, Mecanismo, Utiliza, Variedades, Tipos de filtros ND
 Los sellos y la historia postal de Heligoland, Enteros postales
 Motor Retroceso,
#include <iostream>
#include <fstream>
using namespace std;
int main() {
char cadena[128];
// Crea un fichero de salida
ofstream fs("nombre.txt");
// Enviamos una cadena al fichero de salida:
fs << "Hola, mundo" << endl;
// Cerrar el fichero,
// para luego poder abrirlo para lectura:
fs.close();
// Abre un fichero de entrada
ifstream fe("nombre.txt");
// Leeremos mediante getline, si lo hiciéramos
// mediante el operador << sólo leeríamos
// parte de la cadena:
fe.getline(cadena, 128);
cout << cadena << endl;
return 0;
}
Este sencillo ejemplo crea un fichero de texto y después visualiza su contenido en
pantalla.
Veamos otro ejemplo sencillo, para ilustrar algunas limitaciones del operador >> para
hacer lecturas, cuando no queremos perder caracteres.
Supongamos que llamamos a este programa "streams.cpp", y que pretendemos que se
autoimprima en pantalla:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
char cadena[128];
ifstream fe("streams.cpp");
while(!fe.eof()) {
fe >> cadena;
cout << cadena << endl;
}
fe.close();
return 0;
}
Muchos sistemas operativos distinguen entre ficheros de texto y ficheros binarios. Por
ejemplo, en MS-DOS, los ficheros de texto sólo permiten almacenar caracteres.
En otros sistemas no existe tal distinción, todos los ficheros son binarios. En esencia
esto es más correcto, puesto que un fichero de texto es un fichero binario con un rango
limitado para los valores que puede almacenar.
En general, usaremos ficheros de texto para almacenar información que pueda o deba
ser manipulada con un editor de texto. Un ejemplo es un fichero fuente C++. Los
ficheros binarios son más útiles para guardar información cuyos valores no estén
limitados. Por ejemplo, para almacenar imágenes, o bases de datos. Un fichero binario
permite almacenar estructuras completas, en las que se mezclen datos de cadenas con
datos numéricos.
En realidad no hay nada que nos impida almacenar cualquier valor en un fichero de
texto, el problema surge cuando se almacena el valor que el sistema operativo usa para
marcar el fin de fichero en un archivo de texto. En MS-DOS ese valor es 0x1A. Si
abrimos un fichero en modo de texto que contenga un dato con ese valor, no nos será
posible leer ningún dato a partir de esa posición. Si lo abrimos en modo binario, ese
problema no existirá.
Los ficheros que hemos usado en los ejemplos anteriores son en modo texto, veremos
ahora un ejemplo en modo binario:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
struct tipoRegistro {
char nombre[32];
int edad;
float altura;
};
int main() {
tipoRegistro pepe;
tipoRegistro pepe2;
ofstream fsalida("prueba.dat",
ios::out | ios::binary);
strcpy(pepe.nombre, "Jose Luis");
pepe.edad = 32;
pepe.altura = 1.78;
fsalida.write(reinterpret_cast<char *>(&pepe),
sizeof(tipoRegistro));
fsalida.close();
ifstream fentrada("prueba.dat",
ios::in | ios::binary);
fentrada.read(reinterpret_cast<char *>(&pepe2),
sizeof(tipoRegistro));
cout << pepe2.nombre << endl;
cout << pepe2.edad << endl;
cout << pepe2.altura << endl;
fentrada.close();
return 0;
}
Al declarar streams de las clases ofstream o ifstream y abrirlos en modo binario,
tenemos que añadir el valor ios::out e ios::in, respectivamente, al valor ios::binary.
Esto es necesario porque los valores por defecto para el modo son ios::out e ios:in,
también respectivamente, pero al añadir el flag ios::binary, el valor por defecto no se
tiene en cuenta.
Cuando trabajemos con streams binarios usaremos las funciones write y read. En este
caso nos permiten escribir y leer estructuras completas.
En general, cuando usemos estas funciones necesitaremos hacer un casting, es
recomendable usar el operador reinterpret_cast.
Ficheros de acceso aleatorio^
Hasta ahora sólo hemos trabajado con los ficheros secuencialmente, es decir,
empezamos a leer o a escribir desde el principio, y avanzamos a medida que leemos o
escribimos en ellos.
Otra característica importante de los ficheros es la posibilidad de trabajar con ellos
haciendo acceso aleatorio, es decir, poder hacer lecturas o escrituras en cualquier
punto del fichero. Para eso disponemos de las funciones seekp y seekg, que permiten
cambiar la posición del fichero en la que se hará la siguiente escritura o lectura. La 'p'
es de put y la 'g' de get, es decir escritura y lectura, respectivamente.
Otro par de funciones relacionadas con el acceso aleatorio son tellp y tellg, que sirven
para saber en qué posición del fichero nos encontramos.
#include <fstream>
using namespace std;
int main() {
int i;
char mes[][20] = {"Enero", "Febrero", "Marzo",
"Abril", "Mayo", "Junio", "Julio", "Agosto",
"Septiembre", "Octubre", "Noviembre",
"Diciembre"};
char cad[20];
ofstream fsalida("meses.dat",
ios::out | ios::binary);
// Crear fichero con los nombres de los meses:
cout << "Crear archivo de nombres de meses:" << endl;
for(i = 0; i < 12; i++)
fsalida.write(mes[i], 20);
fsalida.close();
ifstream fentrada("meses.dat", ios::in | ios::binary);
// Acceso secuencial:
cout << "nAcceso secuencial:" << endl;
fentrada.read(cad, 20);
do {
cout << cad << endl;
fentrada.read(cad, 20);
} while(!fentrada.eof());
fentrada.clear();
// Acceso aleatorio:
cout << "nAcceso aleatorio:" << endl;
for(i = 11; i >= 0; i--) {
fentrada.seekg(20*i, ios::beg);
fentrada.read(cad, 20);
cout << cad << endl;
}
// Calcular el número de elementos
// almacenados en un fichero:
// ir al final del fichero
fentrada.seekg(0, ios::end);
// leer la posición actual
pos = fentrada.tellg();
// El número de registros es el tamaño en
// bytes dividido entre el tamaño del registro:
cout << "nNúmero de registros: " << pos/20 << endl;
fentrada.close();
return 0;
}
La función seekg nos permite acceder a cualquier punto del fichero, no tiene por qué
ser exactamente al principio de un registro, la resolución de la funciones seek es de un
byte.
Cuando trabajemos con nuestros propios streams para nuestras clases, derivándolas
de ifstream, ofstream o fstream, es posible que nos convenga sobrecargar las
funciones seek y tell para que trabajen a nivel de registro, en lugar de hacerlo a nivel de
byte.
La función seekp nos permite sobrescribir o modificar registros en un fichero de acceso
aleatorio de salida. La función tellp es análoga a tellg, pero para ficheros de salida.
Ficheros de entrada y salida^
Ahora veremos cómo podemos trabajar con un stream simultáneamente en entrada y
salida.
Para eso usaremos la clase fstream, que al ser derivada de ifstream y ofstream,
dispone de todas las funciones necesarias para realizar cualquier operación de entrada
o salida.
Hay que tener la precaución de usar la opción ios::trunc de modo que el fichero sea
creado si no existe previamente.
#include <fstream>
using namespace std;
int main() {
char l;
long i, lon;
fstream fich("prueba.dat", ios::in |
ios::out | ios::trunc | ios::binary);
fich << "abracadabra" << flush;
fich.seekg(0L, ios::end);
lon = fich.tellg();
for(i = 0L; i < lon; i++) {
fich.seekg(i, ios::beg);
fich.get(l);
if(l == 'a') {
fich.seekp(i, ios::beg);
fich << 'e';
}
}
cout << "Salida:" << endl;
fich.seekg(0L, ios::beg);
for(i = 0L; i < lon; i++) {
fich.get(l);
cout << l;
}
cout << endl;
fich.close();
return 0;
}
Este programa crea un fichero con una palabra, a continuación lee todo el fichero e
cambia todos los caracteres 'a' por 'e'. Finalmente muestra el resultado.
Básicamente muestra cómo trabajar con ficheros simultáneamente en entrada y salida.
Sobrecarga de operadores << y >>^
Una de las principales ventajas de trabajar con streams es que nos permiten
sobrecargar los operadores << y >> para realizar salidas y entradas de nuestros
propios tipos de datos.
Por ejemplo, tenemos una clase:
#include <iostream>
#include <cstring>
using namespace std;
class Registro {
public:
Registro(char *, int, char *);
const char* LeeNombre() const {return nombre;}
int LeeEdad() const {return edad;}
const char* LeeTelefono() const {return telefono;}
private:
char nombre[64];
int edad;
char telefono[10];
};
Registro::Registro(char *n, int e, char *t) : edad(e) {
strcpy(nombre, n);
strcpy(telefono, t);
}
ostream& operator<<(ostream &os, Registro& reg) {
os << "Nombre: " << reg.LeeNombre() << "nEdad: " <<
reg.LeeEdad() << "nTelefono: " << reg.LeeTelefono();
return os;
}
int main() {
Registro Pepe((char*)"José", 32, (char*)"61545552");
cout << Pepe << endl;
return 0;
}
Comprobar estado de un stream^
Hay varios flags de estado que podemos usar para comprobar el estado en que se
encuentra un stream.
Concretamente nos puede interesar si hemos alcanzado el fin de fichero, o si el stream
con el que estamos trabajando está en un estado de error.
La función principal para esto es good(), de la clase ios.
Después de ciertas operaciones con streams, a menudo no es mala idea comprobar el
estado en que ha quedado el stream. Hay que tener en cuenta que ciertos estados de
error impiden que se puedan seguir realizando operaciones de entrada y salida.
Otras funciones útiles son fail(), eof(), bad(), rdstate() o clear().
En el ejemplo de archivos de acceso aleatorio hemos usado clear() para eliminar el bit
de estado eofbit del fichero de entrada, si no hacemos eso, las siguientes operaciones
de lectura fallarían.
Otra condición que conviene verificar es la existencia de un fichero. En los ejemplos
anteriores no ha sido necesario, aunque hubiera sido conveniente, verificar la
existencia, ya que el propio ejemplo crea el fichero que después lee.
Cuando vayamos a leer un fichero que no podamos estar seguros de que existe, o que
aunque exista pueda estar abierto por otro programa, debemos asegurarnos de que
nuestro programa tiene acceso al stream. Por ejemplo:
#include <fstream>
using namespace std;
int main() {
char mes[20];
ifstream fich("meses1.dat", ios::in | ios::binary);
// El fichero meses1.dat no existe, este programa es
// una prueba de los bits de estado.
if(fich.good()) {
fich.read(mes, 20);
cout << mes << endl;
}
else {
cout << "Fichero no disponible" << endl;
if(fich.fail()) cout << "Bit fail activo" << endl;
if(fich.eof()) cout << "Bit eof activo" << endl;
if(fich.bad()) cout << "Bit bad activo" << endl;
}
fich.close();
return 0;
}
Ejemplo de fichero previamente abierto:
#include <fstream>
using namespace std;
int main() {
char mes[20];
ofstream fich1("meses.dat", ios::out | ios::binary);
ifstream fich("meses.dat", ios::in | ios::binary);
// El fichero meses.dat existe, pero este programa
// intenta abrir dos streams al mismo fichero, uno en
// escritura y otro en lectura. Eso no es posible, se
// trata de una prueba de los bits de estado.
fich.read(mes, 20);
if(fich.good())
cout << mes << endl;
else {
cout << "Error al leer de Fichero" << endl;
if(fich.fail()) cout << "Bit fail activo" << endl;
if(fich.eof()) cout << "Bit eof activo" << endl;
if(fich.bad()) cout << "Bit bad activo" << endl;
}
fich.close();
fich1.close();
return 0;
}
Comentarios de los usuarios (18)
aJ
2011-03-21 19:31:45
Buenas,
En el ejemplo de Ficheros de acceso aleatorio me lanza error copilando con GNU GCC
Compliler y Visual C++ 2010, en la siguiente parte :
pos = fentrada.tellg();
Si alguien sabe la solución admin o cualquier otra persona estaré atento a los comentarios.
Saludos.
Steven
2011-03-21 22:48:14
Hola aJ,
Si el compilador te lanza un error, siempre ayuda escribir el mensaje, para los demás.
Hay dos errores y los mensajes lanzados son:
- 'cout' no fue declarado en este ámbito
- 'pos' no fue declarado en este ámbito
Para solucionar el problema de 'cout', incluimos <iostream> al principio:
#include <iostream>
Para 'pos', se nos ha olvidado definirla. Técnicamente, el tipo de dato correcto es 'streampos'.
Por lo tanto, escribimos lo siguiente:
streampos pos = fentrada.tellg();
En cuanto podamos, lo corregiremos. Espero haber aclarado la duda.
Steven
aJ
2011-03-22 01:17:45
Gracias otra ves Steven, ya aclare las dudas jejeje.
En esta parte se equivocaron con la tilde de la ú :
cout << "nNúmero de registros: " << pos/20 << endl;
Aunque no entorpece la funcionalidad del programa, aquí incluyo mi corrección :
cout << "nNxa3mero de registros : " << pos/20 << endl;
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
int main() {
char cadena[3128];
char linea[50][3000];
string texto;
string lineacadena;
int a=0;
int b=0;
// Crea un fichero de salida
cout <<"-------------------------------------n";
cout <<"Escribiendo y leyendo un ficheron";
cout <<"-------------------------------------n";
ofstream fs("nombre.txt");
char* mensaje="hola esto es un mensaje0";
char* mensaje2="hola 20";
char* mensaje3="un mensaje30";
cout << mensaje<<"n";
cout <<mensaje2<<"n";
cout <<mensaje3<<"n";
// Enviamos una cadena al fichero de salida:
fs << mensaje << endl;
fs << mensaje2 << endl;
fs << mensaje3 << endl;
// Cerrar el fichero,
// para luego poder abrirlo para lectura:
fs.close();
// Abre un fichero de entrada
ifstream fe("nombre.txt");
// Leeremos mediante getline, si lo hiciéramos
// mediante el operador << sólo leeríamos
// parte de la cadena:
cout <<"-------------------------------------n";
cout <<"nContenido del fichero:n";
cout <<"-------------------------------------n";
a=-1;
while (!fe.eof()){
fe.getline(cadena,3000);
a++;
string lineacadena (cadena); // añadido: convierto array de char a cadena
texto +=lineacadena + 'n'; // añado a la cadena texto.
strcat(linea[a],cadena); //añadido trabajando con cadenas
cout << cadena << endl; // añadido: escribo.
}
cout <<"-------------------------------------n";
cout <<"Contenido del fichero, en un array guardadon";
cout <<"-------------------------------------n";
for(b=0;b<=a;b++){
cout << linea[b];
cout << "n";
}
cout <<"----------------------------------------n";
cout <<"imprimo una cadenan";
cout <<"----------------------------------------n";
cout << texto;
//system ("PAUSE");
//EXIT_SUCCESS;
return 0;
}

Más contenido relacionado

La actualidad más candente

Tringulo de potencias
Tringulo de potenciasTringulo de potencias
Tringulo de potenciasjuan camilo
 
Trabajo familias logicas
Trabajo familias logicasTrabajo familias logicas
Trabajo familias logicaswm_black
 
Cuadro comparativo de familias logicas
Cuadro comparativo de familias logicasCuadro comparativo de familias logicas
Cuadro comparativo de familias logicasGermanGeorge
 
Recortadores Serie Y Paralelo
Recortadores Serie Y ParaleloRecortadores Serie Y Paralelo
Recortadores Serie Y ParaleloUisraelCircuitos
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comuniscped
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Jomicast
 
Amplificadores de potencia
Amplificadores de potenciaAmplificadores de potencia
Amplificadores de potenciaTensor
 
Configuración de polarización fija y la auto polarización en el JFET
Configuración de polarización fija y la auto polarización en el JFETConfiguración de polarización fija y la auto polarización en el JFET
Configuración de polarización fija y la auto polarización en el JFETVidalia Montserrat Colunga Ramirez
 
El transistor bjt
El transistor bjtEl transistor bjt
El transistor bjtFenix Alome
 

La actualidad más candente (20)

Transistor UJT
Transistor UJTTransistor UJT
Transistor UJT
 
Tringulo de potencias
Tringulo de potenciasTringulo de potencias
Tringulo de potencias
 
Trabajo familias logicas
Trabajo familias logicasTrabajo familias logicas
Trabajo familias logicas
 
3.3. Configuración en Base Común
3.3. Configuración en Base Común3.3. Configuración en Base Común
3.3. Configuración en Base Común
 
El diodo como sujetador
El diodo como sujetadorEl diodo como sujetador
El diodo como sujetador
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Cmos
CmosCmos
Cmos
 
Practica0,1,2,3,4
Practica0,1,2,3,4Practica0,1,2,3,4
Practica0,1,2,3,4
 
Cuadro comparativo de familias logicas
Cuadro comparativo de familias logicasCuadro comparativo de familias logicas
Cuadro comparativo de familias logicas
 
Recortadores Serie Y Paralelo
Recortadores Serie Y ParaleloRecortadores Serie Y Paralelo
Recortadores Serie Y Paralelo
 
Amplificador Operacional Lab Nº4
Amplificador Operacional Lab Nº4Amplificador Operacional Lab Nº4
Amplificador Operacional Lab Nº4
 
Amplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector ComunAmplificador en Base Comun y Colector Comun
Amplificador en Base Comun y Colector Comun
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
 
Temporizador(555 astable timer)
Temporizador(555 astable timer)Temporizador(555 astable timer)
Temporizador(555 astable timer)
 
Sesión 6: Teoría Básica de Transistores BJT
Sesión 6: Teoría Básica de Transistores BJTSesión 6: Teoría Básica de Transistores BJT
Sesión 6: Teoría Básica de Transistores BJT
 
Scr, triac y diac
Scr, triac y diacScr, triac y diac
Scr, triac y diac
 
Amplificadores de potencia
Amplificadores de potenciaAmplificadores de potencia
Amplificadores de potencia
 
tipos de tiristores
tipos de tiristores tipos de tiristores
tipos de tiristores
 
Configuración de polarización fija y la auto polarización en el JFET
Configuración de polarización fija y la auto polarización en el JFETConfiguración de polarización fija y la auto polarización en el JFET
Configuración de polarización fija y la auto polarización en el JFET
 
El transistor bjt
El transistor bjtEl transistor bjt
El transistor bjt
 

Destacado

Circuitos integrados (clasificación)
Circuitos integrados (clasificación)Circuitos integrados (clasificación)
Circuitos integrados (clasificación)Aldair Garrido
 
Presentacion Cmos
Presentacion CmosPresentacion Cmos
Presentacion Cmosandyupao
 
Implementación de circuitos digitales en la educación
Implementación de circuitos digitales en la educaciónImplementación de circuitos digitales en la educación
Implementación de circuitos digitales en la educaciónElvis Campaña
 
Cuadro comparativo de compuertas logicas
Cuadro comparativo de compuertas logicasCuadro comparativo de compuertas logicas
Cuadro comparativo de compuertas logicasLeoner Parra
 
Diodos - Luis Vidal Casazola
Diodos - Luis Vidal Casazola Diodos - Luis Vidal Casazola
Diodos - Luis Vidal Casazola LuisVidal225
 
Diferencias,ventajas y desventajas de un microprocesador
Diferencias,ventajas y desventajas de un microprocesadorDiferencias,ventajas y desventajas de un microprocesador
Diferencias,ventajas y desventajas de un microprocesadorJosefaYareni
 
Electronica digital, compuertas, tabla de verdad
Electronica digital, compuertas, tabla de verdadElectronica digital, compuertas, tabla de verdad
Electronica digital, compuertas, tabla de verdadAngel Rodriguez S
 
Circuito integrado 7486
Circuito integrado 7486Circuito integrado 7486
Circuito integrado 7486maria_amanta
 
FAMILIAS DE LOS TIPOS DE INTEGRADOS
FAMILIAS DE LOS TIPOS DE INTEGRADOSFAMILIAS DE LOS TIPOS DE INTEGRADOS
FAMILIAS DE LOS TIPOS DE INTEGRADOSCristian Peña
 
Situaciones que provocan voltajes anormales del complejo qrs
Situaciones que provocan voltajes anormales del complejo qrsSituaciones que provocan voltajes anormales del complejo qrs
Situaciones que provocan voltajes anormales del complejo qrsVianey Montes
 
Cuadro Comparativo entre las familias lógicas
Cuadro Comparativo entre las familias lógicasCuadro Comparativo entre las familias lógicas
Cuadro Comparativo entre las familias lógicasmariennyysea
 
Aplicaciones transistor
Aplicaciones transistorAplicaciones transistor
Aplicaciones transistorkalel32291
 
Cuadro de comparación de familias lógicas gilber
Cuadro de comparación de familias lógicas   gilberCuadro de comparación de familias lógicas   gilber
Cuadro de comparación de familias lógicas gilberGilber Briceño
 

Destacado (20)

Familias ttl y cmos
Familias ttl y cmosFamilias ttl y cmos
Familias ttl y cmos
 
Familias lógicas digitales
Familias lógicas digitalesFamilias lógicas digitales
Familias lógicas digitales
 
Manual ttl esp
Manual ttl espManual ttl esp
Manual ttl esp
 
Circuitos integrados (clasificación)
Circuitos integrados (clasificación)Circuitos integrados (clasificación)
Circuitos integrados (clasificación)
 
Presentacion Cmos
Presentacion CmosPresentacion Cmos
Presentacion Cmos
 
Implementación de circuitos digitales en la educación
Implementación de circuitos digitales en la educaciónImplementación de circuitos digitales en la educación
Implementación de circuitos digitales en la educación
 
Cuadro comparativo de compuertas logicas
Cuadro comparativo de compuertas logicasCuadro comparativo de compuertas logicas
Cuadro comparativo de compuertas logicas
 
Diodos - Luis Vidal Casazola
Diodos - Luis Vidal Casazola Diodos - Luis Vidal Casazola
Diodos - Luis Vidal Casazola
 
Diferencias,ventajas y desventajas de un microprocesador
Diferencias,ventajas y desventajas de un microprocesadorDiferencias,ventajas y desventajas de un microprocesador
Diferencias,ventajas y desventajas de un microprocesador
 
Bajo voltaje (lvt, lv, lvc
Bajo voltaje (lvt, lv, lvcBajo voltaje (lvt, lv, lvc
Bajo voltaje (lvt, lv, lvc
 
Electronica digital, compuertas, tabla de verdad
Electronica digital, compuertas, tabla de verdadElectronica digital, compuertas, tabla de verdad
Electronica digital, compuertas, tabla de verdad
 
Compuertas logicas
Compuertas logicasCompuertas logicas
Compuertas logicas
 
Circuito integrado 7486
Circuito integrado 7486Circuito integrado 7486
Circuito integrado 7486
 
Fotorresistencia ( ldr)
Fotorresistencia ( ldr)Fotorresistencia ( ldr)
Fotorresistencia ( ldr)
 
FAMILIAS DE LOS TIPOS DE INTEGRADOS
FAMILIAS DE LOS TIPOS DE INTEGRADOSFAMILIAS DE LOS TIPOS DE INTEGRADOS
FAMILIAS DE LOS TIPOS DE INTEGRADOS
 
Situaciones que provocan voltajes anormales del complejo qrs
Situaciones que provocan voltajes anormales del complejo qrsSituaciones que provocan voltajes anormales del complejo qrs
Situaciones que provocan voltajes anormales del complejo qrs
 
Cuadro Comparativo entre las familias lógicas
Cuadro Comparativo entre las familias lógicasCuadro Comparativo entre las familias lógicas
Cuadro Comparativo entre las familias lógicas
 
Aplicaciones transistor
Aplicaciones transistorAplicaciones transistor
Aplicaciones transistor
 
Cuadro de comparación de familias lógicas gilber
Cuadro de comparación de familias lógicas   gilberCuadro de comparación de familias lógicas   gilber
Cuadro de comparación de familias lógicas gilber
 
Familias Lógicas
Familias LógicasFamilias Lógicas
Familias Lógicas
 

Similar a Aplicaciones del Circuito TTL

FAMILIAS LÓGICAS DE C. INTEGRADOS
FAMILIAS LÓGICAS DE C. INTEGRADOSFAMILIAS LÓGICAS DE C. INTEGRADOS
FAMILIAS LÓGICAS DE C. INTEGRADOSJulian Hincapie
 
Familas logicas de circuitos integrados
Familas logicas de circuitos integradosFamilas logicas de circuitos integrados
Familas logicas de circuitos integradosJULIETHOJEDA
 
Familias lógicas de circuitos integrados
Familias lógicas de circuitos integradosFamilias lógicas de circuitos integrados
Familias lógicas de circuitos integrados07051999avella
 
Familias de diferentes tipos de integrados.
Familias de diferentes tipos de integrados.Familias de diferentes tipos de integrados.
Familias de diferentes tipos de integrados.shanidtorres
 
Familias lógicas - Dareinys Rivero
Familias lógicas - Dareinys RiveroFamilias lógicas - Dareinys Rivero
Familias lógicas - Dareinys Riverodareinys Rivero
 
Arquitectura - Circuito Integral
Arquitectura - Circuito IntegralArquitectura - Circuito Integral
Arquitectura - Circuito IntegralAndreinaCano
 
Familias logicas de circuitos integrados
Familias logicas de circuitos integradosFamilias logicas de circuitos integrados
Familias logicas de circuitos integradosMarioSanabria98
 
Presentación familias lógicas ( electrónica digital )
Presentación familias lógicas  ( electrónica digital )Presentación familias lógicas  ( electrónica digital )
Presentación familias lógicas ( electrónica digital )Carlos Gascón
 
Presentación familias lógicas ( electrónica digital )
Presentación familias lógicas  ( electrónica digital )Presentación familias lógicas  ( electrónica digital )
Presentación familias lógicas ( electrónica digital )Carlos Gascón
 
Presentación familias lógicas ( electrónica digital )
Presentación familias lógicas  ( electrónica digital )Presentación familias lógicas  ( electrónica digital )
Presentación familias lógicas ( electrónica digital )Carlos Gascón
 
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS MarioSanabria98
 
Circuitos integrados digitales
Circuitos integrados digitalesCircuitos integrados digitales
Circuitos integrados digitalesOmar Serrano
 
Circuitos Integrados
Circuitos IntegradosCircuitos Integrados
Circuitos Integradossicevi
 
Revista "La Ciencia de la Ingeniería al descubierto."
Revista "La Ciencia de la Ingeniería al descubierto."Revista "La Ciencia de la Ingeniería al descubierto."
Revista "La Ciencia de la Ingeniería al descubierto."PamelaSalazar32
 
Presentación del glosario las familias logicas de julio rojas
Presentación del glosario las familias logicas de julio rojasPresentación del glosario las familias logicas de julio rojas
Presentación del glosario las familias logicas de julio rojasJulio César Rojas Maza
 
Circuitos integrados
Circuitos integradosCircuitos integrados
Circuitos integradosJimmy Reyes
 

Similar a Aplicaciones del Circuito TTL (20)

Tipos De Integrados.
Tipos De Integrados.Tipos De Integrados.
Tipos De Integrados.
 
FAMILIAS LÓGICAS DE C. INTEGRADOS
FAMILIAS LÓGICAS DE C. INTEGRADOSFAMILIAS LÓGICAS DE C. INTEGRADOS
FAMILIAS LÓGICAS DE C. INTEGRADOS
 
Familas logicas de circuitos integrados
Familas logicas de circuitos integradosFamilas logicas de circuitos integrados
Familas logicas de circuitos integrados
 
Familias lógicas de circuitos integrados
Familias lógicas de circuitos integradosFamilias lógicas de circuitos integrados
Familias lógicas de circuitos integrados
 
Familiaslogicas
FamiliaslogicasFamiliaslogicas
Familiaslogicas
 
Familias de diferentes tipos de integrados.
Familias de diferentes tipos de integrados.Familias de diferentes tipos de integrados.
Familias de diferentes tipos de integrados.
 
Familias lógicas - Dareinys Rivero
Familias lógicas - Dareinys RiveroFamilias lógicas - Dareinys Rivero
Familias lógicas - Dareinys Rivero
 
Arquitectura - Circuito Integral
Arquitectura - Circuito IntegralArquitectura - Circuito Integral
Arquitectura - Circuito Integral
 
Familias logicas revista
Familias logicas revistaFamilias logicas revista
Familias logicas revista
 
Familias logicas de circuitos integrados
Familias logicas de circuitos integradosFamilias logicas de circuitos integrados
Familias logicas de circuitos integrados
 
Presentación familias lógicas ( electrónica digital )
Presentación familias lógicas  ( electrónica digital )Presentación familias lógicas  ( electrónica digital )
Presentación familias lógicas ( electrónica digital )
 
Presentación familias lógicas ( electrónica digital )
Presentación familias lógicas  ( electrónica digital )Presentación familias lógicas  ( electrónica digital )
Presentación familias lógicas ( electrónica digital )
 
Presentación familias lógicas ( electrónica digital )
Presentación familias lógicas  ( electrónica digital )Presentación familias lógicas  ( electrónica digital )
Presentación familias lógicas ( electrónica digital )
 
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
 
Circuitos integrados digitales
Circuitos integrados digitalesCircuitos integrados digitales
Circuitos integrados digitales
 
Circuitos Integrados
Circuitos IntegradosCircuitos Integrados
Circuitos Integrados
 
Ctos Integrados
Ctos IntegradosCtos Integrados
Ctos Integrados
 
Revista "La Ciencia de la Ingeniería al descubierto."
Revista "La Ciencia de la Ingeniería al descubierto."Revista "La Ciencia de la Ingeniería al descubierto."
Revista "La Ciencia de la Ingeniería al descubierto."
 
Presentación del glosario las familias logicas de julio rojas
Presentación del glosario las familias logicas de julio rojasPresentación del glosario las familias logicas de julio rojas
Presentación del glosario las familias logicas de julio rojas
 
Circuitos integrados
Circuitos integradosCircuitos integrados
Circuitos integrados
 

Último

Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfapunteshistoriamarmo
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxroberthirigoinvasque
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOluismii249
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfAlfaresbilingual
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfGruberACaraballo
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfJonathanCovena1
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxlclcarmen
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCCarlosEduardoSosa2
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024IES Vicent Andres Estelles
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 

Último (20)

Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Infografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdfInfografía EE con pie del 2023 (3)-1.pdf
Infografía EE con pie del 2023 (3)-1.pdf
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024Tema 10. Dinámica y funciones de la Atmosfera 2024
Tema 10. Dinámica y funciones de la Atmosfera 2024
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 

Aplicaciones del Circuito TTL

  • 1. Aplicaciones  Microprocesadores, como el 8X300, de Signetics, la familia 2900 de AMD y otros.  Memorias RAM  Memorias PROM  PAL, Programmable Array Logic, consistente en una PROM que interconecta las entradas y cierto número de puertas lógicas. Implementación Fundamental compuerta TTL Entradas TTL son los emisores de un transistor de emisor múltiple. Esta estructura IC es funcionalmente equivalente a múltiples transistores en las bases y los coleccionistas están vinculados entre sí. La salida está amortiguada por un amplificador de emisor común. Entradas tanto los lógicos. Cuando todas las entradas se llevan a cabo en alta tensión, las uniones base-emisor del transistor de emisor múltiple son en polarización inversa. A diferencia de DTL, una pequeña corriente "colector" es dibujado por cada una de las entradas. Esto es debido a que el transistor está en modo inverso-activo. Un aproximadamente constante la corriente fluye desde el carril positivo, a través de la resistencia y en la base del transistor de emisor múltiple. Esta corriente pasa a través de la unión base-emisor del transistor de salida, lo que le permite llevar a cabo y tirando de la baja tensión de salida. Un cero lógico de entrada. Tenga en cuenta que la unión base-colector del transistor de emisor múltiple y la unión base-emisor del transistor de salida están en serie entre la parte inferior de la resistencia y tierra. Si una tensión de entrada se convierte en cero, la correspondiente unión base-emisor del transistor de emisor múltiple es en paralelo con estos dos uniones. Un fenómeno llamado actual de la dirección significa que cuando dos elementos de tensión-estables con diferentes voltajes de umbral están conectados en paralelo, la corriente fluye a través de la ruta de acceso con la tensión de umbral más pequeño. Como resultado de ello, no fluye corriente a través de la base del transistor de salida, haciendo que se detenga la realización y la tensión de salida se convierte en alta. Durante la transición del transistor de entrada es brevemente en su región activa, por lo que atrae a una gran cantidad de corriente lejos de la base del transistor de salida y se descarga por lo tanto, directamente a su base. Esta es una ventaja crítica de TTL sobre DTL que acelera la transición sobre una estructura de entrada de diodos. La principal desventaja de TTL con una etapa de salida simple es la relativamente alta resistencia de salida en la salida lógica "1" que está completamente determinada por la resistencia del colector de salida. Limita el número de entradas que se pueden conectar.
  • 2. Algunos ventaja de la etapa de salida simple es el nivel de alta tensión de la salida lógica "1" cuando no se ha cargado la salida. La lógica de este tipo se encuentra con más frecuencia con la resistencia de colector del transistor de salida se omite, toma de una salida de colector abierto. Esto permite al diseñador de fabricar la lógica mediante la conexión de las salidas de colector abierto de varias puertas lógicas, y brindar una resistencia pull-up externa. Si alguna de las puertas de la lógica se vuelve lógico bajo, la salida combinada será baja. Ejemplos de este tipo de puerta son el 7401 y 7403 series. TTL con una etapa de salida "tótem" Para resolver el problema con la alta resistencia de salida de la etapa de salida sencilla la segunda esquemática añade a esto una salida "tótem". Se compone de los dos transistores npn V3 y V4, el "trabajo" diodo V5 y la resistencia de limitación de corriente R3. Es impulsado por la aplicación de la misma idea actual de la dirección que el anterior. Cuando V2 es "off", V4 es "off", así y V3 opera en la región activa como un seguidor de tensión produce alta tensión de salida. Cuando V2 es "on", se activa V4, la conducción bajo voltaje a la salida. Uniones colector-emisor V2 y V4 V4 conectan unión base-emisor en paralelo a la serie V3-conectado base-emisor y V5 uniones ánodo-cátodo. Corriente de base V3 es privado, el transistor se pone en "off" y no tiene impacto en el resultado. En el medio de la transición, la resistencia R3 limita la corriente que fluye directamente a través de la serie V3 conectado transistor, diodo y el transistor V4 V5 que están llevando a cabo todo. También limita la salida de corriente en el caso de salida de conexión lógica "1" y corta al suelo. La fuerza de la puerta se puede incrementar sin afectar proporcionalmente el consumo de energía mediante la eliminación de la pull-up y pull-down resistencias de la etapa de salida. La principal ventaja de la TTL con una etapa de salida "tótem" es la baja resistencia de salida en salida lógica "1". Está determinada por la parte superior del transistor de salida V3 de funcionamiento en la región activa como un seguidor de tensión. La resistencia R3 no aumenta la resistencia de salida, ya que está conectada en el colector V3 y su influencia se compensa por la retroalimentación negativa. Una desventaja de la etapa de salida "tótem" es la disminución del nivel de tensión de la salida lógica "1". La razón de esta reducción son las caídas de voltaje en la base-emisor V3 y V5 uniones ánodo-cátodo. Consideraciones Interfacing Como DTL, TTL es una lógica de sumidero de corriente ya una corriente deben extraerse de las entradas para llevarlos a un nivel de 0 lógico. En bajo voltaje de entrada, la entrada de
  • 3. corriente fuentes TTL que debe ser absorbida por la etapa anterior. El valor máximo de esta corriente es aproximadamente 1,6 mA para una compuerta TTL estándar. La fuente de entrada tiene que ser de baja resistencia suficiente para que la corriente que fluye crea sólo una caída de tensión insignificante a través de ella, para la entrada para ser considerado como un "0" lógico. Entradas TTL a veces se dejan simplemente flotando para proporcionar un "1" lógico, aunque no se recomienda este uso. Circuitos TTL estándar funcionan con una fuente de alimentación de 5 voltios. Una señal de entrada TTL se define como "bajo" cuando entre 0 V y 0,8 V con respecto al terminal de tierra, y "alta" cuando entre 2,2 V y 5 V. salidas TTL son típicamente restringido a los límites más estrechos de entre 0 V y 0,4 V para una "baja" y entre 2,6 V y 5 V para un "alto", proporcionando 0,4 V de inmunidad al ruido. Normalización de los niveles TTL era tan omnipresente que las placas de circuitos complejos a menudo contenían chips TTL hechas por muchos fabricantes diferentes seleccionados disponibilidad y coste, la compatibilidad está asegurada, dos unidades de placa de circuito fuera de la misma línea de montaje en diferentes días o semanas sucesivas pueden tener un diferente mezcla de las marcas de fichas en las mismas posiciones en el tablero, de la reparación era posible con chips fabricados años más tarde que los componentes originales. Dentro de los límites útil amplios, puertas lógicas podían ser tratadas como dispositivos booleanas ideales sin preocuparse por las limitaciones eléctricas. En algunos casos, el nivel de tensión de la etapa de salida "tótem" en la salida lógica "1" se puede aumentar hasta a VCC mediante la conexión de una resistencia externa entre el colector V3 y el carril positivo. Se detiene en el cátodo V5 y los recortes-off del diodo. Sin embargo, esta técnica se convierte en realidad el sofisticado salida "tótem" en una etapa de salida sencilla que tiene una resistencia de salida importante cuando se conduce un alto nivel. Embalaje Al igual que la mayoría de los circuitos integrados del período 1965-1990, los dispositivos TTL suelen ser envasados en orificio pasante, paquetes duales en línea con entre 14 y 24 hilos conductores, por lo general de plástico o epoxi veces de cerámica. Beam-dados de chips sin plomo paquetes se hicieron para el montaje en matrices más grandes como los circuitos integrados híbridos. Piezas para aplicaciones militares y aeroespaciales fueron empaquetados en paquetes planos, una forma de paquete de montaje en superficie, con conduce adecuado para la soldadura o soldadura para placas de circuito impreso. Hoy en día, muchos dispositivos compatibles con TTL están disponibles en paquetes de montaje en superficie, que están disponibles en una gama más amplia de tipos de paquetes a través del agujero.
  • 4. TTL se adapta particularmente bien a los circuitos integrados bipolares porque entradas adicionales a una puerta sólo se pide emisores adicionales en una región de base compartido del transistor de entrada. Si se utilizan transistores empaquetados individualmente, el coste de todos los transistores desanimaría a uno del uso de una estructura de este tipo de entrada. Pero en un circuito integrado, los emisores adicionales para entradas de la puerta adicionales añaden sólo un área pequeña. Comparación con otras familias lógicas Dispositivos TTL consumen mucho más energía que los dispositivos CMOS equivalente en reposo, pero el consumo de energía no aumenta con la velocidad de reloj mayor rapidez para dispositivos CMOS. En comparación con los circuitos ECL contemporáneos, TTL utiliza menos energía y tiene reglas de diseño más fácil, pero es sustancialmente más lenta. Los diseñadores pueden combinar dispositivos TTL ECL y en el mismo sistema para lograr el mejor rendimiento global y la economía, pero se requiere que los dispositivos de desplazamiento de nivel entre las dos familias lógicas. TTL es menos sensible a los daños causados por la descarga electrostática que los dispositivos de primeros CMOS. Debido a la estructura de salida de los dispositivos TTL, la impedancia de salida es asimétrico entre el estado alto y bajo, que los hace inadecuados para la conducción de líneas de transmisión. Este inconveniente se suele superar al amortiguar las salidas con dispositivos de controlador de línea especiales donde deben enviarse a través de cables de señales. ECL, en virtud de su estructura de salida de baja impedancia simétrica, no tiene este inconveniente. La estructura de salida TTL "tótem" a menudo tiene un solapamiento momentáneos cuando tanto los transistores superior e inferior están llevando a cabo, lo que resulta en un impulso sustancial de corriente extraída de la fuente de alimentación. Estos pulsos se puede acoplar de manera inesperada entre varios paquetes de circuitos integrados, lo que resulta en una reducción de margen de ruido y menor rendimiento. Sistemas TTL por lo general tienen un condensador de desacoplamiento para cada uno o dos paquetes de circuitos integrados, de modo que un impulso de corriente de un chip TTL no reduce momentáneamente la tensión de alimentación a otra. Varios fabricantes ya suministran CMOS equivalentes lógicos con los niveles de entrada compatible con TTL y la salida, generalmente teniendo referencias similares al componente TTL equivalente y con la misma asignación de señales. Por ejemplo, la serie 74HCT00 ofrece muchos reemplazos directos para piezas bipolares serie 7400, pero utiliza la tecnología CMOS.
  • 5. Sub-tipos Las sucesivas generaciones de la tecnología producen piezas compatibles con la mejora de consumo de energía o velocidad de conmutación, o ambos. Aunque los vendedores uniformemente comercializan estas diversas líneas de productos como TTL con diodos Schottky, algunos de los circuitos subyacentes, tales como las usadas en la familia LS, en lugar podría considerarse DTL. Las variaciones de y sucesores a la familia TTL básica, que tiene un retardo de propagación típica puerta de 10 ns y una disipación de potencia de 10 mW por puerta, para un producto de alimentación de retardo o de la energía de conmutación de aproximadamente 100 PJ, incluyen:  Baja potencia TTL, que cambió la velocidad de conmutación para una reducción en el consumo de energía  De alta velocidad TTL, con cambio rápido que el estándar TTL, pero significativamente mayor disipación de potencia  Schottky TTL, introducido en 1969, que utiliza diodos Schottky abrazaderas en entradas de la puerta para evitar el almacenamiento de carga y mejorar el tiempo de conmutación. Estas puertas operado más rápidamente, pero tuvieron mayor disipación de potencia  Baja potencia Schottky TTL - utilizado los valores de resistencia más altas de baja potencia TTL y los diodos de Schottky para proporcionar una buena combinación de velocidad y menor consumo de energía, y PDP de 20 PJ. Probablemente el tipo más común de TTL, éstos se utilizaron como lógica de cola en microordenadores, en sustitución de esencialmente la antigua H, L, y S sub-familias.  Variantes Rápido y Avanzado-Schottky de LS de Fairchild y TI, respectivamente, alrededor de 1985, con circuitos de "Miller-killer" para acelerar la transición baja a alta. Estas familias lograron PDP de 10 PJ y 4 PJ, respectivamente, el más bajo de todas las familias TTL.  TTL de baja tensión para fuentes de alimentación de 3,3 voltios, interfaces de memoria. La mayoría de los fabricantes ofrecen gamas de temperaturas comerciales e extendido: por ejemplo, piezas de la serie de Texas Instruments 7400 se han valorado de 0 a 70 º C, y los dispositivos de la serie 5400 en el rango de temperatura militar especificación de -55 a 125 C. Niveles especiales de calidad y piezas de alta fiabilidad están disponibles para aplicaciones militares y aeroespaciales.
  • 6. Dispositivos endurecidas a las radiaciones se ofrecen para aplicaciones espaciales. Aplicaciones Antes de la llegada de los dispositivos VLSI, circuitos integrados TTL eran un método estándar de construcción para los procesadores de los procesadores de mini-ordenador y la unidad central, tales como el DEC VAX y Data General Eclipse, y por equipos, tales como controles de máquina herramienta numéricos, impresoras y video mostrar terminales. Como microprocesadores hicieron más funcional, los dispositivos TTL se volvieron importantes para aplicaciones de "pegamento" de lógica, como los conductores de autobuses rápidos en una placa base, que unen a los bloques de funciones realizadas en elementos VLSI. Aplicaciones analógicas Aunque originalmente diseñado para manejar señales digitales de nivel lógico, un inversor TTL puede estar sesgada como un amplificador analógico. Conexión de una resistencia entre la salida y los sesgos de entrada del elemento TTL como amplificador de retroalimentación negativa. Estos amplificadores pueden ser útiles para convertir las señales analógicas al dominio digital, pero no se utiliza normalmente donde la amplificación analógica es el propósito principal. Inversores TTL también pueden ser utilizados en los osciladores de cristal en los que su capacidad de amplificación analógica es significativa.  Corrección de errores, ¿Cómo funciona?, Un promedio de ruido para reducir los errores, Tipos de FEC, Códigos FEC concatenados para mejorar el rendimiento, Baja densidad de comprobación de paridad, Códigos de Turbo, Decodificación y pruebas de los códigos locales, Intercalado, Lista de códigos correctores de errores  Batalla de Sagrajas, Preparativos, Batalla, Secuelas  Hidruro de uranio, Propiedades, Formación de uranio metálico, Otras reacciones químicas, Historia, Aplicaciones  Jerome Isaac Friedman, Vida y carrera, Publicaciones  Heinrich Otto Wieland, Familia, Premio Heinrich Wieland  McDonnell Douglas F/A-18 Hornet, Desarrollo, Diseño, Historia operacional, Variantes, Operadores, Aviones en exhibición, Accidentes, Especificaciones, Apariciones notables en los medios de comunicación  Yevgeny Pepelyaev, Inicios de su carrera y la Segunda Guerra Mundial, Corea
  • 7.  Imagen de alto rango dinámico, Fotografía, Escaneo de película, En representación de imágenes HDR a LDR pantallas, Comparación con imágenes digitales tradicionales, Historia de la fotografía HDR, Vídeo, Ejemplos, Galería  Sulfuro de cadmio, Producción, Reacciones, Estructura y propiedades físicas, Aplicaciones, Biológico  Roundhay Garden Scene, Imágenes Remastered  Philip Showalter Hench, Primeros años y educación, Carrera médica, Familia  La Facultad, Parcela, Emitir, Producción, Recepción, Banda sonora, Locaciones de Filmación, Lanzamiento en DVD, Blu-ray  Filtro de densidad neutra, Mecanismo, Utiliza, Variedades, Tipos de filtros ND  Los sellos y la historia postal de Heligoland, Enteros postales  Motor Retroceso, #include <iostream> #include <fstream> using namespace std; int main() { char cadena[128]; // Crea un fichero de salida ofstream fs("nombre.txt"); // Enviamos una cadena al fichero de salida: fs << "Hola, mundo" << endl; // Cerrar el fichero, // para luego poder abrirlo para lectura: fs.close(); // Abre un fichero de entrada ifstream fe("nombre.txt"); // Leeremos mediante getline, si lo hiciéramos // mediante el operador << sólo leeríamos // parte de la cadena: fe.getline(cadena, 128); cout << cadena << endl; return 0; }
  • 8. Este sencillo ejemplo crea un fichero de texto y después visualiza su contenido en pantalla. Veamos otro ejemplo sencillo, para ilustrar algunas limitaciones del operador >> para hacer lecturas, cuando no queremos perder caracteres. Supongamos que llamamos a este programa "streams.cpp", y que pretendemos que se autoimprima en pantalla: #include <iostream> #include <fstream> using namespace std; int main() { char cadena[128]; ifstream fe("streams.cpp"); while(!fe.eof()) { fe >> cadena; cout << cadena << endl; } fe.close(); return 0; } Muchos sistemas operativos distinguen entre ficheros de texto y ficheros binarios. Por ejemplo, en MS-DOS, los ficheros de texto sólo permiten almacenar caracteres. En otros sistemas no existe tal distinción, todos los ficheros son binarios. En esencia esto es más correcto, puesto que un fichero de texto es un fichero binario con un rango limitado para los valores que puede almacenar. En general, usaremos ficheros de texto para almacenar información que pueda o deba ser manipulada con un editor de texto. Un ejemplo es un fichero fuente C++. Los ficheros binarios son más útiles para guardar información cuyos valores no estén limitados. Por ejemplo, para almacenar imágenes, o bases de datos. Un fichero binario permite almacenar estructuras completas, en las que se mezclen datos de cadenas con datos numéricos. En realidad no hay nada que nos impida almacenar cualquier valor en un fichero de texto, el problema surge cuando se almacena el valor que el sistema operativo usa para marcar el fin de fichero en un archivo de texto. En MS-DOS ese valor es 0x1A. Si abrimos un fichero en modo de texto que contenga un dato con ese valor, no nos será posible leer ningún dato a partir de esa posición. Si lo abrimos en modo binario, ese problema no existirá. Los ficheros que hemos usado en los ejemplos anteriores son en modo texto, veremos ahora un ejemplo en modo binario: #include <iostream> #include <fstream>
  • 9. #include <cstring> using namespace std; struct tipoRegistro { char nombre[32]; int edad; float altura; }; int main() { tipoRegistro pepe; tipoRegistro pepe2; ofstream fsalida("prueba.dat", ios::out | ios::binary); strcpy(pepe.nombre, "Jose Luis"); pepe.edad = 32; pepe.altura = 1.78; fsalida.write(reinterpret_cast<char *>(&pepe), sizeof(tipoRegistro)); fsalida.close(); ifstream fentrada("prueba.dat", ios::in | ios::binary); fentrada.read(reinterpret_cast<char *>(&pepe2), sizeof(tipoRegistro)); cout << pepe2.nombre << endl; cout << pepe2.edad << endl; cout << pepe2.altura << endl; fentrada.close(); return 0; } Al declarar streams de las clases ofstream o ifstream y abrirlos en modo binario, tenemos que añadir el valor ios::out e ios::in, respectivamente, al valor ios::binary. Esto es necesario porque los valores por defecto para el modo son ios::out e ios:in, también respectivamente, pero al añadir el flag ios::binary, el valor por defecto no se tiene en cuenta. Cuando trabajemos con streams binarios usaremos las funciones write y read. En este caso nos permiten escribir y leer estructuras completas. En general, cuando usemos estas funciones necesitaremos hacer un casting, es recomendable usar el operador reinterpret_cast. Ficheros de acceso aleatorio^
  • 10. Hasta ahora sólo hemos trabajado con los ficheros secuencialmente, es decir, empezamos a leer o a escribir desde el principio, y avanzamos a medida que leemos o escribimos en ellos. Otra característica importante de los ficheros es la posibilidad de trabajar con ellos haciendo acceso aleatorio, es decir, poder hacer lecturas o escrituras en cualquier punto del fichero. Para eso disponemos de las funciones seekp y seekg, que permiten cambiar la posición del fichero en la que se hará la siguiente escritura o lectura. La 'p' es de put y la 'g' de get, es decir escritura y lectura, respectivamente. Otro par de funciones relacionadas con el acceso aleatorio son tellp y tellg, que sirven para saber en qué posición del fichero nos encontramos. #include <fstream> using namespace std; int main() { int i; char mes[][20] = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}; char cad[20]; ofstream fsalida("meses.dat", ios::out | ios::binary); // Crear fichero con los nombres de los meses: cout << "Crear archivo de nombres de meses:" << endl; for(i = 0; i < 12; i++) fsalida.write(mes[i], 20); fsalida.close(); ifstream fentrada("meses.dat", ios::in | ios::binary); // Acceso secuencial: cout << "nAcceso secuencial:" << endl; fentrada.read(cad, 20); do { cout << cad << endl; fentrada.read(cad, 20); } while(!fentrada.eof()); fentrada.clear(); // Acceso aleatorio: cout << "nAcceso aleatorio:" << endl; for(i = 11; i >= 0; i--) { fentrada.seekg(20*i, ios::beg); fentrada.read(cad, 20); cout << cad << endl; } // Calcular el número de elementos // almacenados en un fichero: // ir al final del fichero
  • 11. fentrada.seekg(0, ios::end); // leer la posición actual pos = fentrada.tellg(); // El número de registros es el tamaño en // bytes dividido entre el tamaño del registro: cout << "nNúmero de registros: " << pos/20 << endl; fentrada.close(); return 0; } La función seekg nos permite acceder a cualquier punto del fichero, no tiene por qué ser exactamente al principio de un registro, la resolución de la funciones seek es de un byte. Cuando trabajemos con nuestros propios streams para nuestras clases, derivándolas de ifstream, ofstream o fstream, es posible que nos convenga sobrecargar las funciones seek y tell para que trabajen a nivel de registro, en lugar de hacerlo a nivel de byte. La función seekp nos permite sobrescribir o modificar registros en un fichero de acceso aleatorio de salida. La función tellp es análoga a tellg, pero para ficheros de salida. Ficheros de entrada y salida^ Ahora veremos cómo podemos trabajar con un stream simultáneamente en entrada y salida. Para eso usaremos la clase fstream, que al ser derivada de ifstream y ofstream, dispone de todas las funciones necesarias para realizar cualquier operación de entrada o salida. Hay que tener la precaución de usar la opción ios::trunc de modo que el fichero sea creado si no existe previamente. #include <fstream> using namespace std; int main() { char l; long i, lon; fstream fich("prueba.dat", ios::in | ios::out | ios::trunc | ios::binary); fich << "abracadabra" << flush; fich.seekg(0L, ios::end); lon = fich.tellg(); for(i = 0L; i < lon; i++) { fich.seekg(i, ios::beg); fich.get(l); if(l == 'a') { fich.seekp(i, ios::beg); fich << 'e'; }
  • 12. } cout << "Salida:" << endl; fich.seekg(0L, ios::beg); for(i = 0L; i < lon; i++) { fich.get(l); cout << l; } cout << endl; fich.close(); return 0; } Este programa crea un fichero con una palabra, a continuación lee todo el fichero e cambia todos los caracteres 'a' por 'e'. Finalmente muestra el resultado. Básicamente muestra cómo trabajar con ficheros simultáneamente en entrada y salida. Sobrecarga de operadores << y >>^ Una de las principales ventajas de trabajar con streams es que nos permiten sobrecargar los operadores << y >> para realizar salidas y entradas de nuestros propios tipos de datos. Por ejemplo, tenemos una clase: #include <iostream> #include <cstring> using namespace std; class Registro { public: Registro(char *, int, char *); const char* LeeNombre() const {return nombre;} int LeeEdad() const {return edad;} const char* LeeTelefono() const {return telefono;} private: char nombre[64]; int edad; char telefono[10]; }; Registro::Registro(char *n, int e, char *t) : edad(e) { strcpy(nombre, n); strcpy(telefono, t); } ostream& operator<<(ostream &os, Registro& reg) { os << "Nombre: " << reg.LeeNombre() << "nEdad: " << reg.LeeEdad() << "nTelefono: " << reg.LeeTelefono(); return os; }
  • 13. int main() { Registro Pepe((char*)"José", 32, (char*)"61545552"); cout << Pepe << endl; return 0; } Comprobar estado de un stream^ Hay varios flags de estado que podemos usar para comprobar el estado en que se encuentra un stream. Concretamente nos puede interesar si hemos alcanzado el fin de fichero, o si el stream con el que estamos trabajando está en un estado de error. La función principal para esto es good(), de la clase ios. Después de ciertas operaciones con streams, a menudo no es mala idea comprobar el estado en que ha quedado el stream. Hay que tener en cuenta que ciertos estados de error impiden que se puedan seguir realizando operaciones de entrada y salida. Otras funciones útiles son fail(), eof(), bad(), rdstate() o clear(). En el ejemplo de archivos de acceso aleatorio hemos usado clear() para eliminar el bit de estado eofbit del fichero de entrada, si no hacemos eso, las siguientes operaciones de lectura fallarían. Otra condición que conviene verificar es la existencia de un fichero. En los ejemplos anteriores no ha sido necesario, aunque hubiera sido conveniente, verificar la existencia, ya que el propio ejemplo crea el fichero que después lee. Cuando vayamos a leer un fichero que no podamos estar seguros de que existe, o que aunque exista pueda estar abierto por otro programa, debemos asegurarnos de que nuestro programa tiene acceso al stream. Por ejemplo: #include <fstream> using namespace std; int main() { char mes[20]; ifstream fich("meses1.dat", ios::in | ios::binary); // El fichero meses1.dat no existe, este programa es // una prueba de los bits de estado. if(fich.good()) { fich.read(mes, 20); cout << mes << endl; } else { cout << "Fichero no disponible" << endl; if(fich.fail()) cout << "Bit fail activo" << endl; if(fich.eof()) cout << "Bit eof activo" << endl;
  • 14. if(fich.bad()) cout << "Bit bad activo" << endl; } fich.close(); return 0; } Ejemplo de fichero previamente abierto: #include <fstream> using namespace std; int main() { char mes[20]; ofstream fich1("meses.dat", ios::out | ios::binary); ifstream fich("meses.dat", ios::in | ios::binary); // El fichero meses.dat existe, pero este programa // intenta abrir dos streams al mismo fichero, uno en // escritura y otro en lectura. Eso no es posible, se // trata de una prueba de los bits de estado. fich.read(mes, 20); if(fich.good()) cout << mes << endl; else { cout << "Error al leer de Fichero" << endl; if(fich.fail()) cout << "Bit fail activo" << endl; if(fich.eof()) cout << "Bit eof activo" << endl; if(fich.bad()) cout << "Bit bad activo" << endl; } fich.close(); fich1.close(); return 0; } Comentarios de los usuarios (18) aJ 2011-03-21 19:31:45 Buenas, En el ejemplo de Ficheros de acceso aleatorio me lanza error copilando con GNU GCC Compliler y Visual C++ 2010, en la siguiente parte : pos = fentrada.tellg(); Si alguien sabe la solución admin o cualquier otra persona estaré atento a los comentarios.
  • 15. Saludos. Steven 2011-03-21 22:48:14 Hola aJ, Si el compilador te lanza un error, siempre ayuda escribir el mensaje, para los demás. Hay dos errores y los mensajes lanzados son: - 'cout' no fue declarado en este ámbito - 'pos' no fue declarado en este ámbito Para solucionar el problema de 'cout', incluimos <iostream> al principio: #include <iostream> Para 'pos', se nos ha olvidado definirla. Técnicamente, el tipo de dato correcto es 'streampos'. Por lo tanto, escribimos lo siguiente: streampos pos = fentrada.tellg(); En cuanto podamos, lo corregiremos. Espero haber aclarado la duda. Steven aJ 2011-03-22 01:17:45 Gracias otra ves Steven, ya aclare las dudas jejeje. En esta parte se equivocaron con la tilde de la ú : cout << "nNúmero de registros: " << pos/20 << endl; Aunque no entorpece la funcionalidad del programa, aquí incluyo mi corrección : cout << "nNxa3mero de registros : " << pos/20 << endl; #include <iostream> #include <fstream> #include <string.h> using namespace std; int main() {
  • 16. char cadena[3128]; char linea[50][3000]; string texto; string lineacadena; int a=0; int b=0; // Crea un fichero de salida cout <<"-------------------------------------n"; cout <<"Escribiendo y leyendo un ficheron"; cout <<"-------------------------------------n"; ofstream fs("nombre.txt"); char* mensaje="hola esto es un mensaje0"; char* mensaje2="hola 20"; char* mensaje3="un mensaje30"; cout << mensaje<<"n"; cout <<mensaje2<<"n"; cout <<mensaje3<<"n"; // Enviamos una cadena al fichero de salida: fs << mensaje << endl; fs << mensaje2 << endl; fs << mensaje3 << endl; // Cerrar el fichero, // para luego poder abrirlo para lectura: fs.close(); // Abre un fichero de entrada ifstream fe("nombre.txt"); // Leeremos mediante getline, si lo hiciéramos // mediante el operador << sólo leeríamos // parte de la cadena: cout <<"-------------------------------------n"; cout <<"nContenido del fichero:n"; cout <<"-------------------------------------n"; a=-1; while (!fe.eof()){ fe.getline(cadena,3000); a++; string lineacadena (cadena); // añadido: convierto array de char a cadena texto +=lineacadena + 'n'; // añado a la cadena texto. strcat(linea[a],cadena); //añadido trabajando con cadenas cout << cadena << endl; // añadido: escribo. } cout <<"-------------------------------------n"; cout <<"Contenido del fichero, en un array guardadon"; cout <<"-------------------------------------n"; for(b=0;b<=a;b++){ cout << linea[b];
  • 17. cout << "n"; } cout <<"----------------------------------------n"; cout <<"imprimo una cadenan"; cout <<"----------------------------------------n"; cout << texto; //system ("PAUSE"); //EXIT_SUCCESS; return 0; }