ORIGEN DE UNIX
Los origenes del sistema UNIX se
remontan al desarrollo de
un proyecto iniciado
en 1968. Este proyecto fue realizado por General Electric,
AT&T Bell i del MIT, llevarion a cabo el desarrollo de un
sistema operativo
con nuevos conceptos como la multitarea, la gestión
de archivos o la
interacción con el usuario. El resultado
die estas investigaciones
se bautizó como MULTICS. El proyecto resultó ser
demasiado ambicioso, por lo que no llegó a buen fin y
terminó abandonándose.
Posteriormente la idea de este proyecto se vuelve a
retomar y conduce al gran desarrollo en 1969 del sistema
operativo UNIX. Entre los investigadores destacaban Ken Thompson
y Dennis Ritchie. En principio, este sistema operativo
recibió el nombre de UNICS, aunque un año
después pasa a llamarse UNIX, como se conoce hoy en
día.
El código
de UNIX estaba inicialmente escrito en lenguaje
ensamblador, pero en 1973, Dennis Ritchie llevó a cabo
un proyecto para reescribir el código de UNIX en lenguaje C.
UNIX se convirtió así en el primer sistema
operativo escrito en lenguaje de
alto nivel. Con este nuevo enfoque fue posible portar al sistema
operativo a otras máquinas
sin muchos cambios, solamente efectuando una nueva
compilación en la máquina de destino. Gracias a
esto la popularidad de UNIX creció y permitió
asentar la "filosofía UNIX".
Inicialmente UNIX fue considerado como un proyecto de
investigación, hasta el punto de distribuirse de forma
gratuita en algunas universidades, pero después la
demanda del
producto hizo
que los laboratorios Bell iniciaran su distribución oficial.
Las dos variantes
fundamentales: Sistema V y BSD
La Universidad de
California en Berkeley comenzó sus desarrollos en el campo
UNIX, añadiendo nuevas características y haciendo
modificaciones. Así, en 1975 Ken Thompson
promovió el desarrollo y sacó a la luz su propia
versión de UNIX, conocida como BSD. Desde entonces BSD
pasó a convertirse en la gran competidora de los
laboratorios Bell. En esta versión contribuyeron Bill Joy
y Chuck Haley, sus contribuciones son numerosas pero entre ellas
destacan un compilador de Pascal, el editor
vi, el editor ex y el Shell C.
Más tarde, a principios de los
80, se produjo el lanzamiento de Sistema III, la primera
versión comercial del sistema operativo UNIX. En 1983
AT&T introdujo el UNIX Sistema V versión 1.
EN 1983 Berkeley lanza una poderosa versión UNIX
conocida como BSD versión 4.2 Entre sus
características principales se encuentran la
gestión de archivos muy sofisticada así como la
posibilidad de trabajo en
redes basadas en
los protocolos
TCP/IP ( los
mismos que hoy en día se utilizan en internet ). Esta
versión de UNIX la adoptaron varios fabricantes, entre
ellos Sun Microsystems, lo que dió lugar al conocido
sitema SunOS.
En aquellos momentos las diferencias entre versiones de
UNIX eran muy grandes, lo que provocaba verdaderos quebraderos
dde cabezas para los programadores.
Principales variantes de UNIX
en la actualidad
En la actualidad las versiones de UNIX más
difundidas son las siguientes:
SOLARIS: Es el nombre con el que se conoce
el sistema operativo de Sun Microsystems. Originalmente se
llamó SunOS, pero posteriormente, debido a
la
presentación de UNIX Sistema V se desarrolló una
nueva versión a la que se le llamó Solaris. Existen
versiones de Solaris para Power PC, Intel y Sparc.
AIX: La versión del sistema
operaivo UNIX para las máquinas IBM se llama AIX y
está basada en Sistema V versión 3 y BSD
4.3.
A/UX: Implementación de UNIX
de Apple
IRIX: Versión de UNIX desarrollada
por Silicon Graphics para sus estaciones basada en UNIX Sistema V
version 4.
SCO UNIX: Es la versión de
Santa Cruz Operation (SCO), versión de UNIX Sistema V
diseñada para plataformas Intel.
LINUX: Empezó como un simple
proyecto de Linus Torlvalds, como todos sabéis, un
estudiante de la universidad de Helsinki a principio de los
años 90. En la actualidad se ha difundido enormemente por
todo el planeta y lo usan millones de usuarios, tanto
particulares como grandes empresas.
LENGUAJES DE PROGRAMACIÓN
Al desarrollarse las primeras computadoras
electrónicas, se vio la necesidad de programarlas, es
decir, de almacenar en memoria la
información sobre la tarea que iban a
ejecutar. Las primeras se usaban como calculadoras simples; se
les indicaban los pasos de cálculo,
uno por uno.
John Von Neumann
desarrolló el modelo que
lleva su nombre, para describir este concepto de
"programa
almacenado". En este modelo, se tiene una abstracción de
la memoria
como un conjunto de celdas, que almacenan simplemente
números. Estos números pueden representar dos
cosas: los datos, sobre los
que va a trabajar el programa; o bien, el programa en
sí.
¿Cómo es que describimos un programa como
números? Se tenía el problema de representar las
acciones que
iba a realizar la computadora, y
que la memoria, al estar compuesta por switches correspondientes
al concepto de bit, solamente nos permitía almacenar
números binarios.
La solución que se tomó fue la siguiente:
a cada acción
que sea capaz de realizar nuestra computadora, asociarle un
número, que será su código de
operación (opcode) . Por ejemplo, una calculadora
programable simple podría asignar los opcodes :
1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 =
DIVIDE.
Supongamos que queremos realizar la operación 5 *
3 + 2, en la calculadora descrita arriba. En memoria,
podríamos "escribir" el programa de la siguiente
forma:
Localidad Opcode Significado Comentario 0 5 5 En esta
localidad, tenemos el primer número de la fórmula 1
3 * En esta localidad, tenemos el opcode que representa la
multiplicación. 2 3 3 En esta localidad, tenemos el
segundo número de la fórmula 3 1 + En esta
localidad, tenemos el opcode que representa la suma. 4 2 2 En
esta localidad, tenemos el último número de la
fórmula
Podemos ver que con esta representación, es
simple expresar las operaciones de
las que es capaz el hardware (en este caso,
nuestra calculadora imaginaria), en la memoria.
La descripción y uso de los opcodes es lo que
llamamos lenguaje de máquina . Es decir, la lista de
códigos que la máquina va a interpretar como
instrucciones, describe las capacidades de programación que tenemos de ella; es
el lenguaje
más primitivo, depende directamente del hardware, y
requiere del programador que conozca el funcionamiento de la
máquina al más bajo nivel.
los lenguajes más primitivos fueron los lenguajes
de máquina. Esto, ya que el hardware se desarrolló
antes del software, y además
cualquier software finalmente tiene que expresarse en el lenguaje
que maneja el hardware.
La programación en esos momentos era sumamente
tediosa, pues el programador tenía que "bajarse" al nivel
de la máquina y decirle, paso a pasito, cada punto de la
tarea que tenía que realizar. Además, debía
expresarlo en forma numérica; y por supuesto, este
proceso era
propenso a errores, con lo que la productividad del
programador era muy limitada. Sin embargo, hay que recordar que
en estos momentos, simplemente aún no existía
alternativa.
El primer gran avance que se dio, como ya se
comentó, fue la abstracción dada por el Lenguaje
Ensamblador, y
con él, el nacimiento de las primeras herramientas
automáticas para generar el código máquina.
Esto redujo los errores triviales, como podía ser el
número que correspondía a una operación, que
son sumamente engorrosos y difíciles de detectar, pero
fáciles de cometer. Sin embargo, aún aquí es
fácil para el programador perderse y cometer errores de
lógica,
pues debe bajar al nivel de la forma en que trabaja el CPU, y
entender bien todo lo que sucede dentro de él.
Con el desarrollo en los 50s y 60s de algoritmos de
más elevado nivel, y el aumento de poder del
hardware, empezaron a entrar al uso de computadoras
científicos de otras ramas; ellos conocían mucho de
Física,
Química y
otras ramas similares, pero no de Computación, y por supuesto, les era
sumamente complicado trabajar con lenguaje Ensamblador en vez de
fórmulas. Así, nació el concepto de Lenguaje
de Alto Nivel, con el primer compilador de FORTRAN (FORmula
TRANslation), que, como su nombre indica, inició como un
"simple" esfuerzo de traducir un lenguaje de fórmulas, al
lenguaje ensamblador y por consiguiente al lenguaje de
máquina. A partir de FORTRAN, se han desarrollado
innumerables lenguajes, que siguen el mismo concepto: buscar la
mayor abstracción posible, y facilitar la vida al
programador, aumentando la productividad, encargándose los
compiladores o
intérpretes de traducir el lenguaje de alto nivel, al
lenguaje de computadora.
Hay que notar la existencia de lenguajes que combinan
características de los de alto nivel y los de bajo nivel
(es decir, Ensamblador). Mi ejemplo favorito es C: contiene
estructuras de
programación de alto nivel, y la facilidad de usar
librerías que también son características de
alto nivel; sin embargo, fue diseñado con muy pocas
instrucciones, las cuales son sumamente sencillas, fáciles
de traducir al lenguaje de la máquina; y requiere de un
entendimiento apropiado de cómo funciona la
máquina, el uso de la memoria, etcétera. Por ello,
muchas personas consideramos a lenguajes como C (que fue
diseñado para hacer sistemas
operativos), lenguajes de nivel medio.
Java
El lenguaje de
programación Java, fue
diseñado por la compañía Sun Microsystems
Inc, con el propósito de crear un lenguaje que pudiera
funcionar en redes computacionales heterogéneas ( redes de computadoras
formadas por más de un tipo de computadora, ya sean PC,
MAC's, estaciones de trabajo, etc.),y que fuera independiente de
la plataforma en la que se vaya a ejecutar. Esto significa que un
programa de Java puede ejecutarse en cualquier máquina o
plataforma. El lenguaje fue diseñado con las siguientes
características en mente:
Simple. Elimina la complejidad de los lenguajes
como "C" y da paso al contexto de los lenguajes modernos
orientados a objetos. Orientado a Objetos. La filosofía de
programación
orientada a objetos es diferente a la programación
convencional.
Familiar. Como la mayoría de los
programadores están acostumbrados a programar en C o en
C++, el sintaxis de Java es muy similar al de estos.
Robusto. El sistema de Java maneja la memoria
de la computadora por ti. No te tienes que preocupar por
apuntadores, memoria que no se esté utilizando, etc. Java
realiza todo esto sin necesidad de que uno se lo
indique.
Seguro. El
sistema de Java tiene ciertas políticas
que evitan se puedan codificar virus con este
lenguaje. Existen muchas restricciones, especialmente para los
applets, que limitan lo que se puede y no puede hacer con los
recursos
críticos de una computadora.
Portable. Como el código compilado de
Java (conocido como byte code) es interpretado, un programa
compilado de Java puede ser utilizado por cualquier computadora
que tenga implementado el interprete de Java.
Independiente a la arquitectura. Al
compilar un programa en Java, el código resultante un tipo
de código binario conocido como byte code. Este
códido es interpretado por diferentes computadoras de
igual manera, solamente hay que implementar un intérprete
para cada plataforma. De esa manera Java logra ser un lenguaje
que no depende de una arquitectura computacional
definida.
Multithreaded. Un lenguaje que soporta
multiples threads es un lenguaje que puede ejecutar diferentes
líneas de código al mismo tiempo.
Interpretado. Java corre en máquina
virtual, por lo tanto es interpretado.
Dinámico. Java no requiere que compiles
todas las clases de un programa para que este funcione. Si
realizas una modificación a una clase Java se
encarga de realizar un Dynamic Bynding o un Dynamic Loading para
encontrar las clases.
Java puede funcionar como una aplicación sola o
como un "applet", que es un pequeño programa hecho en
Java. Los applets de Java se pueden "pegar" a una página
de Web (HTML), y con esto
puedes tener un programa que cualquier persona que tenga
un browser compatible podrá usar.
Nota: Diferencia entre Java y CGI La diferencia es
esencialmente simple, un CGI se ejecuta en el servidor mientras
que un programa en Java se ejecuta en la máquina del
usuario.
Java funciona de la siguiente manera: El compilador de
Java deja el programa en un Pseudo-código (no es
código maquinal) y luego el intérprete de Java
ejecuta el programa (lo que se conoce como el "Java Virtual
Machine"). Por eso Java es multiplataforma, existe un
intérprete para cada máquina diferente. Nota: El
código maquinal es el código binario que la computadora
entiende y puede ejecutar.
Para entender bien como funciona un applet de Java vean
el siguiente ejemplo:
1. Existe un código de Java en un servidor de
Web. (Los códigos de Java se caracterizan por tener la
extensión *.class).
2. Una persona en Internet, con un browser compatible
con Java, realiza una conección al servidor.
3. El servidor envía el documento HTML y el
código en Java (*.class).
4. En la computadora del usuario remoto llegan ambos, y
la Máquina Virtual de Java, que está en el browser,
transforma el código Java en un código que entienda
la máquina local y se ejecuta el programa dentro de la
página de Web.
5. Si el usuario realiza otra conexión a otro URL
o se sale del browser, el programa se deja de ejecutar y en la
computadora no queda rastro de el.
En Java hay tres tipos de comentarios:
// comentarios para una sola línea
/* comentarios de una o
más líneas
*/
/** comentario de documentación, de una o más
líneas
*/
Los dos primeros tipos de comentarios son los que todo
programador conoce y se utilizan del mismo modo. Los comentarios
de documentación, colocados inmediatamente antes de una
declaración (de variable o función),
indican que ese comentario ha de ser colocado en la
documentación que se genera automáticamente cuando
se utiliza la herramienta de Java, javadoc. Dichos comentarios
sirven como descripción del elemento declarado permitiendo
generar una documentación de nuestras clases escrita al
mismo tiempo que se genera el código.
En este tipo de comentario para documentación, se
permite la introducción de algunos tokens o palabras
clave, que harán que la información que les sigue
aparezca de forma diferente al resto en la
documentación.
Identificadores
Los identificadores nombran variables,
funciones,
clases y objetos; cualquier cosa que el programador necesite
identificar o usar.
En Java, un identificador comienza con una letra, un
subrayado (_) o un símbolo de dólar ($). Los
siguientes caracteres pueden ser letras o dígitos. Se
distinguen las mayúsculas de las minúsculas y no
hay longitud máxima.
Serían identificadores válidos:
Identificador
nombre_usuario
Nombre_Usuario
_variable_del_sistema
$transaccion
y su uso sería, por ejemplo:
int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;
Unix
Ejemplo de Unix:
No todo el "árbol" de directorios está
compuesto por directorios de usuario. Existen muchos de ellos que
son de uso general o del propio sistema y con los que
habrá que familiarizarse. Los más importantes
son:
/
El raíz, del que "cuelgan" todos.
/bin y /usr/bin
Contienen comandos UNIX
ejecutables.
/etc
Es quizá el directorio más importante.
Contiene ficheros de datos y configuración del sistema, el
fichero de password, configuración de terminales, red, etc (de ahí su
nombre).
/dev
Ficheros de dispositivos E/S.
/usr/man
Manual
/tmp
Directorio para arreglos temporales. TODOS los usuarios
pueden leer y escribir en él.
C
C es un lenguaje de programación diseñado
por Dennis Ritchie, de los Laboratorios Bell, y se instaló
en un PDP-11 en 1972; se diseñó para ser el
lenguaje de los Sistemas Operativos
UNIX1. A su vez, UNIX es un Sistema Operativo
desarrollado por Ken Thompson, quién utilizó el
lenguaje ensamblador y un lenguaje llamado B para producir las
versiones originales de UNIX, en 1970. C se inventó para
superar las limitaciones de B.
C es un lenguaje maduro de propósitos generales
que se desarrolló a partir de estas raíces; su
definición aparece en 1978 en el apéndice “C
Reference Manual'' del
libro The
C Programming Language, de Brian W. Kernighan y Dennis M.
Ritchie (Englewood Cliffs, Nueva Jersey, Prentice-Hall 1978),
pero el estándar recomendable más reciente
apareció en Junio de 1983, en el documento de los
Laboratorios Bell titulado The C Programming Language-Reference
Manual, escrito por Dennis M. Ritchie
Un programa en C
Generalizando, un programa en C consta de tres
secciones. La primera sección es donde van todos los
“headers''. Estos “headers'' son comúnmente los
“#define'' y los “#include''. Como segunda sección se
tienen las “funciones''. Al igual que Pascal, en C todas las
funciones que se van a ocupar en el programa deben ir antes que
la función principal (main()). Declarando las funciones a
ocupar al principio del programa, se logra que la función
principal esté antes que el resto de las funciones. Ahora,
solo se habla de funciones ya que en C no existen los procedimientos.
Y como última sección se tiene a la
función principal, llamada main. Cuando se ejecuta el
programa, lo primero que se ejecuta es esta función, y de
ahí sigue el resto del programa.
Los símbolos { y } indican “begin'' y “end''
respectivamente. Si en una función o en un ciclo while,
por ejemplo, su contenido es de solamente una línea, no es
necesario usar “llaves'' ({ }), en caso contrario es
obligación usarlos.
Ejemplo de un programa en C
/*Programa ejemplo que despliega el contenido de "ROL"
en pantalla*/
#include <stdio.h>
#define ROL "9274002-1"
despliega_rol() {
printf("Mi rol es : %sn", ROL);
}
void main() {
despliega_rol();
}
/* Fin programa */
Pascal
Pascal es un lenguaje de programación de alto
nivel de propósito general; esto es, se puede utilizar
para escribir programas para
fines científicos y comerciales.
El lenguaje de programación Pascal fue
desarrollado por el profesor
Niklaus (Nicolás) Wirth en Zurich, Zuiza, al final de los
años 1960s y principios de los 70s. Wirth
diseñó este lenguaje para que fuese un buen primer
lenguaje de programación para personas comenzando a
aprender a programar. Pascal tiene un número relativamente
pequeño de conceptos para aprender y dominar. Su diseño
facilita escribir programas usando un estilo que está
generalmente aceptado como práctica estándar de
programación buena. Otra de las metas del diseño de
Wirth era la implementación fácil. Él
diseñó un lenguaje para el cual fuese fácil
escribir un compilador para un nuevo tipo de
computadora.
program Sorting;
{
Este programa lee un natural y una secuencia de N
caracteres de la entrada estandar; construye un indice para
ordenarlos de menor a mayor e imprime en la salida la secuencia
ordenada.
}
uses CRT;
Const Max = 10;
Espacio = ' ';
Enter = chr (13);
type Indice = 1..Max;
Cantidad= 0..Max;
SecOfChar = record
elems : array [Indice] of char;
ult : Cantidad;
end;
SecOfInd = record
elems : array [Indice] of Indice;
ult : Cantidad;
end;
Natural = 0..MaxInt;
function PosMin (idx: SecOfInd; i: Indice; s:
SecOfChar): Cantidad;
{ Devuelve la posicion en el indice idx del menor
caracter en s, para
las posiciones >= i. }
var j: Indice;
pm: Cantidad;
begin
if i > idx.ult then
pm := 0
else begin
pm := i;
for j := i+1 to idx.ult do
if s.elems[idx.elems[j]] < s.elems[idx.elems[pm]]
then
pm := j;
end;
PosMin := pm;
end;
procedure Swap (var idx: SecOfInd; i,j:
Indice);
{ Intercambia las posiciones i j en idx. }
var tmp: Indice;
begin
if (i<=idx.ult) and (j<=idx.ult) then
begin
tmp := idx.elems[i];
idx.elems[i] := idx.elems[j];
idx.elems[j] := tmp;
end;
end;
procedure InicInds (var idx: SecOfInd; cant:
Indice);
{ Construye la secuencia de indices 1,2,3,…,n. Sera el
indice
inicial para el ordenamiento de una secuencia de
caracteres
c1,c2,…,cn. }
var n: Natural;
begin
n := cant;
idx.ult := n;
while n > 0 do begin
idx.elems [n] := n;
n := n-1;
end;
end;
procedure InicSecChar (var s: SecOfChar);
{ Devuelve la secuencia vacia. }
begin
s.ult := 0;
end;
function Llena (s: SecOfChar): Boolean;
begin
Llena := s.ult = Max;
end;
{ PRE: not Llena(s) }
procedure InsCar (var s: SecOfChar; c: char);
{ Inserta el caracter c en la secuencia s }
begin
s.ult := s.ult + 1;
s.elems [s.ult] := c;
end;
procedure IndSelSort (s: SecOfChar; var ind:
SecOfInd);
{ Construye el indice que ordena la secuencia s. Ordena
el indice
inicial 1,2, …, n por el metodo de selection sort
}
var i: Indice;
begin
InicInds (ind, s.ult);
for i := 1 to ind.ult-1 do begin
Swap (ind, i, PosMin (ind, i, s));
end
end;
procedure WriteSorted (idx: SecOfInd; s:
SecOfChar);
{ Imprime en la salida estandar la secuencia s ordenada
segun el
indice idx }
var i: Indice;
begin
write ('Ordenado: ');
for i := 1 to idx.ult do
write (s.elems[idx.elems[i]],' ');
writeln;
end;
procedure LeerCar (var c: char; var ok: boolean; sep:
Char);
{ Lee de la entrada estandar un caracter seguido del
caracter sep }
var c1, c2: char;
begin
c := ReadKey; write (c);
c1 := ReadKey; write (c1);
ok := c1 = sep;
end;
procedure LeerSecOfChar (var s: SecOfChar; cant:
Natural; var ok: Boolean);
{ Construye una secuencia de cant caracteres provistos
por el
procedimeinto LeerCar. Si cant > Max trunca.
}
var bien: Boolean;
i: Natural;
ch, sep: Char;
begin
writeln ('Ingrese ',cant, ' caracteres separados por
blancos. Enter para terminar ');
write (' > ');
InicSecChar (s);
i := 1;
ok := true;
sep := Espacio;
while ok and (i <= cant) and not Llena (s) do
begin
if i = cant then sep := Enter;
LeerCar (ch, bien, sep);
i := i+1;
ok := ok and bien;
if ok then
InsCar (s, ch);
end;
end;
procedure LeerCant (var n: Natural);
{ Lee de la entrada estandar un natural <= Max
}
begin
repeat
writeln ('Ingrese cantidad de caracteres
(<=',Max,')');
write (' > ');
readln (n);
until n <= Max;
end;
procedure Continuar (var seguir: Boolean);
var car: Char;
begin
writeln;
writeln ('Otro ? (s/n)');
write (' > ');
car := ReadKey;
writeln (car);
seguir := car in ['s','S'];
end;
var cant: Natural;
cars: SecOfChar;
inds: SecOfInd;
seguir, ok: boolean;
begin
repeat
ClrScr;
LeerCant (cant);
LeerSecOfChar (cars, cant, ok);
if ok then begin
IndSelSort (cars, inds);
writeln;
WriteSorted (inds, cars);
end
else begin
writeln;
writeln ('Error en los datos');
end;
Continuar (seguir);
until not seguir;
end.
QBasic
Qbasic es un lenguaje de alto nivel, el cual consiste en
instrucciones que los humanos pueden relacionar y entender. El
compilador de Qbasic se encarga de traducir el mismo a lenguaje
de máquina.
Un programa es una secuencia de instrucciones. El
proceso de ejecutar esas instrucciones se llama correr el
programa. Los programas contienen las funciones de entrada,
procesamiento y salida. La persona que resuelve problemas
mediante escribir programas en la computadora se conoce como
programador. Después de analizar el problema y desarrollar
un plan para
solucionarlo, escribe y prueba el programa que instruye a la
computadora como llevar a cabo el plan. El procedimiento que
realiza el programador se define como "problem solving". Pero es
necesario especificar que un programador y un usuario no son lo
mismo. Un usuario es cualquier persona que use el
programa.
Ejemplo de qbasic, para hacer una calculadora
DIM total AS DOUBLE
DIM number AS DOUBLE
DIM secondNumber AS DOUBLE
DIM more AS STRING
DIM moreNumbers AS STRING
DIM operation AS STRING
total = 0
more = "y"
moreNumbers = "c"
CLS
WHILE more = "y"
INPUT "Enter the first number"; number
total = number
WHILE moreNumbers = "c"
COLOR 14
PRINT "The total is:"; total
COLOR 7
PRINT "Select an operation"
COLOR 2
PRINT "(+)"
COLOR 5
PRINT "(-)"
COLOR 1
PRINT "(x)"
COLOR 4
INPUT "(/)"; operation
COLOR 7
CLS
IF operation = "+" THEN
REM where we do additions
PRINT "Enter the number to Add to"; total
INPUT secondNumber
total = secondNumber + total
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
IF operation = "-" THEN
REM subtraction
PRINT "Enter the number to Subtract from";
total
INPUT secondNumber
total = total – secondNumber
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
IF operation = "x" THEN
REM multiplication
PRINT "Enter the number to Multiply"; total;
"by"
INPUT secondNumber
total = secondNumber * total
REM * is the multiplication sign in programs
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
IF operation = "/" THEN
REM division
PRINT "Enter the number to Divide"; total;
"by"
INPUT secondNumber
IF secondNumber = 0 THEN
COLOR 4
PRINT "You cannot divide by zero"
COLOR 7
ELSE
total = total / secondNumber
REM / is the division sign in programs
END IF
COLOR 14
PRINT "The total is now:"; total
COLOR 7
ELSE
PRINT "you must select an operation"
END IF
END IF
END IF
END IF
INPUT "Do you wish to continue (c) or start with new
numbers
(n)";moreNumbers
CLS
WEND
COLOR 14
PRINT "The grand total is:"; total
COLOR 7
INPUT "Do you wish to make more calculations (y – n)";
more
moreNumbers = "c"
REM if we don't put "moreNumbers" back to y, it will
always
REM come back to "Do you wish to make more calculations"
and never REM ask
for numbers again
REM (try it)
total = 0
REM if we don't reset the total to 0, it will
just
REM keep on adding to the total
WEND
END
HARDWARE
Una primera distinción la tenemos en el
formato de la placa, es decir, en sus propiedades
físicas.
Dicho parámetro está directamente relacionado con
la caja, o sea, la carcasa del ordenador.
Hay dos grandes estándares:
y Baby
AT
La segunda distinción la haremos por el
zócalo de la CPU, así como los tipos de
procesador
que soporte y la cantidad de ellos. Tenemos el
estándar Tipo 4 o 5 para Pentium,
el tipo 7 para Pentium
y MMX, el
Super 7 para los nuevos procesadores con
bus a 100 Mhz, el
tipo 8 para Pentium
Pro, el Slot 1 para el Pentium II
y el Celeron,
y el Slot 2 para los Xeon.
Estos son los más conocidos.
La siguiente distinción la haremos
a partir del chipset que utilicen:
Los más populares son los de Intel. Estos están
directamente relacionados con los procesadores que soportan,
así tenemos que para el Pentium están los
modelos FX,
HX, VX y TX.
Para Pentium PRO los
GX, KX y FX. Para Pentium
II y sus derivados, además del FX, los LX, BX,
EX, GX y NX. Para Pentium MMX se recomienda el
TX, aunque es soportado por los del Pentium
'Classic'
También existen placas que usan
como chipset el
de otros fabricantes como VIA, SiS, UMC o Ali (Acer).
El siguiente parámetro es el tipo de
bus. Hoy en día el auténtico protagonista es el
estandar
PCI de 32 bits en su revisión 2.1, pero también
es importante contar con alguna ranura ISA de 16 bits, pues
algunos dispositivos como módems internos y tarjetas de
sonido
todavía no se han adaptado a este estándar, debido
básicamente a que no aprovechan las posibilidades de ancho
de banda que éste posee.
Tambien existe un
PCI de 64 bits, aunque de momento no está muy visto en
el mundo PC.
Otros tipos de bus son el ISA de 8 bits, no usado ya por
ser compatible con el de 16 bits, el EISA, usado en algunas
máquinas servidoras sobre todo de Compaq, el VL-Bus, de
moda en casi
todos los 486, o el MCA, el famoso bus microcanal en sus
versiones de 16 y 32 bits patrocinado por IBM en sus modelos
PS/2.
Otra característica importante es el
formato y cantidad de zócalos de memoria que admite. En
parte viene determinado por el chipset que utiliza. La más
recomendable es la DIMM en formato SDRAM y como mínimo 3
zócalos. En el caso de módulos SIMM de 72 contactos
el mínimo es de 6 (recordad que van de 2 en
2).Por último, en las placas basadas en
socket 7 y super 7, tambien debemos tener en cuenta la memoria
caché. Normalmente está directamente soldada a la
placa base y en cantidades de 512 o 1024 Kb. Para saber
más sobre ella acuda a la sección de memoriasATX:
El estandar ATX es el
más moderno y el que mayores ventajas ofrece. Está
promovido por Intel,
aunque es una especificación abierta, que puede ser usada
por cualquier fabricante sin necesidad de pagar royalties. La
versión utilizada actualmente es la 2.01.
Entre las ventajas de la placa cabe mencionar una mejor
disposición de sus componentes, conseguida
básicamente girandola 90 grados. Permite que la
colocación de la CPU no moleste a las las tarjetas de
expansión, por largas que sean. Otra ventaja es un
sólo conector de alimentación, que
además no se puede montar al revés.La memoria
está colocada en un lugar más accesible.La CPU
está colocada al lado de la F.A. (Fuente de
Alimentación) para recibir aire fresco de su
ventilador.Los conectores para los dispositivos IDE y disqueteras
quedan más cerca, reduciendo la longitud de los cables y
estorbando menos la circulación del aire en el interior de
la caja.
Además de todas estas ventajas dicho estandar nos
da la posibilidad de integrar en la placa base dispositivos como
la tarjeta de video
o la tarjeta de sonido, pero sacando los conectores directamente
de la placa, dándonos un diseño más
compacto, y sin necesidad de perder ranuras de
expansión.
Así podemos tener integrados los conectores para
teclado y
ratón tipo PS/2, série, paralelo o USB que son habituales en
estas placas, pero también para VGA, altavoces,
micrófono, etc… sin apenas sacrificar
espacio.
Baby AT:
Este formato está basado en el original del IBM
PC-AT, pero de dimensiones más reducidas gracias a la
mayor integración en los componentes de hoy en
día, pero físicamente compatible con
aquel.Aún hoy en día es el más extendido. En
este tipo de placas es habitual el conector para el teclado
'gordo'
Entre sus ventajas cabe destacar el mejor precio tanto
de éstas como de las cajas que las soportan, aunque esta
ventaja desaparecerá a medida que se vaya popularizando su
contrincante.
CONCLUSIÓN
En este trabajo hemos
presentado todo la información que conseguimos a sobre la
informática y los campos que posee
como:La historia de la
informáticaOrigen de
MicrosoftOrigen de Linux Origen de Unix Los
diferentes lenguajes de programación Y un poco de Hardware Finalizamos esperando que haya sido el agrado de
los lectores y profesores que han visto o leído nuestro
arduo trabajo.
BIBLIOGRAFÍA
- Google – historia
de la informática - Google – Origen de
Microsoft - Google – Origen de
Linux - Google – Origen de
Unix - Google – Lenguajes de
Programación - Google –
Hardware
DEDICATORIA
- Este trabajo dedicamos a los héroes de la
guerra de
la triple alianza y del Chaco, excepto al Mariscal
López que es un hijo de la mil puta que fundió
al Paraguay,
hijo de miércoles.A los Compañeros que no me
ayudaron en nada.Al profesor Santiago Portillo, por darnos
este work.A Jesucristo por guiarnos siempre.A los integrantes
de Metallica por tocar buena música.Y a todos los que no saben que
hacer de su vida y se drogan, roban, asaltan y
violadores.También a los secuestradores del
Japonés.A los maricones que le mataron a Sadan
Husein.A ese hijo de puta de George W. Bush que se cree el
ratón ese Cerebro y
quiere conquistar el mundo.Al Tosco de Nicanor, reverendo
imbécil que nos esta pudriendo la vida todos los
días.Al Monseñor Lugo, que dejo su sotana para
hacer política.Al degenerado, depravado,
pervertido sexual que le violó a su propio hijo.A Eli
porque se fue a traer el hielo para tomar tereré y por
ser tan linda y buena onda. - A mi vecino por meter 8 tipos de
virus en mi computadora.
AGRADECIMIENTO
- A nuestros padres por ser tan comprensivosA los
compañeros por estar siempre junto a nosotros aunque
sea hinchando. - Al profesor Santiago por ayudarnos siempre y por
buena onda.
A Jesucristo por darnos siempre la
fuerza de
continuar cada día.
Ehiser Maria Martinez Benitez
Página anterior | Volver al principio del trabajo | Página siguiente |