Vous êtes sur la page 1sur 45

Programacin I

Unidad I Qu es un programa? Es un conjunto de instrucciones que se ejecutan para cumplir una tarea determinada. Se realizan en forma secuencial. Un programa puede trabajar con distintos datos introducidos por el usuario durante el proceso de ejecucin o tomado de algn otro lado. El programa suele devolver resultados. Lo ms comn es mostrar algn valor calculado por pantalla. Guardarse en un archivo, base de datos o mostrarse en algn tipo de display secundario. Tambin, el resultado puede ser la realizacin de alguna accin. Niveles de los lenguajes. El nivel de un programa determina la facilidad que le presenta al programador comunicarse con el computador. Un lenguaje de alto nivel como C, utiliza instrucciones con palabras de uso cotidiano, mediante las cuales se puede decir a la computadora lo que tiene que realizar. El lenguaje de bajo nivel, es ms difcil de entender y est basado en instrucciones ms detalladas que solo el procesador puede comprender. Cuando uno crea un programa en un lenguaje de alto nivel, necesita utilizar uno que lo traduzca, al lenguaje utilizado por la maquina, a este se lo conoce como compilador. Una de las ventajas ms importante de los lenguajes de alto nivel es la portabilidad. Esto significa q un archivo fuente de un programa puede ser compilado nuevamente para distintos SO, como Unix, Macintosh, Windows. Clasificacin de Lenguaje segn su nivel El nivel de un lenguaje de programacin indica su proximidad con el hardware. Los lenguajes se clasifican en: Bajo nivel: lenguaje maquina. Alto nivel: lenguaje de propsito general por especfico. Dentro de los especficos se pueden encontrase con la orientacin a la creacin de aplicaciones cientficas y de gestin administrativa. El lenguaje C pertenece a los de alto nivel algunos autores agregan a los 2 niveles mencionados un intermedio, dentro el cual ubican al macro-ensamblador y al C.

Tcnico Universitario en Informtica

Pgina 1

Programacin I

Lenguaje Maquina El Lenguaje Maquina (en alfabeto Binario) es el nico que entiende la computadora. Fue el primer lenguaje utilizado en la programacin de computadoras. Por ejemplo: 0000 1000 0011 0111 1110 0001 1001 1010 0100 1001 1010 1001 0001 0111 0010 0001 1010 1100 0000 0000 01A1 899A 3A9C 7470 E920

Una forma de simplificar la programacin en binario fue agrupar los 1 y 0 en cifras hexadecimales u octales Este lenguaje fue sustituido por otros que fueron evolucionando a fin de brindarle al programador una interfaz ms fcil de aprender y utilizar. Lenguaje Ensamblador Es el intento de sustituir el lenguaje maquina por otro ms prximo al utilizado por las personas. En este lenguaje de instruccin de lenguaje maquina es representada por un nemnico (o abreviacin nemotcnica) en lugar de cadenas de bit. MOU CMP INICIO ADD MOU CMP IE IMP FIN END BX, 0 DX, A BX, 1 AX, DX AX, BX fin Inicio

El programa ejecutable generado a partir del lenguaje ensamblador, tiene como ventaja el bajo requerimiento de memoria y el menor tiempo de ejecucin en comparacin con los resultados de aplicaciones similares programadas en lenguaje de alto nivel. Tcnico Universitario en Informtica Pgina 2

Programacin I
Los inconvenientes son: Cada modelo de PC tiene su propio ensamblador, distintos al resto, razn por la cual un programa solo puede utilizarse en el modelo mquina para el cual se programo. El programador debe conocer perfectamente el hardware. Ya que maneja las posiciones de memoria, los registros del procesador y dems recursos fsicos. Todas las instrucciones son fundamentales, es decir, el programa debe ser descripto en el mximo nivel de detalle, todas las operaciones que se llevaran a cabo en la maquina, para realizar de cualquier proceso, por simple que este sea. Requiere mucho tiempo y gran cantidad de lneas de codificacin, para la programacin de una pequea aplicacin. Lenguaje de Alto Nivel Los lenguajes de alto nivel, son los lenguajes ms evolucionados que surgieron con posterioridad al ensamblador teniendo como objetivo: Portabilidad: lograr que el programa tenga independencia del hardware. De esta forma poder usar un mismo programa fuente, en diferentes equipos, con la nica condicin de disponer del compilador del lenguaje asociado a la nueva plataforma. Dicho en otras palabras, no se necesitan los detalles del hardware, en el que correr el programa. Amigabilidad

: aproximar el lenguaje de programacin al lenguaje natural, para que el programa se

pueda escribir y leer de una forma ms sencilla. Intrpretes y Compiladores Hay 2 tipos principales de traductores del lenguaje fuente al lenguaje maquina: 1. Compiladores: durante la compilacin se analiza el programa fuente y se genera el cdigo objeto o cdigo maquina. Este cdigo antes de poder ser ejecutado necesita pasar una fase adicional, denominado enlace. 2. Interpretes: cada vez que se ejecuta el programa a cada lnea del programa fuente la analiza, la traduce a cdigo maquina y lo ejecuta. Uno de los lenguajes ms representativos es el lenguaje C En 1967 Martin Richard en Cambridge desarrollo un lenguaje denominado BCLP (Basic Combined Programming Languaje) que pretenda de alguna forma simplificar el CPL creado en 1963. Tcnico Universitario en Informtica Pgina 3

Programacin I
En 1969 se desarrollo la primera versin del SO Unix, Bell este fue programado totalmente ensamblador. En 1970 surge un lenguaje denominado B, como intento de simplificar a un ms el CPL. Fue desarrollado por Ken Thompson en los laboratorios Bell, para una primera implementacin de Unix en un lenguaje de alto nivel. En 1971 un nuevo lenguaje denominado C se convierte sucesor del lenguaje B, desarrollado por Brian Kernighan y Dennis Ritchie. Fue implementado por primera vez en una PDP-11 corriendo Unix. Este se convierte en el primer estndar de C (el C de K&R). En 1973 el kernel del SO Unix se reescribe casi totalmente en C. el desarrollo fue llevado a cabo por Ritchie y Thompson. En 1980, Bjarne Stroustrup, crea el C++ como una mejora del C de K&R, que daba apoyo a la programacin orientada a objetos. En 1983, un comit del ANSI (American Naturak Standard Institute) defini un nuevo estndar, el ANSI C, teniendo como fin la normalizacin de las diferentes versiones del C que estaban en circulacin.

Compilar y montar un programa La compilacin de un programa consiste en traducir las instrucciones a un lenguaje intermedio. Para esto el compilador recibe el archivo de texto con las instrucciones del lenguaje C y las traduce a un lenguaje intermedio. Los archivos fuentes C suelen llevar la extensin .c y los archivos que produce el compilador llamados archivos objetos, llevan una extensin .obj Luego este archivo objeto debe ser montado o enlazado (proceso conocido como link, en ingles) con otro programa, llamado linker. El proceso de montaje da el archivo su forma de montaje final y lo deja listo para ser utilizado. Adems, si el programa se realizo en varios archivos de texto, el proceso de montaje tomara los diferentes archivos .obj y creara un nico archivo ejecutable, Dependiendo del SO en el cual se est trabajando, los programas pueden tener diferentes extensiones, como .exe en Windows y DOS; .bin en unix y Macintosh o .app en Macintosh.

Tcnico Universitario en Informtica

Pgina 4

Programacin I

Proceso completo de compilacin y enlace de un programa Archivo fuente Prog. C Compilador Archivo de libreras Stdio.h
Prog. Obj. Prog. Obj.
Enlazador linker

Programa ejecutable

Otros archivos fuentes

Programa terminado

Por ejemplo: #include <stdio.h> Void main (void) { printf (hola mundo \n); }

Aspectos Bsicos del Lenguaje En todo programa por ms simple que sea, siempre tiene que haber una funcin main ( ) que ser por donde empiece la ejecucin del mismo. No hay que confundir programa con archivo fuente, ya que como dijimos un programa puede estar compuesto por varios archivos fuentes, y seguramente, solo existir una funcin main en uno de ellos. En el lenguaje C es posible colocar comentario en el mismo programa para orientar a quien lo lea sobre qu es lo que est haciendo, los comentarios en C se colocan entre los caracteres /*.*/. Yodo texto que se encuentre entre estos caracteres sern ignorados por el compilador. Getch ( ) /*esta funcin espera que se Pulse una tecla*/ Tcnico Universitario en Informtica Pgina 5

Programacin I
El ANSII C permite otro tipo de comentario del C ++. Todo texto que va en cualquier lnea seguido de la doble barra (//) hasta el final de la lnea se toma como un comentario y tambin es ignorado por el compilador. Cantidad ++; //equivale hacer cantidad = cantidad + 1 // En cada lnea debe de estar la doble barra

Cada instruccin del lenguaje termina siempre con un punto y coma (;) esto permite colocar varias instrucciones es una misma lnea. Por ejemplo Instruccin_1; instruccin_2; instruccin_3; /*es igual a las siguientes instrucciones*/ Instruccin_1; Instruccin_2; Instruccin_3; // es lo mismo que las instrucciones anteriores

con respecto a los caracteres es importante recordar que C es sensible a las minsculas y MAYUSCULAS. En C es no es lo mismo suma que Suma (suma<>Suma) de hecho son tan diferentes como c y d. para que no existan confusiones las funciones y palabras reservadas de C se escriben siempre en minsculas.

Sobre los espacios el lenguaje es bastante permisivo. Al hacer asignaciones o comparaciones; es posible dejar o no espacios entre los elementos. a + b a+b=3; = 3; /*es lo mismo que la siguiente instruccin*/ // no importa los espacios

Primer programa C Todas las lneas que comienzan con el carcter # son instrucciones que se ejecutan antes del proceso de compilacin, aqu, la instruccin include busca los archivos que se encuentran dentro los signos < >. Estos terminados con la extensin .h son archivos de cabecera de y contienen declaraciones de las funciones que se utilizan en el programa, en el caso del archivo stdio.h contiene las declaraciones de las

Tcnico Universitario en Informtica

Pgina 6

Programacin I
funciones estndar de entrada y salidas; stdio es una contraccin de Standard Input and Output, es decir, estndares de entradas y salidas, en ingles. El funcionamiento de esta instruccin es como si hubiramos copiado y pegado todo el contenido del archivo stdio.h en el lugar que se encuentra en las lneas. El compilador de C buscara el archivo en el directorio predeterminado, de encabezadores el cual se configura en las preferencias de la IDE. Por ejemplo si su compilador se halla en el directorio C:\\TC\bin\included. Si el archivo de encabezado que desee incluir se encuentra en otro lugar deber colocarlo entre en lugar de <>, decir stdio.h. Una funcin es un bloque de cdigo que puede recibir uno o ms valores de entrada y realizar una tarea devolviendo o no un resultado. [Tipo de dato] recibe]) { Instrucciones } [Nombre de funcin] ([Valores que

Las palabras claves void indican que la funcin main no devolver ni recibir ningn valor. La funcin main, en C es la principal y la ejecucin del programa siempre comenzara con esa, es decir, todo programa en C deber tener una funcin con este nombre. Luego viene el bloque de funciones entre llaves. Como toda instruccin en C, finalizara con un punto y coma (;). Los caracteres \n representaran un salto en lnea Proceso De Ejecucin De Un Programa Un programa escrito en un lenguaje de programacin por ejemplo C++ en un papel, se llama cdigo fuente. La primera operacin para ejecutar un programa es introducir las sentencias del mismo a un editor de texto es lo almacena y le proporciona un nombre, luego se debe guardar el texto en un disco para su conservacin y uso posterior. Una vez editado el programa se le proporciona un nombre, se suelen dar extensiones como cpp, c, cc.

Tcnico Universitario en Informtica

Pgina 7

Programacin I
La siguiente etapa es la compilacin en la cual se la traduce al cdigo fuente al cdigo maquina, el programa encargado de la traduccin se llama compilador, y verifica que el programa siga las reglas de sintaxis del lenguaje de programacin. Una vez realizada la compilacin el cdigo objeto tiene informacin de cmo se debe cargar el programa en memoria antes de su ejecucin. Luego el cdigo objeto se almacena en un archivo independiente. El programa enlazador (linker) toma el archivo objeto y las partes necesarias de la biblioteca iostream (librera den entrada y salida de C++) y construye el archivo ejecutable que tiene un nombre y una extensin. Luego se ejecuta el archivo ejecutable si encuentra un error se activa el depurador y lo busca hasta encontrarlo y lo corrige. Depuracin de un Programa en C++ Existe 3 tipos de errores: sintaxis, lgico y de regresin. Cuando el compilador los encuentra visualiza un mensaje de error y su posible causa. Si lo detecta, se lo asla y luego se lo corrige. Errores de Sintaxis: son aquellos que se producen cuando el programa viole la sintaxis. Los ms comunes son de omisin de signos de puntuacin (comillas, punto y coma, etc.) a los errores los detecta el compilador y salta un mensaje de error. Errores Lgicos: representan a los errores del programador en el diseo del algoritmo, estos errores son ms difciles de encontrar ya que el compilador no los detecta, el nico signo de un error lgico es la salida incorrecta de un programa. Errores de Regresin: se crean accidentalmente cuando se quiere corregir un error lgico, son comunes y fciles de leer y corregir. (Cuando asignamos las variables, por ejemplo primeros las declaramos con minsculas y despus lo hacemos con maysculas) Mensaje de error: los compiladores emiten un mensaje de error durante las distintas fases y los errores se agrupan en 3 bloques. Errores fatales: son raros y cuando se producen el compilador se detiene inmediatamente, se corrige y se inicia nuevamente la compilacin. Errores de sintaxis: sin tpicos. El compilador termina la fase actual y se detiene. Las advertencias: no impiden la compilacin, indican condiciones sospechosas que son parte del lenguaje. Tcnico Universitario en Informtica Pgina 8

Programacin I
Errores en tiempo de ejecucin: existen 2 tipos. *los que son detectados por el sistema en tiempo de ejecucin. resultados incorrectos. Pruebas Para determinar si un programa tiene errores lgicos se realizan varias veces pruebas con diferentes datos de entrada. Elementos de un programa en C++ Existen 5 clases de elementos Toquen-: 1. Identificadores: es una secuencia de caracteres el cual el primero debe ser una letra y no un subrayado ni nmero. 2. Palabras reservadas: son caracterstica del lenguaje C++ que tiene un significado especial a ellas. Una palabra reservada no se puede utilizar como identificador, objeto o funcin. Comentarios Pueden tener formatos: Pueden comenzar con doble barra // y termina al final de la lnea, o comentarios encerrados entre /*..*/ que se pueden extender a los largo de varias lneas. Si realizamos un comentario utilizando la doble barra, cada lnea debe comenzar con //, si no el compilador tirar error. //. Comentario //. Comentario //. Comentario /*..comentario ..comentario ... comentario*/ * los que permiten la terminacin de un programa, pero producen

Signo de Puntuacin Todas las sentencias deben terminar con un punto y coma (;), otros signos son ^ * () -+ {} \ , <> / Los separadores son espacios en blanco, tabulaciones, retorno de carro y avance d lnea.

Archivo de cabecera Tcnico Universitario en Informtica Pgina 9

Programacin I
Es un archivo especial que tiene declaraciones de objetos y funciones de biblioteca para utilizarlos, un programa debe utilizar la directiva include, antes de comenzar. El nuevo estndar de C++ (ANSI++) El nuevo ANSI C++ cambio la notacin de los archivos de cabecera. Es posible utilizar el nombre de las bibliotecas sin el sufijo .h 23-03-10 Tipos de Datos Todos los tipos de datos simples o bsicos, son numricos. Los cuales son 3: 1. Enteros (nmeros completos y sus negativos), palabra reservada int. 2. Reales (decimales) float, double, long double. 3. Caracteres (letras, smbolos, dgitos y signo de puntuacin). Variante de enteros short, long, unsigned. Enteros: el tipo de dato ms comn es el entero o tipo int, que se almacena en 2 byte. Tipo de coma flotante (float /double) representan un numero real y contiene una coma (punto) decimal, o nmeros muy grandes y su declaracin es igual a las declaraciones de las variables enteras en C++ hay 3 formatos de comas flotantes float, doubl, y long double. Caracteres (char): es cualquier elemento de un conjunto de caracteres predefinidos o alfabticos. C++ procesa datos caracteres utilizando el tipo de dato char. El tipo char representa valores en el rango de -128 a +127 que se asocian con el cdigo ASCII. C++ proporciona un tipo unsignes char para representar valores de 0 a 255. Los char son un subconjunto de los nmeros enteros. Tipo de datos Bool: estos tienen el valor verdadero (true) y el valor falso (false) y proporciona la capacidad de declarar las variables lgicas que puedan almacenar los valores V o F. Simulacin del tipo Bool: se puede utilizar enteros para escribir expresiones lgicas de igual forma que el tipo Bool, ya que utiliza un valor 0 (false) y 1 (true). Tipo de datos char int float double Espacio en Memoria 1 byte 2 o 4 byte 4 byte 8 byte

Adems, existen modificadores que se pueden anteponer al nombre de los tipos para obtener un tipo de dato ms acorde a nuestras necesidades, las cuales son: Tcnico Universitario en Informtica Pgina 10

Programacin I
signed: especifica que el tipo puede contener nmeros negativos y positivos. Unsigned: determina que es un tipo nicamente para nmeros positivos. Short: se utiliza para asegurar que el tipo int ocupe solamente 2 byte, ya que algunos compiladores pueden llegar a ocupar 4. Long: aumenta la capacidad de variable de tipo int y double.

Constantes En C++ existen 4 tipos de constantes: 1. Constantes Literales: se clasifican en 4 grupos a. Constantes enteras: representa un nmero entero. b. Constantes reales: representa un nmero real. c. Constante carcter: es un carcter del cdigo ASCII encerrado entre comillas simples (apostrofe) \n, \r, \t, \v, \a d. Constantes cadenas: es una secuencia de caracteres encerrados entre comillas 2. Constantes Definidas: pueden recibir nombres simblicos mediante las directivas #define #define PI = 3,14159265; 3. Constantes Enumeradas: permite crear listas de elementos afines. Enum color {rojo, verde, azul}; 4. Constantes Declaras: const y volatile a. Const: la variable cont especfica que un valor de una variable no se puede modificar durante el programa, por que se producir un mensaje de error durante la ejecucin. b. Voltiles: la palabra reservada voltiles puede modificar su valor por el propio programa, software o hardware dl sistema.

Declaraciones y Variables Antes de usar una variable es necesario declararla. Esto significa que se debe decir al compilador que tipo de variable se va a utilizar y cul ser su nombre, de modo que el procesador reserva lugar para ella en la memoria al momento de ejecutar el programa, si se pretende utilizar una variable sin a verla declarado el compilador mostrara un error. Tcnico Universitario en Informtica Pgina 11

Programacin I
En el ANSCII C, todas las variables se deben declara al comienzo del bloque, si se declara luego de otra instruccin, es muy probable de obtener 1 error, sin embargo, de acuerdo al compilador que se est usando esto no puede ser as. Para declara 1 variable se debe declara el tipo seguido con el nombre de la misma, como toda instruccin en C, debe terminar en un punto y coma (;). Int cantidad; Cantidad = 875; En caso de que se tenga que declarar ms de una variable del mismo tipo, es posible hacerlo en una nica instruccin, separndolas a las mismas por una coma. float peso, altura, ancho;

Inicializacin de Variables En una computadora, los lugares no utilizados en memoria contienen basura. La basura informtica est constituida totalmente aleatorios de 1 y 0. Por ello muchas veces es necesario inicializar una variable antes de utilizarla, la inicializacin de una variable simplemente consiste en asignarle un valor predeterminado que necesitamos que tenga. Si vamos a utilizar una variable para crear un contador, sera buena idea asignar el valor 0 a la misma. La asignacin de un valor se realiza con el operador de asignacin = Unsigned long cant_vueltas = 0; Para reducir el nmero de instrucciones, tambin se puede declarar e inicializar ms de una variante del mismo tipo en una misma instruccin, separndolas con comas. Insigned char libros=0, cant_inicial=0; 30-03-10 E/S de informacin E/S Estndar El lenguaje C trata todos los medios de E/S de un sistema de informacin con un flujo de byte. Para escribir en un archivo, nuestro programa debe abrir ese flujo. Otro flujo puede ser el de una impresora, Tcnico Universitario en Informtica Pgina 12

Programacin I
un disco, o un monitor. Adems, existen otros flujos que ya se encuentra abierto de forma predeterminada. Por ejemplo, el flujo del teclado, que constituye el flujo de E estndar o predeterminada. De la misma manera, el flujo de salida estndar lo constituye la S por pantalla.

Stdin E estndar por teclado para lectura. Este flujo proporciona la informacin capturada por el sistema a travs del teclado de la PC. Stdout: salida por pantalla para escritura, si se escriben datos en este flujo, los mismos sern mostrados en la pantalla del sistema a travs de la consola. Stderr: representa un flujo para escribir un mensaje de error. E/S de caracteres Una de las formas ms sencillas de obtener la E del usuario es a travs de las funciones gets ( ) o getchar ( ). Del mismo modo, usaremos put ( ) o putchar ( ) para mostrar caracteres. Esta seccin trata de E/S de caracteres individuales. Algunos ejemplos pueden ser la seleccin de opciones en un men, espera de la respuesta por parte del usuario, espera de la pulsacin de una tecla para realizar una tarea, etc. La funcin gets ( ) Esta funcin queda a la espera de un carcter de flujo de archivo basado como parmetro. La funcin devuelve al cdigo ASCII del carcter, como un nmero tipo entero o int. El prototipo de esta funcin que est declarado en el archivo de encabezado stdio.h La funcin getchar ( ) Esta funcin es una abreviatura de la anterior. Cumple la misma tarea, pero siempre sobre el flujo stdin, es decir siempre sobre el flujo dentro del estndar. En efecto, gets (stdin) equivale a getchar. Para ser ms preciso, getchar ( ) no es una verdadera funcin, sino que se trata de un macro o alias. La funcin put ( ) Esta funcin permite escribir caracteres en el flujo de archivo basado como parmetro. La misma recibe 2 argumentos: el primero es un nmero entero que representa el cdigo ASCII del carcter y el segundo, es el flujo del archivo es donde debe de escribir el dato.

Tcnico Universitario en Informtica

Pgina 13

Programacin I
Funcin putchar ( ) Del mismo modo que getchar ( ) es una forma abreviada de gets ( ), putchar es la de pun ( ) para imprimir caracteres en el flujo de S estndar stdout. Concepto De Bloque Y Funciones Todas las lneas de instruccin en C se colocan dentro de bloques. Un bloque es un grupo de instrucciones encerradas entre llaves. Aqu vemos dentro de la funcin main #include <stdio.h> main () { printf (bloque de la funcin main \n); { printf (bloque dentro del bloque de la funcin main \n) } { printf (otro bloque dentro del bloque de la funcin main \n) } }

Funciones Una de las caractersticas ms importantes del lenguaje C, al = que muchos otros lenguajes, es la modulacin. Esta consiste en la divisin de un programa en partes ms pequeas (subprogramas, subrutinas, procedimientos, funciones, etc.) que pueden ser reutilizables. En C, se conoce como funcin a una parte del programa que realiza una tarea bien especifica, como guardar 1 dato en un archivo, conectarse a una base de daos, hacer un clculo, etc. Generalmente se usan funciones cuando se quieren separa tareas especificas del resto del programa, o que se trata de una tarea que luego se puede reutilizar. Partes de una funcin Las partes de una funcin son: Nombre: se trata de un nombre cualquiera que describa la funcin. Hay que tener en cuenta que se recomienda que sea un nombre descriptivo, como suma, guardar, conectarse y que no se trate de una palabra reservada de C. Tcnico Universitario en Informtica Pgina 14

Programacin I
Argumentos: una funcin puede recibir una cantidad ilimitada de valores para realizar el proceso, par la que fue programada. Estos valores son conocidos como argumentos o parmetros. Por ejemplo, una funcin que imprima una leyenda en la pantalla (como printf), recibe como argumento el mensaje que se quiere mostrar o bien, una funcin que sume 2 nmeros debera recibir los 2 nmeros a sumar como argumentos. Otras funciones no necesitan trabajar con ningn argumento. Como por ejemplo, una funcin que muestre siempre la misma leyenda. Valor de retorno: en muchas ocasiones, la funcin realiza algn tipo de clculo de los datos que le pasan como argumento. Este dato debe ser devuelto y es lo que se conoce como valor de retorno, por ejemplo, para el caso de la funcin que sume 2 nmeros, el valor de retorno sera el resultado de la suma. Otras funciones como printf no devuelven ningn valor sino que simplemente realiza una tarea determinada en este caso mostrar un mensaje en pantalla. Declaracin, Definicin Y Llamada Cuando se pretende utilizar una funcin, hay que tener en cuenta 3 pasos indispensables: 1) Declaracin: antes de poder utilizar una funcin es necesario decirle al compilador que la misma existe, que tiene un nombre determinado, recibe una cantidad determinada de argumentos de ciertos tipos y devuelve o no un tipo de valor determinado. Todo esto constituye la declaracin o prototipo de la funcin. Antes de poder una funcin es necesario declara su prototipo (generalmente al comienzo del programa y antes del main () ). Las funciones estndar del lenguaje C ya se encuentran declaradas en los archivos de encabezado. 2) Definicin: la definicin constituye la implementacin de la funcin propiamente dicha, se trata de las lneas de cdigo que utiliza la funcin para la cual se programa. Por ejemplo la siguiente es la definicin de la funcin suma Int suma (int a, int b) { Int resultado; Resultado = a + b; Return resultado; } Las funciones estndar de C, como printf () ya se encuentran definidas en los archivos de libreras estndar del lenguaje que se le agregan al archivo objeto en el momento de enlace o vinculacin. Por lo tanto, no puede usar los nombres de dichas funciones para la que usted programe por cuenta propia. Tcnico Universitario en Informtica Pgina 15

Programacin I
3) Llamadas: se conoce como llamada de una funcin, a una lnea cualquiera del programa en donde se hace uso de la misma. En un programa puede haber un nmero ilimitado de llamadas de una funcin (tantas veces como sea necesario). Sin embargo una funcin no puede declararse ni definirse ms de una vez. El siguiente ejemplo muestra 2 llamadas diferentes a la funcin suma.

C= suma (2,3); //la variable C guarda el valor 5 D= suma (5,7); //la variable d guarda el valor 10

La funcin printf () texto con formato, esta funcin suele mostrar un mensaje en pantalla. En esta oportunidad aprender ms sobre ella, ya que su principal caracterstica es que permite imprimir variables con distintos formatos. Diferentes formatos: la funcin printf () puede utilizarse para imprimir variables o constantes, como ya se sabe, una variable o constante se almacena como datos binarios (1 y 0). La potencia de esta funcin viene acompaada de las llamadas especificadores de formato, los cuales le indicaran como mostrar esos 1 y 0. La funcin printf () recibe uno o ms argumentos. El primero es la constante de cadena de texto est entre comillas (como toda cadena de texto) esta cadena de texto puede contener una o ms especificadores de formato en los lugares que se desea mostrar el valor de una variable o constante (campos). Luego, y separados por comas, todas las funciones vienen los datos que se reemplazaran en la cadena de texto en los lugares que s encuentran los especificadores de formato y en el orden que aparezcan. Veamos el siguiente ejemplo en donde se ve el uso de la funcin printf () para imprimir en la pantalla el contenido de una constante y una variable.

#include <stdio.h> void main (void) { float radio =20 printf (la superficie del circulo de radio, %f es %f \n radio, 1256.64);

Tcnico Universitario en Informtica

Pgina 16

Programacin I
En este ejemplo la funcin printf () tiene 2 especificadores %f, dentro de la cadena de texto al finalizar la misma tiene una variable (radio) y una constante (1256.64), en lugar del 2 especificador. Adems, en caso de ser necesario tambin se puede colocar expresiones ms complejas a partir del 2 argumento de la funcin printf (). 13/04/10 Especificadores de Formato En la siguiente tabla se muestran todos los especificadores que admite printf ().

Especificador de formato %c %d %D %i %f %e %E %g %G %o %s %u %U %x %X %p %n %o %O %lf %LF

Descripcin formato de carcter nmero entero (int) nmero entero long (equivale a %d) nmero entero int (equivale a %d) formato de punto flotante (float) notacin cientfica con e minscula Notacin cientfica con E mayscula Utiliza %f o %e segn el resultado ms corto Utiliza %f o %E segn resulte ms corto Formato de nmero octal sin signo Formato de cadena de texto Formato de entero sin signo Formato de entero son signo long Formato hexadecimal sin signo con minscula Formato hexadecimal sin signo con mayscula Formato de puntero. Muestra una direccin de memoria Nmero de caracteres Formato entero octal Formato entero octal long (equivale a %lo Formato doubl Formato long double

Tcnico Universitario en Informtica

Pgina 17

Programacin I

En el siguiente programa se puede ver un ejemplo en donde se utilizan diferentes especificadores de formato. #include <stdio.h> Void main (void) { Int numero = 1000; printf (nmero con formato float : %f, numero);p printf (\n nmero con formato int : %d, numero); printf (\n nmero con formato hexadecimal %x, numero); printf (\n nmero con formato octal :%o, numero); printf (\n); } El resultado de este programa es la impresin por pantalla del contenido de la variable nmero en distintos formatos:

Observe que el nmero es int, al tratar de tratarla como float se muestran todos como 0, para imprimirla por pantalla hay que reemplazar la siguiente lnea printf (nmero con formato float: %f, (float) numero); Entonces, se imprimir el entero como Nmero con formato float : 1000.000000 La funcin scanf () permite capturar texto y nmero con formato, utilizando los mismo especificadores que para la funcin printf () Caracteres de escape Tcnico Universitario en Informtica Pgina 18

Programacin I
En la siguiente tabla se muestran los caracteres especiales que podemos utilizar en la funcin print () junto con su correspondiente significado o el resultado que muestra en pantalla

Tcnico Universitario en Informtica

Pgina 19

Programacin I

Carcter especial \n \r \t \\ \* %% \b \f Variables y constantes de tipo carcter

Imprime Salto en lnea Retorno al margen izquierdo Tabulacin \ % Mueve el cursor un lugar a la izquierda Salto pagina

Se conoce a variable tipo carcter a una variable que representa 1 carcter cualquiera de la tabla ASCCI. Como esta tabla va desde 0 a 127 (o 0 a 255 en algunos sistemas), una variable tipo char es ms que suficiente para representar el cdigo ASCII de cualquier carcter. Para imprimir una variable de tipo carcter con la funcin printf () se utiliza el especificador de formato %c. sin embargo, como vera en el ejemplo, que se le ofrece a continuacin, no es necesario que el valor a imprimir este almacenado en una variable de tipo char.

#include <stdio.h> main() { int w=65; // el nmero 65 representa a la A en el cdigo ASCII int x='B'; char y=67; // el nmero 67 representa a la B en el cdigo ASCII char z='D'; printf (" las primeras 4 letras del abecedario: %c, %c, %c, %c \n", w, x, y, z); getchar (); }

Tcnico Universitario en Informtica

Pgina 20

Programacin I

La salida de este programa ser la siguiente:

27-04-10 Formato de salida printf () Al momento de imprimir campos, utilizando especificadores de formato, la funcin printf () le ofrece muchas opciones ms determinadas como el ancho, la alineacin y la precisin. Ancho mnimo: la funcin printf () permite colocar un nmero entre el signo % y la letra de un especificador de formato para indicar el ancho mnimo del campo. Esta opcin permite trabajar con mayor precisin cuando se imprime nmeros en columnas. Por ejemplo, %10f indica que el valor del campo debe tener un ancho mnimo de 10 caracteres

#include <stdio.h> void main(void) { printf (%d \n, 52) printf (%d \n, 464) printf (%5d \n,464) printf (%5d \n, 52) printf (%05d \n, 464) }

En las 2 primeras lneas se imprimen los N 52 y 462 sin ningn especificador de ancho. En cambio en las 2 segundas lneas se imprimen los mismos nmeros con especificador de ancho mnimo de 5 caracteres. Observe que este caso, los nmeros se alinean a la izquierda dejando adelante los espacios en blanco que Tcnico Universitario en Informtica Pgina 21

Programacin I
sean necesarios de modo de alcanzar el ancho pedido. Por ltimo se muestra como puede rellenarse este espacio con 0 y el especificador del ancho mnimo. La salida de este programa es la siguiente:

Otra aplicacin interesante, podra ser la presentacin de una hora en el formato hh:mm:ss, es decir, dos cifras para la hora, dos para los minutos, y dos para los segundos, separados por dos puntos (:). Es el ejemplo se seala como se mostrara la hora sin el especificador de ancho mnimo y en el caso recomendado, con especificador de formato y rellenado de 0.

#include <stdio.h> void main(void) { int hora=2; int minuto=5; int segundo=50; printf ( la hora sin especificador de formato es : %d : %d : %d \n, hora, minuto, segundo); printf (la hora con especificador de formato es : %02d : %02d : %02d \n, hora, minuto, segundo); }

Como se abra dado cuenta, la segunda opcin garantiza la visualizacin de la hora con el formato estndar, la salida del programa en la consola ser:

Tcnico Universitario en Informtica

Pgina 22

Programacin I

4-05-10 Alineacin Otra de las opciones que ofrece printf () es la alineacin. Como abra observado al especificar un ancho mnimo, los nmeros con un ancho menos que el especificado se alinean a la derecha. Sin embargo, pueden hacer que se alinean a la izquierda colocando un signo negativo adelante del especificador de ancho. #include <stdio.h> main() { int hora=2; int minuto=5; int segundo=9; printf ("la hora sin especificador de formato es : %d:%d:%d \n", hora, minuto, segundo); printf ("la hora con especificador de formato, es : %02d : %02d:%02d \n", hora, minuto, segundo); printf ("la hora con especificador de formato es alineado a la derecha,(ancho mnimo 5): %5d: %5d:%5d \n", hora, minuto, segundo); printf ("la hora con especificador de formato es alineado a la izquierda,(ancho mnimo 5): %-5d: %-5d:%-5d \n", hora, minuto, segundo); //se le coloca el signo menos (-) getchar (); }

Tcnico Universitario en Informtica

Pgina 23

Programacin I
Precisin: Por ltimo, resta conocer una caracterstica ms de printf (), es la que permite personalizar la precisin de los valores float. Esto se hace colocando un punto (.) y un nmero que indica las posiciones decimales, luego del especificador de ancho mnimo. Como pudo ver anteriormente, los nmeros float se muestran en pantalla utilizando una gran cantidad de nmeros decimales, los cuales se rellenan con 0, en caso que estn vacios. Este formato puede resultar muy molesto, ya que dificulta mucho la lectura. Para ello, puede utilizar un especificador de precisin que reduzca el nmero de lugares decimales. Por ejemplo; %10.3f para mostrar un nmero float con un ancho mnimo de 10 caracteres (incluido el punto) y con 3 decimales, adems este especificador redondeara el nmero adecuadamente si solo necesita especificar la cantidad de los lugares decimales. Puede hacerlo colocando el valor 0, en el lugar del ancho mnimo. Por ejemplo, para especificar que un nmero tenga 2 lugares decimales escriba: %0.2f. Tambin puede obviar este dato escribiendo de ms ser ms sencilla %.2f. En el ejemplo siguiente se cre un programa que simula la presentacin de los resultados de la medicin de temperatura por parte de sensores (a, b, c), se muestra el resultado con un ancho mnimo de 6 caracteres y 2 lugares decimales. #include <stdio.h> main() { float a=12.34; float b=156.7; float c=4.98904; printf ("sensor a = %6.2f grados \n", a); printf ("sensor b = %6.2f grados (se completo con 0 as cubrir los 2 decimales del \n", b); printf ("especificador) \n", b); printf ("sensor c = %6.2f grados (se redondeo a 4.99)\n", c); getchar (); } El resultado sera:

Tcnico Universitario en Informtica

Pgina 24

Programacin I

1-06-10 Controlar el Programa Muchas veces se hace necesaria la ejecucin de diferentes bloques del programa, de acuerdo al valor de la variable, el resultado de un clculo, o hasta la hora del da. En otras ocasiones tambin se requiere la repeticin de una cantidad determinada de veces de un bloque de un programa, hasta que se cumpla una condicin o hasta que el usuario pulse una tecla. Todas estas opciones se controlan con las funciones de control de flujo de programa. Operaciones Relacionales es importante conocer los operadores relacionales, los cuales sern de gran utilidad a la hora de analizar los resultados de expresiones o los valores de variables Operador == = > < >= <= Significado igual a distinto que mayor que menor que mayor o igual que menor o igual que

los operadores relacionales se pueden utilizar para comparar los valores de 2 expresiones, una ala izquierda y otra a la derecha, siempre se evaluara primero las expresiones a ambos lados de los valores operadores relacionales y recin, despus se realizara la comparacin. Todas las operaciones relacionales devuelven1 de 2 posibles valores, 1 si la relacin se cumple o 0 si no se cumple. Operadores Lgicos

Tcnico Universitario en Informtica

Pgina 25

Programacin I
Estos operadores se utilizan para trabajar con operadores relacionales, de modo de sumarlas o multiplicarlas. Una operacin lgica, al igual que una operacin relacional tambin puede tener solo uno de 2 resultados posibles 1 o 0, verdadero o falso. Una suma lgica de un resultado verdadero siempre y cuando haya por lo menos uno de sus miembros sea verdadero. Una multiplicacin resulta verdadera si verdaderos, existen operaciones negacin, que opuestos o la suma siempre y cuando sea verdadero. #include <stdio.h> int main(void) { int verdadero =1; int falso = 0; printf (!verdadero = %d /n, !verdadero); printf (!falso= %d /n, !falso); } lgica, tambin lgicas, devuelve como el en cambio otras la valor todos los miembros son

exclusiva da verdadero, uno de los miembros

$ El Operador NOT o NO (!) Este operador (!) utiliza un nico miembro, se coloca delante de la expresin y su funcionamiento es muy simple: devuelve el valor lgico contrario. si el resultado de la expresin es un valor cualquiera distinto a 0 devuelve 0. En cambio si el resultado de la expresin es 0 devuelve 1.

Tcnico Universitario en Informtica

Pgina 26

Programacin I
Aqu se definieron 2 variables enteras con los valores 1 y 0 respectivamente. este programa funcionado igual si se definiera el valor de la variable verdadera con cualquier otro valor, siempre y cuando fuese distinto a 0, ya que C considera verdadero a cualquier valor que no sea nulo.

#include <stdio.h> int main(void) { int verdadero =5; int falso = 0; printf (!verdadero = %d /n, !verdadero); printf (!falso= %d /n, !falso); }

Tcnico Universitario en Informtica

Pgina 27

Programacin I

El Operador AND o Y (&&) el operador AND (&&, doble amphersand) representa la multiplicacin lgica y devuelve un valor verdadero si los 2 miembros de la expresin son verdadero, as se lo utiliza: expresin_1 && expresin_2 Tambin se pueden combinar varios operadores (&&) con mltiples expresiones para que el resultado de la expresin lgica sea verdadera, debern ser verdaderos todos los miembros expresin_1 && expresin_2 && expresin_3 && expresin_4 Note que el nombre de este operador en castellano Y representa la utilidad del mismo igual. el resultado ser verdadero mientras que todas sus expresiones sean verdaderas. El #include <stdio.h> int main(void) tabla que este { int verdadero =1; int falso = 0; printf (falso && falso = %d \n, falso && falso); printf (falso && verdadero = %d \n, falso && verdadero); printf (verdadero && falso= %d \n, verdadero && falso); printf (verdadero && verdadero = %d \n, verdadero && verdadero); } siguiente programa muestra la de valores devuelve operador.

Tcnico Universitario en Informtica

Pgina 28

Programacin I
El resultado de la ejecucin de este programa muestra los 4 posibles casos que pueden plantearse con este operador, observe que la operacin del resultado verdadero (1), nicamente se da cuando las 2 expresiones son verdaderas.

El Operador OR u O ( ) Este doble suma igual #include <stdio.h> int main(void) { int verdadero =1; int falso = 0; printf (falso falso = %d \n, falso falso); printf (falso verdadero = %d \n, falso verdadero); printf (verdadero falso= %d \n, verdadero falso); printf (verdadero verdadero = %d \n, verdadero verdadero); } multiplicacin, utiliza expresiones, devuelve un resultado verdadero si alguna de las expresiones es verdadera. al igual que en el caso del operador AND, el OR, representa la forma que C trabaja con los operandos. El resultado ser verdadero con tal que una de las expresiones sea verdadera. El siguiente programa similar al anterior muestra la tabla de valores que devuelve el operador OR: operador ( , pipe) representa la lgica, al que la

Tcnico Universitario en Informtica

Pgina 29

Programacin I

Este programa evala todos los casos posibles de expresiones del operador OR, y devuelve el siguiente resultado:

09-6-10

Tcnico Universitario en Informtica

Pgina 30

Programacin I

Combinacin de operadores Lgicos Es importante conocer su presencia, es decir, el orden en que sern interpretados por el programa, el orden de precedencia es el siguiente, NEGACIN ! AND && - OR . Esto significa que primero se evaluara todas las negaciones, luego las operaciones de multiplicacin, y despus las sumas; sin embargo, para alterar el orden de la precedencia, se puede utilizar parntesis, como en el algebra tradicional. Observe los siguientes ejemplos:
2 3

if (expre_1 && expre_2 expre_3)


1 3

if (expre_1 && expre_2 expre_3) !


2 1

En estos ejemplos se pueden ver el orden en que son procesadas las operaciones lgicas. Algebra Booleana Al trabajar con operaciones lgicas es importante conocer los principios del algebra Booleana, la rama del algebra que se ocupa de las operaciones binarias. En 1 lugar es importante ver que existe la ley de dualidad entre la multiplicacin lgica (&&) y la suma lgica ( esta dualidad se obtiene intercambiando los operadores && por y los valores ) verdaderos por falsos En la siguiente tabla se ve algunas proposiciones y su dual. Proposicin Si A no es falso, entonces es verdadero A&& B = B&& A A&& A = A A && verdadero =A A && falso = falso !falso = verdadero A&& !A = falso Tcnico Universitario en Informtica Dual Si A no es verdadero, entonces es falso AB = B A A = A A Afalso = A A verdadero = verdadero !verdadero = falso A ! = verdadero A Pgina 31

Programacin I

Tambin presentamos las siguientes propiedades que se recomienda tener en cuenta para realizar operaciones complejas. Propiedad !!A =A (A&&B) && C = A && (B&&C) A&& (A = A B) A$$ (!A A && B B) Dual !!A=A (A C = A (B B) C) A B)=A (A A ! &&B=A A

Finalmente, un ltimo par de leyes importantes son las conocidas Leyes de Morgan que resuelven las negaciones de una negacin, como la suma de la negacin de sus miembros y por dualidad, la negacin de una operacin OR, como la operacin AND de cada uno de los trminos negados !(A&&B) =!A !B Instruccin de Decisin este tipo de instrucciones le darn la posibilidad de ejecutar distintos bloques del programa sobre la base de cumplimiento o no de ciertas condiciones que sern especificads por usted. las instrucciones a continuacin, en conjunto con las de repeticin son muy importantes y estn presente en todos los lenguajes de programacin. Las instrucciones if else la instrucion if (si en castellano), permite evaluar una expresin y sobre la base de su resultado (verdadero o falso), ejecutar o no la ejecucin o el bloque que le sigue, es decir, si el resultado de la expresin es verdadero, ejecuta el cdigo. en caso contrario el programa sigue su curso normal.

if (expresin) instruccin_a ejecutar; La instruccin if finaliza en el primer punto y coma, en caso de necesitar ejecutar varias instrucciones en el caso de que la expresin sea verdadera, se emplean llaves para la construccin de bloque.

Tcnico Universitario en Informtica

Pgina 32

Programacin I
if (expresin) { instruccin_1; instruccin_2; instruccin_3; } Tambin es posible colocar instrucciones if anidadas, es decir, una dentro de la otra, aqu se presentan dos casos: en el primero existen instrucciones dentro del 1 if if (expresin_1) { instruccin_1; instruccin_2; instruccin_3; if (expresin_2) { instruccin_1; instruccin_2; instruccin_3; } }

en el segundo caso es diferente, a que no aparecen instrucciones dentro del 1 if. if (expresin_1) { if (expresin_2) { instruccin_1; instruccin_2; instruccin_3; } } Tcnico Universitario en Informtica Pgina 33

Programacin I

En este segundo caso puede resumirse de una manera simple, utilizando operadores lgicos, si presta atencin la instruccin 1 y 2 se ejecutaran nicamente si las dos expresiones son verdaderas; entonces podra utilizarse un nico if con in operador and. if (expresin_1 && expresin_2) { instruccin_1; instruccin_2; instruccin_3; }

Tambin puede combinar varias operaciones utilizando el operador OR

if (expresin_1 expresin_2) { instruccin_1; instruccin_2; instruccin_3; } Bajo la palabra else, las instrucciones que siguen a else se ejecutan si el resultado de la expresin que es argumento del if resulta falsa, facilita la posibilidad de indicar que hacer si ese resultado es falso. if y else estn asociados si tienen ms de una instruccin se muestran entre llaves formando bloques. Operador Condicional Existe un operador llamado condicional que admite 3 operando; en realidad se trata de un operador formado por dos caracteres expresin? valor_verdadero = valor_falso;

Tcnico Universitario en Informtica

Pgina 34

Programacin I

Veamos el funcionamiento de este operador. #include <stdio.h> main () { int x =3; printf (" el numero es %d \n ", x); x>10 ? printf ("x es mayor que 10"): printf ("x es menor que 10"); getchar (); }

Aqu, la expresin que se analiza es x >10?, luego del signo ? se coloca el valor verdadero en este caso se coloca un mensaje que informa que x es mayor que 10, despus separada por dos puntos, se colca la instruccin para el caso de ser falso, el cdigo anterior es equivalente al haber utilizado instrucciones if else de la siguiente forma: #include <stdio.h> main () { int x =3; printf (" el numero es %d \n ", x); if (x>10) { printf ("x es mayor que 10"); } else { printf ("x es menor que 10"); } getchar (); }

Tcnico Universitario en Informtica

Pgina 35

Programacin I

Mientras que la primera es ms reducida, la segunda resulta ms fcil de entender para el programador u otra persona que tenga el cdigo fuente. tal vez por ese motivo, es raro encontrar programadores que utilicen esta herramienta en sus programas. 23-08-10 Instrucciones de Repeticin

Las instrucciones de repeticin, de iteracin o bucles, facilitan la repeticin de un bloque de un programa, un nmero determinado de veces, hasta que se cumpla una condicin. Existen 3 instrucciones de repeticin: while, do-while, for Instrucciones while: Como su significado en ingles indica (mientras), la repeticin del bloque asociado se realizara mientras se cumpla una condicin determinada.

while (expresin_1) { instruccin_1; instruccin_2; instruccin_3; }

Tcnico Universitario en Informtica

Pgina 36

Programacin I
observe que si la condicin no se cumple inicialmente, es decir, si no se cumple ates de entrar al ciclo por primera vez, las instrucciones asociadas no se ejecutaran nunca. en el siguiente ejemplo se utiliza la funcin while para mostrar la tabla de conversin decimal a hexadecimal, para los nmeros del 0 19 #include <stdio.h> int main() { int n = 0; printf("tabla de conversion decimal a hexadecimal, para los numeros \n"); printf("del 0 - 19, utilizando la funcion while \n"); printf("\n"); printf("Decimal \t Hexadecimal \n"); while(n<20) { printf("%d \t \t %x \n",n,n); n++; } getchar(); } observe que se utilizo una instruccin que modifica el valor de n (n++) variable comprendida en expresin, argumento del while; si no se colocara alguna instruccin que modificase en algn momento el resultado de la expresin, el valor de n se mantendra en 0, por lo tanto seria menor a 20 y el ciclo de while se repetira indefinidamente. el resultado seria

Tcnico Universitario en Informtica

Pgina 37

Programacin I

Instruccin Do-While La diferencia con la anterior es que la condicin se evala al finalizar el bloque lo obliga al menos, se ejecute el mismo una vez

do { instruccin_1; instruccin_2; instruccin_3; } while (expresin_1)

Por ejemplo imagnese leer un archivo hasta que se encuentre un texto determinado es obvio que para poder realizar la condicin, deber leer una vez el contenido de la primera lnea del archivo. Tcnico Universitario en Informtica Pgina 38

Programacin I
Tomando el mismo ejemplo de la conversin de nmero, se obtiene el mismo resultado si se utiliza la sentencia while, que si se utiliza la do while.

#include <stdio.h> int main() { int n = 0; printf("tabla de conversion decimal a hexadecimal, para los numeros \n"); printf("del 0 - 19, utilizando la funcion while \n"); printf("\n"); printf("Decimal \t Hexadecimal \n"); do { printf("%d \t \t %x \n",n,n); n++; } while(n<20); // condicion getchar(); }

Tcnico Universitario en Informtica

Pgina 39

Programacin I

La instruccin for Esta es una de las instrucciones ms utilizada, y en varios casos, puede reemplazar a cualquiera de las otras, se utiliza, principalmente, cuando se necesita la repeticin de un bloque un nmero determinado de veces aunque tambin puede ser usada con expresiones condicionadas como while. for (instruccin inicial, instruccin condicional, condicin fin de bloque) { instruccin_1; instruccin_2; instruccin_3; } while (expresin_1) cuando un programa se encuentra con una instruccin for, lo primero lo que hace es ejecutar la instruccoin inicial; segundo lugar, y antes de empezar de ejecutar kas instrucciones del bloque asociado, se comprueba el valor lgico de la instruccin condicional. si esta se cumple, entonces se ejecuta el bloque. una vez que el bloque se ejecuta hasta el final, se procesa la instruccin de fin de bloque, nuevamente, antes de comenxar el bloque se vuelve a comproibar la instruccin condicional. este proceso que parece tan complicado es mejor verlo en un ejemplo. se pretede en el siguiente cdigo, imprimir una lista con los carecteres y sus valores numricos de la tabla ASCII. #include <stdio.h> main () { char i; printf (" esta tabla reoresenta los caracteres y sus valores numericos entre el 64 y 70 en la tabla de ASCII\n"); printf("\n"); printf("\t Numero \ t caracter \n"); for (i=64; i<71;i++) { printf("\t %d \t %c \n",i,i); } printf("\n"); if (i=70) { printf("i a alcanzado el valor de 70\n"); } getchar (); } Tcnico Universitario en Informtica

Pgina 40

Programacin I
La instruccin en este caso inicial, consiste en definir el valor inicial de la variable i, la cual se utilizara, adems, para representar los valores, tanto numricos como de carcter, la segunda condicin establece i>100 lo que significa que el bloque de instrucciones se ejecutara solo si el valor de i es >100 finalmente, luego de cada ejecucin del bloque de instruccin se incrementa en una unidad el valor de la variable i. note que cuando se imprime el carcter 99 y al final del bloque se incrementa una unidad i que era igual a 100. en este caso, la instruccin condicional devolver un resultado falso con lo que ya no se ejecutara ms el bloque. El resultado ser:

Salir, Continuar, Saltar las instrucciones breack y continue puede utilizarse tambin para controlar el flujo de la ejecucin dentro del ciclo de repeticin. la primera fue vista para escapar de una instruccin switc. la instruccin breack tambin puede emplearse para salir de cualquier bloque de repeticin y as dar por finalizada su ejecucin. la instruccin continue, hace que cuando es encontrada el ciclo vuelve a empezar obviando todas las instrucciones que existen a continuacin, hasta el final del mismo; esta instruccin exige un cuidado especial, no tiene mucho sentido colocar un continue solo; generalmente se lo acompaa con algn tipo de instruccin de decisin, para determinar si el ciclo debe continuar o no, sobre la base de una condicin determinada. Por ltimo la instruccin goto permite saltar a un punto determinado del cdigo para esto hace uso de etiquetas. Las etiquetas son nombres que se pueden colocar en cualquier lugar del cdigo, seguida de dos puntos (:) esta sealan el lugar simplemente. En el siguiente ejemplo se utilizan las etiquetas inicio y fin, la primera se utiliza un ciclo de repeticin, en cada vuelta del ciclo se comprueba si el valor de la variable, ao es mayor a 2010, en ese caso, se utiliza un goto fin, en caso contrario se vuelve a la posicin marcada inicio.

Tcnico Universitario en Informtica

Pgina 41

Programacin I
#include <stdio.h> int main() { int edad=1; int anio=1977; inicio: while (anio<2010) { printf("en %d mi edad era %d anios \n",anio, edad); edad++; anio++; } if (anio>2010) goto fin; fin: printf("estamos en el anio %d, y mi edad es de %d ", anio, edad); getchar(); }

El resultado seria:

Tcnico Universitario en Informtica

Pgina 42

Programacin I
30-08-10 Punteros Son unas de las herramientas ms poderosas del C, gracias a ellos se pueden tener un mayor control sobre la ubicacin y contenido de variables. los punteros son variables y tambin tienen un lugar reservado en la memoria con una direccin, sin embargo, lo que los diferencia de las variables convencionales, es que en lugar de guardar datos, guardan direcciones de memoria, se los llaman punteros, porque se dicen que estas variables apuntan a otros lugares de memoria especialmente a la direccin que almacena. Para conocer la direccin de memoria que el micro asigno a una variables se puede emplear un operador de direccin &. Ejemplo: #include <stdio.h> int main () { int a; int b; int c; printf("La direccion de la variable a es %p \n", &a); printf("La direccion de la variable b es %p \n", &b); printf("La direccion de la variable c es %p \n", &c); getchar(); } Resultado:

posiblemente si usted ejecuta el programa en su pc, no obtendr los mismo valores de memoria ya que esto depende del compilador y de su sistema operativo; en el ejemplo no se utilizaron punteros, lo que hicimos fue mostrar la direccin de las variables a,b,c. un puntero permitir guardar estas direcciones para su uso posterior en la aplicacin que necesitemos; si quieramos guardar las direcciones de memoria en una variables comn y corriente obtendramos un error.

Tcnico Universitario en Informtica

Pgina 43

Programacin I
Declarar variables punteros La declaracin de un puntero es igual a la declaracin de una variable. Solo han de tener en cuenta que un puntero debe declararse con el mismo tipo de variable cuya direccin va a contener. Por ejemplo, si se necesita un puntero para almacenar la direccin de memoria de una variable de tipo int el puntero tendr que ser del mismo tipo, para la declaracin se utiliza un asterisco (*) entre el tipo de variable y su nombre. int * a; Si bien el tipo de los punteros puede cambiar, segn el tipo de variable que se vaya a utilizar, ellos poseen la particularidad de tener siempre el mismo tamao (4 bytes). Esto puede comprobarse mediante la funcin sizeof. La misma permite obtener el tamao en bytes, de una variable o de un tipo. #include <stdio.h> int main() { char * a; int * b; long int * c; char d; int e; long int f; printf("la variable a ocupa %d bytes en memoria\n",sizeof a); printf("la variable b ocupa %d bytes en memoria\n",sizeof b); printf("la variable c ocupa %d bytes en memoria\n",sizeof c); printf("la variable d ocupa %d bytes en memoria\n",sizeof d); printf("la variable e ocupa %d bytes en memoria\n",sizeof e); printf("la variable f ocupa %d bytes en memoria\n",sizeof f); getchar(); }

El resultado es:

Tcnico Universitario en Informtica

Pgina 44

Programacin I
Como puede ver el tamao de las 3 primeras variables puntero son de 4 bytes, en todo los casos, independientemente del tipo de las mismas. Por otro lado, el tamao de las variables no puntero si varan

Tcnico Universitario en Informtica

Pgina 45

Vous aimerez peut-être aussi