Programacion En C
Enviado por ciberboy1988 • 2 de Septiembre de 2012 • 11.166 Palabras (45 Páginas) • 459 Visitas
Cap´ıtulo 1
Introducci´on a C
Hab´ıa un libro junto a Alicia, en la mesa; y mientras permanec´ıa sentada observando al
Rey Blanco [. . . ], pasaba las hojas para ver si encontraba alg´un trozo que poder leer:
((. . . Porque est´a todo en una lengua que no entiendo)), se dijo.
Estaba as´ı:
JERIG ´ONDOR
Cocillaba el d´ıa y las tovas agilimosas
giroscopaban y barrenaban en el larde.
Todo devirables estaban los burgovos,
y silbramaban las alecas rastas.
Durante un rato, estuvo contemplando esto perpleja; pero al final se le ocurri´o una
brillante idea. ¡Ah, ya s´e!, ¡es un libro del Espejo, naturalmente! Si lo pongo delante de
un espejo, las palabras se ver´an otra vez del derecho.
Lewis Carroll, Alicia en el Pa´ıs de las Maravillas.
El lenguaje de programaci´on C es uno de los m´as utilizados (si no el que m´as) en la programaci´on
de sistemas software. Es similar a Python en muchos aspectos fundamentales: presenta las
mismas estructuras de control (selecci´on condicional, iteraci´on), permite trabajar con algunos
tipos de datos similares (enteros, flotantes, secuencias), hace posible definir y usar funciones,
etc. No obstante, en muchas otras cuestiones es un lenguaje muy diferente.
C presenta ciertas caracter´ısticas que permiten ejercer un elevado control sobre la eficiencia
de los programas, tanto en la velocidad de ejecuci´on como en el consumo de memoria, pero
a un precio: tenemos que proporcionar informaci´on expl´ıcita sobre gran cantidad de detalles,
por lo que generalmente resultan programas m´as largos y complicados que sus equivalentes en
Python, aumentando as´ı la probabilidad de que cometamos errores.
En este cap´ıtulo aprenderemos a realizar programas en C del mismo ((nivel)) que los que
sab´ıamos escribir en Python tras estudiar el cap´ıtulo 4 del primer volumen. Aprenderemos,
pues, a usar variables, expresiones, la entrada/salida, funciones definidas en ((m´odulos)) (que
en C se denominan bibliotecas) y estructuras de control. Lo ´unico que dejamos pendiente de
momento es el tratamiento de cadenas en C, que es sensiblemente diferente al que proporciona
Python.
Nada mejor que un ejemplo de programa en los dos lenguajes para que te lleves una primera
impresi´on de cu´an diferentes son Python y C. . . y cu´an semejantes. Estos dos programas, el
primero en Python y el segundo en C, calculan el valor de
Xb
i=a
p
i
para sendos valores enteros de a y b introducidos por el usuario y tales que 0 a b.
Introducci´on a la Programaci´on con C 1
Introducci´on a C 2004/02/10-16:33
sumatorio.py sumatorio.py
1 from math import *
2
3 # Pedir l´ımites inferior y superior.
4 a = int(raw_input(’L´ımite inferior:’))
5 while a < 0:
6 print ’No puede ser negativo’
7 a = int(raw_input(’L´ımite inferior:’))
8
9 b = int(raw_input(’L´ımite superior:’))
10 while b < a:
11 print ’No puede ser menor que %d’ % a
12 b = int(raw_input(’L´ımite superior:’))
13
14 # Calcular el sumatorio de la ra´ız cuadrada de i para i entre a y b.
15 s = 0.0
16 for i in range(a, b+1):
17 s += sqrt(i)
18
19 # Mostrar el resultado.
20 print ’Sumatorio de ra´ıces’,
21 print ’de %d a %d: %f’ % (a, b, s)
sumatorio.c sumatorio.c
1 #include <stdio.h>
2 #include <math.h>
3
4 int main(void)
5 {
6 int a, b, i;
7 float s;
8
9 /* Pedir l´ımites inferior y superior. */
10 printf ("L´ımite inferior:");
11 scanf ("%d", &a);
12 while (a < 0) {
13 printf ("No puede ser negativon");
14 printf ("L´ımite inferior:");
15 scanf ("%d", &a);
16 }
17
18 printf ("L´ımite superior:");
19 scanf ("%d", &b);
20 while (b < a) {
21 printf ("No puede ser menor que %dn", a);
22 printf ("L´ımite superior:");
23 scanf ("%d", &b);
24 }
25
26 /* Calcular el sumatorio de la ra´ız cuadrada de i para i entre a y b. */
27 s = 0.0;
28 for (i = a; i <= b; i++) {
29 s += sqrt(i);
30 }
31
32 /* Mostrar el resultado. */
33 printf ("Sumatorio de ra´ıces ");
34 printf ("de %d a %d: %fn", a, b, s);
35
36 return 0;
37 }
En varios puntos de este cap´ıtulo haremos referencia a estos dos programas. No los pierdas
2 Introducci´on a la Programaci´on con C
c 2003 Andr´es Marzal e Isabel Gracia 1 Introducci´on a C
de vista.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
· 1 Compara los programas sumatorio.py y sumatorio.c. Analiza sus semejanzas y diferencias.
¿Qu´e funci´on desempe˜nan las llaves en sumatorio.c? ¿Qu´e funci´on crees que desempe˜nan
las l´ıneas 6 y 7 del programa C? ¿A qu´e elemento de Python se parecen las dos primeras l´ıneas
de sumatorio.c? ¿Qu´e similitudes y diferencias aprecias entre las estructuras de control de
Python y C? ¿C´omo crees que se interpreta el bucle for del programa C? ¿Por qu´e algunas
l´ıneas de sumatorio.c finalizan en punto y coma y otras no? ¿Qu´e diferencias ves entre los
comentarios Python y los comentarios C?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Un poco de historia
C ya tiene sus a˜nitos. El nacimiento de C est´a estrechamente vinculado al del sistema operativo
Unix. El investigador Ken Thompson, de AT&T, la compa˜n´ıa telef´onica estadounidense,
se propuso dise˜nar un nuevo sistema operativo a principios de los setenta. Dispon´ıa de un
PDP-7 en el que codific´o una primera versi´on de Unix en lenguaje ensamblador. Pronto se
impuso la conveniencia de desarrollar el sistema en un lenguaje de programaci´on de alto
nivel, pero la escasa memoria del PDP-7 (8K de
...