ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programacion En C

ciberboy19882 de Septiembre de 2012

11.166 Palabras (45 Páginas)483 Visitas

Página 1 de 45

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 18 bits) hizo que ideara el lenguaje de

programaci´on B, una versi´on reducida de un lenguaje ya existente: BCPL. El lenguaje C

apareci´o como un B mejorado, fruto de las demandas impuestas por el desarrollo de Unix.

Dennis Ritchie fue el encargado del dise˜no del lenguaje C y de la implementaci´on de un

compilador para ´el sobre un PDP-11.

C ha sufrido numerosos cambios a lo largo de su historia. La primera versi´on ((estable))

del lenguaje data de 1978 y se conoce como ((K&R C)), es decir, ((C de Kernighan y Ritchie)).

Esta versi´on fue descrita por sus autores en la primera edici´on del libro ((The C Programming

Language)) (un aut´entico ((best-seller)) de la inform´atica). La adopci´on de Unix como sistema

operativo de referencia en las universidades en los a˜nos 80 populariz´o enormemente el

lenguaje de programaci´on C. No obstante, C era atractivo por s´ı mismo y parec´ıa satisfacer

una demanda real de los programadores: disponer de un lenguaje de alto nivel con ciertas

caracter´ısticas propias de los lenguajes de bajo nivel (de ah´ı que a veces se diga que C es

un lenguaje de nivel intermedio).

La experiencia con lenguajes de programaci´on dise˜nados con anterioridad, como Lisp o

Pascal, demuestra que cuando el uso de un lenguaje se extiende es muy probable que proliferen

variedades dialectales y extensiones para aplicaciones muy concretas, lo que dificulta

enormemente el intercambio de programas entre diferentes grupos de programadores. Para

evitar este problema se suele recurrir a la creaci´on de un comit´e de expertos que define la

versi´on oficial del lenguaje. El comit´e ANSI X3J9 (ANSI son las siglas del American National

Standards Institute), creado en 1983, considera la inclusi´on de aquellas extensiones y mejoras

que juzga de suficiente inter´es para la comunidad de programadores. El 14 de diciembre

de 1989 se acord´o qu´e era el ((C est´andar)) y se public´o el documento con la especificaci´on

en la primavera de 1990. El est´andar se divulg´o con la segunda edici´on de ((The C Programming

Language)), de Brian Kernighan y Dennis Ritchie. Un comit´e de la International

Standards Office (ISO) ratific´o el documento del comit´e ANSI en 1992, convirti´endolo as´ı

en un est´andar internacional. Durante mucho tiempo se conoci´o a esta versi´on del lenguaje

como ANSI-C para distinguirla as´ı del K&R C. Ahora se prefiere denominar a esta variante

C89 (o C90) para distinguirla de la revisi´on que se public´o en 1999, la que se conoce por

C99 y que es la versi´on est´andar de C que estudiaremos.

C ha tenido un gran impacto en el dise˜no de otros muchos lenguajes. Ha sido, por

ejemplo, la base para definir

...

Descargar como (para miembros actualizados) txt (70 Kb)
Leer 44 páginas más »
Disponible sólo en Clubensayos.com