You are on page 1of 1110
Introducci6n a las computadoras, a Internet y ala World Wide Web Objetivos + Comprender los concepts bisicos acerca de las computadoras. ‘+ Familiacizarse con diferentes tipos de lenguajes de programaci6n, + Familiarizarse con la historia del lenguaje de progtamacién C. + Conocer Ia biblioteca estindar de C, *+ Comprender los elementos de un entorno de desarrotio tipico deC. ‘+ Apreciar por qué es apropiado aprender C como primer curso de programacién. + Apreciar por qué C proporciona los fundamentos para el estudio de otros lenguajes de programacin emt general, y en particular paca C+, Java y CH. + Familiarizarse con la historia de Internet y de Ia World Wide Web, Las cosas siempre son mejores al principio. Blaise Pascal Las grandes ideas requieren un lenguaje grande, Aristofanes Nuestra vida siempre es malgastada por et detalle.. simplificar simplifcar. Henry Thoreau 2. Ineduccién a las computadoras, a Internet y a la World Wide Web Capitulo 1 Plan general 1.1 Introduceién 1.2 {Qué es una computadora? 1.3. Otganizacién de computadoras 1.4 Evolucién de los sistemas operatives 1.5 Computacién personal, distribulda y cliente-servidor 1.6 Lenguajes maquina, lenguajes ensambladores y lenguajes de alto nivel 1.7 FORTRAN, COBOL, Pascal y Ada 1.8 Lahistoria de c 1.9 Labiblioteca estindar de 110 C++ 1.11 Java 1.12 BASIC, Visual Basic, Visual C++, C# y .NET 1.13. Latendencia clave del software: Tecnologia de objetos 1.14 Conceptos bésicos de un ambiente fipico de programacién en C 1.18 Tendencias de hardware 1.16 Historia de internet 1.17 Historia de ta World Wide Web 1.18 Notas generales acerca de C y de este titro Resumen * Terminologta + Error comin de programacién * Buena prictica de programaci6n + Tip de rendimiento + Tips de portabilidad » Observaciones de ingenieria de sofware * Ejericios de awtoevaluacién * Respuestas a los jercicios de autoevaluacion * Ejerccios 1.1 Introduccién sBienvenidos aC, C++ y Java! Hemos trabajado duro pars crear To que creemos serd una experiencia educa: ‘va informativa y entretenida para usted. Este libro es tnico entre otros libros de texto de C porque: Es apropiado para gente con orientacién réeniea que cuente con poca o nada de experiencia en progr smacidn, Es adecuado para programadores experimentados que deseen conacer més profundamente el lenguaje, {.Cémo puede un libro ser atractivo para ambos grupos? La respuesta es que Ia parte central det libro pone Enfasis en la claridad de los programas, a través de las técnicas comprobadas de programacidn estructurada, Los principiantes aprenden a programar bien desde ¢! principio. Hemos intentado escribir de manera clara y directa. El libro contiene ilustraciones en abundancis, Quizé lo més importante sea que ¢! libro contiene cientos «de programas completos, los cuales muestran los resultados que arrojan cuando se jecutan en una computado- ra, Nosotros Yasyamos esto “el método del eédigo activo”. Todos estos programs de ejemplo se encuentran cen el CD-ROM que acompaia a este libro; también puede descargar los originales desde nuestra pagina Web www. deitel .com. Los primeros cuatro capitulos presentan los fundamentos de las computacién, de la programacién de ‘computadoras y del lenguaje de programacién C. Los principiantes que han tomado nuestros cursos nos han di- ‘cho que el material que presentamos en estos capitulos contiene una base sélida para un tratamiento mas pro- fundo de C en los capitulos restantes. Los programadores experimentados por 10 general leen répistamente los ‘cuatro primeros eapitulos, y encuentran que el tratamiento de C en las capstules 5 a 14 es mas riguraso y de- safiante, Ep particular, aprecian el tratamiento profundo de apuntadores, cadenas, archivos y estructuras de da tas de los capftulos restantes, Capfulo 1 Introduccién a las computacioras,a internet y a ja World Wide Web 3 Muchos programadores experimentados aprecian el tratamiento de fa programacién estructurads. A menu eleaitoryse almacena J en-ctco' Biprograme preprocesodor process elcodige Elcomplador rec el codigo objeto yo famacenaen disco Eleniazodor elaciona el céctao ‘bjeto con os Biioleces, ceaa.out yo alacena c snacs —— Merete IE] pace | order ar | Rae Ecagodor esos — eee emote roe en |.__-E | Le CPU torne code instuccion Yiaojecuta. posiblement ‘lmecena nuevas valores (Ge dt mienitos el programe seeecuta Figura 1.1 Ambiante tipico de desarrollo en C. ‘c6mo editar un programa, El programador eseribe un programa en C mediante un editor, hace correcciones si ces necesario, y después almacena el programa en un dispositivo de almacenamiento secundario, como un dis- co. Los nombres de programas en C deben terminar con la extensién .¢. ‘A continuacién, cl programador introduce el comando para compilar el programa. El compilador traduce el programa en C a c6digo en lenguaje miquina (también conocido como cédizo objeto). En un sistema de C, se ¢jecuta de manera automética un programa preprocesador antes de que comience la fase de traduccién del com- pilador. El preprocesador de C obedece ciertos comandos especiales lamados directivas del preprocesador, las custes indican que se deben realizar ciertas manipulaciones en el programa antes de la compilacién, Por lo ge~ neral, estas manipulaciones consisten en inclu otros archivos dentro del archivo para que sean compilados, y en realizar distintos reemplazos de texto. En los primeres capitulos explicatemos las directivas mas comunes del preprocesador, y daremos una explicacién detallada de las caractersticas del preprocesador en el capitulo 13. Capitulo 1 Introcuccién a las computadoras, 0 internet y alla World Wide Web 13 El compilador invoca de manera automitica al preprocesador, antes de que el programa sea convertido a len- guaje méquina. La siguiente fase se denomina enlace. Por lo general, los programas en C contienen referencias a las fun- cones y datos definidos en alguna pare, tales como las bibliotecas esténdar o las bibliotecas privadas de gru- pos de programadores que trabajan en un proyecto en particular Por lo general, el cédigo objeto producido por cl compilador de C contiene “huecos”, debido a estas partes faltantes. Un enlazador enlaza el e6digo objeto ccon el cédigo correspondiente a las funciones faltantes para producir una imagen ejecutable (sin piezas faltan- tes). En un tipico sistema UNIX, el comando para compilar y enlazar un programa es ec. Para compilar y en~ lazar un programa llamado bienvenido.c teclee: ce bienvenido.c nel indicador de UNIX y presione la tecla Bnirar (Intro (0 de retorno).{Nota: Los comandlos de UNIX son sen- sibles a maytiscalas y minisculas, asegtrese de que teciea las cs como mimisculas y de que las letras del nombre de archivo sean maytsculas 0 mintsculas,segtin sea cl caso, Si Ta compilacidn y el enlace del programa ocurten con éxito, se crea un archivo a .out. Esta cs una imagen ejecutable de nuestro programa bienvenido..c. La siguiente fase se denomina carga. Antes de que el programa se pueda cjecutar, ste debe cargarse en memoria. Esto s¢ lleva a cabo mediante el cargador, el cual toma la imagen ejecutable del disco y Ia transfie- re a la memoria. También se cargan los componentes adicionales de la bibliotecas compartidas que soportan cl programa Por sitimo, la computadora, bajo cl control de la CPU, ejecuta el programa, una instrucckin ala vez. Para cargary ejecutar el programa en un sistema UNIX, teclee a -out en el indicador de UNIX y presione Entrar: Los programas no siempre funcionan al primer intento. Cada uno de los procedimientos puede falar debi- 4o a distinis errores, los cuales explicaremos. Por ejemplo, un programs en ejecucién podria intentar hacer ‘una divisin entre cero (una operacién ilegal en las computadoras, asf como en In aritmética). Esto ocasionarfa 4ue la computadora desplegara un mensaje de error. El programador volveria entonces la fase de edicin ha- ra las correcciones necesarias y procederfa con las fases restantes para verificar que correcciones funcionan adecuadamente. Error comiin de programacién 1.1 “Errores coma la divsiGn enve cero ocurven divante la ejecucian del programa, asi que estos errores son denon nnados erraes en tiempo de ejecucidn. En general, fa division entre coro es un error fatal, es decir un errr que ‘ocasiona la terminacisn inmediata del programa sin haber realizado de maneva exitasa su trabajo, Las errores no Jfatales pert al programa la ejecucin completa en su mayorta con resultados incorrectos. [Novas En algunos sistemas, la divisin entre cero no es un error fatal. Revise Ta documentacién de su sistema] ‘La mayoria de los programas en C introducen y/o arrojan datos. Ciertas funciones en C toman su entrada desde stdin (el flujo estindar de entrada) cl cual es, por lo general, el teclado, pero el stdin puede conec- tase a otro dispositivo. En su mayoria, los datos son arrojados hacia stdout (el flujo estandar de salida) el cual, por lo general es el monitor, pero el stdout puede conectarse a otro dispositivo. Cuando decimos que tun programa imprime un resultado, normalmente nos referimos a que el resultado se despliega en el monitor. Los datos pueden ser arrojados hacia otros dispositivos tales como discos e impresoras de alta velocidad. Exis- te también un flujo estdndar de errores denominado stderr. El flujo stderr (por lo general asociado con el monitor) se utiliza para desplegar los mensajes de error. Es comiin para los usuarios destinar los datos de sa lida normales, es decir, cl stdout, hacia un dispositivo distinto al monitor y mantener el stderr asignads al monitor, de manera quel usuario pueda estar informado de los errores de manera inmediata 1.15 Tendencias de hardware La comonidad de programadores se dsarola junta con el flujo continuo deavances dramaticos en el ard ware, el sofware y ls teenalogias de comnicacén. En general, cade ao la gene espera pagar ms por Ia rayora de los servicios y productos. Lo ontario ha sido el caso en los campos de las computador y 8s co- municaciones, especialmente con respect los cosios de anteimiento de estas teenologias, Por muchas Jé- cadas, sin expectaivas de cambio alguno en un futuro préximo, los costs de hardware han dsminuido de manera répda, sino es que precpitada, Este e un fendmeno de la ecnologi, Cada uno o dos fos, Ia capa- 14 Inoduccién a las computadoras,a Internet y a la World Wide Web Capfulo 1 Cckiades de las computadoras tienden 1 duplicarse mientras que los precios de las computadoras siguen cayendo. La disminucién en picada de la relacién costa/rendimiento de los sistemas de cémputo se debe a la ereciente velocidad y capacidad de la memoria en la cual la computadora ejecuta sus programas, al aumento exponen- cial en la cantidad de memoria secundaria (tal como el almacenamicnto en disco) en la que tienen que almacenar Jos programas y los datos durante largo tiempo, y al continuo ineremento en la velocidad de proceso (la velo cidad a la eual se ejecutan los programas en las computadoras, es decir, la Velocidad a la que hacen su trabajo), En las comunicaciones ha ocurrido el mismo crecimiento, y sus costos también han ido en picada, espe- cialmente en afios recientes con Ta enorme demanda por ancho de banda de comunicaciones, la cual arrae una ‘enorme competencia, No conacemos otros campos en los que la teenologfa se mueva tan répidamente y los cos- 10s disminuyan de la misma forma. Cuando en las décadas de los sesenta y setenta hizo explosién el uso de las, computadoras, se hablaba de las grandes mejoras en la productividad humana que las computadoras y las o- ‘municaciones traerfan consigo. Sin embargo, estas mejoras no se materializaron. Las empresas gastaron gran- des 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 tecnologia de microprocesadores en chips yy su amplia wilizaci6n a finales de la década de los setenta y en la de los ochenta, Jo que sent6 la base para las ‘mejoras en la productividad actual 1.16 Historia de Internet ‘A finales de 1a década de los sesenta, uno de los autores (HIMD) de este libro era us estudiante egresado del “MIT. Sus investigaciones dentro del proyecto Mae del MIT (ahora el laboratoio d ciencias de la computaciGn, Ja casa del World Wide Web Consortium), eran patrocinadas por ARPA (Advanced Rescarch Projects Agency of the Department of Defense). ARPA patrocin6 una conferencia en la que algunas docenas de estudiantes de proyecto se eunieron en la universidad de Illinois, en Urbana-Champaign, para conocer y compartir sus ideas. Durante esta conferencia, ARPA difundis el anteproyecto de coneciar en red a las principales computadaras de tuna docena de universidades ¢insitutos de investigacin patrocinados por ARPA. Estas se conectarfan mediante lineas de comunicacién que operaban, en ese entonces, a le inretble velocidad de 56 KB (es decir, 56,000 bits por segundo), esto en una época en la que Ia mayorfa dela gente (de los pocos que podian estar) se conectaba mediante las Iineas telefGnicas a las computadoras @ un rango de velocidad de 110 bits por segundo. HMD recuerda hicidament Ia emocién en aquella conierencia. Investigadores de Harvard hablaron acerca de comu- nicar la Univac 1108, “una supercomputadera” dela universidad de Utah, con todo el pals, para manejar los caleulos relacionados con sus investigaciones acerca de grficas por computadors. Se comentaron muchas otras posibilidades inrigantes. La investgacién aeadémica estaba a punto de dar un paso gigantesco hacia delantc Poco después de éta conferencia, ARPA prOcedi con la implantacién de lo que pronto se convirti en ARPA net, 1 abuelo de Ia Internet actual Las cosas resultaron diferentes a lo que se habia planeado originalmente. En lugar de que el principal be- neficio fuera el que los investigadares pudieran compartir sus computadoras, se hizo evidente que el principal beneficio de ARPAnet iba a ser el permitr que Ios investigadores se comunicaran de una manera ripiday fac entze ellos, por medio de lo que se llame correo electrénico (e-mail) Esto es verdad incluso en el Internet ae- tual, en donde el correo clectrénicofacilita la comunicacion de td tipo de personas alrededor del mundo. Usa de las principales metas de ARPA, con respecto a lated, era permitir que miltiples usuarios enviaran y eeibieran informacién al mismo tiempo y sobre las misma rutas de comuniaci6n (al como una Tinea tele- {nica). La red operaba mediante una téenica denominada intercambio de paquetes, en la cual, un dato digital se enviaba en pequefios paguetes. Dichos paquets contentan datos, informaciGn de la dtecciGn, informacign para el coniol de ertoes y a informacién de la secuencia. La informacién sobre la dreccidn se utlizaba para establecer la ruta de los paquetes hacia su destino. La informacién de la Secuencia se ullizaba para ayudar a ‘acomodar los pauetes en su orden original (los cuales, debido alos complejos mecanismos de ruteo, en tea- lidad pueden llegar en desorden), Los paquetes de muchas personas se mezclahan en las mismas Tineas de comunicacién, La wenica de intercambio de paquetesredujo de manera importante os costos de tansiisin, com= parados con los costos de ls leas de comunicacin dedicadas. La ted se disei6 para operar sin un control central. Esto significaba que si una porcin de la red fllaba, Jas porciones restantes podrian ser capaces de enviar paquetes, de los remitentes a los destinatarios, através de rutas alternas. Coptulo 1 Infroduccién a las computadoras, a inlemet yaa World Wide Web 15 Los protocolos para la comunicacién a través de ARPAnet se hicieron conocidos como TCP (Transmission Control Protocol). TCP garantizaba que los mensajes se enrutaran apropiadamente del remitente al destinata- rio, y que los mensajes Hegaran intactos, En paralelo con Ia primera evolucién de Intemet, las empresas de todo e1 mundo estaban instalando sus propias redes de comunicacién, tanto intraempresariales (dentro de la empresa), como interempresariales (en- tue las empresas). En ese entonces aparecié una gran cantidad de hardware y software para redes, Uno de los desafios era lograr la intercomunicaci6n. ARPA lo logr6 mediante cl desarroll6 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 TCPAP. En un principio, el uso de Internet estaba limitado a las universidades y a los institutos de investigacion; después, la milicia se convirtié en un usuario importante. En algin momento, el gobierno permitié el acceso a Internet con fines comerciales. De entrada, hubo recelo por parte de las comunidades militares y de investig: ci6n, pensaban que el tiempo de respuesta se haria deficiente, conforme “la red” se saturara de usuatios. De hecho, ha ocurrido lo contrario, La gente de negocios rpidamente se dio cuenta de que si utlizaban cfectivamente la Internet, podrian afinar sus operaciones y ofrecer nuevos y mejores servicios a sus clientes. Como resultado, los ejecutivos de negocios gastaron grandes cantidades de dinero para desarrollar y mejorar Intemet. Esto generé una feroz competencia entre los proveedores de dispositivos de comunicacién, de hard- ‘ware y software para cubrir la demanda. El resultado es que el ancho de banda (es decir, Ia capacidad de trans isin de informacin de las lineas de comunicacién) sobre Internet ha crecido enormemente y Jos costos ban ido en picada, En la actualidad, los paises alrededor del mundo saben que Internet es erucial para su prosperi- dad econémica y su competitividad. 1.17 Historia de la World Wide Web La World Wide Web permite alos usuarios de computadoras, localizar y ver documentos basadas en multimedia (es decir, documentos con texto, gréficas, animacién, audi y/o video) de casi cualquier tema, Aunque Internet se desarroll6 hace més de tres décadas, la introduccién de World Wide Web es un suceso relativamente recien- te, En 1990, Tin Berners-Lee, miembro de In CERN (European Organization for Nuclear Research) desarroll6 la World Wide Web y los distintos protocolos de comunicacién que forman su esqueleto. Tanto Internet como la World Wide Web estardn en Ia lista de las creaciones mas importantes de la hum dad, En el pasado, Ia mayorfa de las aplicaciones de cémputo se ejecutaban sobre computadoras “indepen- dientes”, es decir, computadoras que no estaban conectadas entre si Las aplicaciones actuales pueden ser escritas para comunicar a cientos de miles de computadoras alrededor del mundo. Internet combina las tecnologias de comunicacién y computacién. Hace mds Fécil nuestro wabajo. Hace que la informacién esté disponible de mane- ‘2 Instantinea y conveniente 2 nivel mundial. Hace posible que los individuos y los pequeéios negocios puedan lexponerse a nivel mundial. Esté modificando la naturaleza de la forma en que se llevan a cabo los negocios. La gente puede buscar los mejores precios y virtualmente cualquier producto o servicio, Las comunidades con inlereses especiales pueden mantenerse en contacto entre si. Los investigadores pueden dar aviso de manera ins- {anténea de los Gltimos avances a nivel mundial. 1.18 Notas generales acerca de C y de este libro Aguas veces los programadores experimentados de C se sienten orgullosos por ser capaces de crear aplicacio- es tara, retoreida ¢intrincadas del lenguaje. sta es una mala préctica de programacign. Hace que los progra- ‘mas sean mis dificiles de ler, con mayor probabilidad de comporiarse de manera extrsfa, mas difiiles de leer y depurar, y ms dificiles de adaptar a modificaciones necesarias. Est libro se orienta hacia los programadores Drincipiantes, por ello motivamos la claridad. La siguiente es nuestra primera “buena préctica de programacién”. Buena practica de programacién 1.1 Escriba sus programas en C de manera clara, directa y simple. Aesto se le Nama algunas veces KIS ("keep tt sim ple”, maniéngalo sinple). No "estire” ef lengua, inientando emplearlo de manera extraia. Probablemente ha escuchado que C es un lenguaje portable, y que los programas escritos en C pueden sje. ccutarse en muchas computadoras diferentes. La portabilidad es una meta escurridiza. El documento C estin- 16 Introduccién a las computadoras, a Internet y a Ia World Wide Web Capitulo 1 dar de ANSI contiene una larga lista de temas acerca de Ia portabilidad, y se han escrito libros completos que la explican, Tip de portabilidad 1.3 “Aungue ex posible escribir programas portables, exisien muchos problemas entre Tos diferenres compladores de ©, yas computadoras pueden hacer que la portbilidad sen diel de canseguix Escrbir programas en C no go rantiza la portabilidad. A menudo, el programador fendrd que enfientarsedivectomente con la variaciones ene os compiladores y las computadoras. Nosotros hicimos una revisién cuidadosa de! documento para cl estindar de C, y comparamos nuestra presentacin contra este documento para que fuera completa y acertada. Sin embargo, C sun lengusje rico. y existen algunas sutlezas en el lenguaje y algunos temas avanzados que no cubrimos. Si usted requiere detalles ‘6enicosadicionaes sobre C, e sugerimos que lea el documento de Cestindar ol libro de Kemighan y Ritchie. Nosotros limitamos nuestra explicacién al C de ANSV/ISO. Muchas de las caracteristicas de esa versi6n

You might also like