Download - lenguaje-c.pdf

Transcript
  • Fundacin Misin Sucre

    Colegio Universitario de Caracas

    Repblica Bolivariana de Venezuela Ministerio de Educacin Superior Colegio Universitario de Caracas

    Fundacin Misin Sucre

    Programa Nacional de Formacin

    en Sistemas e Informtica

    Introduccin a la Programacin

    Caracas - Venezuela 2007

  • 2

    Repblica Bolivariana de Venezuela Ministerio de Educacin Superior Colegio Universitario de Caracas

    Fundacin Misin Sucre

    *

    Elaborado por:

    Prof. Arrechedera Yoly Prof. Prez Martha

    Septiembre 2007

    * Todos los enlaces presentados en la presente gua se encuentran activos para el momento de produccin de

    la misma. La institucin no se hace responsable en caso de estar inactivos en el futuro, de ser as queda del usuario el sustituir dichos enlaces por otros activos en la Internet.

  • Contenido General

    Descripcin General .. 4 Objetivos Generales .................... ... 4 Duracin ................. 4 Recursos Requeridos ........ 4 Taller 1:

    Programacin Bsica utilizando Lenguaje C ............. 5 Taller 2:

    Estructuras de Datos Estticas .................................. 36 Taller 3:

    Estructuras de Datos Dinmicas.............................................................. 61 Anexos................................................................................................................ 88 Bibliografa.......................................................................................................... 111

  • 4

    Descripcin General

    Introduccin a la Programacin, es una unidad curricular ubicada dentro del Programa Nacional de Formacin en Sistemas e Informtica, en el primer trayecto; se corresponde dentro de la estructura del programa en el espacio tcnico, donde se ubican las unidades curriculares especializadas diseado para adquirir los saberes contemplados en las competencias del profesional de sistemas.

    Los Talleres de Introduccin a la programacin:

    1. Programacin Bsica utilizando lenguaje C 2. Estructuras de Datos Estticas 3. Estructuras de Datos Dinmicas

    Forman parte de la estrategia Instruccional de la unidad curricular Introduccin a la Programacin y permitirn reforzar en los estudiantes los saberes relacionados con la tcnicas computacionales, estructuras de datos y programacin de las soluciones generadas, permitindole desarrollar actividades relacionadas con la programacin en lenguaje C haciendo uso de las diferentes estructuras de datos.

    Objetivos Generales

    Al finalizar estos talleres, el estudiante estar en capacidad de:

    1. Disear y Programar soluciones bsicas utilizando lenguaje C. 2. Disear y programar en lenguaje C soluciones, utilizando estructuras de datos estticas 3. Disear y programar en lenguaje C soluciones, utilizando estructuras de datos dinmicas

    Duracin

    Taller de Programacin Bsica utilizando lenguaje C (Objetivo 1): 8 horas Taller de Estructura de Datos Estticas (Objetivo 2): 8 horas Taller de Estructura de Datos Dinmicas (Objetivo 3): 8 horas

    Recursos Requeridos

    Laboratorio de Computacin. Materiales Instruccionales

  • 5

    Taller 1: Programacin Bsica utilizando Lenguaje C

    Objetivo

    Disear y Programar soluciones bsicas utilizando lenguaje C.

    Contenido

    Presentacin del taller. 6 Buenas Prcticas de Programacin.. 8 Conceptos a revisar. 10 Desarrollo del Taller. 13

    Ejercicios 13 Soluciones.. 26

  • 6

    Presentacin del taller

    El taller de Programacin Bsica utilizando Lenguaje C, tiene como propsito que el estudiante consolide conocimientos fundamentales para la formacin del pensamiento lgico computacional, con el uso de importantes construcciones de C, tales como los diferentes tipos de sentencias if, la funcin scanf, funciones iterativas como las sentencias de for y la sentencia de while entre otras.

    Se enfoca en el anlisis de programas y el desarrollo de ejercicios que brinden posibilidades de consolidar estos conocimientos bsicos de la programacin en C para ello se inicia con la introduccin de las caractersticas que definen las buenas prcticas de programacin, seguido de la presentacin de los conceptos considerados de importancia revisar previamente a la realizacin de los ejercicios.

    Los ejercicios presentados en este material estn divididos en seis fases de desarrollo, que contemplan lo siguiente:

    Fase 1: Se da un cdigo fuente para que el estudiante pueda visualizar posibles errores que existen en el mismo. Fase 2: Se presenta cdigo fuente para que el alumno identifique variables y constantes en los programas. Fase 3: El alumno correr el programa en fro para saber que hace. Fase 4: Se dan varios enunciados para que el estudiante realice la codificacin del programa. Fase 5: Se presenta un cdigo desordenado para que los alumnos lo ordenen y busquen la solucin ms idnea. Fase 6: Contiene las soluciones a los ejercicios presentados en las fases anteriores.

  • 7

    Para facilitar el uso de la gua de ejercicios se incluye una breve descripcin de la simbologa usada en su presentacin.

    Simbologa a usar:

    Fase 1: Buscar errores en el programa

    Fase 2: Identificar variables y constantes en los programas.

    Fase 3: Que hace el programa?

    Fase 4: Desarrollar programa

    Fase 5: Ordenar programas

    Fase 6: Soluciones

  • 8

    Buenas Prcticas de Programacin

    Se enumeran las prcticas consideradas como de buen programador haciendo referencia a caractersticas especficas del Lenguaje C.

    1. Escriba sus programas con pasos sencillos y directos. 2. Coloque punto y coma (;) al final de cada sentencia. 3. Cada programa debe comenzar con un comentario que describa su

    propsito. 4. Muchos programadores hacen que el ltimo carcter impreso por una

    funcin sea un salto de lnea (\n) Esto asegura que la funcin dejar el cursor al inicio de una nueva lnea.

    5. Las variables globales deben definirse antes de la funcin main(). 6. Establezca una convencin para el tamao de las sangras y luego

    aplquela de manera uniforme. 7. Declare las variables en lneas separadas ya que esto permite la fcil

    insercin de comentarios descriptivos junto a cada declaracin. A excepcin para algunas variables que tengan el mismo tipo de datos, sin excederse en el nmero de variables.

    8. La declaracin de variables con nombres significativos ayuda a que los programas estn auto documentados, es decir, que resulte ms fcil entenderlos simplemente leyndolos.

    9. Como en lgebra, para hacer ms clara a una expresin es aceptable agregarle parntesis innecesarios. Dichos parntesis se llaman parntesis redundantes. Estos se emplean normalmente para agrupar subexpresiones de expresiones ms grandes.

    10. Sangre la instruccin del cuerpo de una estructura para que resalte la misma y as simplificar la lectura del programa.

    11. En los programas no debe haber ms que una instruccin por lnea.

  • 9

    12. Al escribir expresiones que contengan muchos operadores, consulte la tabla de precedencia de los operadores. Confirme que los operadores de la expresin se ejecutan en el orden que espera. Si no est seguro del orden de evaluacin de una expresin compleja, coloque parntesis para forzar el orden, justo igual como lo hara en una expresin algebraica.

    13. Siempre ponga llaves en las estructuras if/else (y en cualquier estructura de control) para ayudarle a evitar su omisin accidental, especialmente si despus le agrega instrucciones a una clusula if o else.

    14. Coloque primero las llaves izquierda y derecha y despus introduzca las instrucciones que van dentro de ellas. Con esto se evita la omisin de alguna de dichas llaves.

    15. Inicialice los contadores y totales. 16. Utilice mensajes claros al pedir las entradas de teclado al usuario. Dicho

    mensaje debe especificar la forma de la entrada y los valores especiales que pueda tener.

    17. Acostumbre a dar mensajes claros al efectuarse una operacin del programa o al finalizar ya sean indicando el xito o la falla del mismo.

    18. Controle los ciclos con contadores por medio de variables enteras. 19. Utilice las libreras del Api

  • 10

    Conceptos a revisar

    Recordemos que C es un lenguaje de programacin creado en 1969, desarrollado y diseado por Brian W. Kernighan y Dennis M. Ritchie. Se podra considerar como un Lenguaje de medio nivel, ya que no tiene comprobacin estricta de tipos ni otras caractersticas que estn presentes en los lenguajes de alto nivel.

    Para abordar el presente taller hay que tener claro algunos conceptos y procedimientos:

    Lenguaje de programacin: Es un conjunto de palabras, reglas, con las cuales se le indica a la computadora las funciones que debe realizar.

    Programa: Es un conjunto de instrucciones que se le dan a la computadora, para que sta realice una determinada tarea.

    Pasos bsicos para escribir un programa de computadoras en C:

    Paso 1.- Leer y entender el contexto del problema que requiere una solucin mediante un programa de computadora.

    Paso 2.- Desarrollar un algoritmo para resolver el problema.

    Paso 3.- Verificar su algoritmo para su validez.

    Paso 4.- Convertir el algoritmo en lenguaje C.

    Paso 5.- Probar y verificar el programa C para su validez.

  • 11

    Estructura de un Programa:

    Cuando se escribe un programa en lenguaje C se recomienda usar el siguiente formato:

    1.- Llamadas a bibliotecas.

    2.- Declaracin de funciones

    3.- Declaracin de variables globales.

    4.- main()

    {

    5.- Declaracin de variable locales

    6.- Sentencias.

    7.- }

    8.- Definicin de funciones

    Etapas para obtener el programa ejecutable:

    Un compilador: es un programa que convierte nuestro cdigo fuente en un programa ejecutable. Para compilar nuestro programa usamos el GCC. Este es un

  • 12

    compilador de lnea de comando, al que tienes que llamar desde la lnea de comandos del DOS.

    Para escribir nuestros programas necesitamos un editor. La mayora de los compiladores al instalarse incorporan ya un editor; es el caso de los conocidos Turbo C, Borland C, Visual C++,... Pero otros no lo traen por defecto. No debemos confundir por tanto el editor con el compilador. Si nuestro compilador no trae editor la solucin ms simple en MS-DOS puede ser usar el edit, en windows el notepad. Pero no son ms que editores sin ninguna otra funcionalidad.

    En los materiales proporcionados junto al taller se incluye una carpeta llamada COMPILADOR a la cual debes referirte en caso de que necesites instalarlo.

    Bibliotecas: es el archivo que contiene cdigo objeto de una coleccin de rutinas o funciones que realizan tareas determinadas y se pueden utilizar en los programas.

    Enlazador: Programa que convierte las funciones de la biblioteca estndar de C, con el cdigo que ha traducido el compilador.

    Para la realizacin de los ejercicios utilizaremos el notepad++ como editor y el DJGCC como compilador, el cual usa los comandos del GCC.

  • 13

    Desarrollo del taller

    Ejercicios

    A continuacin se presentan los ejercicios para el desarrollo del taller de programacin bsica utilizando lenguaje C. Recuerda revisar la simbologa en la presentacin del taller.

    Ejercicio 1:

    #include int main() { ClrScr(); gotoxy( 20, 10 ) printf( Encuntrame en la fila 20 columna 10 ); return 0; }

    Ejercicio 2:

    #include int main() { int nmero; nmero = 4; return 0; }

  • 14

    Ejercicio 3:

    #include

    int main() { int numero; numero = 4; printf( "El valor es %d" Numero ); return 0; }

    Ejercicio 4:

    #include

    int main() { int x, y; x = 6; y += x +5; }

  • 15

    Ejercicio 5:

    #include

    int main() { int radio, perimetro; radio = 15; perimetro = 2 * 3.1416 * radio; printf( "El permetro es: %d", perimetro ); return 0; }

    Ejercicio 6:

    #include #define PI 3.1416

    int main() { int radio, perimetro; radio = 15; perimetro = 2 * PI * radio; printf( "El permetro es: %d", perimetro ); return 0; }

  • 16

    Ejercicio 7:

    #include

    int main() { int x,y; printf(Ingrese dos numero enteros: \n); scanf(%d %d,&x,&y); printf(Las entradas son: %d y %d\n, x,y); if (x > y) printf(El mximo valor es: %d\n, x); if (x < y) printf(El mximo valor es: %d\n, y); if (x == y) printf(Los numeros son iguales\n, x); }

    Ejercicio 8:

  • 17

    #include

    int main() { int y; printf(Ingrese un numero enteros: \n); scanf(%d ,&y); printf(El numero es: %d\n, y); if ( y % 2 == 0 ) printf( "%d es par\n", y ); else printf( "%d es impar\n", y ); printf( "\n" ); system( "pause" ); return 0; }

    Ejercicio 9:

    #include

  • 18

    int main() { int i; int numero, suma = 0; for ( i=0; i

  • 19

    int numpers, i, sexo, contmax, confem;

    i=0; contmax=0; confem=0;

    printf("Ingrese el numero de personas a identificar: "); scanf(%d,&numpers); while(i

  • 20

    int x, y, z; x = 5; y = ++x; z = ( x + 5 * 2 ) * ( y + 6 / 2 ) + ( x * 2 ); printf( "%d %d %d", x, y, z ); }

    Ejercicio 12:

    #include int main() { int valor; valor = ( 5 * 30 * 100 ) * ( 1.12 ); printf( "El valor total es: %d", valor ); return 0; }

    Ejercicio 13:

    /* Repetir un caracter un numero de veces */

    #include

    main() { char ch; int numero;

  • 21

    printf("\nEscriba el caracter a repetir: "); scanf("%c",&ch); printf("\nEscriba el numero de repeticiones: "); scanf("%d",&numero); while (numero>0) { printf("%c",ch); -- numero;

    } printf("\n"); }

    Ejercicio 14:

    Borre la pantalla y escriba en la primera lnea su nombre y en la segunda su apellido.

    Ejercicio 15:

    Borre la pantalla y muestre el texto "Bienvenidos al taller de programacin" en la fila 15, columna 15 de la pantalla.

    Ejercicio 16:

    Que te imprima un mensaje de presentacin, te pregunte como te llamas y te salude.

    Ejercicio 17:

  • 22

    Que calcule el rea de un tringulo rectngulo, dada la altura y la base.

    Ejercicio 18:

    Este programa comprueba la diferencia entre una variable global, una variable local y un argumento de funcin.

    void suma2(int x) { extern int vglobal; ++x;

    ++vglobal; printf("\nLa variable vglobal dentro de suma2 vale = %d\n", vglobal); printf("\nEl argumento (vlocal) dentro de suma2 vale = %d\n", x); return;

    }

    ===============================================================

    main() { extern int vglobal; int vlocal=200; printf("\nLa variable vglobal en main vale = %d\n", vglobal); printf("\nLa variable vlocal en main vale = %d\n", vlocal); suma1(vlocal);

    ===============================================================

    /* Ejemplo de variable global, local y argumento de funcion */ #include int vglobal=100; /* Se ve en todo el fichero y debe ir con extern dentro de la

  • 23

    declaracion en las funciones */ void suma1(int x); void suma2(int x); ===============================================================

    /* En salida no se ha modificado su valor pese a que en suma1 se hagan operaciones con vlocal (argumento) */ printf("\nLa variable vglobal despues de suma1 vale = %d\n", vglobal); printf("\nLa variable vlocal despues de suma1 vale = %d\n", vlocal); suma2(vlocal); printf("\nLa variable vglobal despues de suma2 vale = %d\n", vglobal); printf("\nLa variable vlocal despues de suma2 vale = %d\n", vlocal); }

    ===============================================================

    void suma1(int x) { extern int vglobal; ++x;

    ++vglobal; printf("\nLa variable vglobal dentro de suma1 vale = %d\n", vglobal); printf("\nEl argumento (vlocal) dentro de suma1 vale = %d\n", x); return;

    }

    ===============================================================

    Ejercicio 19:

    Programa que imprime un mensaje rodeado por un borde, utilizando funciones para dibujar los elementos del borde.

  • 24

    void lados() { int y; for (y=0; y

  • 25

    /* Mensaje rodeado por un borde */ #include #define ANCHO 80 #define FILAS 6 void linea(); void lados(); ===============================================================

  • 26

    Soluciones

    Ejercicio 1:

    ClrScr est mal escrito, debe ponerse todo en minsculas. No se ha includo la directiva #include , que necesitamos para

    usar clrscr() y gotoxy(). Tampoco hemos puesto el punto y coma (;) despus del gotoxy( 20, 10 )

    Recordemos que despus de cada instruccin debe ir un punto y coma. El ltimo fallo es que el texto del printf no lo hemos puesto entre comillas.

    Lo correcto sera: printf( " Encuntrame en la fila 20 columna 10" );

    Ejercicio 2:

    Los nombres de variables no pueden llevar acentos, luego al compilar nmero dar error.

    Ejercicio 3:

    Falta la coma despus de "El valor es %d". Adems la segunda vez numero est escrito con maysculas.

    Ejercicio 4:

    Cuando calculamos el valor de 'y' sumamos x+6 ( =10 ) al valor de 'y'. Pero resulta que 'y' no tena ningn valor indicado por nosotros. Estamos usando la variable 'y' sin haberle dado valor. En algunos compiladores el resultado ser inesperado.

  • 27

    Ejercicio 5:

    Las constantes son aquellos datos que no pueden cambiar a lo largo de la ejecucin de un programa.

    radio y perimetro son variables, su valor puede cambiar a lo largo del programa. Sin embargo 15, 2 y 3.1416 son constantes, no hay manera de cambiarlas. El valor 3.1416 no cambia a lo largo del programa, ni entre ejecucin y ejecucin. Slo cambiar cuando edites el programa y lo cambies tu mismo. Esto es obvio, y no tiene ningn misterio, as que no le des vueltas.

    Ejercicio 6:

    Constantes con nombre es PI que ser sustituido por 3.1416 De esta forma cada vez que el compilador encuentre el nombre PI lo sustituye.

    Supongamos que tenemos que hacer un programa en el que haya que escribir unas cuantas veces 3.1416 (que es igual a PI). Es muy fcil que nos confundamos alguna vez al teclearlo y al compilar el programa no tendremos ningn error, sin embargo el programa no dar resultados correctos. Para evitar esto usamos las constantes con nombre. Al definir una constante con nombre estamos dando un nombre al valor, a 3.1416 le llamamos PI.

    Estas constantes se definen de la manera siguiente:

    #define nombre_de_la_constante valor_de_la_constante

    ejercicio 7:

  • 28

    Se introduce dos nmeros entero por teclado x e y. Se indica cual tiene el valor mximo.

    Ejercicio 8:

    Comprueba si un nmero es par o impar.

    Para comprobar si un nmero es par o impar podemos usar el operador '%'. Si al calcular el resto de dividir un nmero por 2 el resultado es cero eso indica que el nmero es par. Si el resto es distinto de cero el nmero es impar.

    Ejercicio 9:

    El programa se ejecutar una nica vez puesto que al final de la sentencia for hay un punto y coma. Como sabemos, el bucle for hace que se ejecuten las veces necesarias la sentencia siguiente (o el siguiente bloque entre {} ). Para que el programa funcione correctamente habra que eliminar el punto y coma.

    Ejercicio 10: El programa determina el sexo de un grupo de personas y lo muestra por pantalla

    : Ejercicio 11 :

    En la primera x vale 5. Pero en la segunda se ejecuta y = ++x = ++5 = 6. Tenemos x = y = 6.

  • 29

    nota: (Falta correrlo)

    Ejercicio 12:

    #include

    #define CAJAS 5 #define UNIDADES_POR_CAJA 30 #define PRECIO_POR_UNIDAD 100 #define IMPUESTOS 1.12

    int main() { int valor; valor = ( CAJAS * UNIDADES_POR_CAJA * PRECIO_POR_UNIDAD ) * ( IMPUESTOS ); printf( "El valor total es: %d", valor ); return 0; }

    Ejercicio 13:

    Este programa le pide al usuario un carcter y un nmero de repeticiones. Luego imprime el carcter el nmero de veces especificado.

    Ejercicio 14:

  • 30

    #include #include

    int main() { clrscr(); printf( "Carmen\n" ); printf( "Perez" );

    return 0; }

    Tambin se poda haber hecho de otra manera ejemplo:

    #include #include int main() { clrscr(); printf( "Carmen\nPerez" ); return 0; }

    Ejercicio 15:

    #include #include

    int main() { clrscr();

  • 31

    gotoxy( 15, 15 ); printf( " Bienvenidos al taller de programacion " ); return 0; }

    Ejercicio 16:

    #include main() { char nombre[20]; printf("Hola, me llamo Ordenador, y tu?\n"); scanf("%s",&nombre[0]); printf("Me alegro de conocerte %s\n",nombre); }

    Ejercicio 17

    /* Area de un triangulo rectangulo */ #include

    main() { float altura, base; double area; printf("\nBase del triangulo = ");

  • 32

    scanf("%f",&base); printf("\nAltura del triangulo = "); scanf("%f",&altura); area= 0.5 * (double) altura * base; printf("\nArea = %g\n",area); }

    Ejercicio 18:

    Este programa comprueba la diferencia entre una variable global, una variable local y un argumento de funcin.

    /* Ejemplo de variable global, local y argumento de funcion */

    #include int vglobal=100; /* Se ve en todo el fichero y debe ir con extern dentro de la declaracion en las funciones */ void suma1(int x); void suma2(int x);

    main() { extern int vglobal; int vlocal=200; printf("\nLa variable vglobal en main vale = %d\n", vglobal); printf("\nLa variable vlocal en main vale = %d\n", vlocal);

    www.mailxmail.com/curso/informatica/lenguagec/capitulo14.htm

  • 33

    suma1(vlocal);

    /* En salida no se ha modificado su valor pese a que en suma1 se hagan operaciones con vlocal (argumento) */ printf("\nLa variable vglobal despues de suma1 vale = %d\n", vglobal); printf("\nLa variable vlocal despues de suma1 vale = %d\n", vlocal); suma2(vlocal); printf("\nLa variable vglobal despues de suma2 vale = %d\n", vglobal); printf("\nLa variable vlocal despues de suma2 vale = %d\n", vlocal);

    }

    void suma1(int x) { extern int vglobal; ++x;

    ++vglobal; printf("\nLa variable vglobal dentro de suma1 vale = %d\n", vglobal); printf("\nEl argumento (vlocal) dentro de suma1 vale = %d\n", x); return;

    }

    void suma2(int x) { extern int vglobal;

  • 34

    ++x;

    ++vglobal; printf("\nLa variable vglobal dentro de suma2 vale = %d\n", vglobal); printf("\nEl argumento (vlocal) dentro de suma2 vale = %d\n", x); return;

    }

    Ejercicio 19:

    Programa que imprime un mensaje rodeado por un borde, utilizando funciones para dibujar los elementos del borde.

    /* Mensaje rodeado por un borde */

    #include #define ANCHO 80 #define FILAS 5 void linea(); void lados(); main() { printf("\n\n\n\n"); linea(); lados(); printf(" *\t\t\t\t Bienvenido a C \t\t\t\t*\n"); lados(); linea(); printf("\n\n\n\n");

  • 35

    }

    void linea() { int x; printf(" "); for (x=0; x


Top Related