Está en la página 1de 12

Capítulo 1.

Introducción a las computadoras, a Internet y a la


World Wide Web

1.1 Introducción
La parte central del libro pone énfasis en la claridad de los programas,
a través de las técnicas comprobadas de programación estructurada. El
libro contiene cientos de programas completos, los cuales muestran los
resultados que arrojan cuando se ejecutan en una computadora.
Nosotros llamamos a esto “el método del código activo”.

El software (es decir, las instrucciones que usted escribe para ordenar a
la computadora que realice acciones y tome decisiones) es quien
controla a las computadoras (a menudo llamadas hardware). El silicio
es uno de los materiales más abundantes en el planeta (es uno de los
ingredientes de la tierra común).

En el mercado de los lenguajes de programación, muchos fabricantes


combinan C y C++ en un solo producto, en lugar de ofrecerlos por
separado. Esto les brinda a los usuarios la posibilidad de continuar
programando en C, y de manera gradual migrar a C++ cuando sea
apropiado.

1.2 ¿Qué es una computadora?


Una computadora es un dispositivo capaz de realizar cálculos y tomar
decisiones lógicas a velocidades de millones (incluso miles de
millones) de veces más rápidas que los humanos.

Las computadoras procesan los datos bajo el control de conjuntos de


instrucciones llamadas programas de cómputo. Estos programas de
cómputo guían a la computadora a través de conjuntos ordenados de
acciones especificados por personas llamadas programadores de
computadoras.

Una computadora está compuesta por varios dispositivos (tales como el


teclado, discos, el monitor, unidades de procesamiento, el “ratón”,
memoria, DVD) conocidos como hardware. A los programas de
cómputo que se ejecutan dentro de la computadora se les denomina
software.

1.3 Organización de computadoras


Podemos representar a las computadoras mediante seis unidades o
secciones lógicas:
Unidad de entrada. Sección “receptora” de la computadora. Obtiene
información (datos y programas de cómputo) desde varios dispositivos
de entrada y pone a disposición de las otras unidades para que la
información pueda procesarse.

Unidad de salida. Sección de “embarque” de la computadora. Toma


información que ya ha sido procesada por la computadora y la coloca
en los diferentes dispositivos de salida, para que la información esté
disponible fuera de la computadora.

Unidad de memoria. También conocido como memoria o memoria


principal. Es un “almacén” de acceso rápido con una capacidad baja.
Retiene información introducida mediante la unidad de entrada, se
mantiene disponible hasta que la unidad de salida pueda colocarla en
los dispositivos de salida.

Unidad aritmética y lógica (ALU). Sección de “manufactura” de la


computadora. Realiza cálculos como suma, resta, multiplicación y
división.

Unidad central de procesamiento (CPU). Sección “administrativa” de


la computadora. Coordina y supervisa la operación de las demás
secciones.

Unidad secundaria de almacenamiento. “Almacén” de alta capacidad y


de larga duración de la computadora. Los programas o datos que no se
encuentran en ejecución por las otras unidades, normalmente se colocan
dentro de dispositivos de almacenamiento secundario (tales como
discos) hasta que son requeridos de nuevo.

1.4 Evolución de los sistemas operativos


Las primeras computadoras eran capaces de realizar solamente una
tarea o trabajo a la vez. A esta forma de operación de la computadora
se le conoce como procesamiento por lotes (batch) de un solo usuario.
La computadora ejecuta un solo programa a la vez, mientras procesa los
datos en grupos o lotes.

Los sistemas de software denominados sistemas operativos fueron


desarrollados para hacer más fácil el uso de la computadora. Se pensó
que era posible realizar muchas tareas o trabajos que podrían compartir
los recursos de la computadora y lograr un uso más eficiente de ésta. A
esto se le conoce como multiprogramación. La multiprogramación
significa la operación “simultánea” de muchas tareas dentro de la
computadora.
El tiempo compartido es un caso especial de la multiprogramación, en
el cual, los usuarios acceden a la computadora a través de terminales;
por lo general, dispositivos compuestos por un teclado y un monitor.
Una ventaja del tiempo compartido es que el usuario recibe respuestas
casi inmediatas a las peticiones, en vez de tener que esperar los
resultados durante largos periodos, como en los comienzos de la
computación.

1.5 Computación personal, distribuida y cliente-servidor


En 1977, Apple Computers popularizó el fenómeno de la computación
personal. Estas computadoras eran unidades “independientes” (la gente
hacía su trabajo en su propia máquina y transportaba sus discos de un
lado a otro para compartir información). Sin embargo, no eran lo
suficientemente poderosas para compartir el tiempo entre muchos
usuarios. Esto derivó en el fenómeno denominado computación
distribuida, en el que la computación de la empresa, en vez de llevarse
a cabo dentro de un centro de cómputo, se distribuye a través de redes a
los sitios en donde se realiza el trabajo de la empresa.

Las máquinas de escritorio más poderosas (denominadas estaciones de


trabajo) proporcionan al usuario enormes capacidades. La información
se comparte de manera muy sencilla a través de redes de computadoras,
en donde algunas computadoras denominadas servidores de archivos
ofrecen un lugar común de almacenamiento para programas y datos que
pueden ser utilizados por computadoras cliente distribuidas a través de
la red; de ahí el término de computación cliente-servidor.

1.6 Lenguajes máquina, lenguajes ensambladores y lenguajes de alto nivel.


Los programadores escriben instrucciones en diversos lenguajes de
programación, los cuales se dividen en tres tipos generales:

1. Lenguajes máquina.
2. Lenguajes ensambladores.
3. Lenguajes de alto nivel.

El lenguaje máquina es el “lenguaje natural” de una computadora en


particular, y está definido por el diseño del hardware de dicha
computadora. Los lenguajes máquina son dependientes de la máquina,
es decir, un lenguaje máquina en particular puede utilizarse solamente
en un tipo de computadora.
Los programadores comenzaron a utilizar abreviaturas del inglés para
representar las operaciones básicas de la computadora. Estas
abreviaturas del inglés formaron la base de los lenguajes
ensambladores. Los programas traductores llamados ensambladores se
desarrollaron para convertir programas en lenguajes ensamblador a
lenguaje máquina a la velocidad de la computadora.

A los programas traductores que convierten programas escritos en


lenguajes de alto nivel a lenguaje máquina, se les llama compiladores.
Los lenguajes de alto nivel permiten a los programadores escribir
instrucciones que se parecen mucho al inglés común, y contienen la
notación matemática común.

1.7 FORTRAN, COBOL, Pascal y Ada


En la década de los cincuenta, IBM Corporation desarrolló FORTRAN
(FORmula TRANslator, traductor de fórmulas) para que se utilizara en
aplicaciones científicas y de ingeniería que requerían cálculos
matemáticos complejos. Actualmente, FORTRAN se utiliza
ampliamente, en especial en aplicaciones de ingeniería.

COBOL (COmmon Business Oriented Language, lenguaje común


orientado a los negocios) fue desarrollado en 1959 por fabricantes de
computadoras, el gobierno y los usuarios de computadoras en la
industria. COBOL se utiliza para aplicaciones comerciales que
requieren una manipulación precisa y eficiente de grandes cantidades
de datos.

Pascal, cuyo nombre se debe al aniversario de los setecientos años del


nacimiento del filosofo y matemático Blaise Pascal, fue diseñado para
la enseñanza de la programación estructurada en ambientes académicos,
y de inmediato se convirtió en el lenguaje de programación favorito en
varias universidades.

El lenguaje de programación Ada fue desarrollado bajo el patrocinio


del Departamento de Defensa de los Estados Unidos (DoD). Una de las
características importantes de Ada se conoce como multitareas; esto
permite a los programadores especificar que ocurrirán varias tareas en
paralelo.
1.8 Historia de C
En 1967, Martin Richards desarrolló BCPL como un lenguaje para
escribir software para sistemas operativos y compiladores. Ken
Thompson, en su lenguaje B, modeló muchas de las características de
C, luego del desarrollo de su contraparte en BCPL y, en 1970, utilizó B
para crear las primeras versiones del sistema operativo UNIX en los
laboratorios Bell, sobre una computadora DEC PDP-7. Tanto BCPL
como B eran lenguajes “sin tipo”. Inicialmente, C se hizo popular como
lenguaje de desarrollo para el sistema operativo UNIX.

Con un diseño cuidadoso, es posible escribir programas en C que sean


portables para la mayoría de las computadoras. La publicación que en
1978 Prentice Hall hiciera del libro de Kernigham y Ritchie. El
lenguaje de programación C, atrajo mucho la atención de la gente a
dicho lenguaje. La amplia utilización de C para distintos tipos de
computadoras ocasionó, por desgracia, muchas variantes. Entonces se
hizo evidente la necesidad de una versión estándar de C. En 1983, se
creó el comité técnico X3K11 bajo la supervisión del American
National Standards Comittee on Computers and Information
Processing, para “proporcionar una definición clara del lenguaje e
independiente de la computadora”.

1.9 La biblioteca estándar de C


Los programas en C constan de módulos o piezas llamadas funciones.
Existen dos claves para aprender a programar en C. La primera es
aprender el propio lenguaje C, y la segunda es aprender la manera de
utilizar las funciones de la biblioteca estándar.

Cuando programe en C, por lo general utilizará los siguientes bloques


de construcción:
 Funciones de la biblioteca estándar de C.
 Funciones creadas por usted mismo.
 Funciones creadas por otras personas y disponibles para usted.

La ventaja de crear sus propias funciones es que conocerá con exactitud


cómo funcionan. Será capaz de examinar el código en C. La desventaja
es el tiempo y el esfuerzo que involucra el diseño y el desarrollo de las
nuevas funciones.

1.10 Tendencias de hardware


La comunidad de programadores se desarrolla junto con el flujo
continuo de avances dramáticos en el hardware, software y las
tecnologías de comunicación.
Por muchas décadas, y sin expectativas de cambio alguno en un futuro
próximo, los costos de hardware han disminuido de manera rápida, si
no es que precipitada.

La disminución en picada de la relación costo/rendimiento de los


sistemas de cómputo se debe a la creciente velocidad y capacidad de la
memoria en la cual la computadora ejecuta sus programas, al aumento
exponencial en la cantidad de memoria secundaria (tal como el
almacenamiento en disco) en la que tienen que almacenar los
programas y los datos durante largo tiempo.

Las empresas gastaron grandes sumas de dinero en computadoras, y


con certeza las emplearon eficientemente, pero no vieron realizadas sus
expectativas en cuanto a la productividad. Fue la invención de la
tecnología de microprocesadores en chips y su amplia utilización a
finales de la década de los setenta y en la de los ochenta, lo que sentó la
base para las mejoras en la productividad actual.

1.11 Historia de Internet


ARPA difundió el anteproyecto de conectar en red a las principales
computadoras de una docena de universidades e institutos de
investigación patrocinados por ARPA. Éstas se conectarían mediante
líneas de comunicación que operaban a la velocidad de 56 KB (es decir,
56,000 bits por segundo), esto en una época en la que la mayoría de
gente se conectaba mediante las líneas telefónicas a las computadoras a
un rango de velocidad de 110 bits por segundo. ARPA procedió con la
implantación de lo que pronto se convirtió en ARPAnet, el abuelo de la
Internet actual.

El principal beneficio de ARPAnet iba a ser el permitir que los


investigadores se comunicaran de una manera rápida y fácil entre ellos,
por medio de lo que se llamó correo electrónico (e-mail).

La red operaba mediante una técnica denominada intercambio de


paquetes, en la cual, un dato digital se enviaba en pequeños paquetes.
Dichos paquetes contenían datos, información de la dirección,
información para el control de errores y la información de la secuencia.
La información sobre la dirección se utilizaba para establecer la ruta de
los paquetes hacia su destino. La información de la secuencia se
utilizaba para ayudar a acomodar los paquetes en orden original.

Uno de los desafíos era lograr la intercomunicación. ARPA lo logró


mediante el desarrollo de IP (Internet Protocol), y con ello creó la
verdadera “red de redes”; la arquitectura actual de Internet. A la
combinación de ambos protocolos se le denomina TCP/IP.
1.12 Historia de la World Wide Web
La World Wide Web permite a los usuarios de computadoras, localizar
y ver documentos basados en multimedia (es decir, documentos con
texto, gráficos, animación, audio y/o video) de casi cualquier tema. En
1990, Tim Berners-Lee, miembro de la CERN (European Organization
for Nuclear Research) desarrolló la World Wide Web y los distintos
protocolos de comunicación que forman su esqueleto.

Internet combina las tecnologías de comunicación y computación. Hace


más fácil nuestro trabajo. Hace que la información esté disponible de
manera instantánea y conveniente a nivel mundial. Hace posible que los
individuos y los pequeños negocios puedan exponerse a nivel mundial.

Capítulo 2. Introducción a la programación en C

2.1 Introducción.
El lenguaje C facilita un método estructurado y disciplinado para el
diseño de programas.

2.2 Un programa sencillo en C: Impresión de una línea de texto.


Los comentarios comienzan con /* y terminan con */. Los
programadores insertan comentarios para documentar los programas y
para mejorar su legibilidad. El compilado de C ignora los comentarios y
no genera código objeto en lenguaje máquina. Los comentarios también
ayudan a otras personas a leer y entender un programa.

#include <stdio.h>

Es una directiva del preprocesador de C. Las líneas que comienzan con


# son procesadas por el preprocesador antes de que el programa se
compile. Contiene información que el compilador utiliza cuando
compila las llamadas a las funciones de la biblioteca estándar de
entrada y salida, como printf.

int main( )

Los paréntesis que aparecen después de main indican que main es un


bloque de construcción de programas llamado función. Todo programa
en C comienza su ejecución en la función main.
La llave izquierda, {, inicia el cuerpo de cada función; y la derecha, },
finaliza cada función. El par de llaves y la parte del programa entre
ellas se conocen como bloque.

printf( “Bienvenido a C!\n” );

Indica a la computadora que realice una acción, es decir, que imprima


en la pantalla la cadena de caracteres contenida entre las comillas. La
línea completa [que incluye printf, su argumento entre paréntesis, y el
punto y coma (;)] se conoce como instrucción. Observe que los
caracteres \n no aparecieron en pantalla. La diagonal invertida (\) se
conoce como carácter de escape. Cuando una diagonal invertida se
encuentra dentro de una cadena, el compilador ve el siguiente carácter y
lo combina con la diagonal invertida para formar una secuencia de
escape. La secuencia de escape \n significa nueva línea.

Secuenci Descripción
a de
escape
\n Nueva línea. Coloca el cursor al principio de la
siguiente línea.
\t Tabulador horizontal. Mueve el cursor a la
siguiente posición del tabulador.
\a Alerta. Suena la campana del sistema.
\\ Diagonal invertida. Inserta una diagonal
invertida en una cadena.
\” Comillas. Inserta unas comillas en una cadena.

return 0; /* indica que el programa terminó con éxito */

Se incluye al final de la función main. La palabra reservada return


representa a uno de los diversos medios que utilizaremos para salir de
una función. El valor 0 indica que el programa finalizó exitosamente.
2.3 Otro programa sencillo en C: Suma de dos enteros.

Los nombres entero1, entero2 y suma son los nombres de las


variables. Una variable es un sitio de la memoria de la computadora en
donde se puede almacenar un valor para que lo utilice un programa.

Utiliza scanf para obtener un valor por parte del usuario. La función
scanf toma la información de entrada que es el teclado. Tiene dos
argumentos “%d” y &entero1. El primer argumento, la cadena de
control de formato, indica el tipo de dato que debe introducir el usuario.
El especificador de conversión, %d, indica que el dato debe ser un
entero (la letra d significa “entero decimal”). El segundo argumento de
scanf comienza con un amperson (&), conocido en C como operador de
dirección, seguido del nombre de una variable. Cuando se combina con
el nombre de una variable, le indica a scanf la ubicación en memoria de
la variable entero1. Debe colocar un amperson antes de cada variable
en cualquier instrucción scanf.
suma = entero1 + entero2; /* asigna el resultado a suma */

La instrucción se lee como, “suma obtiene el valor de entero1 +


entero2”. El operador = y el operador + se conocen como operadores
binarios, ya que cada uno de ellos tiene dos operandos. En el caso del
operador +, los dos operandos son entero1 y entero2. En el caso del
operador =, los dos operandos son suma y el valor de la expresión
entero1 + entero2.

printf( “La suma es %d\n”, suma ); /* imprime suma */

Esta función printf tiene dos argumentos “La suma es %d\n” y suma.
El primer argumento es la cadena de control de formato. Contiene el
especificador de conversión %d, que indica que se imprimirá un entero.
El segundo argumento especifica el valor que se imprimirá.

2.4 Conceptos de memoria


Toda variable tiene un nombre, un tipo y un valor. Siempre que un
valor se coloca en una posición de memoria, dicho valor reemplaza al
valor anterior de esa ubicación. Debido a que la información anterior se
destruye, el proceso de lectura de información en una ubicación de
memoria como lectura destructiva.

2.5 Aritmética en C
El operador módulo es un operador entero que puede utilizarse sólo con
operandos enteros. La expresión x%y arroja el residuo, después de que
x se divide entre y. Por lo tanto, 7%4 arroja 3, y 17%5 arroja 2.

C evalúa las expresiones aritméticas en una secuencia precisa,


determinada por las siguientes reglas de precedencia de operadores:

1. Las operaciones de multiplicación, división y módulo se aplican


primero. Cuando son varias operaciones, se realiza de izquierda a
derecha.
2. Las operaciones de suma y resta se aplican después. Si una
expresión contiene varias operaciones de suma y resta, la
evaluación se realiza de izquierda a derecha.

Para comprender mejor las reglas de precedencia de operadores,


veamos cómo es que C evalúa un polinomio de segundo grado.
En C no existe un operador aritmético para la exponenciación, por lo
que representamos x2 como x*x. La Biblioteca Estándar de C incluye la
función pow(“potencia”), para llevar a cabo exponenciaciones.

2.6 Toma de decisiones: Operadores de igualdad y de relación


Las acciones ejecutables de C realizan acciones (como cálculos, o
entradas o salidas de datos), o toman decisiones.

La instrucción if de C permite a un programa tomar una decisión,


basándose en la verdad o falsedad de una instrucción de hechos,
llamada condición. Si la condición es verdadera, se ejecuta la
instrucción en el cuerpo de la instrucción if. Si la condición no se
cumple, no se ejecuta la instrucción en el cuerpo de la estructura.

Las condiciones en instrucciones if se forman utilizando los operadores


de igualdad y de relación. Todos los operadores de relación tienen el
mismo nivel de precedencia, y se asocian de izquierda a derecha. Los
operadores de igualdad tienen un nivel de precedencia más bajo que lo
operadores de relación, y ellos también se asocian de izquierda a
derecha.

También podría gustarte