Sie sind auf Seite 1von 21

Aclaraciones de la Editorial (XD)

Primero y antes que nada quiero agradecer a todas las personas que estan ayudando a realizar este curso ayudando a transcribir y/o que contribuyen con sus ideas, gracias Alfredo, a las que tambien contribuyeron con sus iniciativas, Gracias a Marell y al profe Ricardo Zetina que en realidad no ha hecho mucho pero de igual manera le agradecemos. A lo largo de estos apuntes notaran muchos errores ortograficos (mi fuerte no es la gramatica) por lo que pido diculpas, ya corregiremos todos estos errores para al final juntar todos los apuntes en uno solo, algo asi como una especie de version final, asi que por el momento intenten comprender. Tambien debo recalcar que los codigos que se muestran estan coloreados de acuerdo al formato que me da el IDE que yo utilizo en linux (EID Anjuta) y como no he encontrado algun IDE en el que pueda copiar y pegar con todo y colores pues los tengo que colorear yo, esto lo digo por si de repente se me pasa algo, si alguien sabe de alguna forma o algun IDE para copiar y pegar con todo y colores por favor avisenme (Pero por favor que no me digan que con el visual estudio, ya se que este nos permite hacerlo pero para esta parte del curso CONTENIDO Comenzando a programar en C Estructura de un programa y sus elementos Tipos de datos Variables y constantes Entrada y Salida de datos no voy a utilizarlo, de por si ya es demasiado dedicarle una parte completa) Otra cosa importante a considerar es que de ultimo momento me di cuenta de que el hacer un curso de este tipo el cual sera mas del tipo practico requiere ejercicios mas interesantes por lo que he decidido que en los mismos apuntes se incluiran algunas practicas que intentaran que las personas no pierdan el interes en el curso, para dicho fin se reservara una seccin especialmente dedicada para las practicas, es decir, primero se presentara el curso y al fin aadiremos un espacio extra para las practicas. Las practicas estaran enumeradas y por lo regular exigiran mas conocimientos que los que se estaran presentando en el curso asi que tratare de explicarlas desde un nivel basico pero aun asi se indicaran los conocimientos previos que se deben de tener en cada practica. Por ultimo, y para no aburrir mas, el tratar de hacer el curso lo mas practico posible es unicamente para que todo se comprenda de la mejor manera y asi se pueda practicar mas, el curso por si solo no garantiza que al concluir los lectores se conviertan en programadores expertos, la practica es lo que producira eso, por lo tanto recomiendo encarecidamente que se practique lo mas posible.

Curso C-r m3j0r pr0gr4m4nd0


El presente curso de programacin esta dirigido hacia los alumnos del Intituto Tecnolgico Superior de Irapuato (ITESI) extensin Tarimoro que desean y/o necesitan aprender a programar. Primero que nada debo aclarar que el curso ser dividido en 2 partes: *El lenguaje C (Antiguo pero poderoso) En esta parte del curso se vern nicamente todo aquello relacionado con la programacin estructurada. Esta es la parte ms importante del curso, ya que aqu deben de quedar muy claros los conceptos fundamentales de la programacin y es necesario comprenda al 100 % la metodologa y la lgica que se utiliza para programar. *Visual C#.Net (Es de Microsoft pero ya que!) Esta es la segunda parte del curso y en esta ya se utilizaran las herramientas que nos presenta el Visual Studio (2008 o 2010). Esta parte del curso viene a completar la primera parte del curso y teniendo en cuenta que el alumno ya tiene los conocimientos que ofreci la primera parte del curso, en esta segunda etapa se llevaran a cabo las prcticas de programacin ms avanzada. Nota: Se planea tener un2 curso en el que se llevaran a cabo practicas de programacin de nivel ms elevado y para el cual se tendr que tener todos los conocimientos del presente curso. (Pero no aseguro nada) Introduccin Antes de decir cualquier otra cosa quiero aclarar que esta parte del curso est basada en el libro Programacin en C, Metodologa, algoritmos y estructura de datos y tambin tiene como principal fuente de informacin este mismo libro (esto es para que no me vaya a arrestar el FBI por plagio XD), ademas tambien se tienen otras fuentes de informacin importantes como por ejemplo el libro Algoritmica y programacin para ingenieros, y agunos otros libros de programacin que de momento no recuerdo. Lo anterior lo comento por si alguien desea profundizar un poco mas en los temas del curso. Entonces comencemos con la primera parte del curso. Por qu en C? Las razones para hacer un curso en C y no en algn otro lenguaje son muy sencillas. 1) A pesar de que muchas personas piensen que el lenguaje C es viejo, anticuado y pasado de moda, la verdad es que esto es completamente falso, ya que, como el ttulo de esta primera parte lo dice, el lenguaje C es muy buen lenguaje de alta nivel, demasiado flexible y poderoso con el cual podemos realizar cualquier tipo de programa. 2) Aquel programador no se puede hacer llamar programador en realidad, si no conoce este lenguaje. 3) Despus de aprender a programar en C, el estudiante podr programar en cualquier otro lenguaje.

El origen y el pasado de C C es una evolucin del lenguaje BCPL (Desarrollado por Martin Richards) y el lenguaje B (desarrollado por Ken Thompson en 1970) para UNIX. El lenguaje C nace en 1978 y desde entonces fue en ascenso hasta que en 1983 el ANSI (American National Standar Institute) cre un comit para asegurar que los fabricantes de software que desarrollaban compiladores para ANSI C incorporara todas las funciones del lenguaje especificadas por un estndar. Hoy en da el C sigue siendo muy utilizado en la programacin y lo encontramos en cualquier plataforma (UNIX y sus derivados (BSD, Linux etc), Windows, Mac Os, etc.). Lo que sigue a continuacion es lo que se podria llamar la primera unidad del curso y tal vez esta y la segunda sean las mas aburridas y teoricas pero prometo que en la tercera ya habra mas accion.

Comenzando a Programar en C
Como ya mencione, este curso ser ms del tipo prctico por lo que desde un principio comenzaremos programando y estos primeros captulos que exigen teora tratare de ser lo ms breve, al fin que lo que se tiene que aprender en estos captulos quedara muy claro en los siguientes. Recomiendo instalar el IDE de su preferencia durante el presente curso yo utilizar el Anjuta en Linux y el Dev C++ para Windows aunque la mayora de las impresiones de pantalla sern del Anjunta. Pues manos a la obra.

Estructura de un Programa en C y sus elementos


En lo general cuando nos encontramos con un programa en C su aspecto suele ser el siguiente: #include <stdio.h> int main() { printf(Hola Mundo); return(0); } #include <stdio.h> int main() { printf(Hola Mundo); return(0); }

Como podemos ver hay unas pequeas diferencias en cuanto a sintaxis estos dos codigos hacen exactamente la misma cosa y eso depende mas del IDE que utilizamos. IDE es un entorno de desarrollo integrado y viene de sus siglas en ingles (Integrated Develop Enterpreise) y es el entorno que utilizamos para programar, compilar, ejecutar y generar nuestros programas aunque a falta de un ide podremos siempre programar en el bloc de notas, recuerda que el mejor amigo de un programador es el bloc de notas. Algunos ejemplos de IDEs son el visual studio, netbeans, eclipse, anjuta, dev c++ etc. Las diferencias que se ven en los codigos unicamente es el codigo que nos genera el IDE asi que eso no tuiene mucha relevancia. Ahora analizaremos un cdigo ms extenso para poder describir las partes del programa.

#include <stdio.h> Directivas del procesador # define PI 3.1416 Macros del procesador int r, b=0; Declaraciones globales float Area (int r) { return PI * (r*r); Funciones } int main () Funcin principal { int i,j; Declaraciones locales printf(Cuantas areas desea calcular\n); scanf(%d,&j)i for (i=1;i<=j;i++) { printf (\nEscribe el radio\n); Sentencias scanf(%d,&r); printf(\nEl area es igual a %f\n\n,Area(r)); } return (0); } Las directivas del preprocesador son instrucciones al compilador antes de que compile, en la mayora de los casos se usan para aadir archivos de cabecera aunque tambin se pueden definir macros del procesador (como se ve en el ejemplo). Veamos el diagrama para un mejor entendimiento.
Compilador Codigo Fuente Codigo Fuente Bibliotecas Linker Codigo Fuente

Archivo Cabecera

Etapas de la creacin de un programa


Entonces vamos por partes para comprender mejor. Como ya dijimos en un principio, el lenguaje C es un lenguaje de alto nivel. Seguimos sin entender?, dentro de la programacin hay tres tipos de lenguajes que son: Lenguajes de alto nivel Lenguajes de bajo nivel Lenguaje mquina El lenguaje de alto nivel es aquel que se parece ms a nuestro lenguaje, por ejemplo miremos algunas instrucciones en otros lenguajes. if (condicion) If condicion Then if condicion; sentencia; sentencia sentencia End If Java, c++, c#, c Visual basic Python

Como podemos ver estas sentencias son de los ms parecido a como nosotros las usamos en la vida cotidiana. El lenguaje de bajo nivel es ms parecido al lenguaje mquina aunque aun es entendible por los humanos y es mejor conocido como lenguaje ensamblador. Por ltimo tenemos el lenguaje maquina que como ya sabemos se compone de ceros y unos y aun en este lenguaje hay personas que son capaces de comprenderlo. Para hacer este curso un poco ms entretenido ms adelante realizaremos un pequea prctica para conocer un poco ms sobre esta clasificacin del lenguaje y sobre todo el lenguaje ensamblador. Pero que el curso no se trata sobre el lenguaje C?

Pues si pero tambin se trata de aprender a programar y que todo quede de lo ms claro posible. Retroalimentando las etapas de creacin de un programa, podemos ver como primer paso el cdigo fuente. Pero no hace falta decir que la mquina es incapaz de ejecutar ese cdigo fuente y es por eso que necesita traducirlo a lenguaje mquina, pero antes de traducirlo el compilador lee las directivas para saber si utilizaremos algn archivo ajeno a nuestro programa o definiremos algn macro. Otra vez con malos entendidos! En primera, Cmo que otra vez utilizaremos archivos ajenos a nuestro programa? Y en segunda Qu es eso de macros?

Pues es fcil, sera un trabajo demasiado pesado si nosotros tuviramos que programar funciones para imprimir y pedir datos, como eso ya est programado nosotros nada mas indicamos por medio de las directivas que usaremos esas libreras, y por si te lo preguntabas, tambin podemos crear nuestras propias libreras e indicar que usaremos esas por medio de la sintaxis: #include ruta de la librera.h por ejemplo #include C:\Documents and settings\Administrador\Areas.h (en Windows) #include \home\user\Documentos\Areas.h (en Linux) En cuanto a las macros no se refiere a otra cosas ms que la indicacin al procesador, como por ejemplo podemos declarar una constante volatile y no es mas que una orden de sustituir cierto identificador por un valor. Por ejemplo: Siempre que nuestro programa aparezca el identificador PI el procesador ya sabe que eso debe de sustituirse por 3.1416. #define PI 3.1416 Una vez que ya el programa se compilo sin errores, el nico paso a seguir es montarlo en el sistema y obtenemos al fin nuestro programa ejecutable. Pues bien, sigo confundido. que es eso de montarlo en el sistema?

El proceso de montaje est a cargo del linker y lo que hace es conectar nuestro programa con las libreras para que este se pueda ejecutar en el sistema operativo.

Pero no se supone que eso ya lo habamos hecho, lo de incluir las libreras.

Pues mas exactamente lo que habamos dicho mediante las directivas era que librerias necesitamos usar, pero necesitbamos que estas se incluyan en nuestro programa para que este funcione correctamente. Vemoslo as. Te encuentras con tu novio(a) y este(a) come compulsivamente, entonces te dice que tiene antojo de pastel y te pide que le compres una rebanada (aunque tal vez en realidad te pida dos o ms), as que con lo obediente que eres tu (por no decir mandiln(a)) vas y llegas a la pastelera y de entre todos los pasteles le dices al encargado que solo quieres una rebanada (o medio pastel, como sea) el seguramente te preguntar qu de que sabor lo quieres y entonces tu le contestas que un envinado (ya que tu pareja a parte de comer, seguramente bebe como si el mundo estuviera por terminarse). Hasta este punto tu ya le hiciste el pedido al encargado de atender, es decir, le diste tus directivas, pero que pasara si el encargado solo se quedase parado vindote aun despus de saber lo que t quieres, pues seguramente tu novio(a) te dejara por no ser capaz de satisfacer sus antojos. Entonces es necesario que aun despus de dar las directivas el linker monte el programa, que es lo que equivale a que el encargado de la pastelera tome un pastel lo parta por la mitad y te lo envuelva como regalo para tu pareja. Continuando con la estructura de un programa en C encontramos algunas declaraciones globales, es decir, variables que tendremos disponibles durante todo nuestro programa. El tiempo de vida de las variables se explicar ms a fondo en la parte de las variables. Seguimos con con el programa y vemos la funcin prinipal, esta ser la parte ms importante de nuestro programa y desde la cual estaremos trabajando, llamando a otras funciones, etc. Por ltimo tenemos ms declaracin de funciones en donde podemos declarar todas las funciones que lleguemos a necesitar y las cuales las podemos invocar desde la funcin principal del programa. En estas parte del programa como pudieron apreciar no profundice tanto, ya que esto quedar mejor comprendido en la prctica. Ya casi comenzaremos a programar, tan solo necesitamos tener claros algunos conceptos ms. Algoritmo Como muchos ya sabrn, un algoritmo es una serie de pasos para llegar a la solucin de un problema. Este adems debe poseer dos caractersticas importantes: Debe de ser preciso. Debe de ser finito. Y tambin hay algunas maneras de representar un algoritmo (nosotros utilizaremos el diagrama de flujo). Tampoco profundizare en el algoritmo, ya que todo debe de quedar ms claro al hacer ejemplos.

Tipo de Datos
(Esto lo comenzaremos con una suposicin) Supongamos que somos millonarios (del estilo de Vergara o alguno de esos), tenemos el suficiente dinero para construir un estadio de futbol y comprar los jugadores para armar un equipo y adems para festejar vamos a contratar una banda para que toque en la inauguracin. Ahora lo importante es qu jugadores debemos comprar? y que msicos debemos contratar?. Pues bien supongamos que somos mas millonarios que Vergara y solo queremos presumir nuestro dinero y as quedar nuestro equipo. Equipo

Ahora ya tenemos a nuestros 11 jugadores y algunos para la banca, y tal vez ya se habrn dado cuenta de que este equipo est conformado por los que son o fueron de los mejores jugadores del mundo (A exepcion del chicharito y el cubo torres que no se ni por que los puse, tal vez nadamas para echarme la botana), y ademas todos son delanteros as que este equipo fue diseado para atacar (al fin que la mejor defensa es el ataque) asi que usaremos la siguiente formacin 1-4-5 (sea 1 defensa 4 medios 5 delanteros) y nuestro ataque quedar al mximo, lo que provocara una victoria segura (que disculpen las personas que saben de futbol por las tonteras que estoy diciendo). Pues la realidad seria lo contrario a lo que acabo de decir (quien cuente con un play station y un juego de FIFA puede hacer la prueba haber que tal), un equipo tal como lo acabo de describir seguramente ser un desastre, ahora si a eso le aadimos que en la inauguracin de nuestro estadio contratamos a la arrolladora, imagnense la clase de pena ajena que causariamos (algo peor que la programacin de Televisa y Tv Azteca juntas). Pues lo mismo pasa en la programacin, as como para el futbol, se necesitan jugadores con habilidades diferentes para cada posicin de juego, nosotros necesitaremos determinado tipo para almacenar los datos que usamos. Un error clsico de los programadores es que no toman en cuenta el tipo de datos que necesitan. Por ejemplo si en un futuro nos contrata la camara de diputados y senadores para realizar un software para control de personal y necesitamos declarar una variable que guardara las horas que trabaja un diputado (o un senador al fin que estan cortados por la misma tijera), claro que no la declararemos de tipo long, es mas ni de tipo int ya que con una variable de tipo short es suficiente y hasta nos sobra, inclusive ni necesitariamos declarar una variable para eso, ya se sabe que ni trabajan, pero despues de eso necesitamos declarar una

variable para almacenar el sueldo que reciben y ahi si necesitamos algo de espacio asi que en caso de que no se alcance con ninguna de las anteriores te invito a que investigues si hay mas tipos de datos en C. Tipo short char int long float double void Tamao 1 byte 1 byte 2 bytes 4 bytes 4 bytes 8 bytes 0 Rango -128 a 127 -128 a 127 -32768 a 32767 -2147483648 a 2147483648 3.4E-38 a 3.4E+38 1.7E-308 a 1.7E+308 Sin valores Ejemplo 0 'p' 1024 100,000 4.5 68.6 Sin valores

Variables y constantes
Para entender mejor el termino de variable y constante veamos como se almacenan los datos en nuestro ordenador. Supongamos que hoy es dia de tu cumpleaos numero 18 (20,30,40 o lo que sea es lo mismo) y como ya es tradicion tus padres te hicieron una fiesta en la que tus familiares y amigos te llenaron una mesa de regalo (ya dije al principio que solo es una supocicion, obviamente esto nunca pasa). Pues la mesa de regalos es la memoria del ordenador y cada regalo equivale a una direccion. Como siempre sucede habra regalos mas grandes y mas pequeos (aunque por lo regular son mas pequeos todos), entonces para cada regalo se debe de asignar cierto espacio en la mesa para que este pueda caber, pues los progamadores usan el tipo de datos para designar el espacio en memoria ya que cada tipo reserva un espacio dependiendo de su tamao y es por eso que en la tabla de tipo de datos se incluyo el tamao. Siguiendo con el ejemplo de los regalos, seguramente pasa que tu familia (padres, tios, abuelos) ao tras ao te han estado regalando exactamente lo mismo y peor aun, te regalan juguetes para nios de 6 aos, soldaditos de plastico y carritos de carreras (en el caso de los hombres) o un juego de te y la nueva barbie (en el caso de las mujeres, y uno que otro hombre) por lo que sabes que contienen los regalos desde antes de abrirlos debido a que nunca cambian, es decir, son constantes. Los regalos de tus amigos en cambio han sido diferentes ao tras ao por lo que no sabes que te regalaran basado en lo que te han regalado los aos pasaos ya que pueden cambiar, es decir, son variables. Pues en la memoria de nustro ordenador hay una serie de direcciones en las que podemos almacenar datos y tan solo hay que definir si los valores que almacenaremos pueden cambiar o siempre seran los mismos. En caso de que los valores puedan cambiar los declararemos como variables y en caso de que el valor no cambie nunca lo declaramos como constante.

Variables
Una variable es una direccion dentro de la memoria que posee un tamao asignado y la cual puede cambiar el valor que almacena. Tipo = int Nombre = n Que es una variable? Valor = 4 Tamao = 2 bytes Direccin = 0x04782h Como podemos ver una variable posee varias propiedades asi como en nuestro ejemplo un regalo tambien puede ser mas grande que otro, mas o menos caro, el papel en que lo envuelven tambien es diferente etc. Para decrarar una variable utilizamos la siguiente sintaxis tipo_de_dato nombre_de_la_variable; por ejemplo: int a; vease que en nombre de la variable uso el guion bajo y esto es para expresar que el nombre de una variable debe ser unicamente de una palabra, en caso de querer poner dos se deberan de escribir juntas o usar el guion. Por ejemplo esto no es valido Asi que lo escribiriamos asi: int sueldo empleado; int sueldo_empleado; Pero en la declaracion de una variable tambien podemos asignar el valor. tipo nombre_variable = valor_variable; por ejemplo: int a = 5; y podemos declarar varias variables en una sola linea. Int a, b, c = 2, d = 0, e; char f= 'f', g, h = 'g';
Tiempo de vida de las variables.

Al declarar una variable debemos tambien tener en cuenta en donde las declaramos ya que estan tienen algo asi como un tiempo de vida (El termino correcto es ambito de las variables). El tiempo de vida de una variable depende del lugar en donde la declaremos, por ejemplo todos sabemos que la mayoria de las carreras se compone de 9 semestres, esos nueve semestres lo podemos considerar como bloques, y a su ves dentro de cada semestre existen parciales, lo que vienen a ser bloques dentro de mas bloques o sub-bloques, como tal vez hemos visto la mayoria de los estudiantes, hay ocaciones en las que debido a diferentes situaciones reprobamos una materia en el primer parcial pero tal manera que ya no pasamos ni obteniendo una calificacion perfecta (es decir 100 de 100) en los demas parciales, por tanto podemos decir que se acabo nuestro tiempo de vida en esa materia, en cambio hay ocaciones en las que se soborna a un profe para que nos apruebe en una materia (Claro que tal cosa no pasa en el ITESI) asi que en esa ocacion el tiempo de vida nos dura todo un semestre, pero tambien en otras ocaciones pasa que un profe tiene a algun consentido, aquel al que lo pasa aunque nunca se presente a clase y solo llega a los examenes y ni siquiera los pasa, y esto es lo mismo durante toda la carrera, este seria un buen ejemplo de variable global. Tal vez este no sea el mejor ejemplo para explicar el tiempo de vida de las variables pero no se me ocurria otra cosa, bueno lo importante es que quede claro que el tiempo de vida de la variable y su disponibilidad depende del bloque donde se encuentre, al terminar el bloque la variabe se destruye y ya no se puede utilizar, y por si te preguntas como podemos identificar los bloques pues estos se definen con las llaves { y }.

#include <stdio.h> int a, b, c; /* Este es un ejemplo de variables globales, estas las tendremos disponibles durante todo el programa */ int main() { // Inicia bloque rosa (Este es toda nuestra funcion principal) int d, e, f; // Variables disponibles durante todo el bloque de este color { // Inicia bloque celeste int g, h, i; // Variables disponibles durante todo el bloque de este color { // Inicia bloque amarillo int j, k, l; //Variables disponibles durante todo el bloque de este color } // Termina bloque amarillo y se destruyen sus variables int m, n, o; // Variables disponibles durante todo el bloque de este color } // Termina bloque celeste y se destrullen sus variables } // Termina bloque rasa y se destruyen sus variables Aclaro que los colores del programa anterior solo los utilice para que quedara mas claro cuando inicia un bloque y donde termina y que variables estaran diponibles, por ejemplo en el bloque amarillo tenemos disponibles todas las variables del programa ya que es el bloque mas interno, en el bloque azul las unicas variables de las que no podemos disponer son las amarillas, en el bloque rosa no existen las variables azules y las amarillas y asi sucesivamente. Yo recomiendo utilizar la tabulacion para no perdernos entre los bloques ya que habra programas en los que utilizaremos muchos bloques. Notas: Para evitar cometer errores de ambito garrafal recuerdasiempre terminar con punto y coma cada instruccin. En el lenguaje C el termino de una sentencia se define con el ; (Punto y coma) y debido a eso es posible declarar variables como en el ejemplo anterior. Antes de declara una variable recuerda uqe debes de tener en cuanta que datos guardaras y el rango de valores que tomaran para evitar desperdiciar espacio en la memoria o el caso contrario, que el espacio reservado en la memoria no sea el suficiente, esto puede provocar errores en tiempo de ejeccucin, recuerda el ejemplo de la camara de diputados y senadores .

Constantes
Una constante al igual qu8e una variable tambien es una determinada pocision en la memoria con un nombre, solo que en esta no se puede modificar el valor que almacenan, es decir, una vez que se declara y se asigna el valor lo conservara todo el tiempo. Dentro de nuestra vida cotidiana tambien usamos variables a diario, el PI, la gravedad, y anteriormete las personas que se casaban tenian como constante a su pareja pero este ya no seria un buen ejemplo de constante. Para declarar una constante se utiliza la siguiente sintaxis: const tipo_constante nombre_constante = valor_constante; ejemplo: const int a = 1; o para declararla de tipo int tambien es valido solo const nombre_constante = valor_constante; ejemplo: const a = 1; En cuanto al tiempo de vida de las constantes pasa exactamente lo mismo que con las variables.

Entrada y Salida de Datos


Creo que el entender la entrada y salida de datos no representa ningun problema, nos sirven para introducir datos por el teclado (Entrada) y para imprimirlos en la pantalla (Salida). Lo interesante es saber como guardamos una variable y como la imprimimos, para dicha tarea tenemos dos funciones principales: printf y scanf, dichas funciones se encuentran en la libreria stdio.h que es la libreri que siempre usamos, recuerdo que en el CBTis la llamabamos la libreria estadio.h, la realidad es que son las siglas, contraccion o acronimo de standard input/output. La sintaxis que utilizamos para imprimir es la siguiente: printf(Mensaje que queremos imprimir); printf(Hola Mundo); Si queremos imprimir el valor almacenado en una variable: printf(%formato_var1 Mensaje %formato_var2, nom_var1, nom_var2); printf(%d Hola Mundo %d, a, b); El orden en el que aparecen las variables al imprimirlas depende de como las acomodemos despues de las comillas. Para guardar un dato en una variable es: scanf(formato,&nombre_variable); scanf(%d,&a); Recuerden bien la sintaxis de estas instrucciones en especial del scanf es importante poner el caracter & ya que si no lo ponemos el programa se ejecutara de todas maneras ya que tambien se pueden guardar variables sin el pero mejor ponerlo para no entrar en conflictos (En los ejemplos se vera como se usa el scanf sin el &). Ahora escribamos nuestros primeros programas: #include <stdio.h> int main() { printf(Hola Mundo); return(0); } #include <stdio.h> int main() { int a, b, c; printf(Escriba un numero\n); scanf(%d,&a); printf(Escriba un numero\n); scanf(%d,&b); c = a+b; printf(La Suma es %d\n,c); return(0); }

Codigos de formatos %d El dato se convierte a entero decimal. %o %x %u %c %e %f %g %s %If El dato entero se convierte a octal. El dato entero se convierte a hexadecimal. El dato entero se convierte a entero sin signo. El dato se considera de tipo carcter. El dato se considera de tipo f 1oat. Se convierte a notacin cientfica, de la forma (-}n.mmmmmmE(+I-}dd. El dato se considera de tipo float.Se convierte a notacin decimal, con parte entera y los dgitos de precisin. El dato se considera de tipo float. Se convierte segn el cdigo %e o % f dependiendo de cual sea la representacin ms corta. El dato ha de ser una cadena de caracteres. El dato se considera de tipo double.

Tabla de secuencia de escapes. \a Alarma \b \f \n \r \t \v \\ \? \ \000 \xhh \0 Retroceso Avance de pagina Retorno de carro y avance de linea Retorno de carro Tabulacion Tabulacion vertical Barra inclinada Signo de interrogacion Dobles comillas Numero octal Numero hexadecimal Cero

Como vimos en las tablas anteriores hay muchor formatos para imprimir y guardar un dato, asi que en el salon de clase me preguntaron que cuando utilizariamos un determinado formato como por ejemplo el %o, fue bueno plantear esta cuestion para ver la gran ventaja y simplicidad que nos proporcionan estos formatos, Imaginemos que en clase un profesor nos encarga que como tarea realicemos un programa en c que convierta un numero decimal a octal.

Segun como yo lo veo tenemos dos maneras de hacer este programa: 1. (En esta solucion empleare algunas cosas que tal ves sean desconocidas para algunos) Como sabemos el lenguaje decimal es el que nosostros utilizamos mas comunmente en nuestra vida cotidiana y consta de 10 digitos (0,1,2,3,4,5,6,7,8,9) a partir de los cuales podemos expresar cualquier cantidad que deseemos, el codigo octal consta unicamente de 8 (0,1,2,3,4,5,6,7) y tambien puede expresar cualquier cantidad apartir de esos numeros, pero esta no es una clase de sistemas numericos asi que vayamos a lo que nos interesa. Para convertir un numero decimal a octal de la manera mas simple es dividir el numero entre 8 mientras que este sea mayor o igual a 8 y se va guardando el residuo, al final cuando la divicion nos da un numero menor que 8 tan solo ponemos ese numero y despues agregamos a la derecha todos los residuos en orden: Por ejemplo vamos a convertir el 4531. 1 566 8 70 Hacemos todas las diviciones del numero 8 8 8 4531 8 70 8 566 entre 8 y ahora ya solo juntamos los 0 53 6 0 residuos de izquierda a derecha 6 51 comenzando con el resultado de la ultima 3 divicion. = 1 0 6 6 3 en base Octal Esto que acabamos de acer es un algoritmo y hay varias formas de programarlo aunque la mas corta es utilizando recursividad y por eso lo haremos asi. 2. La segunda manera de hacer el programa es simplemente imprimir el numero con el formato de octal y ya! ======================================================== #include <stdio.h> int main() Este es el codigo de la primera { forma de hacer la tarea, tal vez int a; muchos no lo comprendan pero printf("Escriba un Numero\n"); ya lo comprenderan, no lo scanf("%d",&a); explicare ya que me tomaria printf("Decimal = %d - Octal = %d", a, Octal(a)); mucho tiempo y de por si ya me return (0); tarde 1 hr. quebrandome la } cabeza para programarlo, int Octal (int n) ademas tendriamos que tomar { temas que veremos if (n < 8) posteriormente, si no lo return n; entienden no se preocupen la else idea es compararlo en base a return Octal(n/8)*10+(n%8); nuestro segundo programa. } ======================================================== #include <stdio.h> int main() Este es el codigo de la segunda { forma de hacer la tarea, como int a; ven, es muy util tener estos printf("Escriba un Numero\n"); formatos, ahora solo tienes que scanf("%d",&a); decidir si te la llevas suave o te printf("Decimal = %d - Octal = %o", a, a); quemas las neuronas un rato. return (0); }

Recomiendo que escribas ambos programas en tu IDE, para que comprueves que funcionan. Ahora y ya casi para finalizar hagamos algunos ejercicios mas #include <stdio.h> int main() { char c = 'c'; printf("%d", c); return (0); } #include <stdio.h> int main() { int a = 'c'; char c = 'c'; printf("%d %d", a, c); printf("%c %c", a, c); return (0); }

Como podemos ver en estos ejemplos, al declarar una variable de tipo char la podemos umprimir con formato de entero y cyabdo declaramos una variable de tipo int la podemos imprimir como caracter. #include <stdio.h> int main() { char c; int a = 'a' - 'A'; printf("Escriba una letra minuscula\n"); scanf("%c",&c); printf("%c = %c", c, c-a); return (0); }

Este es el codigo nos pide en pantalla que ingrecemos una letra minuscula y despues nos imprime la letra en minuscula y en mayuscula.

Que es lo que pasa en los programas anteriores?

Pues cuando declaramos una variable de tipo char ya sabemos que almacena un valor de -128 a 127 y cuando le damos formato de %c se consulta en la tabla ascii para saber el caracter que le corresponde al valor almacenado, entonces asi como podemos imprimir una variable de tipo char con el %c, tambien la podemos imprimir con el %d, y lo mismo pasa con las variables de tipo int, las podemos imprimir en ambos formatos. El codigo del tercer programa declaramos una variable a = 'a' - 'A' y en realidad lo que estamos haciendo es una resta, la letra 'a' ocupa el numero 97 en el codigo ascii y la letra 'A' el 65, entonces unicamente hacemos la diferencia que nos da como resultado 32, entonces al ingresar una letra minuscula, 'h' por ejemplo con el valor 104, solo restamos 32 a esa cantidad y nos devuelve 72 lo que es equivalente a H en el codigo ascii, eso es todo lo que hace el programa Algo simple no?.

Comentarios en el codigo
Por ultimo solo queda por decir como comentamos el codigo. Hay dos maneras de hacer un comentario en el lenguaje C, la primera es para comentar una linea entera y es con los caracteres //, y la segunda es para comentar un indefinido numero de lineas , el comentario se inicia con /* y se termina con */ // Esto es un comentario de una sola linea /*Este es un comentario de varias lineas*/ En esta ocacion fue mas lo teorico que lo practico pero habia que tener claros algunos de los conceptos fundamentales mas importantes. Eso es todo en esta entrega del curso, ahora solo se anexaran algunos ejemplos y una serie de ejerccios propuestos para que practiques.

Ejemplos
(Copia, pega, compila, ejecuta y analiza los resultados)
1. #include <stdio.h>

int main() { // Podemos dejar un espacio antes de imprimir una cadena como vemos en %12s char s[] = Juan Antonio; printf("%12s\n%s\n%s", &s[5], &s[5], s); return (0); } // y para cortar una cadena, &nom_var[cantidad de caracteres a quitar] Salida: -----------------------------------------------------------------------------------------------------------------Antonio Antonio Juan Antonio ------------------------------------------------------------------------------------------------------------------2. #include <stdio.h> int main() { // Este programa nos muestra una manera extraa de imprimir con %.4f int n = 20; const float pi = 3.141592654; char s = 'X'; printf("n = %x\tpi = %.4f\ts = %o",n,pi,s); return (0); } // el %.4f nos redondea un numero para mostrar solo x decimales Salida: -----------------------------------------------------------------------------------------------------------------n = 14 pi = 3.1416 s = 130 ------------------------------------------------------------------------------------------------------------------3. #include <stdio.h> int main() { // Programa nos imprime dos cadenas, una es s y la declaramos como char array char s[] = "Este es un test"; printf("%s %s",s,"para imprimir una cadena"); return (0); } // La otra cadena se la asignamos en el mismo printf Salida: -----------------------------------------------------------------------------------------------------------------Este es un test para imprimir una cadena -------------------------------------------------------------------------------------------------------------------

4. #include <stdio.h>

int main() { // Programa para pedir dos datos con un solo scanf int n; char c; printf("Ingresa un numero "); printf("seguido de una letra\n"); scanf("%d %c", &n, &c); printf("El numero es %d ",n); printf("y la letra es %c",c); return (0); } Salida: ------------------------------------------------------------------------------------------------------------------Ingresa un numero seguido de una letra 4c El numero es 4 y la letra es c ------------------------------------------------------------------------------------------------------------------5. #include <stdio.h> int main() { // Otra forma de imprimir cadenas es con puts char nombre[30], apeido[30]; char q1[] = "Cual es su nombre?"; puts(q1); gets(nombre); char q2[] = "Cual es su apeido?"; puts(q2); gets(apeido); printf("Gracias por coperar %s %s",nombre,apeido); return (0); } // y con gets podemos introducir y guardar una cadena, Salida: -----------------------------------------------------------------------------------------------------------------Cual es su nombre? Tony Cual es su apeido? Garca Gracias por coperar Tony Garca ------------------------------------------------------------------------------------------------------------------6. #include <stdio.h> int main() { // Con puts tambien podemos cortar cadenas al escribirlas char pax[] = "Juan Sin Miedo"; printf("%s\n",pax); puts(&pax[4]); return (0); } Salida: -----------------------------------------------------------------------------------------------------------------Juan Sin Miedo Sin Miedo -------------------------------------------------------------------------------------------------------------------

7. #include <stdio.h>

int main() { //y este programa nada mas para jugar con el printf printf("*************************\n"); printf("*\t\t\t*\n*\t\t\t*\n"); printf("*\t\t\t*\n*\t\t\t*\n"); printf("*************************\n"); } Salida:

8. #include <stdio.h>

int main() { // Un ejemplo de scanf sin el & char nombre[20]; printf("Escribe tu nombre con apeidos\n"); scanf("%s", nombre); printf("Tu nombre es: %s",nombre); return (0); } Salida: -----------------------------------------------------------------------------------------------------------------Escribe tu nombre con apeidos Antonio Garca Arteaga Tu nombre es: Antonio ------------------------------------------------------------------------------------------------------------------9. #include <stdio.h> #define DECADA 10 int main() { // Este programa calcula el total de decadas que ha vivido una persona int edad; printf("Si no es indiscrecin, Cual es tu edad?\n"); scanf("%d",&edad); printf("Tu has vivido %d decadas,edad/DECADA); return (0); } // para definir la longitud de una decada usamos una constante volatile Salida: -----------------------------------------------------------------------------------------------------------------Si no es indiscrecin Cual es tu edad 22 Tu has vivido 2 decadas ------------------------------------------------------------------------------------------------------------------

10. #include <stdio.h>

int main() { // Otro programa para jugar con el printf char hl = '_', vl = '|',esp = ' '; printf("%c%c%c%c%c%c%c%c%c\n",hl,hl,hl,hl,hl,hl,hl,hl, hl); printf ("%c%c%c%c%c%c%c%c%c\n",vl,esp,esp,esp,vl,esp,esp,esp,vl); //printf ("%c%c%c%c%c%c%c%c%c\n",vl,esp,esp,esp,vl,esp,esp,esp,vl); printf ("%c%c%c%c%c%c%c%c%c\n",vl,esp,esp,esp,vl,esp,esp,esp,vl); printf("%c%c%c%c%c%c%c%c%c\n",vl,hl,hl,hl,vl,hl,hl,hl, vl); printf ("%c%c%c%c%c%c%c%c%c\n",vl,esp,esp,esp,vl,esp,esp,esp,vl); printf ("%c%c%c%c%c%c%c%c%c\n",vl,esp,esp,esp,vl,esp,esp,esp,vl); printf("%c%c%c%c%c%c%c%c%c\n",vl,hl,hl,hl,vl,hl,hl,hl, vl); return (0); } // La salida del programa semeja a una ventana de 2*2 Salida:

Ejercicios Propuestos
1. Crea un programa que imprima lo siguiente en pantalla:

2. Codifica un programa que te pida tu nombre con apeidos y despues los separe para que la salida sea la siguiente:

-----------------------------------------------------------------------------------------------------------------Escribe tu nombre con apeidos Antonio Garca Arteaga Tu nombre es: Antonio Tu primer apeido es: Garca Tu segundo apeido es: Arteaga -----------------------------------------------------------------------------------------------------------------3. Escribe el siguiente programa, corrigelo y haz que funcione correctamente:

#include <stdio.h> void main() { int x,y; printf("Escribe dos numeros\n"); scanf("%d%d",&x,y); printf("La Suma de esos dos numeros es %d\n",x+y); return (0); } 4. En el ejemplo 10 dijimos que la ventana que nos muestra en la salida es de 2*2, modifica el programa de tal manera que se muestre una ventana de 4*3. 5. Escribe un programa para pedir una letra y que te devuelva su valor ascii.

Autor: Juan Antonio Garca Arteaga

Das könnte Ihnen auch gefallen