Enviar búsqueda
Cargar
Introduccion a la programacion en c prev
•
0 recomendaciones
•
264 vistas
J
jtk1
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 16
Descargar ahora
Descargar para leer sin conexión
Recomendados
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
claudiocj7
Java a tope
Java a tope
Emanuel Gauler
Introduccion a matlab
Introduccion a matlab
Jessica Pérez Rivera
Manual excitador-vaca
Manual excitador-vaca
Radio Bronka 104.5 FM
Introduccion a la_programacion_con_c
Introduccion a la_programacion_con_c
Abefo
Programación en c j. carlos lopez ardao
Programación en c j. carlos lopez ardao
victdiazm
R manual
R manual
Ingrid Muñoz
Memoria dinámica en el lenguaje de programación c
Memoria dinámica en el lenguaje de programación c
juan perez
Recomendados
MANUAL DE LENGUAJE C
MANUAL DE LENGUAJE C
claudiocj7
Java a tope
Java a tope
Emanuel Gauler
Introduccion a matlab
Introduccion a matlab
Jessica Pérez Rivera
Manual excitador-vaca
Manual excitador-vaca
Radio Bronka 104.5 FM
Introduccion a la_programacion_con_c
Introduccion a la_programacion_con_c
Abefo
Programación en c j. carlos lopez ardao
Programación en c j. carlos lopez ardao
victdiazm
R manual
R manual
Ingrid Muñoz
Memoria dinámica en el lenguaje de programación c
Memoria dinámica en el lenguaje de programación c
juan perez
DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUA...
DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUA...
ramtamplam13
Manual básico de programación en c++
Manual básico de programación en c++
cexar0
Algoritmos
Algoritmos
Aquim Bonilla
Programación en c y c++
Programación en c y c++
Eduardo Alexander Hernández Rodríguez
Gretl guide-es[1]
Gretl guide-es[1]
CaminoPescador
PFC: Análisis de Lenguajes Específicos de Dominio para Sistemas Embebidos
PFC: Análisis de Lenguajes Específicos de Dominio para Sistemas Embebidos
azubi
52811100 manual-sp
52811100 manual-sp
rnestor41
Minimanualillo swi prolog
Minimanualillo swi prolog
Facultad de Ciencias y Sistemas
Econometria aplicada con gretl
Econometria aplicada con gretl
apuntesdeeconomia
chVhdl univ valencia
chVhdl univ valencia
jjebmiz
Xhtml tuto beta
Xhtml tuto beta
Publicación Digital
Guia analisis-de-algoritmos
Guia analisis-de-algoritmos
Miguel Ángel Salazar Rosas
Iniciación a python
Iniciación a python
Fernando Salamero
Aprenda C++ como si estuviera en primero
Aprenda C++ como si estuviera en primero
Andy Juan Sarango Veliz
C++
C++
spoken89
Libro javacontapa
Libro javacontapa
Robert Wolf
Análise multimodal de infográfico - Fábio Nunes Assunção
Análise multimodal de infográfico - Fábio Nunes Assunção
Fabio Nunes
Emakumeen aurkako indarkeria
Emakumeen aurkako indarkeria
Maialen_Enbeita
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
Armando Nuñez Ramos
How to save india from anarchy and violence
How to save india from anarchy and violence
Bharat Gandhi Votership
Rol de pago
Rol de pago
Edison Chicaiza
Presentaciónel rinoceront
Presentaciónel rinoceront
aleix_gonzalez
Más contenido relacionado
La actualidad más candente
DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUA...
DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUA...
ramtamplam13
Manual básico de programación en c++
Manual básico de programación en c++
cexar0
Algoritmos
Algoritmos
Aquim Bonilla
Programación en c y c++
Programación en c y c++
Eduardo Alexander Hernández Rodríguez
Gretl guide-es[1]
Gretl guide-es[1]
CaminoPescador
PFC: Análisis de Lenguajes Específicos de Dominio para Sistemas Embebidos
PFC: Análisis de Lenguajes Específicos de Dominio para Sistemas Embebidos
azubi
52811100 manual-sp
52811100 manual-sp
rnestor41
Minimanualillo swi prolog
Minimanualillo swi prolog
Facultad de Ciencias y Sistemas
Econometria aplicada con gretl
Econometria aplicada con gretl
apuntesdeeconomia
chVhdl univ valencia
chVhdl univ valencia
jjebmiz
Xhtml tuto beta
Xhtml tuto beta
Publicación Digital
Guia analisis-de-algoritmos
Guia analisis-de-algoritmos
Miguel Ángel Salazar Rosas
Iniciación a python
Iniciación a python
Fernando Salamero
Aprenda C++ como si estuviera en primero
Aprenda C++ como si estuviera en primero
Andy Juan Sarango Veliz
C++
C++
spoken89
Libro javacontapa
Libro javacontapa
Robert Wolf
La actualidad más candente
(16)
DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUA...
DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUA...
Manual básico de programación en c++
Manual básico de programación en c++
Algoritmos
Algoritmos
Programación en c y c++
Programación en c y c++
Gretl guide-es[1]
Gretl guide-es[1]
PFC: Análisis de Lenguajes Específicos de Dominio para Sistemas Embebidos
PFC: Análisis de Lenguajes Específicos de Dominio para Sistemas Embebidos
52811100 manual-sp
52811100 manual-sp
Minimanualillo swi prolog
Minimanualillo swi prolog
Econometria aplicada con gretl
Econometria aplicada con gretl
chVhdl univ valencia
chVhdl univ valencia
Xhtml tuto beta
Xhtml tuto beta
Guia analisis-de-algoritmos
Guia analisis-de-algoritmos
Iniciación a python
Iniciación a python
Aprenda C++ como si estuviera en primero
Aprenda C++ como si estuviera en primero
C++
C++
Libro javacontapa
Libro javacontapa
Destacado
Análise multimodal de infográfico - Fábio Nunes Assunção
Análise multimodal de infográfico - Fábio Nunes Assunção
Fabio Nunes
Emakumeen aurkako indarkeria
Emakumeen aurkako indarkeria
Maialen_Enbeita
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
Armando Nuñez Ramos
How to save india from anarchy and violence
How to save india from anarchy and violence
Bharat Gandhi Votership
Rol de pago
Rol de pago
Edison Chicaiza
Presentaciónel rinoceront
Presentaciónel rinoceront
aleix_gonzalez
Aprende java como si estuviera en primero pre
Aprende java como si estuviera en primero pre
jtk1
Mima agricultura y biotransformacion urbana
Mima agricultura y biotransformacion urbana
Redprodepaz
Priporocilno_Furlan
Priporocilno_Furlan
Žiga Skarza
Slae zambrano
Slae zambrano
Daniel Zambrano
Power point udes
Power point udes
Margot Loaiza
Presentación del curso
Presentación del curso
beamior5472
Zona de escape
Zona de escape
Aldi Tricerri
Evidenciascanasta san luis
Evidenciascanasta san luis
yolyvasquez
Ley sopa, ley pipa, cierre de upload y criminalizacion en la propiedad intele...
Ley sopa, ley pipa, cierre de upload y criminalizacion en la propiedad intele...
Kevin Morales Ccama
Curso de programacion en c++ prev
Curso de programacion en c++ prev
jtk1
Ficha de acompanhamento de leitura 1
Ficha de acompanhamento de leitura 1
brandao_cicera
Serlets y jsp prev
Serlets y jsp prev
jtk1
Karma nightclub posters
Karma nightclub posters
theawingaard
Sistemas informáticos
Sistemas informáticos
Jonathan Santana Ptte
Destacado
(20)
Análise multimodal de infográfico - Fábio Nunes Assunção
Análise multimodal de infográfico - Fábio Nunes Assunção
Emakumeen aurkako indarkeria
Emakumeen aurkako indarkeria
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
How to save india from anarchy and violence
How to save india from anarchy and violence
Rol de pago
Rol de pago
Presentaciónel rinoceront
Presentaciónel rinoceront
Aprende java como si estuviera en primero pre
Aprende java como si estuviera en primero pre
Mima agricultura y biotransformacion urbana
Mima agricultura y biotransformacion urbana
Priporocilno_Furlan
Priporocilno_Furlan
Slae zambrano
Slae zambrano
Power point udes
Power point udes
Presentación del curso
Presentación del curso
Zona de escape
Zona de escape
Evidenciascanasta san luis
Evidenciascanasta san luis
Ley sopa, ley pipa, cierre de upload y criminalizacion en la propiedad intele...
Ley sopa, ley pipa, cierre de upload y criminalizacion en la propiedad intele...
Curso de programacion en c++ prev
Curso de programacion en c++ prev
Ficha de acompanhamento de leitura 1
Ficha de acompanhamento de leitura 1
Serlets y jsp prev
Serlets y jsp prev
Karma nightclub posters
Karma nightclub posters
Sistemas informáticos
Sistemas informáticos
Similar a Introduccion a la programacion en c prev
Vba excel mnumericos1
Vba excel mnumericos1
Alejandra Regalado
Vba excel mnumericos
Vba excel mnumericos
aprendiendocpp
Vba excel numericos
Vba excel numericos
JOHN BONILLA
Diseño Estructurado de Algoritmos
Diseño Estructurado de Algoritmos
Jorge Hernán Soto Osorio
Tutorial c18
Tutorial c18
Miguel Angel Corona Lòpez
Introduccion comunicaciones
Introduccion comunicaciones
hgm2007
Manual cpp
Manual cpp
Aldo Hernán Zanabria Gálvez
Practicas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmos
Chucho E. Peña
Manual de programacion lenguaje en C
Manual de programacion lenguaje en C
Ashok Bhoiwani Cabrera
Linux benchmarking como
Linux benchmarking como
Instituto Tecnologico De Pachuca
Introduccion al lenguaje c
Introduccion al lenguaje c
Chucho E. Peña
Manual Qcad
Manual Qcad
geosam
Manual de qcad
Manual de qcad
MAPIVALLE
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Angel De las Heras
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Secretaria de Educacion Publica
Programacion en Phyton desde ce..........................ro
Programacion en Phyton desde ce..........................ro
Ma Florencia Ferrari
Introducción a la programación en C
Introducción a la programación en C
Andy Juan Sarango Veliz
Introducción a la programación en c
Introducción a la programación en c
victdiazm
Libro programación-en-c++
Libro programación-en-c++
Andres Escobar
Arduino user manual_es
Arduino user manual_es
sunam09
Similar a Introduccion a la programacion en c prev
(20)
Vba excel mnumericos1
Vba excel mnumericos1
Vba excel mnumericos
Vba excel mnumericos
Vba excel numericos
Vba excel numericos
Diseño Estructurado de Algoritmos
Diseño Estructurado de Algoritmos
Tutorial c18
Tutorial c18
Introduccion comunicaciones
Introduccion comunicaciones
Manual cpp
Manual cpp
Practicas estructuras de datos y algoritmos
Practicas estructuras de datos y algoritmos
Manual de programacion lenguaje en C
Manual de programacion lenguaje en C
Linux benchmarking como
Linux benchmarking como
Introduccion al lenguaje c
Introduccion al lenguaje c
Manual Qcad
Manual Qcad
Manual de qcad
Manual de qcad
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
Programacion en Phyton desde ce..........................ro
Programacion en Phyton desde ce..........................ro
Introducción a la programación en C
Introducción a la programación en C
Introducción a la programación en c
Introducción a la programación en c
Libro programación-en-c++
Libro programación-en-c++
Arduino user manual_es
Arduino user manual_es
Más de jtk1
Actividad modulo1
Actividad modulo1
jtk1
Java schaum pre
Java schaum pre
jtk1
Programar java 2pre
Programar java 2pre
jtk1
Serlets java pre
Serlets java pre
jtk1
Portada java 2
Portada java 2
jtk1
Piensa en java per
Piensa en java per
jtk1
Lenguaje de programacion java prev
Lenguaje de programacion java prev
jtk1
Java kaime conpre
Java kaime conpre
jtk1
Java jedi prev
Java jedi prev
jtk1
Java j2me prev
Java j2me prev
jtk1
Java ferca
Java ferca
jtk1
Java desde 0 pre
Java desde 0 pre
jtk1
Java basico 2
Java basico 2
jtk1
Java angel estevan pre
Java angel estevan pre
jtk1
Java 3dpre
Java 3dpre
jtk1
Java 2d
Java 2d
jtk1
Introduc java pre
Introduc java pre
jtk1
Guia de iniciación en java prev
Guia de iniciación en java prev
jtk1
52 ejercicios resueltos en pseudocodigoprev
52 ejercicios resueltos en pseudocodigoprev
jtk1
Serlets y jsp pre
Serlets y jsp pre
jtk1
Más de jtk1
(20)
Actividad modulo1
Actividad modulo1
Java schaum pre
Java schaum pre
Programar java 2pre
Programar java 2pre
Serlets java pre
Serlets java pre
Portada java 2
Portada java 2
Piensa en java per
Piensa en java per
Lenguaje de programacion java prev
Lenguaje de programacion java prev
Java kaime conpre
Java kaime conpre
Java jedi prev
Java jedi prev
Java j2me prev
Java j2me prev
Java ferca
Java ferca
Java desde 0 pre
Java desde 0 pre
Java basico 2
Java basico 2
Java angel estevan pre
Java angel estevan pre
Java 3dpre
Java 3dpre
Java 2d
Java 2d
Introduc java pre
Introduc java pre
Guia de iniciación en java prev
Guia de iniciación en java prev
52 ejercicios resueltos en pseudocodigoprev
52 ejercicios resueltos en pseudocodigoprev
Serlets y jsp pre
Serlets y jsp pre
Introduccion a la programacion en c prev
1.
2.
AULA POLITÈCNICA /
ETSETB Marco A. Peña Basurto José M. Cela Espín Introducción a la programación en C EDICIONS UPC
3.
Primera edición: septiembre
de 2000 Diseño de la cubierta: Manuel Andreu © Los autores, 2000 © Edicions UPC, 2000 Edicions de la Universitat Politècnica de Catalunya, SL Jordi Girona Salgado 31, 08034 Barcelona Tel.: 934 016 883 Fax: 934 015 885 Edicions Virtuals: www.edicionsupc.es E-mail: edicions-upc@upc.es Producción: CPET (Centre de Publicacions del Campus Nord) La Cup. Gran Capità s/n, 08034 Barcelona Depósito legal: B-32.449-2000 ISBN: 84-8301-429-7 Quedan rigurosamente prohibidas, sin la autorización escrita de los titulares del copyright, bajo las san- ciones establecidas en las leyes, la reproducción total o parcial de esta obra por cualquier medio o pro- cedimiento, comprendidos la reprografía y el tratamiento informático, y la distribución de ejemplares de ella mediante alquiler o préstamo públicos.
4.
Introducci´ n a
la programaci´ n en C o o Marco A. Pe˜ a n Jos´ M. Cela e Departament d’Arquitectura de Computadors Universitat Polit` cnica de Catalunya e 08034 Barcelona, Espa˜ an marcoa@ac.upc.es cela@ac.upc.es 19 de junio de 2000
5.
i
´ Indice General ´ Indice General ´ Indice de Figuras v ´ Indice de Tablas vii Prefacio ix 1 Conceptos b´ sicos de programaci´ n a o 1 1.1 Ordenador y perif´ ricos . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Bits, bytes y palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Lenguajes de programaci´ n . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3.1 Lenguajes de bajo nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.2 Lenguajes de alto nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Elaboraci´ n de un programa . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Traductores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.1 Ensambladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.2 Int´ rpretes . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.5.3 Compiladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2 Primer contacto con C 7 2.1 Un poco de historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.2 Caracter´sticas del lenguaje . . ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3 Creaci´ n de un programa . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Primeros pasos con C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.5 El modelo de compilaci´ n de C o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 Empezando a programar 13 3.1 Identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Estructura de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.3 Variables y constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.3.2 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3.3 Entrada y salida de valores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.4 Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.1 Operador de asignaci´ n . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.4.2 Operadores aritm´ ticos . . e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 © Los autores, 2000; © Edicions UPC, 2000.
6.
´ Indice General
ii 3.4.3 Operadores relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.4.4 Operadores l´ gicos . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.4.5 Prioridad de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4 Construcciones condicionales 23 4.1 Construcci´ n if . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.1.1 Variante if-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.1.2 Variante if-else-if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.2 El operador condicional ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Construcci´ n switch . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 Construcciones iterativas 33 5.1 Construcci´ n while . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.2 Construcci´ n do-while . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Construcci´ n for . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . 36 5.3.1 El operador coma (,) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.3.2 Equivalencia for-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.4 Las sentencias break y continue . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6 Tipos de datos elementales 41 6.1 N´ meros enteros . . . . . . . u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 6.1.1 Modificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.1.2 Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 6.2 Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.1 Caracteres especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.2 Enteros y el tipo char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.2.3 Conversiones de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.3 N´ meros reales . . . . . . . . u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7 Tipos de datos estructurados: Tablas 49 7.1 Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.1.1 Consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.1.2 Asignaci´ n . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.1.3 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.2.1 Consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.2.2 Asignaci´ n . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.2.3 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.3 Tablas multidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.3.1 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.4 Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 © Los autores, 2000; © Edicions UPC, 2000.
7.
iii
´ Indice General 7.4.1 Asignaci´ n . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . 57 7.4.2 Manejo de cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.4.3 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 7.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 8 Otros tipos de datos 63 8.1 Estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 8.1.1 Declaraci´ n de variables . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . 64 8.1.2 Acceso a los campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 8.1.3 Asignaci´ n . . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . 65 8.1.4 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 8.2 Uniones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 8.2.1 Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 8.3 Tipos de datos enumerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 8.4 Definici´ n de nuevos tipos de datos . . . . . o . . . . . . . . . . . . . . . . . . . . . . 69 8.5 Tiras de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 8.5.1 Operador de negaci´ n . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . 70 8.5.2 Operadores l´ gicos . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . 71 8.5.3 Operadores de desplazamiento de bits . . . . . . . . . . . . . . . . . . . . . . 71 8.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 9 Punteros 75 9.1 Declaraci´ n y asignaci´ n de direcciones o o . . . . . . . . . . . . . . . . . . . . . . . . . 75 9.1.1 Declaraci´ n . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.1.2 Asignaci´ n de direcciones . . . o . . . . . . . . . . . . . . . . . . . . . . . . . 76 9.2 Indirecci´ n . . . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.3 Operaciones con punteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 9.4 Punteros y tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 9.5 Punteros y estructuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 10 Funciones 87 10.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 10.2 Definici´ n y llamada . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . 89 10.2.1 Definici´ n . . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . 89 10.2.2 Prototipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10.2.3 Llamada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.3 Variables y par´ metros . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . 91 10.3.1 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.3.2 Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.3.3 Par´ metros formales . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . 92 10.4 Devoluci´ n de resultados . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . 93 10.5 Paso de par´ metros . . . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . 94 10.5.1 Paso de par´ metros por valor . . . a . . . . . . . . . . . . . . . . . . . . . . . . 94 10.5.2 Paso de par´ metros por referencia a . . . . . . . . . . . . . . . . . . . . . . . . 95 © Los autores, 2000; © Edicions UPC, 2000.
8.
´ Indice General
iv 10.5.3 Las tablas y las funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 10.5.4 Par´ metros en la funci´ n main a o . . . . . . . . . . . . . . . . . . . . . . . . . 99 10.6 Recursividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 10.7 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 11 Ficheros 105 11.1 Abrir y cerrar ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 11.2 Leer y escribir en ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 11.3 Otras funciones para el manejo de ficheros . . . . . . . . . . . . . . . . . . . . . . . . 111 11.3.1 feof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 11.3.2 ferror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.3.3 fflush . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 11.4 Ficheros est´ ndar: stdin, stdout, stderr a . . . . . . . . . . . . . . . . . . . 113 11.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 A El preprocesador 119 A.1 Directiva include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 A.2 Directivas define y undef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 A.3 Directivas ifdef y ifndef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 A.4 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 B La librer´a est´ ndar ı a 123 B.1 Manipulaci´ n de cadenas de caracteres . . o . . . . . . . . . . . . . . . . . . . . . . . . 123 B.2 Entrada y salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.2.1 Entrada y salida b´ sica . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . 124 B.2.2 Entrada y salida con formato . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.2.3 Ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 B.3 Funciones matem´ ticas . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . 127 B.4 Clasificaci´ n y manipulaci´ n de caracteres o o . . . . . . . . . . . . . . . . . . . . . . . . 128 B.5 Conversi´ n de datos . . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . 129 B.6 Manipulaci´ n de directorios . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . 129 B.7 Memoria din´ mica . . . . . . . . . . . . a . . . . . . . . . . . . . . . . . . . . . . . . 129 C Sistemas de numeraci´ n o 135 C.1 Naturales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 C.2 Enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 C.3 Reales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 C.3.1 Problemas derivados de la representaci´ n en coma flotante o . . . . . . . . . . . 138 D Tabla de caracteres ASCII 141 E Bibliograf´a y recursos WEB ı 143 © Los autores, 2000; © Edicions UPC, 2000.
9.
v
´ Indice de Figuras ´ Indice de Figuras 1.1 Niveles de abstracci´ n en los lenguajes de programaci´ n . . . . . o o . . . . . . . . . . . 2 1.2 Cronolog´a en el desarrollo de algunos lenguajes de programaci´ n ı o . . . . . . . . . . . 3 1.3 Ciclo de vida de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Fases en la interpretaci´ n de un programa . . . . . . . . . . . . . o . . . . . . . . . . . 5 1.5 Fases en la compilaci´ n de un programa . . . . . . . . . . . . . . o . . . . . . . . . . . 6 2.1 Modelo de compilaci´ n de C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 11 4.1 Esquema de funcionamiento de if y de if-else . . . . . . . . . . . . . . . . . . . 24 4.2 Esquema de funcionamiento de switch . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.1 Esquema de funcionamiento de while . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.2 Esquema de funcionamiento de do-while . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Esquema de funcionamiento de for . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.1 Representaci´ n gr´ fica de un vector . . . . . . . . . . . . . . . . . . . . . . . . . . . o a 50 7.2 Representaci´ n gr´ fica de una matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . o a 54 7.3 Representaci´ n gr´ fica de una tabla de tres dimensiones . . . . . . . . . . . . . . . . . o a 56 9.1 Acceso a una matriz mediante un puntero . . . . . . . . . . . . . . . . . . . . . . . . 82 10.1 Acceso a una matriz mediante un puntero . . . . . . . . . . . . . . . . . . . . . . . . 99 11.1 Almacenamiento de un fichero de texto . . . . . . . . . . . . . . . . . . . . . . . . . 106 © Los autores, 2000; © Edicions UPC, 2000.
10.
vii
´ Indice de Tablas ´ Indice de Tablas 3.1 Palabras reservadas de C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Operadores aritm´ ticos en C . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . 17 3.3 Operadores relacionales y l´ gicos en C . . . . . o . . . . . . . . . . . . . . . . . . . . . 19 3.4 Tabla de verdad de los operadores l´ gicos en C o . . . . . . . . . . . . . . . . . . . . . 19 3.5 Prioridad y asociatividad de los operadores en C . . . . . . . . . . . . . . . . . . . . . 20 6.1 Representaci´ n de enteros en decimal, octal y hexadecimal o . . . . . . . . . . . . . . . 42 6.2 Resumen de tipos de datos enteros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.3 Caracteres interpretados como enteros . . . . . . . . . . . . . . . . . . . . . . . . . . 45 6.4 Resumen de tipos de datos reales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 8.1 Tabla de verdad de los operadores l´ gicos . . . . . . . . . . . . . . . . . . . . . . . . o 71 C.1 Representaci´ n de n´ meros naturales en binario natural o u . . . . . . . . . . . . . . . . 135 C.2 Representaci´ n de n´ meros enteros en complemento a 2 o u . . . . . . . . . . . . . . . . 136 C.3 Representaci´ n de n´ meros enteros en o u ��0��0 . . . 0000 . . . . . . . . . . . . . . . . 137 C.4 Representaci´ n de n´ meros reales . . . . . . . . . . . . o u . . . . . . . . . . . . . . . . 138 D.1 Caracteres y sus c´ digos ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 o © Los autores, 2000; © Edicions UPC, 2000.
11.
ix
Pr´ logo o Pr´ logo o Este libro surge a partir de la experiencia docente de los autores en la asignatura Introducci´ n a los o ordenadores de la Escola T` cnica Superior d’Enginyeria de Telecomunicaci´ de Barcelona, de la Uni- e o versitat Polit` cnica de Catalunya. Como su t´tulo indica, se trata de un texto de introduci´ n a la pro- e ı o gramaci´ n en lenguaje C. El libro pretende ce˜ irse a los aspectos fundamentales del est´ ndar ANSI C o n a actual. Aunque hoy en d´a existen otros lenguajes de programaci´ n muy populares como C++ o JAVA, ı o la comprensi´ n de estos lenguajes exige un s´ lido conocimiento de las bases de programaci´ n en C. o o o El texto est´ concebido como un curso completo y por lo tanto debe ser le´do de forma secuencial. a ı Al final de cada cap´tulo hay un conjunto de ejercicios propuestos. El lector debe tratar de resolver el ı mayor n´ mero posible de estos ejercicos. De igual forma es una buena pr´ ctica el programar los ejem- u a plos resueltos en el texto. El lector debe recordar que la programaci´ n es una t´ cnica aplicada, igual que o e tocar un instrumento musical, y por lo tanto requiere muchas horas de ensayo para ser dominada. Los ejercicios propuestos son lo suficientemente simples como para no requerir conocimientos adicionales de otras materias (matem´ ticas, f´sica, contabilidad, etc). a ı Uno de los puntos m´ s importantes para quien empieza a programar es adoptar desde el principio a un buen estilo de programaci´ n. Esto es, escribir las construcciones del lenguaje de una forma clara o y consistente. En este sentido, los ejemplos resueltos en el texto muestran un buen estilo b´ sico de a programaci´ n, por lo que se recomienda al lector imitar dicho estilo cuando realice sus programas. o Los ap´ ndices A y B son de lectura obligada antes de comenzar a desarrollar programas de comple- e jidad media. En dichos ap´ ndices el lector se familiarizar´ con el uso del preprocesador y de la librer´a e a ı est´ ndar. Ambas son herramientas fundamentales para desarrollar programas. a El ap´ ndice C incluye una descripci´ n de los formatos de datos en el computador. Este tema no e o es propiamente de programci´ n, pero la comprensi´ n de dichos formatos ayuda al programador a en- o o tender mejor conceptos b´ sicos, como las operaciones de conversi´ n de tipos. El lector puede leer este a o ap´ ndice en cualquier momento, aunque recomendamos leerlo antes del cap´tulo 6. e ı En las referencias bibliogr´ ficas se indican algunas direcciones web donde el lector podr´ encontrar a a preguntas y respuestas comunes de quienes se inician en el lenguaje C. As´ mismo, el lector podr´ ı a encontrar materiales adicionales sobre programaci´ n, historia del lenguaje, etc. o © Los autores, 2000; © Edicions UPC, 2000.
12.
1
1. Conceptos b´ sicos de programaci´ n a o Cap´tulo 1 ı Conceptos b´ sicos de programaci´ n a o 1.1 Ordenador y perif´ ricos e o ´ Un ordenador s´ lo es capaz de ejecutar ordenes y operaciones muy b´ sicas, tales como: a 0 Aritm´ tica entera: sumar, restar, multiplicar, etc. e 0 Comparar valores num´ ricos o alfanum´ ricos e e 0 Almacenar o recuperar informaci´ n o Con la combinaci´ n de estas operaciones b´ sicas, y gracias a su gran potencia de c´ lculo, el orde- o a a nador puede llevar a cabo procesos muy complejos. Sin embargo, en cualquier caso existe una estrecha dependencia del ordenador con el programador. Es el programador quien indica a la m´ quina c´ mo y a o qu´ debe hacer, mediante la l´ gica y el razonamiento previo, expresado en forma de un programa. e o En definitiva, el ordenador s´ lo es capaz de aceptar datos de entrada, procesarlos y facilitar otros o datos o resultados de salida. Los datos se introducen u obtienen del ordenador mediante los perif´ ricos e ´ de entrada y salida. Estos son los encargados de facilitar la relaci´ n entre el coraz´ n del ordenador y el o o mundo exterior, y en particular los usuarios de ordenadores. Dependiendo de su funci´ n particular, los o perif´ ricos pueden clasificarse en: e Perif´ ricos de entrada: cuya funci´ n es facilitar la introducci´ n de datos y ordenes al ordenador: te- e o o ´ o a ´ clado, rat´ n, l´ piz optico, lector de c´ digo de barras, esc´ ner, tableta digitalizadora, etc. o a Perif´ ricos de salida: cuya funci´ n es mostrar al exterior informaci´ n almacenada en memoria o los e o o resultados de las operaciones realizadas por el ordenador: pantalla, impresora, plotter, etc. Perif´ ricos de entrada y salida: capaces tanto de introducir como de extraer informaci´ n del ordena- e o ´ dor: discos y cintas magn´ ticos, discos opticos, etc. e Perif´ ricos de comunicaci´ n: encargados de establecer y facilitar el intercambio de informaci´ n entre e o o dos ordenadores: m´ dem, tarjetas de red (Ethernet, Token Ring, RDSI, . . . ), etc. o © Los autores, 2000; © Edicions UPC, 2000.
13.
1.2. Bits, bytes
y palabras 2 Programador Lenguaje natural Lenguaje de programación Lenguaje máquina Ordenador Figura 1.1: Niveles de abstracci´ n en los lenguajes de programaci´ n o o 1.2 Bits, bytes y palabras La unidad de memoria m´ s peque˜ a en un ordenador se denomina bit (del ingl´ s binary digit). Puede a n e ´ tomar unicamente dos posibles valores: o . En ocasiones, debido a la relaci´ n intr´nseca con los 0 � o ı valores en las se˜ ales el´ ctricas en circuitos digitales, se dice que un bit est´ bajo o alto, o bien desco- n e a nectado o conectado. Como puede verse, no es posible almacenar mucha informaci´ n en un solo bit. o Sin embargo, un ordenador posee cantidades ingentes de ellos, por lo que podr´a decirse que los bits ı son los bloques b´ sicos con los que se construye la memoria del ordenador. a El byte, compuesto por ocho bits (algunos autores se refieren a esta unidad como octeto), es una a ´ unidad de memoria m´ s util. Puesto que cada bit puede tomar el valor o , en un byte pueden represen- � 0 tarse hasta��� � 0� combinaciones de ceros y unos (256 c´ digos binarios). Con estas combinaciones o pueden representarse, por ejemplo, los enteros entre y ( 0 ��� 0 ), un conjunto de caracteres, 000 � � 0� etc. La unidad natural de memoria para un ordenador es la palabra. Los ordenadores de sobremesa actuales, por ejemplo, suelen trabajar con palabras de 32 o 64 bits. En grandes ordenadores, el tama˜ o n de la palabra puede ser mucho mayor, pero siempre formada por un n´ mero de bits, potencia de . En u � cualquier caso, los ordenadores encadenan dos o m´ s palabras de memoria con el fin de poder almacenar a datos complejos y, en general, de mayor tama˜ o. n 1.3 Lenguajes de programaci´ n o Un lenguaje de programaci´ n podr´a definirse como una notaci´ n o conjunto de s´mbolos y caracteres o ı o ı que se combinan entre s´ siguiendo las reglas de una sintaxis predefinida, con el fin de posibilitar la ı transmisi´ n de instrucciones a un ordenador. Dichos s´mbolos y caracteres son traducidos internamente o ı a un conjunto de se˜ ales el´ ctricas representadas en sistema binario, es decir, s´ lo dos valores: 0 y 1. n e o Esta traducci´ n es necesaria porque el procesador s´ lo entiende ese lenguaje, al cual nos referiremos o o como lenguaje m´ quina. a © Los autores, 2000; © Edicions UPC, 2000.
14.
3
1. Conceptos b´ sicos de programaci´ n a o COBOL Forth Ada FORTRAN Prolog C BASIC LISP PL/I SIMULA Modula-2 Ensamblador Algol Logo Pascal Smalltalk C++ Java 1950 1955 1960 1965 1970 1975 1980 1985 1990 1995 Figura 1.2: Cronolog´a en el desarrollo de algunos lenguajes de programaci´ n ı o 1.3.1 Lenguajes de bajo nivel Se incluyen en esta categor´a aquellos lenguajes que por sus caracter´sticas se encuentran m´ s pr´ ximos ı ı a o a la arquitectura del ordenador, como el lenguaje m´ quina y el lenguaje ensamblador. a Lenguaje m´ quina a Cualquier problema que deseemos resolver se plantea en primer lugar en nuestro lenguaje natural. Sin embargo, para que la secuencia de pasos que resuelven el problema pueda ser entendida por un ordenador, debe traducirse a un lenguaje muy b´ sico denominado lenguaje m´ quina. a a ´ El lenguaje m´ quina se caracteriza por ser el unico que es directamente inteligible por el ordenador, a o ´ puesto que se basa en la combinaci´ n de dos unicos s´mbolos (0 y 1) denominados bits. Adem´ s cada ı a procesador posee su propio lenguaje m´ quina, por lo que un programa escrito en lenguaje m´ quina de a a un procesador X no podr´ , en principio, ejecutarse en un procesador Y. a Lenguaje ensamblador Constituye una evoluci´ n del lenguaje m´ quina. Se basa en la utilizaci´ n de mnemot´ cnicos, esto es, o a o e abreviaturas de palabras que indican nombres de instrucciones. Para programar en lenguaje ensambla- dor es necesario conocer en profundidad la estructura y funcionamiento interno del ordenador, as´ como ı dominar el uso de diferentes sistemas de numeraci´ n, como el binario, hexadecimal, octal, etc. o En general, los programas escritos en ensamblador requieren mucho menos espacio de memoria y se ejecutan m´ s r´ pidamente que si se hubiesen desarrollado en un lenguaje de alto nivel, puesto que a a a ı ´ est´ n optimizados para una arquitectura espec´fica. Sin embargo, esto ultimo es un inconveniente, pues causa que los programas no sean portables de un ordenador a otro con un procesador distinto. 1.3.2 Lenguajes de alto nivel Se engloban aqu´ todos los lenguajes de programaci´ n que por sus caracter´sticas se asemejan m´ s al ı o ı a lenguaje natural del programador. Algunos de los m´ s conocidos son: FORTRAN, BASIC, Pascal, a Modula, C, Ada, Java, etc. (ver Fig. 1.2). La caracter´stica m´ s importante de estos lenguajes es que son independientes de la arquitectura del ı a ordenador, por lo que un programa escrito en un lenguaje de alto nivel puede ejecutarse sin problemas © Los autores, 2000; © Edicions UPC, 2000.
15.
1.4. Elaboraci´ n
de un programa o 4 �������� 00000000 Análisis �������� �������������� 00000000000000 Mantenimiento 00000000 �������������� 00000000000000 ������� 0000000 0000000 0000000000000����������� Diseño 00000000000 Explotación ������� ������������������������ 00000000000 0000000000000 ������������� Codificación 0000000000000 ������������� Figura 1.3: Ciclo de vida de un programa en otros ordenadores con procesadores distintos. Por ello, el programador no necesita conocer a fondo el funcionamiento del ordenador en el que programa, sino que el lenguaje le permite abstraerse de los detalles de bajo nivel. Esta abstracci´ n de la arquitectura de la m´ quina implica que todo programa o a escrito en un lenguaje de alto nivel deber´ traducirse a lenguaje m´ quina, de forma que pueda ser a a entendido y ejecutado por el ordenador. Para ello cada tipo de ordenador deber´ disponer de unos a programas especiales que realicen dicha traducci´ n (ver Sec. 1.5). o 1.4 Elaboraci´ n de un programa o El desarrollo de un programa para solucionar un determinado problema inform´ ticamente puede resu- a ´ mirse en el ya cl´ sico concepto de ciclo de vida. Este puede desglosarse en los siguientes pasos a seguir a secuencialmente: an´ lisis, dise˜ o, codificaci´ n, explotaci´ n y mantenimiento (ver Fig. 1.3). a n o o An´ lisis a En la fase de an´ lisis se estudia cu´ l es el problema a resolver y se especifican a muy alto nivel los a a procesos y estructuras de datos necesarios, de acuerdo con las necesidades del cliente. Para realizar un buen an´ lisis ser´ necesario interaccionar con el cliente y conocer a fondo sus necesidades. Antes a a de proceder al dise˜ o es muy importante haber comprendido correctamente los requerimientos del n problema. ˜ Diseno Una vez bien definido el problema y las l´neas generales para solucionarlo, se requiere una soluci´ n ı o adecuada a un conjunto de recursos determinado. Tanto f´sicos: en qu´ ordenador va a funcionar la ı e aplicaci´ n, de qu´ tipo de perif´ ricos se dispone . . . , como l´ gicos: qu´ sistema operativo se usar´ , qu´ o e e o e a e herramientas de desarrollo, qu´ bases de datos . . . Finalmente se dise˜ ar´ un conjunto de algoritmos e n a que resuelvan los distintos subproblemas en que se haya dividido el desarrollo. Codificaci´ n o Consiste en la traducci´ n de los algoritmos dise˜ ados previamente, utilizando el lenguaje y entorno de o n desarrollo escogidos en la fase anterior. Ser´ necesario realizar pruebas que garanticen al m´ ximo la a a calidad de los programas desarrollados. Entre otras cosas, que est´ n libres de errores. e o a ´ La documentaci´ n generada en esta fase junto con la de las fases anteriores ser´ muy util en el futuro para las eventuales actuaciones de mantenimiento. © Los autores, 2000; © Edicions UPC, 2000.
16.
5
1. Conceptos b´ sicos de programaci´ n a o Instrucción 1 Intérprete Ejecución 1 Instrucción 2 Intérprete Ejecución 2 Instrucción 3 Intérprete Ejecución 3 ... Figura 1.4: Fases en la interpretaci´ n de un programa o Explotaci´ n o Los diferentes programas desarrollados en la fase anterior se instalan en el entorno final de trabajo. Si es necesario se instalar´ n tambi´ n otras herramientas de utilidad, necesarias para el correcto funciona- a e miento del sistema. Se debe proporcionar documentaci´ n, manuales de usuario, formaci´ n, etc. o o Mantenimiento En esta fase se realizar´ n correcciones al sistema desarrollado, bien para solventar errores no depura- a dos, bien para cambiar o a˜ adir nuevas funcionalidades requeridas por el cliente. Dependiendo de la n importancia del caso, ser´ necesario retomar el ciclo de vida a nivel de codificaci´ n, dise˜ o o incluso a o n an´ lisis (ver Fig. 1.3). a Cuanto mejor se haya documentado el desarrollo en las primeras fases del ciclo de vida, menor ser´ a el tiempo necesario para llevar a cabo los distintos tipos de mantenimiento. 1.5 Traductores ´ Como ya se ha comentado, el unico lenguaje directamente inteligible por el ordenador es el lenguaje m´ quina. Por ello, si se programa usando lenguajes de alto nivel ser´ necesario alg´ n programa traduc- a a u ´ tor. Este, a su vez, ser´ el encargado de comprobar que los programas est´ n escritos correctamente, de a e acuerdo con la definici´ n del lenguaje de programaci´ n empleado. Pueden distinguirse varios tipos de o o traductores: 1.5.1 Ensambladores Los programas ensambladores son los encargados de traducir a lenguaje m´ quina los programas escritos a en lenguaje ensamblador. La correspondencia entre ambos lenguajes es muy directa, por lo que los ensambladores suelen ser programas relativamente sencillos. 1.5.2 Int´ rpretes e El objetivo de un int´ rprete es procesar una a una las instrucciones de un programa escrito en un lenguaje e de alto nivel. Para cada instrucci´ n se verifica la sintaxis, se traduce a c´ digo m´ quina y finalmente se o o a ejecuta. Es decir, que la traducci´ n y la ejecuci´ n se realizan como una sola operaci´ n (ver Fig. 1.4). o o o © Los autores, 2000; © Edicions UPC, 2000.
Descargar ahora