Vous êtes sur la page 1sur 29

PROGRAMACION EN C CONTENIDO DEL PRIMER CAPTULO

Breve Historia de C El lenguaje C lo invento e implemento por primera vez Dennis Ritchie sobre un DEC PDP-11 utilizando el sistema operativo UNIX. C es el resultado de un proceso de desarrollo que empez con un lenguaje ms antiguo llamado BCPL, desarrollado por Martin Richards. BCPL sirvi de base a un lenguaje llamado B, que invento Ken Thompson, y que condujo al desarrollo de C en los aos 70. Durante muchos aos, el estndar de C fue el que se describa en The C programming Language escrito por Brian Kernighan y Dennis Ritchie. Sin embargo al crecer C en su uso y popularidad se organizo un comit en 1983 un estndar ANSI de C El proceso de estandarizacin duro 6 aos, finalmente el estndar se adopto en 1989 y las primeras copias para el pblico en general estuvieron disponibles en 1990. Hoy prcticamente todos los compiladores se adaptan al estndar de C que estudiaremos en estos apuntes.(C estndar ANSI) Antes de C existan bsicamente dos tipos de lenguajes utilizados para programar computadoras. Uno es el llamado lenguaje ensamblador , que es la representacin simblica de las instrucciones de mquina que ejecuta la computadora. El lenguaje ensamblador es un lenguaje de bajo nivel, ya que el programador est trabajando con las instrucciones reales que ejecutara la computadora. El lenguaje ensamblador no proporciona estructuras de control. Como contraste con el anterior un lenguaje de alto nivel como ayuda al programador, suministra diversas estructuras de control, ordenes de entrada y sala, y adems hace la programacin ms rpida y sencilla. Puede que los elementos de un lenguaje de alto nivel no se relacionen de una forma muy directa con el modo en que la computadora ejecuta el programa. Esta separacin hace que a menudo los lenguajes escritos en lenguaje de alto nivel sean menos eficientes que los escritos en lenguaje ensamblador. Esta es una de las razones por las que se dise inicialmente C. C combina la

estructura de un lenguaje de alto nivel con la potencia y eficacia de un lenguaje ensamblador. Inicialmente, C se principalmente para la creacin de software de sistemas, programas que ayudan al funcionamiento del PC. Esto incluye a sistemas operativos, editores, compiladores.etc, posteriormente con el paso del tiempo se empez a utilizar para realizar programacin de uso general. C++ es una versin ampliada y mejorada de C que soporta programacin orientada a objetos ( parecido a Visual Basic 2008).

C frente a C++ Es fcil sentirse confusos entre C y C++ y como se relacionan entre s. C++ es una versin ampliada de C, y est diseado para soportar programacin orientada a objetos( POO). C++ contiene y soporta todo el lenguaje C, adems de un conjunto de extensiones orientada a objetos(C++ es un superconjunto de C). C++ est edificado sobre los cimiento de C no se puede aprender C+ + sin conocer las bases de C. Funcionamiento de un compilador de C++ con un programa de C La mayora de los compiladores pueden gestionar los programas de C y C++, es frecuente ver un compilador anunciado como C/C++, o simplemente como compilador de C++. Todos los compiladores que trabajan en C++ tambin lo pueden hacer en C. C soporta el estilo de programacin tradicional llamado programacin estructurada, que se ha demostrado efectiva desde su creacin. C++ est diseado principalmente para soportar POO que incorpora principios de programacin estructurada con el aadido de los objetos. La POO es muy eficaz para determinadas tareas de programacin muchos programas no se benefician de su aplicacin. Algunas caractersticas del lenguaje C son las siguientes: Es un lenguaje de propsito general. Este lenguaje se ha utilizado para el desarrollo de aplicaciones tan dispares como: hojas de clculos, gestores de bases de datos, compiladores, sistemas operativos,

Es un lenguaje de medio nivel. Este lenguaje permite programar a alto nivel (pensando a nivel lgico y no en la mquina fsica) y a bajo nivel (con lo que se puede obtener la mxima eficiencia y un control absoluto de cuanto sucede en el interior del ordenador). Es un lenguaje porttil. Los programas escritos en C son fcilmente transportables a otros sistemas. Es un lenguaje potente y eficiente. Usando C, un programador puede casi alcanzar la eficiencia del cdigo ensamblador junto con la estructura del Algol o Pascal. Como desventajas habra que resear que es ms complicado de
aprender que otros lenguajes como Pascal o Basic.

1FUNDAMENTOS DE C
1.1.- Compresin de los componentes de un programa de C 1.2.- Creacin y compilacin de un programa de C 1.3.- Declaracin de variables y asignacin de valores 1.4.- Introduccin de nmeros desde el teclado 1.5.- Realizacin de clculos utilizando expresiones aritmticas 1.6.- Cmo aadir comentarios a un programa 1.7.- Escriba sus propias funciones 1.8.- Utilizacin de funciones para devolver valores 1.9.- Utilizacin de argumentos de funcin 1.10.- Repaso a las palabras clave de C

RESUMEN Los elementos individuales de un lenguaje de ordenador como C no permanecen aislados, sino en conjuncin unos con otros. Por eso, es necesario entender diversos aspectos importantes de C antes de examinar cada elemento del lenguaje C. Su objetivo es proporcionar un conocimiento suficiente de C para que se puedan entender los ejemplos que aparecen en los captulos siguientes. No debe preocupar si al avanzar a lo largo de este captulo algunos puntos no aparecen completamente claros. lo principal que hay que entender es cmo y por qu los programas de los ejemplos se ejecutan del modo en que

lo hacen. En este captulo se aprender sobre la estructura bsica de un programa de C; sentencias, variables, constantes, funcionesetc.

1.1.- Compresin de los componentes de un programa de C Todos los programas de C comparten ciertos componentes y rasgos esenciales: -contienen una o ms funciones que a su vez contienen una o ms sentencias. -una funcin es una subrutina a la que pueden llamar otras partes del programa(son bloques constituyentes de C) -Sentencia, son las partes del programa que realizan las operaciones, se encuentran dentro de las funciones. Las sentencias terminan con ; Se pueden situar dos o ms sentencias en una lnea. Aqu se muestra la forma ms simple de una funcin de C: Nombre-de-funcin() { Secuencia de sentencias } Funciones: Se puede llamar a una funcin con el nombre que se quiera, el nombre se debe componer de: Letras maysculas o minsculas, C es sensible al tipo de letra ( Mifunc .. mifunc) Dgitos del 0 al 9 , y el carcter subrayado Funcin importante: Aunque C puede tener varias funciones la ms importante es main() main() comienza la ejecucin del programa Cuando el programa empieza a ejecutarse, comienza por las sentencias que hay dentro de la funcin main(), empezando por la primera sentencia que hay despus de la llave de apertura. La ejecucin del programa termina cuando se alcanza la llave de cierre. En estos apuntes de C siempre se har referencia a esta funcin ponindola en negrita seguida de parntesis.

Funciones de biblioteca El C del estndar ANSI dispone de un nmero mnimo de funciones de biblioteca que deben tener los programas de compilacin. Estas funciones desarrollan diversas tareas: -control de entradas y salidas E/S -Manejo de cadenas de datos -Operaciones matemticas..etc printf(), es una de las ms utilizadas, es una funcin de salida de uso general en C. printf(cadena-a-mostrar); Muestra en pantalla los caracteres contenidos entre comillas dobles ------ , (no las comillas). Cadena , es el contenido entre las comillas, pueden ser uno o ms caracteres. El conjunto de esta cadena recibe tambin el nombre de argumento En C la llamada a una funcin de biblioteca es en realidad una sentencia por lo que termina en punto y coma Archivo de cabecera En C la informacin sobre las funciones de biblioteca se encuentran en varios archivos que se suministran con el compilador. Estos archivos terminan con la extensin

(;)

.h,

Estos archivos se aaden al programa utilizando la directiva del procesador , del compilador:

# include

no pertenecen a C, son instrucciones que pone el programador en el ordenador. Include le dice al procesador que lea en otro archivo y lo incluya con el programa. Archivo muy frecuente: #include <stdio.h>

El nombre del archivo se puede poner en minsculas Contiene entre otras cosas informacin sobre las funciones biblioteca printf()

C ignora los espacios, no importa donde aparece una sentencia, una llave, o un nombre de funcin en una lnea. Ejemplos sencillos #include <stdio.h> Hace que el compilador lea archivo stdio.h y que lo incluya en el programa, contiene informacin sobre printf() Aqu es donde empieza la ejecucin del programa Llave de apertura, principio de las sentencias Sentencia, llama a la funcin de biblioteca estndar Llave de cierre, fin de programa

main() { printf(este es un breve programa de C.); }

Una vez compilado y ejecutado el programa aparecer en pantalla

Este es un breve programa de C


Variante del programa anterior: comentado por el alumno #include <stdio.h> main() { printf(Este es); printf(otro); printf(programa en C.); } compilar

Variante del programa anterior, comentario por el alumno de las novedades. compilar #include stdio.h main() { printf(Mi segundo programa en C.\n); printf(Pulsa la tecla return para terminar); ---------------------------------------------------------------------------------------

Getchar() } -----------------------------------------------

1.2.-CREACION Y COMPILACION DE UN PROGRAMA El modo de creacin y compilacin de un programa viene determinado en gran medida por el compilador que se est utilizando y por el sistema operativo, en nuestro caso ser Borland C 4.5 o Borland C 5.0 y XP como sistema operativo. En estos programas se pueden editar, compilar y ejecutar los programas directamente. El alumno estudiara la instalacin en el entorno de XP de BC 45 as como la ayuda de que dispone el programa. Consideraciones generales: Cuando se da nombre a un archivo de programa, se le debe dar la extensin .C. El compilador Borland C 4.5 asigna automticamente a cada fichero una extensin por defecto .ccp El archivo que contiene el programa en C se llama archivo fuente. El archivo que contiene la versin compilada del programa se llama archivo objeto, tambin ejecutable. Si se introduce algo de forma incorrecta en el programa, el compilador informar de los mensajes de error de sintaxis cuando trate de compilarlo. La mayora de los compiladores de C trataran de encontrar sentido al cdigo fuente sin importar lo que se haya escrito, por esta razn no siempre el error que se comunica refleja la propia causa. Adems de los errores reales el compilador comunica mensajes de advertencia, estn diseados para ser muy tolerantes y permitir prcticamente la compilacin de cualquier cosa que sea correcta sintcticamente. Sin embargo, algunas cosas, aun siendo correctas sintcticamente, son altamente sospechosas. Ante esta situaciones el compilador imprime una advertencia. (Warning). El programador, decidir entonces si la advertencia es justificada o no.

USO DEL C Los pasos a seguir desde el momento en que se comienza a escribir el programa C hasta que se ejecuta son los siguientes: 1.- Escribirlo en un editor. 2.- Compilarlo en un compilador.

3.- Enlazarlo en un enlazador. 4.- Ejecutarlo. El programa se puede escribir en cualquier editor que genere ficheros de texto estndar, esto es, que los ficheros generados no incluyan cdigos de control y caracteres no imprimibles. Estos ficheros que contienen cdigo C se llaman ficheros fuentes. Los ficheros fuentes son aquellos que contienen cdigo fuente, es decir, ficheros con texto que el usuario puede leer y que son utilizados como entrada al compilador de C." El compilador produce ficheros objetos a partir de los ficheros fuentes. Los ficheros objetos son los ficheros que contienen cdigo objeto, es decir, ficheros con cdigo mquina (nmero binarios que tiene significado para el microprocesador) y que son utilizados como entrada al enlazador. La extensin de estos ficheros es OBJ, aunque tambin les hay con extensin LIB. A estos ltimos se les llama tambin ficheros de librera o biblioteca; contienen cdigo mquina perteneciente a cdigo compilado suministrado por el compilador. El enlazador produce un fichero ejecutable a partir de los ficheros objetos. Los ficheros ejecutables son aquellos que contienen cdigo mquina y se pueden ejecutar directamente por el sistema operativo. La extensin estos ficheros es EXE o COM. Al proceso de enlazado tambin se le suele llamar el proceso de linkado. El programa se puede ejecutar simplemente tecleando su nombre desde la lnea de comandos del sistema operativo. Hoy da los compiladores de C son muy sofisticados e incluyen entornos integrados desde los cuales editamos, compilamos, y enlazamos. A modo de introduccin vamos a dar unas definiciones muy breves: - Las variables y constantes son los objetos bsicos que se manipulan en un programa. - Las declaraciones indican las variables que se van a utilizar y establecen su tipo y, quiz, su valor inicial. - Los operadores especifican lo que se va a hacer con ellas. - Las expresiones combinan variables y constantes para producir nuevos valores. 1.3.- DECLARACIN DE VARIABLES Y ASIGNACIN DE VALORES
Variable, es una posicin de memoria con nombre que puede guardar distintos valores, solo los programas de C ms sencillos no tienen variables. En programacin C todas las variables se deben declarar antes de ser utilizadas.

En la declaracin se le dice al compilador el tipo de variable que est utilizando Hay cinco tipos de datos bsicos: Tipo,palabra clave
char int float

Descripcin
Dato de Carcter Nmero signo Coma nmeros flotante Entero con

Longitud(byt Rango es)


1 2 0 a 255 -32.768 a 32.768 3.4E-38 a 3.4E38 4 1.7E-308 1.7E308 Sin valor a

en

flotante, punto

double void

Coma flotante de doble precisin Sin valor

8 0

Variable tipo char, tiene 8 bits de longitud, se utiliza para guardar un solo carcter. Esta variable tambin se puede utilizar como un entero pequeo. Tipo carcter En C, los caracteres se definen con apstrofos Ejemplos vlidos de constantes tipo carcter: 'T', 'l', '1'. El valor de una constante carcter es el valor numrico del carcter en el conjunto de caracteres del sistema. Por ejemplo, en el conjunto ASCII, el carcter cero, o '0', es 48. Variable entera tipo int, pueden contener nmeros enteros con signo(nmeros sin parte fraccionaria). Estos valores se encuentran el el rango de -32.768 a 32.768. Tipo entero Las constantes enteras se pueden escribir de uno de los tres modos siguientes: - En decimal: escribiendo el nmero sin empezar por 0 (a excepcin de que sea el propio 0). Ejemplos: 1, 0, -2. - En hexadecimal: empezando el nmero por 0x. Ejemplos: 0xE, 0x1d, 0x8. - En octal: empezando el nmero por 0. Ejemplos: 02, 010. Variables tipo float, double, contienen valores en punto flotante con signo, que pueden tener componentes fraccionarios.

Diferencias, double proporciona el doble de precisin en el nmero de dgitos significativos. En ambos casos estas variable pueden contener valores muy grandes. Las constantes de este tipo tienen parte real y parte fraccionaria. El tipo double tiene doble precisin que el tipo float. Por lo dems, los dos tipos son iguales. La sintaxis correcta de las constantes(variables) de estos dos tipos es: [signo] [dgitos] [.] [dgitos] [exponente [signo] dgitos] Variable Tipo void Significa sin valor, sin tipo. Al poner void entre los parntesis de la definicin de una funcin, se define a sta como funcin que no tiene argumentos. No confundir con llamada a funcin, en cuyo caso no se puede utilizar el void. Del mismo modo, al poner void antes del nombre de la funcin en la definicin de sta, se est declarando como funcin que no devuelve nada. La segunda versin es preferible y es la que se utilizar. Forma general de declaracin de variable Tipo nombre-var Int contador; ( la declaracin de variable es una sentencia, debe terminar con ;) TABLA DEL CDIGO ASCII

10

Modificadores de tipos de datos(SE UTILIZAR MS TARDE) Con la excepcin del tipo void, los tipos bsicos de datos pueden tener varios modificadores que les precedan:

Signed: variable con signo, tipo int, char Unsigned: Variable sin signo, tipo int, char Long: Variable de tipo largo, tipo int, char, double Short: Variable de tipo corto, tipo int, char
Tipo unsigned char signed char unsigned int signed int short int unsigned short int Longitud(bytes) 1 1 2 2 1 1 0 a 255 -128 a 127 65535 Igual que int -128 a 127 0 a 255 Rango

11

signed short int long int signed long int unsigned long int long double

1 4 4 4 10

Igual que short int -2147483648 a 2147483649 -2147483648 a 2147483649 0 a 4294967296 1.1E-4932 a 1.1E+4932

LUGAR DE DECLARACIN DE LAS VARIABLES DENTRO DEL PROGRAMA DE C Dentro de una funcin, - son variables llamadas locales - solo es conocida por la funcin donde est declarada - es habitual su declaracin al principio de la funcin detrs de la llave de apertura -las variables locales de una funcin no tienen relacin con las variables locales de otra funcin, la misma variable puede estar en dos funciones y no conocerse. -se puede declarar ms de una variable del mismo tipo mediante una lista separada por comas. Ejemplo float x, y, z; Fuera de todas las funciones, -a estas se las llama variables globales, -cualquier funcin del programa puede acceder a ellas, -existen durante todo el tiempo que se est ejecutando el programa ASIGNACION DE UN VALOR A UNA VARIABLE Se pone su nombre a la izquierda de un signo igual, a la derecha del signo = se pone el valor de la variable, esta operacin es una sentencia por lo tanto lleva ; Nombre-de-variable=valor Num=100 CONSTANTES Hay distintos tipos de constantes, cte. Es un valor fijo utilizado por el programa. -una constante se suele utilizar para iniciar las variables al comienzo de la iniciacin del programa -el carcter cte. se especifica colocado entre comillas simples, A -los enteros se especifican como nmeros enteros -los valores en punto flotante deben incluir un punto decimal ej. 100,0 ----100.0 -si el valor en punto flotante que se quiere especificar no tiene ningn dgito a la derecha del punto decimal se debe utilizar el 0, ej. 100 ---------100.0

12

USO DE printf -printf tambin se puede utilizar para mostrar valores de caracteres enteros y valores en punto flotante. Ejemplo: Printf(esto imprime el nmero %d,99); Comentario: se mostrar en pantalla esto imprime el nmero 99 La llamada a printf contiene dos argumentos, el primero es la cadena entrecomillada y el otro la cte. 99. Los argumentos deben ir separados por comas (cuando hay ms de un argumento por funcin.) El primer argumento que puede contener tanto caracteres normales(los que se muestran en pantalla) como especificadores de formato que comiencen con el signo de % Especificador de formato: informa a printf que se va a mostrar un elemento de distinto tipo, en este caso %d se va a mostrar un entero en forma decimal, el valor est en el segundo argumento. Ejemplo: printf(Esto muestra %d,tambin,99); Se mostrara en pantalla Esto muestra 99, tambin--Comentario: el valor asociado con un cdigo de formato se muestra en el lugar donde se encuentra el cdigo de formato dentro de la cadena. OTROS CDIGOS U ORDENES DE FORMATO(se vern ms adelante)

Los cdigos u rdenes de formato son las siguientes: Cdigo Formato %c %d %i Simple carcter Entero decimal con signo Entero decimal con signo Punto flotante en notacin cientfica: [-]d.ddd e

%e [+/-]ddd %f %g %o

Punto flotante en notacin no cientfica: [-]dddd.ddd Usa %e o %f, el que sea ms corto en longitud Entero octal sin signo

13

Ejemplo n 1, 1 el problema declara una variable llamada num, 2 asigna el valor 100 a la variable 3 muestra mediante printf el valor de 100 por pantalla #include <stdio.h> main() { Int num; La sentencia int num declara que num es una variable entera Num=100; Printf(el valor es %d,num); } Ejemplo n 2 #include <stdio.h> main() { char c; float f; double d; c=x; f=100.123; d=123.009; printf(c es %c,,c); printf(f es %f,,f); printf(d es %d,,d); } Realizar por el alumno.384 Escribir un programa que declare una variable entera llamada num. Asigne a esta variable el valor de 1000 y despus muestre el valor en pantalla de esta manera: 1000 es el valor de num EJEMPLO N 3 , APUNTES #include <stdio.h> main() /*TERCER EJEMPLO*/ En C todo lo que vaya entre /*..*/ Se ignora, Es una sentencia de declaracin: 1en algn sitio de la funcin se utilizaran las variables horas, minutos.

{ int horas, minutos;

14

2las 2 variables son de tipo entero horas=3; minutos=60*horas; Las variables deben ser declaradas antes del uso. Son sentencias de asignacin =es el operador de asignacin y * es el operador de multiplicacin.

Printf(Hay %d minutos en %d horas.minutos,horas); Getchar(); } Los dos %d no se han escrito y sin embargo se ha escrito un su logar los valores de las variables minutos y horas. El smbolo % avisa a la funcin printf que se va ha imprimir una variable en esta posicin La letra d informa a que la variable a imprimir es entera. El programa escribir:

Hay 180 minutos en 3 horas

En C, todo aquello que vaya entre un /* y un */ es ignorado. Las secuencias /* y */ denotan el principio y el final de un comentario en C. La lnea: int horas, minutos; es una sentencia de declaracin. En este caso se declaran dos cosas: 1) En algn sitio de la funcin se utilizarn las "variables" hora y minutos. 2) Estas dos variables son de tipo entero. En C, todas las variables utilizadas han de ser declaradas antes de su uso. Las lneas horas = 3; y minutos = 60 * horas; son sentencias de asignacin (= es el operador de asignacin y * es el operador de multiplicacin). La lnea printf ("Hay %d minutos en %d horas.", minutos, horas); escribe: Hay 180 minutos en 2 horas. Como se ve los dos %d no se han escrito y sin embargo se ha escrito en su lugar los valores de las variables minutos y horas. El smbolo % avisa a la funcin printf que se va a imprimir una variable en esta posicin. La letra d informa que la variable a imprimir es entera.

Hacer programas por el alumno:


Programa que imprima por pantalla los siguientes datos: 1,c,1.0,1e-1, en datos tipo entero, carcter, coma flotante y doble precisin, respectivamente. Programa que imprima por pantalla el nmero 100, en decimal, octal y hexadecimal.

15

Programa que imprima por pantalla el resultado, en entero, coma flotante y doble precisin, de 1000 pts en euros. 1=166.386 pts

1.4.- INTRODUCCIN DE NMEROS DESDE EL TECLADO Hay varias formas de introducir valores numricos desde el teclado. scanf, es una funcin de biblioteca estndar, es capaz de leer nmeros enteros y nmeros en punto decimal e introducirlos por el teclado. Ejemplo: sintaxis---- scanf(%d,&nombre-var-ent); Comentarios: nombre-var-ent es el nombre de la variable en la que se quiere recibir el valor scanf () es una cadena que determina el tratamiento del segundo segmento %d especifica que el segundo argumento va a recibir un valor entero en formato decimal Ejemplo: int num; Scanf(%d,&num); de sus argumentos & permite que una funcin coloque un valor en uno

(cuando se introduce un nmero por el teclado simplemente se est escribiendo una cadena de dgitos, la funcin scanf espera que se pulse intro antes de convertir la cadenaal formato binario interno ) Para leer un nmero de punto flotante desde el teclado, se llama a scanf en la forma siguiente: scanf(%f,&nombre-var-float); nombre-var-float es el nombre de la variable declarada de tipo float si se utiliza la variable doube el especificador debe ser %lf

ejemplo: este programa pide que se introduzca un entero y un nmero en punto flotante y que se muestren los valores.

16

#include <stdio.h> main() { int num; float f; printf(Introduzca un entero:); scanf(%d,&num); printf(Introduzca un nmero en punto flotante:); scanf(%f,&f); printf(%d,num); printf(%f,f); }
Ejercicio para los alumnos: 1Escribir un programa que lea por teclado dos nmeros en punto flotante (utilizando float) y despus muestre la suma.

1.5.-REALIZACION DE CLCULOS UTILIZANDO OPERACIONES ARITMTICAS Lenguaje C define muchos operadores(ms que otros programas), las expresiones de C siguen las mismas reglas del lgebra(una expresin es una combinacin de operadores y operandos). Un operador es un smbolo que indica al compilador que ha de realizar ciertas operaciones matemticas o lgicas Expresiones aritmticas: OPERADORES ARITMTICOS Operador
+ / * ++ -%

Accin,significado
Suma Resta Divide Multiplica Incremento Decremento Mdulo( divisin) resto de una

17

Los operadores +, -, *, / se pueden utilizar con cualquier tipo de dato bsico. % solo se puede utilizar con nmeros enteros. Devuelve el resto de una divisin entera, no tiene significado con tipos de punto flotante. El , tiene dos significados

1 es un operador de resta 2 invierte el signo de un nmero de un solo operando( - monario) Una expresin muy comn junto a una sentencia de asignacin es la siguiente: Int answer; Answer =100*31; Los operadores *,/,% tienen mayor prioridad que + y -. Esta condicin se puede variar utilizando parntesis . Ejemplo: 10 2 * 5 ------- 0 (10 - 2) * 5 ------- 40 Una expresin de C puede contener variables, constantes o ambas, por ejemplo, suponiendo que answer y count son variables , esta expresin es perfectamente vlida: Answer = count 100; Se pueden utilizar libremente los espacios dentro de una expresin.. Como se ha visto antes, el operador mdulo devuelve el resto de una divisin entera. Por ejemplo, el resto de 10 % 3 es 1. Este programa muestra el resultado de algunas divisiones enteras y sus restos. Ejemplo, el programa muestra 2120 #include <stdio.h> Main() { Printf(%d,5/2); Printf(%d,5%2); Printf(%d,4/2); Printf(%d,4&2); } El operador mdulo devuelve el resto de una divisin entera. El resto de 10 % 3 es 1. 2 En expresiones largas los parntesis y espacios pueden aadir claridad aunque no sean necesarios.

18

Count *num+88/val-19 % count otra expresin produce el mismo resultado , pero es ms fcil de leer: (count * num) + ( 88 / val ) ( 19 % count ) 2 programa Calcula el rea de un rectngulo, dadas sus dimensiones. Primero solicita al usuario el largo y el ancho del rectngulo y luego muestra el rea #include <stdio.h> Main() { Int len,width; Length largura width anchura Printf(introduzca el largo: ); Scanf(%d , &len); Printf(introduzca el ancho: ); Scanf(%d , &width); Printf(el area es %d,len*width); }

Ejercicios para los alumnos:384,385

1Escribir un programa que calcule el volumen de un cubo, el programa debe pedir al usuario cada dimensin. 2Escribir un programa que calcule el nmero de segundos que tiene un ao. 1.6.- COMO AADIR COMENTARIOS A UN PROGRAMA Un comentario es un texto escrito en el programa fuente para aclaracin del usuario y que el compilador no lee. Ejemplo: /*---------------------------*/ /* esto es un comentario*/ Los comentarios se pueden extender varias lneas: /* Este es un comentario ms largo que ocupa cinco lneas */ En C, un comentario puede ir en cualquier lugar excepto en medio de alguna palabra clave de C, nombre de funcin o nombre de variable.

19

En C, no se puede tener un comentario dentro de otro comentario. No se pueden anidar comentarios. /*esto es un comentario/* esto es otro comentario anidado en el primero - que causar un error de sintaxis*/ con un comentario anidado*/ Ejemplo: /*este programa convierte das Jupiter,Saturno, urano terrestres en aos jovianos*/ #include <stdio.h> Main() { Float das_t;/*numero de das terrestres*/ Float aos_ j;/*numero En C los comentarios pueden equivalente de aos jovianos*/ aparecer en la misma lnea que /*obtiene el numero de das otras sentencias del programa terrestres*/ Printf/introducca el numero de das terrestres.); Scanf(%f; &das_t); /*ahora, calcula los aos jovianos*/ Aos_ j = das _ t /(365.0 * 12.0); /*muestra el resultado*/ Printf(equivalente en aos jovianos: %f,aos_ j); } Los comentarios ayudan a entender los que hace el programa. No se puede hacer: Colocar un comentario dentro del nombre de una funcin o variable Ej. Pri/*equivocado*/ ntf(esto no funcionara);

1.7.- ESCRIBIR FUNCIONES PROPIAS Las funciones son los bloques que constituyen C, en lo visto hasta ahora solo se ha incluido la funcin main(). Sin embargo, la mayora de los programas que se escribirn en el mundo real contendrn muchas funciones. Ejemplo: /*programa con multiples funciones*/ /*aqu se incluyes los archivos de cabecera*/ Main() {

20

. . . { F1() { . . . { F2() { . . . { Fn() { . . . { -se llamar a cada funcin con un nombre diferente -cuando una funcin, excepto main(), encuentre la llave de cierre, regresa a la lnea inmediatamente posterior a la lnea en que se le haba llamado. -cualquier funcin dentro del programa puede llamar a cualquier otra funcin en cualquier momento ( tradicionalmente a main() no la puede llamar ninguna otra funcin, aunque no haya restriccin tcnica a tal efecto) Ejemplo: el programa contiene dos funciones, main() y func1() Antes de leer las aclaraciones intentar determinar lo que muestra en pantalla el programa. /*un programa con dos funciones*/ #include <stdio.h> main() { printf(me); func1(); printf(C:); } func1() { printf(gusta); } compilar

Me gusta C -En main(), se ejecuta la primera llamada a printf(), imprimiendo Me, despus se llama a func1() y se ejecuta la sentencia printf() que hay dentro

21

de la funcin 1, func1, se regresa de la funcin reanudndose de nuevo dentro de main() y se imprime C -excepto para main()cuando se alcanza la llave de cierre se regresa de la funcin, y la ejecucin se reanuda una lnea despus del punto en que se llam a la funcin.

Ejemplo con tres funciones, imprime mediante tres funciones los nmeros 1,2,3. /*este programa tiene tres compilar funciones*/ #include <stdio.h> main() { func2(); prinft(3); } func2() { func1(); printf(2); } func1() { printf(1); } En este programa main() llama primero a func2(), despus llama a func1(). Despus func1() muestra 1 y posteriormente vuelve a func2(), que imprime 2, y despus vuelve a main() e imprime 3. Realizar por los alumnos: 1 Escribir un programa que contenga al menos dos funciones e imprima el mensaje El soldado de verano , el patriota a la luz del sol-

1.8.- UTILIZACION DE FUNCIONES PARA DEVOLVER VALORES En C una funcin puede devolver un valor a una rutina de llamada. Por ejemplo, otra de las funciones de la biblioteca estndar de C es Sqrt(), funcin de biblioteca estndar.. devuelve la raz cuadrada de su argumento. Para que el programa obtenga valor de retorno se debe poner la funcin en el lado derecho de una sentencia de asignacin.

22

Ejemplo:programa imprime raz cuadrada de 10 #include <stdio.h> #include <math.h> /*sqrt() lo necesita*/ main() { doubl answer; answer= sqrt(10.0); printf(%f, answer); } El programa llama a sqrt() y asigna el valor de retorno a answer, sqrt() utiliza el archivo de cabecera math.h. En realidad, la sentencia de asignacin del programa precedente no es tcnicamente necesaria ya que stqr() se podra utilizar simplemente como un argumento para printf() Sqrt() requiere un valor en punto flotante para su argumento y el valor que devuelve es del tipo doubl. Es importante que se ajuste el tipo de valor que devuelve una funcin con la variable a la que se asignar el valor.

Ejemplo:variante del anterior, programa imprime raz cuadrada de 10 #include <stdio.h> #include <math.h> /*sqrt() lo necesita*/ main() { Printf(%f, sqrt(10,0); } C llamar automticamente a sqrt() y obtendr su valor de retorno antes de llamar a printf(), el valor de retorno se convierte en un segundo argumento de printf(), cosas de C!!!!! En la escritura de funciones se podr devolver un valor a la rutina de llamada utilizando la sentencia return. La sentencia return sigue este formato: return valor; Ejemplo: imprime 10 en pantalla #include <stdio.h> main() { Int num; num=func(); printf(%d, num); } func() { return 10; }

23

Func() devuelve un valor entero, por omisin las funciones devuelven valores de tipo int, Importante:Cuando se encuentra la sentencia return, la funci regresa inmediatamente, no se ejecutar ninguna sentencia despus de return. El valor asociado a la sentencia return no tiene por qu ser constante, puede ser cualquier expresin vlida de C. Adems puede haber ms de un return en una funcin. Aunque una funcin devuelve un valor, no se tiene que asignar ese valor necesariamente a algo. Si el valor de retorno de una funcin no se utiliza, se pierde, pero no se produce ningn fallo. Ejemplo: programa muestra el cuadrado de un nmero introducido desde el teclado. El cuadrado se calcula con get_sqrt() # include <stdio.h> compilar main() { Int sqrt; sqrt=get_sqrt(); printf(cuadrado:%d, sqrt); } Get_sqrt { Int num; Printf(introduzca el nmero: ); Scanf(%d, &num); Return num*num; /*cuadrado del nmero*/ }

Ejemplo: se puede utilizar return sin especificar un valor, lo que permite volver a una funcin antes de que se alcance la llave de cierre, la lnea esto nunca se imprime no se mostrar # include <stdio.h> compilar Main() { Func1(); } Func1() { Printf(esto se imprime); Return; Printf(esto nunca se imprime); } Ejercicios para los alumnos:

24

1Escribir un programa que utilice una funcin llamada convert(), que solicite una cantidad de dlares al usuario y devuelva su valor convertido en libras.(1 libra = 2 dlares)

1.9.- UTILIZACION DE ARGUMENTOS DE FUNCIN


- un argumento de funcin es un valor que se pasa a una funcin cuando se llama a dicha funcin. -una funcin, en C, puede tener 0 o varios argumentos(LIMITE DETERMINADO POR EL COMPILADOR) ANSI al menos 31 argumentos. -para que una funcin pueda tomar argumentos, se deben declarar variables especiales que reciban valores de argumento, son los PARAMETROS FORMALES de la funcin. Los parmetros se declaran entre los parntesis que sigue al nombre de la funcin, Ejemplo: la funcin listada en este programa imprime la suma de los dos argumentos enteros utilizados para llamarla: sum( int x, int y) { printf(%d, x+y ); } Cada vez que se llame a sum(), sumar el valor que se ha pasado a x con el valor pasado a y, X e y son simplemente variables operacionales de la funcin que reciben los valores que se utilizan cuando se llama a la funcin. /*un programa simple que prueba sum().*/ Este programa ilustra cmo llamar a sum()

# include <stdio.h> Main() { Sum(1 , 20); Sum(9, 6); Sum(81, 9); } Sum(int x, int y); { Printf(%d, x + y); } Este programa imprimir 21,15,90, Cuando se llama a sum()el compilador copia el valor de cada argumento en el parmetro correspondiente , en la primera llamada sum(), se copia 1 en x y 20 en y, en la segunda llamada se copia 9 en x y 6 en y, en la tercera llamada se copia 81 en x y 9 en y.

25

IMPORTANTE: 1-argumento se refiere al valor que se pasa a una funcin. La variable que recibe los valores de los argumentos utilizados en la llamada a la funcin es un parmetro formal de la funcin. Las funciones que toman argumentos se llaman funciones parametrizadas. Si se utiliza una variable como argumento de una funcin , no tiene nada que ver con el parmetro que recibe su valor. Los argumentos siempre se separan con comas. ejemplo sum() es x,y EJEMPLOS: 1 Este programa utiliza la funcin outchar(), para mostrar los caracteres en la pantalla. El programa imprime ABC #include <stdio.h> main() { outchar(A); outchar(B); } outcharchar ch) { printf(%c, ch); }

Ejercicio para los alumnos: 1 Escribir un programa que utilice una funcin outnum() que tome un argumento entero y lo muestre en pantalla.

32 Palabras clave de C segn las define el estndar ANSI auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

REFUERZO DE EJERCICIOS DE OPERACIONES


PROGRAMA QUE IMPRIMA POR PANTALLA EL NMERO 100, EN DECIMAL, OCTAL Y HEXADECIMAL #include <stdio.h>

26

Main() { Int a=100; Printf(representa el n 100 en decimal, octal y hexadecimal.\n); Printf(decimal:%i\n octal:o\n hexadecimal:%x,a,a,a); }

PROGRAMA QUE IMPRIMA LOS NMEROS: 40000,2000000000, 4000000000,200 UTILIZANDO LOS MODIFICADORES SIN SIGNO, LARGO, LARGO SIN SIGNO, CORTO, RESPETIVAMENTE. #include <stdio.h> Main() { Int a=40000,b=2000000000,c=400000000 0,d=200; Printf(*****************************\n\n ); Printf(sin signo:u\n largo:%lid\n largo sin signo:%\ ln corto:%hd,a,b,c,d); }

Programa que imprima el resultado de los nmeros 10, 3 al aplicar las operaciones aritmticas de suma, resta, producto, divisin y mdulo. #include <stdio.h>/*interesante*/ Main() { Int a=10,b=3,suma,resta,produ,divi; Float divis, c=10,d=3; Suma =a+b; Resta=a-b; Produ=a*b Divi=a/b; Divis=c/d Printf(\t=========================== ===============\n); Printf(\tmuestra las operaciones aritmticas con los nmeros 10 y 3\n); Printf(\t=========================== ===============\n\n); Printf(suma:%i\n resta:%i\n producto:%i\n divisin: %i\n division float:%f,suma, resta,produ,divi,divis); }

27

FIN

28

29

Vous aimerez peut-être aussi