Apuntes (Lenguaje c)

download Apuntes (Lenguaje c)

of 67

Transcript of Apuntes (Lenguaje c)

  • Lenguaje C

    Pgina 1

    Objetivo general del curso:

    El alumno desarrollar algoritmos computacionales y programar en un lenguaje de programacin

    estructurado.

    PROGRAMA

    UNIDAD I

    INTRODUCCIN

    1.1 Lenguajes de programacin.

    1.2 Diseo de algoritmos

    1.3 Diagramas de flujo

    1.4 Pseudocdigo.

    1.5 Resolucin de problemas.

    UNIDAD II

    FUNDAMENTOS BASICOS

    2.1 Estructuras de control.

    2.2 Identificadores, Constantes y Variables.

    2.3 Operadores.

    2.4 Expresiones.

    2.5 Funciones de Entrada y Salida

    UNIDAD III

    ESTRUCTURAS DE CONTROL SELECTIVAS Y REPETITIVAS

    3.1 Sentencias condicionales

    3.2 Sentencias repetitivas.

    UNIDAD IV

    ESTRUCTURAS DE DATOS (LOS ARRAYS)

    4.1 Declaracin de arreglos.

    4.2 Inicializacin y acceso a elementos.

    4.3Arreglos de cadenas.

    4.4 Nmeros aleatorios.

    4.5 Funciones matemticas.

    UNIDAD V

    FUNCIONES

    5.1 Definicin.

    5.2 Caractersticas.

  • Pgina 2

    5.3 Valores devueltos.

    5.4 Paso de argumentos.

    5.5 Paso de arreglos como argumentos.

    BIBLIOGRAFA:

    Luis Joyanes Aguilar

    Programacin en Turbo Pascal

    Ed. McGraw Hill.

    Luis Joyanes Aguilar, Luis Rodrguez Baena, Matilde Fernndez Azuela

    Fundamentos de programacin

    Ed. McGraw Hill

    Aprenda Turbo C

    Jess Prez Reynoso

    Ed.

    Como programar en C++

    H.M. Deitel / P.J. Deitel

    Ed. Prentice Hall

    Curso de programacin con C

    Fco. Javier Ceballos

    Ed. Macrobit / Ra-ma

    Aprendiendo Borland C++ 5 en 21 das

    Craig Arnush

    Ed. Prentice Hall

  • Lenguaje C

    Pgina 3

    Unidad .

    INTRODUCCIN

    LENGUAJES DE PROGRAMACIN

    Los lenguajes utilizados para escribir programas de computadoras que puedan ser entendidos por

    ellas se denominan lenguajes de programacin.

    Los lenguajes de programacin se califican en tres grandes categoras: lenguaje mquina, de bajo nivel (ensamblador) y alto nivel.

    Lenguaje mquina.- Son aquellos cuyas instrucciones son directamente entendibles por la

    computadora y no necesitan traduccin posterior para que la Unidad Central de Proceso (UCP) pueda

    comprender y ejecutar el programa. Las instrucciones en lenguaje mquina se expresan en trminos de la

    unidad de memoria ms pequea, que es el bit (dgito binario 0, o bien 1), en esencia de bits que especifican la operacin y las celdas de memoria implicadas en una operacin. Una serie de instrucciones en lenguaje

    mquina son:

    0010 0000 0000 1001

    1001 0001 1001 1110

    Como se puede observar, estas instrucciones sern fciles de leer por la computadora y difciles

    para un programador. Esta razn hace difcil escribir programas en cdigo o lenguaje mquina y requiere

    buscar otro lenguaje para comunicarse con la computadora, pero que sea ms fcil de escribir y leer por el

    programador. Para evitar la tediosa tarea de escribir programas en lenguaje mquina se han diseado otros

    lenguajes de programacin que facilitan la escritura y posterior ejecucin de los programas. Estos

    lenguajes son los de bajo y alto nivel.

    Lenguajes de bajo nivel (ensambladores).- La programacin en lenguaje mquina es difcil, por

    ello se necesitan lenguajes que permitan simplificar este proceso. Los lenguajes de bajo nivel han sido

    diseados para este fin.

    Estos lenguajes son generalmente dependientes de la mquina, es decir, dependen de un conjunto

    de instrucciones especficas de la computadora. Un lenguaje tpico de bajo nivel es el lenguaje

    ensamblador. En este lenguaje las instrucciones se escriben en cdigos alfabticos conocidos como

    nemotcnicos (abreviaturas de palabras inglesas o espaolas). As por ejemplo nemnicos tpicos Son:

    ADD suma MPY multiplicar LDA cargar acumulador

    SUB resta DIV dividir STO almacenar

    Las palabras nemticas son mucho ms fciles de recordar que las secuencias de dgitos 0 y 1. Una

    instruccin tpica en ensamblador puede ser:

    ADD x,y,z

    Esta instruccin significa que se deben sumar los nmeros almacenados en las direcciones x y y y almacenar el resultado en la direccin z. El programa ensamblador traducir la instruccin a cdigo mquina. Por ejemplo ADD se puede traducir a 1110, x se puede traducir por 1001, y por 1010, z por 1011. La instruccin traducida sera:

    1

  • Pgina 4

    1110 1001 1010 1011 (ADD x,y,z)

    Despus que un programa ha sido escrito en lenguaje ensamblador se necesita un programa llamado ensamblador- que lo traduzca a lenguaje mquina.

    Lenguaje de alto nivel. Los lenguajes de programacin de alto nivel (ADA, BASIC, FORTRAN,

    Modula-2, Pascal, etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas

    con palabras similares a los lenguajes humanos (en general el lenguaje ingls como es el caso de C++ ), lo que facilita la escritura y la fcil comprensin por el programador.

    Por ejemplo, las lneas siguientes son una lnea de un programa en C++ y su lnea equivalente en

    preudocdigo:

    If (x==y) and (z==w) printf (Esto es una prueba);

    si (x=y) y (z=w) escribir (Esto es una prueba)

    Esta lnea se puede comprender fcilmente conociendo la traduccin de las palabras inglesas if (si)

    and (y) printf (escribir/imprimir) y sin necesidad de mucha explicacin. Es posible escribir tambin

    operaciones como:

    z = x + y; la suma de x mas y se asigna a la variable z

    Los lenguajes de programacin son en general transportables. Esto significa que un programa escrito en un lenguaje de alto nivel se puede escribir con poca o ninguna modificacin en diferentes tipos

    de computadoras. Otra propiedad de estos lenguajes es que son independientes de la mquina, esto es, las

    sentencias del programa no dependen del diseo hardware de una computadora especfica.

    Los programas escritos en lenguaje de alto nivel no son entendibles directamente por la mquina.

    Necesitan ser traducidos a instrucciones en lenguaje mquina que entiendan las computadoras. Los

    programas que realizan esta traduccin se llaman compiladores, y los programas escritos en un lenguaje de

    alto nivel se llaman programas fuente. El compilador traduce el programa fuente en un programa llamado

    programa objeto. Este programa objeto se utiliza en la fase de ejecucin del programa. El proceso de

    traduccin de un programa fuente se denomina compilacin y tras la fase de enlace se obtiene un

    programa ejecutable directamente por la computadora.

    DISEO DE ALGORITMOS.

    En el proceso de resolucin de problemas por medio de una computadora conduce a la escritura de

    un programa y a su ejecucin en la misma. Aunque el proceso de disear programas es esencialmente un

    proceso creativo, se pueden considerar una serie de fases o pasos comunes, que generalmente deben seguir

    todos los programadores. Las fases de resolucin de un problema con computadoras son:

    Anlisis del problema

    Diseo del algoritmo

    Codificacin

    Compilacin y ejecucin.

    Verificacin.

    Depuracin.

    Documentacin.

  • Lenguaje C

    Pgina 5

    Las dos primeras fases conducen a un diseo detallado escrito en forma de algoritmo. Durante la

    tercera etapa se implementa el algoritmo en un cdigo escrito en un lenguaje de programacin, reflejando

    las ideas desarrolladas en las fases de anlisis y diseo.

    La fase de compilacin y ejecucin traduce y ejecuta el programa. En las fases de verificacin y

    depuracin el programador busca errores de las etapas anteriores y los eliminara. Comprobar que

    mientras ms tiempo se gaste en la fase de anlisis y diseo, menos tiempo se gastar en la depuracin del

    programa. Por ltimo, se debe realizar la documentacin del programa.

    Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos precisos, definidos y

    finitos. En resumen todo algoritmo debe ser:

    Preciso.- Indicar el orden de realizacin de cada paso.

    Definido.- Si se siguen dos veces o ms, se debe obtener el mismo resultado cada vez.

    Finito.- Debe tener un fin, es decir un nmero determinado de pasos.

    Ejemplos de algoritmos son: instrucciones para hacer una receta de cocina, obtener el mximo

    comn divisor de dos nmeros, etc. Los algoritmos se pueden expresar por medio de diagramas de flujo

    o pseudocdigos. Esta ltima representacin es la mas utilizada en lenguajes estructurados como el

    caso de C++.

    Anlisis del problema.- La primera fase de la resolucin de un problema por medio de la

    computadora es el anlisis del problema. Esta fase requiere una clara definicin, donde se contemple

    exactamente lo que debe hacer el programa y el resultado o solucin deseada.

    Dado que se busca una solucin por computadora, se precisan especificaciones detalladas de

    entrada y salida.

    Para poder definir bien un problema es conveniente responder a las siguientes preguntas:

    Qu entradas se requieren? (tipo y cantidad)

    Cul es la salida deseada? (tipo y cantidad)

    Qu mtodo produce la salida deseada?

    Por ejemplo, se desea obtener una tabla con las depreciaciones acumuladas y los valores reales de

    cada ao, de un automvil comprado en $166,000.00 en el ao 2005, durante los seis aos siguientes

    suponiendo un valor de recuperacin o rescate de $58,000.00. Realizar el anlisis del problema, conociendo

    la formula de la depreciacin anual constante D para cada ao de vida til.

    Costo Valor de recuperacin 166000 -58000 108000

    D= = = = 18000

    Vida til 6 6

    Datos de Entrada:

    Costo original

    Vida til

    Valor de recuperacin

    Datos de Salida:

    Depreciacin anual por ao

    Depreciacin acumulada en cada ao

  • Pgina 6

    Valor del automvil en cada ao

    Proceso:

    Depreciacin acumulada

    Calculo del automvil en cada ao

    La tabla siguiente muestra la salida solicitada:

    Ao Depreciacin Dep. Acumulada Valor Anual

    1 (2005) 18000.00 18000.00 148000.00

    2 (2006) 18000.00 36000.00 130000.00

    3 (2007) 18000.00 54000.00 112000.00

    4 (2008) 18000.00 72000.00 94000.00

    5 (2009) 18000.00 90000.00 76000.00

    6 (2010) 18000.00 108000.00 58000.00

    Diseo del algoritmo:

    En la etapa de anlisis del proceso de programacin se determin qu hace el programa. En la etapa

    de diseo se determinar como hace el programa la tarea solicitada. Los mtodos ms eficaces son el

    diagrama de flujo y el pseudocdigo.

    DIAGRAMA DE FLUJO.

    Los diagramas de flujo se utilizan tanto para la representacin grfica de las operaciones

    ejecutadas sobre los datos a travs de todas las partes de un sistema de procesamiento de informacin,

    diagrama de flujo del sistema, como para la representacin de la secuencia de pasos necesarios para

    describir un procedimiento particular, diagrama de flujo de detalle. En la actualidad se siguen usando los

    diagramas de flujo del sistema, pero ha decado el uso de los diagramas de lujo de detalle al aparecer oros

    mtodos de diseo estructurado ms eficaces para la representacin y actualizacin de los algoritmos. Los

    diagramas de flujo de detalle son, no obstante, uno de nuestros objetivos prioritarios y, a partir de ahora,

    los denominaremos simplemente diagrama de flujo.

    El diagrama de flujo utiliza unos smbolos normalizados, con los pasos del algoritmo escritos en el

    smbolo adecuado y los smbolos unidos por flechas, denominados lneas de flujo, que indican el orden en

    que los pasos deben ser ejecutados. Los smbolos principales se muestran a continuacin:

  • Lenguaje C

    Pgina 7

    Resulta necesario indicar dentro de los smbolos la operacin especfica concebida por el

    programador. Como ejemplo considere un diagrama de flujo bsico, que represente la secuencia de pasos

    necesarios para que un programa lea una temperatura en grados centgrados y calcule y escriba su valor en

    grados kelvin.

    PSEUDOCODIGO.

    El pseudocodigo es un lenguaje de especificacin de algoritmos que utiliza palabras reservadas y

    exige la identacin, o sea, sangra en el margen izquierdo, de algunas lneas. En nuestros pseudocodigos

    usaremos determinadas palabras en espaol como palabras reservadas. El pseudocodigo se concibi para

    superar las dos principales desventajas del diagrama de flujo: lento de crear y difcil de modificar sin un

    nuevo redibujo. Es una herramienta muy buena para el seguimiento de la lgica de un algoritmo y para

    transformar con facilidad los algoritmos a programas, escritos en un lenguaje de programacin especfico.

    El pseudocodigo comenzar siempre con la palabra inicio y terminar con la palabra fin. Cuando se

    coloque un comentario de una sola lnea se escribir precedida de //. Si el comentario es multilnea lo

    pondremos entre /* y */. Para introducir un valor o serie de valores desde el dispositivo estndar y

    Inicio y fin del algoritmo

    Proceso

    Entrada / Salida

    Decisin

    inicio

    Leer

    (Celsius)

    Kelvin celsius

    + 273.15

    Escribir

    (kelvin)

    fin

  • Pgina 8

    almacenarlo en una o varias variables utilizaremos leer(). Con

  • Lenguaje C

    Pgina 9

    escribir (kelvin)

    fin

    RESOLUCIN DE PROBLEMAS

    1.- Escribir un algoritmo en diagrama de flujo y pseudocodigo para determinar el mximo comn

    divisor de dos nmeros enteros por el algoritmo de Euclides.

    Anlisis del problema:

    Datos de salida: mximo comn divisor

    Datos de entrada: dos nmeros enteros (a, b)

    Datos auxiliares: resto

    Para hallar el mximo comn divisor de dos nmeros se debe dividir uno entre otro. Si la divisin es

    exacta, es decir si el resto es cero, el mximo comn divisor es el divisor. Si no, se deben dividir otra vez

    los nmeros, pero en este caso el dividendo ser el antiguo divisor y el divisor el resto de la divisin

    anterior. El proceso se repetir hasta que la divisin sea exacta.

    Para disear el algoritmo se deber crear un bucle o ciclo que se repita mientras que la divisin no

    sea exacta. Dentro del bucle se asignarn nuevos valores al dividendo y al divisor.

    2.- Disear un algoritmo en diagrama de flujo y pseudocodigo que lea e imprima una serie de

    nmeros distintos de cero. El algoritmo debe terminar con un valor cero que no se debe imprimir.

    Finalmente se desea obtener la cantidad de valores ledos distintos de cero.

    Restoa mod b

    a b

    b resto

    mcd b

    escribir (mcd)

    fin

    a mod b 0

    Leer (a,b)

    inicio

    no

    si

    Pseudocodigo:

    inicio

    leer (a,b)

    mientras a mod b 0

    resto a mod b

    a b

    b resto

    fin_mientras

    mcd b

    escribir (mcd)

    fin

  • Pgina 10

    3.- Disear un algoritmo en diagrama de flujo y pseudocodigo que sume la serie de nmeros

    3,6,9,12, ,99.

    4.- Escribir un algoritmo en diagrama de flujo y pseudocodigo que lea cuatro nmeros y a

    continuacin escriba cual es el mayor de todos.

    5.- Disear un algoritmo en diagrama de flujo y pseudocodigo para calcular la velocidad en metros /

    segundo de los corredores de una carrera de 1500 metros. La entrada sern parejas de nmeros (minutos,

    segundos) que darn el tiempo de cada corredor. Por cada corredor se imprimir el tiempo en minutos y

    segundos, as como la velocidad media expresada en Kilmetros / hora. El bucle se ejecutar hasta que

    demos una entrad de 0,0 que ser la marca de fin de dtos.

    6.- Disear un algoritmo en diagrama de flujo y pseudocodigo para determinar si un numero n es

    primo (un nmero primo slo es divisible por l mismo y por la unidad).

    7.- Disear un algoritmo en diagrama de flujo y pseudocodigo que calcule la superficie de un

    triangulo en funcin de la base y la altura.

    cont 0

    inicio

    leer (num)

    num 0?

    escribir (num)

    cont cont + 1

    leer (num)

    escribir (cont)

    fin

    no

    si

    Pseudocodigo:

    inicio

    cont 0

    leer (num)

    mientras num 0

    escribir (num)

    cont cont + 1

    leer (num)

    fin_mientras

    escribir (cont)

    fin

  • Lenguaje C

    Pgina 11

    Unidad .

    FUNDAMENTOS BSICOS

    ESTRUCTURAS DE CONTROL.

    Cada lenguaje tiene sus propias herramientas de trabajo que lo identifican por sus habilidades y

    que le permiten realizar diversas tareas de programacin. Para poder utilizar estas herramientas, es

    necesario conocer las reglas que las rigen.

    El lenguaje de programacin de Borland C++, tiene una caracterstica especial en cuanto a su

    filosofa, y que es la base para el desarrollo de cualquier programa, esta caracterstica es que Borland C++

    est basado en el desarrollo de funciones, es decir cada uno de los mdulos deber estar encerrado dentro

    de una funcin, as sea el programa principal. Tomando esto en consideracin y explorando el entorno de un

    programa en C, observaremos que la primera funcin que debemos declarar es la funcin main( ). En

    seguida se muestra el formato general de un programa en Borland C++:

    declaraciones globales;

    main( )

    {

    variables locales;

    secuencia de sentencias;

    }

    funcion_1( )

    {

    variables locales;

    secuencia de sentencias;

    }

    funcion_2( )

    {

    variables locales;

    secuencia de sentencias;

    }

    .

    .

    funcion_n( )

    {

    variables locales;

    secuencia de sentencias;

    }

    Como podr observarse, existen declaraciones que se pueden utilizar en todo el programa como es

    el caso de las declaraciones globales que se pueden utilizar en la funcin main( ) y el resto de funciones

    declaradas. Las declaraciones realizadas en cada una de las funciones tendr validez slo dentro de la

    funcin que lo declar.

    2

  • Pgina 12

    Para iniciar las operaciones dentro de una funcin se deber insertar la llave que se abre {, y para

    terminar la funcin se deber insertar la llave que se cierra }. Cabe mencionar que estas llaves se utilizan

    para delimitar bloques de sentencias en algunas instrucciones de Borland C++.

    IDENTIFICADORES, VARIABLES Y CONSTANTES.

    Los identificadores son aquellos que se utilizan para referirse a las variables, las funciones,

    etiquetas y tipos de datos definidos por el usuario.

    Los nombres de los identificadores pueden contener letras, nmeros y el smbolo (_). El primer

    carcter, deber ser siempre una letra o el smbolo de subrayado y los siguientes caracteres ya podrn ser

    letras, nmeros o subrayado. La longitud de los identificadores puede variar desde 1 hasta 32 caracteres. Los identificadores son sensibles a maysculas y minsculas en C++. Por lo tanto, los nombres OPCION,

    opcion y Opcion se refieren a tres identificadores diferentes. Los identificadores no pueden ser palabras

    reservadas, como int, double, switch, por nombrar algunas cuantas.

    Tipos de datos.- Existen cinco tipos de datos bsicos en Borland C++. Estos son: carcter (char),

    entero (int), coma flotante (float), coma flotante de doble precisin (double) y sin valor (void).

    El tipo char acepta valores definidos en el conjunto de caracteres ASCII as como cualquier

    cantidad de 8 bits (es decir que se pueda tener un control de los bits dentro del byte).

    El tipo int acepta valores enteros en el rango de -32768 a 32767, es decir cubre rangos de

    nmeros positivos y negativos.

    El tipo float y double aceptan valores reales (contienen una parte entera y una fraccionaria) y sus

    rangos de valores son: 3.4E-38 a 3.4E+38 para float y 1.7E-308 a 1.7E+308 para double.

    El tipo void tiene dos usos:

    1 Declarar explcitamente una funcin que no devuelve valor.

    2 Declarar explcitamente una funcin sin parmetros.

    A los tipos de datos existentes se les puede colocar un modificador para alterar su dominio y de

    esta manera ajustarlo a determinadas necesidades. Especficamente lo que se obtiene es modificar el

    rango de valores que el tipo de dato tiene como base.

    Con excepcin del tipo void, al resto de tipos de datos bsicos se les puede agregar un modificador.

    Los modificadores que se pueden aplicar son los siguientes:

    - signed (signo) - Unsigned (sin signo)

    - long (largo) - short (corto)

    A continuacin se presenta una tabla con todos los tipos de datos bsicos, as como su

    interpretacin con modificadores:

  • Lenguaje C

    Pgina 13

    tipo Tamao en bits Rango

    char 8 -128 a 127

    unsigned char 8 0 a 255

    int 16 -32768 a 32767

    unsigned int 16 0 a 65535

    short int 16 -32768 a 32767

    unsigned short int 16 0 a 65535

    long int 32 -2147483648 a 2147483647

    float 32 3.4E-38 a 3.4E+38

    double 64 1.7E-308 a 1.7E+308

    long double 64 1.7E-308 a 1.7E+308

    Variables.- Una variable es el elemento en el cual se almacena informacin y la cual se puede

    modificar a lo largo del programa. Es decir que su contenido puede ser variable y as poderse modificar en

    cualquier parte del programa.

    Las variables se accesan por medio del identificador con el que se declar y la informacin que se

    puede almacenar en el, deber ser compatible con el tipo de dato con el que se haya declarado.

    Esto quiere decir que las variables a utilizar debern estar compuestas por un identificador y un

    tipo de dato, mismos que ya se han definido en la seccin anterior.

    Declaracin de variables.- Antes de utilizar una variable dentro del programa, se deber

    declarar la misma. Para poder declarar una variable se deber seguir el siguiente formato general:

    tipo_de_dato lista_de_variables;

    Tipo_de_dato = Un tipo de dato vlido (int, char, float, etc.). Lista_de_variables = Uno o ms nombres de identificadores separados por comas.

    Nota: Debe utilizar nombres descriptivos para las variables. Si emplea continuamente nombres de

    una sola letra para las variables, tendr momentos difciles imaginndose lo que quiso decir, si es que tiene

    que regresar al cdigo. No Debe declarar variables dentro de la misma unidad de programa con nombres

    diferentes en maysculas y minsculas (como Opcion y opcion).

    Listado cdigo fuente del programa var.cpp

    //programa de C++ que ilustra variables sencillas

    #include

    #include

    int main()

    {

    int i, j = 2;

    double x, y = 355.0 / 113;

    i = 3 * j;

    cout

  • Pgina 14

    x = 2 * y;

    x = x * x;

    cout

  • Lenguaje C

    Pgina 15

    Consideremos un ejemplo de constantes que se basan en constantes formales y constantes basadas

    en macros. El siguiente listado muestra el cdigo fuente del programa const1.cpp, el cual le indica que

    teclee la cantidad de horas, minutos y segundos a partir de la media noche. Luego el programa calcula y

    despliega el total de segundos desde media noche.

    Listado cdigo fuente del programa const1.cpp

    // programa C++ que ilustra constantes

    #include

    #include

    #define seg_en_min 60 //constante basada en macro

    int main()

    {

    const int min_en_hor = 60; //constante formal

    long horas, minutos, segundos, totalseg;

    cout > horas;

    cout > minutos;

    cout > segundos;

    totalseg = ((horas * min_en_hor + minutos) * seg_en_min + segundos);

    cout

  • Pgina 16

    Al usar estos operadores, observe los siguientes comentarios:

    Cuando se utiliza el operador (/) con enteros o carcter, el resto de la divisin es truncado. As el

    resultado de 8/3 ser 2.

    El operador mdulo al igual que en otros lenguajes, nos dar como resultado el resto de la divisin

    entera. Por ello % no puede aplicarse a los tipos de coma flotante.

    Los operadores de autodecremento y Autoincremento se vern con ms detalle en una seccin

    posterior a esta.

    Veamos un ejemplo que usa operadores matemticos con nmeros enteros y de punto flotante. El

    siguiente listado muestra el cdigo fuente del programa oper1.cpp, el cual solicita que ingrese dos nmeros

    enteros y aplica los operadores +, -, * , / y % a los enteros guardando el resultado en variables separadas y

    despliega los resultados de las operaciones de enteros. Posteriormente solicita dos nmeros de punto

    flotante y realiza operaciones similares a las de nmeros enteros.

    Listado cdigo fuente del listado del programa oper1.cpp

    // programa C++ sencillo para ilustrar las operaciones matemticas sencillas

    #include

    #include

    int main()

    {

    int entero1, entero2;

    long largo1, largo2, largo3, largo4, largo5;

    float x, y, real1, real2, real3, real4;

    cout entero1;

    cout entero2;

    cout

  • Lenguaje C

    Pgina 17

    cout

  • Pgina 18

    Si deseamos incrementar en uno la variable x, esto se hace de la siguiente manera, en forma tradicional:

    x=x+1, y si deseamos decrementar x=x-1; esto se puede sustituir por la operacin x++ y x--

    respectivamente.

    Listado cdigo fuente del listado del programa oper2.cpp

    // programa C++ sencillo para ilustrar las operaciones matemticas de

    // asignacin.

    #include

    #include

    int main()

    {

    int i, j;

    double x, y;

    cout > i;

    cout > j;

    i += j;

    j -= 6;

    i *= 4;

    j /= 3;

    i++;

    j--;

    cout

  • Lenguaje C

    Pgina 19

    + -

    < >=

    == !=

    && Menor prioridad = += -= *= /=

    EXPRESIONES.

    Una expresin es cualquier combinacin valida cuyo componente son los operadores, constantes y

    las variables. Las siguientes son expresiones:

    x/2 a+b/3 c/4*(20-c) r+30-2*y a+b

    Moldes.- Un molde, es la convencin arbitraria de una expresin para que se evale segn el tipo

    de dato determinado. El formato de un molde es el siguiente:

    (tipo) expresin

    tipo = Cualquier tipo de datos valido (int, float,..)

    por ejemplo: (double) s/5 se forza a que la expresin s/5 se evale como double.

    Palabras reservadas.- Todo lenguaje de programacin, tiene un conjunto de palabras que define

    previamente y que constituyen la base de las sentencias, funciones, expresiones y ordenes que forman un

    programa. En el caso de Borland C++, estas palabras reservadas se presentan en seguida:

    auto double int struct

    break else long switch

    case enum register typedef

    char extern return union

    const float short unsigned

    continue for signed void

    default goto sizeof volatile

    do if static while

    Todas las palabras reservadas de Borland C++, estn en minsculas, de tal forma que ELSE no es

    una palabra reservada.

    Nota: Una palabra reservada NO debe ser utilizada para otro propsito en un programa, NO debe

    servir como variable o como funcin.

    Biblioteca de Borland C++.- Una de las caractersticas que resaltan a Borland C++, es su biblioteca

    de funciones estndar, la cual es diversa y se conforma de implementaciones ANSI, UNIX y TURBO C.

    La biblioteca estndar de Borland C++ define un conjunto de funciones grande y diversificado,

    donde muchas de estas interactan con el sistema operativo.

    Las funciones que se encuentran en la biblioteca de Borland C++, trabajan con sus propios tipos de

    datos y variables, a los que el programa deber acceder. Estas variables y tipos de datos estn definidos

  • Pgina 20

    en archivos llamados de CABECERA, que se proporcionan con el compilador y que deben de incluirse

    (utilizando la directiva #include) en los programas que utilicen las funciones de la biblioteca de Borland

    C++. Estas cabeceras tienen la extensin .h y cada cabecera contiene funciones o definiciones, mismas que

    se podrn acceder en el programa que las incluya.

    Una cabecera se incluye en el programa aadiendo la directiva #include y el archivo de cabecera,

    de la siguiente forma:

    #include encabezado

    o

    #include encabezado

    Si el archivo est entre comillas, primero se busca en el directorio actual, en caso de que no se

    encuentre, se busca en los directorios especificados en el entorno integrado (options, directories o include

    directories del men principal del editor).

    Si el archivo est entre ngulos , se busca en los directorios especificados en el entorno

    integrado (options, directories o include directories del men principal del editor) pero no se busca en el

    directorio actual.

    Se puede especificar la ruta donde se encuentra el archivo en forma explcita, al introducir el

    nombre. Por ejemplo:

    #include c:\tc\include\stdio.h

    Sentencias en Borland C++.- Una sentencia es una instruccin que se escribe en el programa y

    que indica las tareas que se van a realizar. Consta de una o mas palabras reservadas (por ejemplo: case,

    for, if,...) o funciones (por ejemplo: printf, delline, clrscr) y esta normalizado por una sintaxis que describe

    la forma en la que se deber implementar correctamente la instruccin.

    En estos apuntes, las definiciones de las sentencias se representarn por medio de letras bold y la

    sintaxis en bold itlica como en el siguiente ejemplo:

    int putch (int c,FILE *pa);

    la sentencia es putch y el resto es la sintaxis de esta funcin.

    Separador de sentencias ; Para separar las sentencias, se utiliza el carcter punto y coma (;), de esta manera se puede escribir mas de una sentencia en una misma lnea, sin embargo tambin es posible

    escribir una sentencia en varias lneas, cuidando de no dejar instrucciones o cadenas de caracteres

    incompletas en una lneas.

    Comentarios.- Los comentarios se debern colocar entre los caracteres /* y */. Todo lo que se

    encuentre como comentario no se incluir como parte del programa al compilar este, de tal manera que se

    pueden utilizar comentarios que abarquen varias lneas e inclusive pginas, sin que el tamao del archivo

    objeto que se obtiene se incremente.

    Cada inicio de comentario /* deber tener un fin de comentario */. NO debern utilizarse

    comentarios anidados, es decir que dentro de un comentario no debe de haber otro comentario.

  • Lenguaje C

    Pgina 21

    Otra manera de presentar comentario exclusivamente en Borland C++ es utilizando el doble

    diagonal (//) al principio de la lnea, teniendo el cuidado de antepones estos caracteres por cada lnea del

    comentario que se est realizando.

    Bloques de cdigo { }.-El programa principal de un programa en C++, que est contenido dentro de

    la funcin main( ), est delimitada por las llaves { }.

    El hecho de utilizar estas llaves en la funcin principal, no implica que solo en esta se pueda

    implementar, sino que es la base sobre la cual se apoya Borland C++ para agrupar sentencias dentro de

    bloques. Estas llaves, entonces, indican que lo encerrado ah, puede interpretarse como un bloque de

    sentencias. Estas llaves son indispensables para los siguientes casos:

    Para indicar el principio y el final de una funcin, como el caso de la funcin main( ). Cuando una instruccin necesite agrupar ms de una sentencia. Se pueden utilizar estas llaves con una sola instruccin an cuando no es necesaria encerrarla entre

    llaves, salvo en casos especiales que posteriormente se analizarn.

    La directiva #define.- La directiva #define se utiliza para definir un identificador y una cadena, misma que ser sustituida por el identificador cada vez que se encuentre en el archivo fuente. Al

    identificador se le denomina nombre de macro y al proceso de reemplazamiento sustitucin de macro. El formato de esta directiva es:

    #define nombre_de_macro cadena

    nombre_de_macro = Es el identificador. cadena = Contenido por el que reemplazar el identificador en el programa en el momento de compilar el mismo.

    A continuacin se presenta un ejemplo en donde se hace uso de la directiva #define:

    #define ita Programacin en Borland C++

    main( )

    { printf (ita); }

    En este ejemplo el identificador es ita y el contenido de la cadena es Programacin en Borland C++. El

    ejemplo anterior es equivalente al siguiente ejemplo que no usa la directiva #define:

    main( )

    { printf (Programacin en Borland C++); }

    Consideraciones de la directiva:

    Como podr observar en el ejemplo, las cadenas de caracteres se encierran entre comillas ( ). Si el identificador aparece dentro de una cadena no se llevan a cabo sustituciones. De esta forma si en

    nuestro ejemplo colocsemos la instruccin:

    printf(ita)

    en lugar de desplegarse Programacin en Borland C++ se desplegar simplemente ita

  • Pgina 22

    Si usted escribe una cadena muy larga, esta se puede continuar en la siguiente lnea, colocando una barra invertida (\), al final de la lnea de la siguiente forma:

    #define lin_larga Este mensaje ocupa ms de una \

    lnea ya que es muy larga

    Funciones de entrada y salida en pantalla.

    Existen dos funciones bsicas para la Entrada/Salida de datos por pantalla, estas son las funciones

    printf y scanf. Estas funciones ofrecen posibilidades con formatos de datos variados. Al utilizar la funcin

    printf, se puede especificar en ella lo siguiente:

    El texto que desee escribir. El formato de escritura (entero, cadena, nmero de decimales, espacios e imprimir). Los nombres de las variables (o expresiones aritmticas).

    En el caso de scanf se puede especificar el formato de lectura de datos, as como algunos

    modificadores que permiten cambiar la forma de captura.

    Adicional a estas funciones existen otras cuatro funciones tambin de

    Funcin: printf() stdio.h .- Escribe en la salida estndar los argumentos que componen las

    variables, con el formato especificado. Sintaxis:

    printf(const char formato, arg1, arg2,...); arg1, arg2,... = Nombre de las variables o expresiones, cuyos valores o resulta dos se desplegarn, estos debern corresponder al orden que guarde el formato.

    formato = Consta de dos tipos de elementos, los caracteres que se muestran en pantalla y las rdenes de formato que indican como se mostrarn los argumentos.

    Los caracteres que se muestran en pantalla, incluyen espacios, signos de puntuacin y cualquier

    carcter que se pueda desplegar en pantalla.

    Las rdenes de formato comienzan con el signo de tanto por ciento (%) y le sigue el cdigo de

    formato. Las rdenes de formato se presentan en la siguiente tabla:

    Cdigo Formato

    %c Carcter nico

    %d Enteros decimales con signo

    %i Enteros decimales con signo

    %ld Enteros largos con signo

    %e Notacin cientfica (e minscula)

    %E Notacin cientfica (E mayscula)

    %f Coma flotante

    %o Octal sin signo

    %s Cadena de caracteres

  • Lenguaje C

    Pgina 23

    %u Enteros decimales sin signo

    %x Hexadecimales sin signo (letras minsculas)

    %X Hexadecimales sin signo (letras maysculas)

    %% Imprimir el signo %

    Consideraciones que se deben tomar en cuenta con los formatos

    Debe haber exactamente el mismo nmero de argumentos que rdenes de formato. Los argumentos se asocian en el mismo orden expuesto en el formato, es decir si el primer argumento

    es entero y el segundo es float, entonces el formato deber guardar el mismo orden.

    Si no hay suficientes argumentos que asociar a las rdenes de formato, la salida queda indefinida. Si hay ms argumentos que rdenes de formato, se descarta el resto de los argumentos.

    Funcin: scanf( ) stdio.h .- Lee de la entrada estndar los argumentos que componen las

    variables, con el formato especificado y los convierte de acuerdo a este. Sintaxis:

    scanf (formato, &arg1, &arg2,...); &arg1, &arg2,... = Nombre de las variables, donde se guardar el valor introducido. Estos debern corresponder al orden que guarde el formato. El smbolo & (ampersand) indica, el calculo

    de la direccin, donde se macenar la variable. Este operador es indispensable para

    cualquier tipo de variable, excepto para cadenas de caracteres (an cuando si se puede

    incluir).

    formato = Consiste de tres clases de caracteres. Los caracteres que no sean caracteres en blanco, los espacios en blanco y los especificadores de formato que indican como se convertirn los

    argumentos.

    Nota: Un error muy persistente, al escribir programas en Borland C++, es OLVIDAR colocar el

    prefijo & a las variables que se utilicen con la funcin scanf( ). Tome muy en cuenta esta precaucin al

    escribir el cdigo de su programa.

    Las rdenes de formato comienzan con el signo de tanto por ciento (%) y le sigue el cdigo de

    formato. Las rdenes de formato se presentan en la siguiente tabla. Tome muy en cuenta que al capturar

    los datos, estos pueden estar separados por espacios, tabuladores o retornos de carro (). El ltimo dato

    que se capture deber de terminarse con la tecla Enter ().

    Cdigo Formato

    %c Leer un nico carcter

    %d Leer un entero decimal

    %i Leer un entero decimal

    %e Leer un nmero de tipo de coma flotante

    %f Leer un nmero de tipo de coma flotante

    %h Leer un entero corto

    %o Leer un nmero octal

    %s Leer una cadena

  • Pgina 24

    %x Leer un nmero hexadecimal

    Consideraciones que se deben de tomar en cuenta con los formatos:

    Todas las variables utilizadas para recibir valores, se deben pasar por sus direcciones (precedindolos con el smbolo &).

    Debe haber exactamente el mismo nmero de argumentos que de rdenes de formato. Los argumentos se asocian en el mismo orden expuesto en el formato, es decir si el primer argumento

    es entero y el segundo es float, entonces el formato deber guardar el mismo orden.

    Si no hay suficientes argumentos que asociar a las rdenes de formato, se solicitan todos los datos especificados en el formato, pero slo se asignan los de los argumentos especificados.

    Si hay ms argumentos que rdenes de formato, slo se solicitarn los valores especificados en el formato sin que los argumentos de ms obtengan algn valor.

    Los espacios en blanco del comienzo de un dato no se tienen en cuenta, excepto si el formato es %c. En una cadena la conversin se interrumpe en el primer carcter en blanco o en el primer retorno de

    carro.

    Un carcter que no sea espacio en blanco, ocasiona que se lea este carcter al introducir los datos y que scanf( ) no lo tome en cuenta como dato valido. Por ejemplo, %d;%d da lugar a que scanf() lea

    primero un entero, seguidamente lea y descarte el punto y coma(;) y, finalmente, lea otro nmero. Cabe

    mencionar que si scanf( ) no encuentra el caracter (;), entonces no se asignara el valor del siguiente

    entero a su variable.

    Funciones de Video.

    Funcin: gotoxy( ) conio.h .- Sita el cursor en la posicin que se indica por col,fil. Si alguna de

    ellas fuera invlida entonces no ocurre nada. Sintaxis:

    void gotoxy(int col,int fil) col = Columna donde se colocar el cursor. fil = Fila donde se colocar el cursor.

    Funcin: clreol( ) conio.h .- Limpia desde la posicin del cursor hasta el final de la lnea. La

    posicin del cursor no cambia. Sintaxis:

    void clreol(void)

    Funcin: insline( ) conio.h .- Inserta una lnea en blanco en la posicin actual del cursor. Las

    lneas siguientes, se desplazan hacia abajo y la ltima se pierde. Sintaxis:

    void insline(void)

    Funcin: delline( ) conio.h .- Elimina la lnea donde se encuentra el cursor. Las lneas

    siguientes se desplazan hacia arriba una posicin rellenando el hueco de la lnea borrada. Sintaxis:

    void delline(void)

  • Lenguaje C

    Pgina 25

    Uso de cadenas de caracteres.

    En Borland C++, no existe un tipo cadena definido, este se puede obtener como un arreglo de

    caracteres. An cuando no se va a profundizar en esta seccin acerca del uso de arreglos, si se comentarn

    algunos conceptos para manipular arreglos de caracteres a los que les vamos a nombrar cadenas. El

    siguiente, es el formato para declarar cadenas de caracteres:

    char nombre_variable [tamao char = Tipo de carcter. nombre_variable = Nombre de la variable. tamao = Longitud de la cadena

    Consideraciones para manejar cadenas:

    Se deber considerar al declarar cadenas, que la longitud deber ser un nmero mayor a la longitud que se desea almacenar. Es decir, si desea una cadena de 10 caracteres, deber declarar un tamao de 11

    caracteres.

    Lo anterior se debe a que es necesario indicar la terminacin de la cadena, y esto se realiza con el carcter \0 (diagonal cero), misma que Turbo C reconoce como la terminacin de la cadena.

    NO se pueden hacer asignaciones directas. Para ello se deber utilizar la funcin strcpy de la biblioteca o crear una funcin para copiar cadenas.

    Para capturar cadenas desde el teclado con la funcin scanf( ), deber utilizar la orden de formato %s.

    Inicializacin de cadenas.- As como es posible inicializar variables numricas o carcter al

    momento de declararlas, tambin es posible inicializar cadenas en la declaracin de las mismas. Esto se

    realiza encerrando entre comillas el texto que se desea asignar a la cadena. por ejemplo:

    char cad[24 = Adelante! eres el mejor;

    Asignacin con la funcin: strcpy( ) string.h .- Ya se mencion que no se puede asignar

    texto directamente a un variable del tipo cadena, en lugar de ello se puede utilizar la funcin strcpy( )

    misma que permite copiar una cadena en otra cadena. Sintaxis:

    char strcpy (char cad_destino, const char cad_origen)

    cad_destino = variable a donde se copiar cad_origen = variable o constante que se copiar.

    Nota: Cuando en la sintaxis se incluya el tipo const char, se puede utilizar una variable tipo cadena o una cadena encerrada entre comillas. Al utilizar esta funcin se puede emplear como origen, una cadena

    constante o una variable de tipo cadena.

    Funcin: puts( ) stdio.h .- Despliega en pantalla una cadena. El caracter nulo de la cadena,

    sirve para generar un salto de lnea. Sintaxis:

  • Pgina 26

    int puts (const char *cad) *cad = cadena a desplegar

    Funcin: gets( ) stdio.h .- Solicita caracteres, mismos que se asignarn a una cadena. El

    salto de lnea se convierte en caracter nulo. Sintaxis:

    char gets(char *cad) *cad = Cadena donde se almacenarn los caracteres.

    Otras funciones.- Se describirn en este apartado, dos funciones que utilizaremos en nuestros

    primeros ejercicios, a la vez que incluiremos una instruccin que nos servir para hacer una pausa al final

    del programa.

    Funcin sleep( ) dos.h .- Esta funcin suspende la ejecucin del programa durante cierta

    cantidad de segundos. Sintaxis:

    sleep(tiempo) tiempo = La cantidad de segundos de espera.

    Funcin: kbhit( ) string.h .- Verifica si se ha presionado alguna tecla. Sintaxis:

    int kbhit( );

    Si se ha presionado alguna, tecla, devuelve un valor diferente de cero, en caso contrario devuelve 0.

    Esta funcin la utilizaremos en combinacin con la instruccin while, y nos permitir detener el

    programa hasta que se presione alguna tecla.

  • Lenguaje C

    Pgina 27

    Errores ms comunes:

    Indefined symbol xxxx in function main Indefinido el smbolo xxxx en la funcin main

    Este error se debe a que se pretende utilizar alguna variable que no ha sido declarada previamente,

    declare esta variable con algn tipo.

    Undefined symbol yyyy in module NOMPROG.CPP

    Indefinido el smbolo yyyy en el mdulo NOMPROG.CPP

    Este error puede implicar la inexistencia del smbolo yyyy, mismo que podra estar mal escrito o no

    encontrarse dentro de las funciones de Borland C++. Por ejemplo en lugar de escribir clrscr,

    escribir clrscr. Otra causa puede ser, el no haber declarado con la directiva #include, el

    encabezado de la funcin.

    Udeterminated string or characters constant in function main Indeterminada la string o constante caracter en la funcin main

    Esto puede ser ocasionado por haber escrito una cadena de caracteres y no haberla cerrado o bien

    un caracter y no haber cerrado la definicin del mismo.

    Function call ) missing in function main En una funcin invocada con parntesis ), en la funcin main

    Se utiliz una funcin con parmetros y no se cerr el correspondiente parntesis de esta funcin.

    Compound statement missing } in function main Falta la llave } correspondiente el la funcin main

    Al agrupar funciones por medio de llaves, falta cerrar algn bloque de instrucciones por medio de la

    llave }.

    Type mismatch in redeclaration of a Tipos diferentes en la redeclaracin de a

    Se ha declarado ms de una vez con tipos de datos diferentes, la variable o constante a, utilice

    otra variable para poder utilizarla.

    Declaration sintax error Error de sintaxis en la declaracin

    El compilador ha detectado un error en la forma de escribir instrucciones o palabras reservadas.

    Puede ser que en lugar de escribir double, escribi douvle o bien que falt un ; al final.

    Statement missing ; in function main Falta el punto y coma ; al final de la declaracin.

    En este caso es probable que el error se marque una lnea posterior a donde falta el smbolo.

    Correccin de errores.- Cuando ocurre un error, el control del entorno de programacin se mueve a la

    ventana de mensajes, donde se muestran los errores que se detectaron en la compilacin, y en forma

  • Pgina 28

    simultnea se marca en el editor, la lnea en la que se encuentra el error. Para corregir el error siga los

    siguientes pasos:

    Paso 1 Lea el error ocasionado (puede utilizar las flechas , para desplazar el texto del error y

    observarlo completamente, para aquellos mensajes muy largos.

    Paso 2 Una vez ledo el mensaje de error, puede pasar a corregirlo, presionando la tecla de conmutacin

    F6 y de esta forma estar en la lnea del programa donde se detect el error.

    Paso 3 Proceda a corregir el error. Puede tomar la tabla anterior como gua para corregir errores.

    Paso 4 En caso de que existiesen ms errores y desee observar cual el siguiente error de la lista,

    presione la combinacin Alt+F8 y si desea el error anterior, presione la combinacin Alt+F7. Si

    existen ms errores contine en el paso 4, en caso contrario contine en el paso 5.

    Paso 5 Una vez corregido el error, puede volver a compilar el programa, presionando la tecla F9.

    Manejo de advertencias.- En el caso de las advertencias, estas no son tan fatales, como podran

    ser los errores, y es posible hacer algunas modificaciones al programa para eliminarlas, sin embargo, hay

    algunas que son inherentes de algunas instrucciones o funciones y no tienen necesidad de ser eliminadas,

    pero si canceladas por medio de las opciones options, compiler, errors, o warnings del men principal.

  • Lenguaje C

    Pgina 29

    // programa que ilustra el uso de las funciones printf y scanf

    #include

    #include

    #include

    void main()

    {

    int entero1, entero2;

    long largo1, largo2;

    float real1, real2;

    char caracter1, caracter2;

    clrscr();

    printf("Ingrese dos valores enteros ");

    scanf("%i %d",&entero1,&entero2);

    printf("\n\nIngrese dos valores largos ");

    scanf("%ld %ld",&largo1, &largo2);

    printf("\n\nIngrese dos valores reles ");

    scanf("%f %f",&real1, &real2);

    printf("\n\nIngrese dos caracteres ");

    cin >> caracter1 >> caracter2;

    printf("\n\n\nLos dos valores enteros multiplicados por 2 son %d y %i"

    ,entero1 * 2, entero2 * 2);

    printf("\n\nLos enteros largos son %15ld y %3ld",largo1, largo2);

    printf("\n\nLos numeros reales divididos por dos son %f y %9.3f", real1/2,

    real2/2);

    printf("\n\nLos dos caracteres capturados son %c y %c",caracter1, caracter2);

    getch();

    }

  • Pgina 30

    #include

    #include

    #include

    void main()

    {

    clrscr();

    printf("Primera linea de la pantalla ");

    gotoxy(10,10); printf("Linea numero diez de la pantalla");

    gotoxy(10,11); printf("Linea numero once de la pantalla");

    gotoxy(10,12); printf("Linea numero doce de la pantalla");

    gotoxy(10,25); printf("Ultima linea de la pantalla");

    gotoxy(40,20); printf(".........Presione cualquier tecla ");

    while(!kbhit());

    gotoxy(20,11); clreol();

    gotoxy(1,20); printf("Se limpio la linea once a partir de la columna 20");

    sleep(10);

    gotoxy(1,20); delline();

    gotoxy(1,5); printf("Se elimino la linea 20, observe la linea 25");

    sleep(10);

    gotoxy(40,13); insline();

    gotoxy(1,13); printf("Se acaba de insertar esta linea, observe la linea 25");

    sleep(10);

    }

  • Lenguaje C

    Pgina 31

    Ejercicios de Programacin

    Unidad II

    1. Realizar un programa que lea cualquier temperatura dada en grados centgrados y los convierta en

    los correspondientes grados Fahrenheith. La ecuacin para efectuar la conversin est dada por: oF = (9/5*oC) + 32

    2. Calcular el resultado de la siguiente expresin, debiendo solicitar al usuario los valores de la

    variable g y la variable a las cuales deben ser del tipo real, y deber de formatear la salida de

    manera que el resultado se despliegue con slo tres valores decimales despus del punto:

    M = (25+g)2-(g-2)*a

    3. Calcular la velocidad de un auto que recorre D kilmetros en T minutos. El resultado lo debe de

    representar en unidades de Km/hr.

    4. Cual es el inters generado y el capital acumulado durante un ao, por un capital C, a una tasa de

    inters I anual. (Inters = (C*I)/100. Capital = C + Inters)

    5. En una rifa cuyos nmeros constaban de cuatro dgitos se vendieron n boletos, si cada boleto se

    vendi a p pesos y el costo fue de c pesos. Cual fue la ganancia y cual es el costo de los boletos no

    vendidos?. (Suponga que el boleto premiado fue vendido).

    6. Se necesita calcular la cantidad a pagar por el consumo de energa elctrica. Los datos que se

    necesitan son los siguientes: Precio por KW, %de cargo de mantenimiento, % IVA y consumo de

    energa.

    7. Capture el radio de un crculo y determine el rea y longitud de su circunferencia.

    8. Se desea construir una barda con medidas de b1 x b2 mts. con tabiques, de t1 x t2 cm. Que

    cantidad de tabiques se necesitan y cual sera el costo por la compra del tabique si cada uno cuesta

    p pesos.

    9. Una persona tiene un salario quincenal de Q pesos, y labora D das, si se le retiene el 2.35% a su

    salario, cual es la cantidad que esta persona percibe?

    10. Realice un programa en el cual obtenga una pantalla de presentacin personal en la cual se indique el

    nombre de la escuela, la especialidad, sus datos personales, etc. De manera que se presente

    centrado en la pantalla y de preferencia utilice colores para su presentacin.

  • Lenguaje C

    Pgina 33

    Unidad .

    ESTRUCTURAS DE CONTROL

    El flujo de instrucciones de cualquier aplicacin de programacin, contiene como parte fundamental,

    el uso de sentencias de control, mismas que le permiten marcar el camino que tendr el programa. Esto

    quiere decir que las sentencias de control, permiten decidir cul ser el camino a seguir dentro del

    programa, de acuerdo al resultado de la evaluacin de alguna o algunas condiciones. Esto se logra por medio

    de dos sentencias primarias, que son la sentencia if y la sentencia switch. A estas sentencias tambin se

    les llega a nombrar sentencias selectivas, ya que esta seleccin la hacen por medio de resultados lgicos

    basndose en una evaluacin. Recordemos que los valores lgicos en Borland C++ son indicados por la

    presencia o ausencia de valor.

    Adicional a las sentencias primarias se estudiarn tambin los ifs y switchs anidados, as como la

    forma de reemplazar la sentencia if por el operador ?.

    Dentro de esta misma unidad trataremos los ciclos, dentro de los cuales se incluyen las sentencias

    for, while, y do/while. Adems se incluyen las sentencias break y continue as como la funcin exit,

    mismas que sirven para alterar la forma en la que puede operar o terminar un ciclo o programa.

    Sentencias condicionales.

    Las sentencias condicionales son aquellas que permiten ejecutar uno u otro grupo de sentencias en

    funcin del resultado de una evaluacin. Esta evaluacin se hace por medio de expresiones lgicas y/o

    relacionales, y el resultado se obtiene como un valor lgico que permite decidir el flujo que se seguir.

    Nuestra primer sentencia condicional que observaremos es la sentencia if que tiene los siguientes

    formatos:

    if(condicin)sentencia; if(condicin) { secuencia_de_sentencias; } if(condicin)sentencia1; else sentencia2; if(condicin) { secuencia_de_sentencias1; } else { secuencia_de_sentencias2; } An cuando se trata de una sola sentencia if, se muestran las variaciones que puede contener,

    utilizndola para ejecutar una o ms de una sentencia.

    3

  • Pgina 34

    if con una sla sentencia.- En este caso se evala la condicin y en caso de ser cierta, entonces se

    ejecuta la sentencia, en caso contrario se sigue el flujo de instrucciones con la siguiente instruccin a la

    sentencia if.

    Ejemplo: Declare una variable entera, asgnele un valor y evale si es mayor que 15, desplegando un mensaje en caso afirmativo.

    Listado cdigo fuente del programa IF1.cpp

    // Programa que muestra el enunciado if de una sola sentencia

    #include

    #include

    void main()

    {

    int x;

    cout > x;

    if (x > 15)

    cout x;

    if (x > 15)

    {

    y = x * .3;

    cout

  • Lenguaje C

    Pgina 35

    if-else con una sola sentencia.- En este primer caso de if-else, se tiene la doble alternativa de

    ejecutar una sentencia, ya sea sentencia1 o sentencia2, en funcin del resultado de la evaluacin.

    Ejemplo: Declare una variable de tipo entero y asgnele un valor y evale si este es mayor que 45. En caso de que sea verdadero que despliegue un mensaje mostrando el valor de la variable y diciendo que es mayor que 45. En caso contrario que despliegue el mensaje de que el valor es menor que 45.

    Listado cdigo fuente del programa IF3.cpp

    // Programa que muestra el enunciado if-else de una sola sentencia

    #include

    #include

    void main()

    {

    int x;

    cout > x;

    if (x > 45)

    cout 5000)

    {

  • Pgina 36

    impuesto = salario * .15;

    ahorro = salario * .05;

    }

    else

    {

    impuesto = salario * .1;

    ahorro = salario * .02;

    }

    cout

  • Lenguaje C

    Pgina 37

    cout A;

    if (A10)

    if (A20) cout

  • Pgina 38

    cin >> salario;

    if (salario

  • Lenguaje C

    Pgina 39

    Si se utilizan constantes carcter, estas se convertirn automticamente a sus valores enteros. El case puede contener sentencias vacas, entonces y por lo tanto se puede hacer con esto sentencias

    comunes. En este caso el control contina en el siguiente case hasta encontrar una sentencia break o el

    final de switch.

    Si la secuencia de sentencias de un case, no tiene sentencia break, el flujo del programa contina por los siguientes case hasta encontrar una sentencia break o el final del switch.

    Una sentencia Switch es muy utilizada en la seleccin de opciones dentro de un men, como se

    ilustra en el siguiente ejemplo:

    Ejemplo: Despliegue el siguiente men y permita capturar una opcin: 1. Operacin de suma 2. Operacin de resta 3. Operacin de divisin 4. Operacin de multiplicacin Opcin ==> Si la opcin no se encuentra en el rango de 1 a 4, entonces lo deber atrapar por medio de la opcin default que se puede incluir en el switch y deber reflejar un mensaje en el que se debe seleccionar alguna opcin indicada. Recuerde que es necesario colocar una sentencia break al terminar la secuencia de sentencias para que el programa termine de ejecutar las instrucciones correspondientes al case. Switchs anidados.- As como se puede anidar la sentencia if, tambin es posible anidar la

    sentencia switch. Esta se realiza dentro e los case.

  • Pgina 40

    Estructuraras repetitivas.

    Las estructuras repetitivas, tambin conocidas como ciclos o bucles, son las que permiten

    implementar acciones que deben ejecutarse en forma repetitiva. Permiten entonces que un conjunto de

    instrucciones se repitan hasta que se alcance cierta condicin. Las estructuras repetitivas que contiene

    Borland C++ son el for, while y do/while.

    Sentencia for.- Esta estructura repetitiva, varia en su funcionamiento con respecto a otros

    lenguajes como Turbo Pascal, BASIC, modula,... etc., mismos en los que el numero de iteraciones es

    conocido de antemano. En Borland C++, el for es una estructura muy verstil, que proporciona potencia y

    flexibilidad. El formato de esta sentencia es:

    for (inicializacin ; condicin ; incremento) sentencia;

    inicializacin : Asignacin que se permite para inicializar la variable o las variables de control del ciclo. condicin : Expresin relacional que determina cuando finaliza el ciclo. Este continuara mientras la condicin sea verdadera.

    incremento: Determina como cambia la variable de control despus de cada iteracin. Sentencia: Puede ser una sentencia o una secuencia de sentencias como bloque entre llaves.

    El enunciado del bucle for tiene tres partes opcionales. La primera que inicializa las variables de

    control del bucle (C++ permite que utilice ms de una variable de control del bucle). La segunda parte del

    bucle es la condicin que determina si ste realza otra iteracin (algo parecido a la sentencia if sin la

    palabra clave if). La ltima parte del bucle for es la clusula que modifica las variables de control del bucle,

    y a menudo esto simplemente es una operacin de autoincremento y/o decremento.

    El listado siguiente contiene el cdigo fuente del programa FOR1.CPP. Este programa le pide que

    defina un rango de enteros especificando los lmites inferior y superior. Luego el programa calcula la suma

    de los enteros, as como el valor promedio en el rango que especific.

    Listado cdigo fuente del programa FOR1.CPP

    // Programa que calcula una suma y su promedio de un rango de

    // enteros usando un bucle for

    #include

    #include

    int main()

    {

    int cont = 0;

    double sum = 0.0;

    int inicio, fin, temp;

    printf(Teclee el primer entero );

    scanf(%d,&inicio);

    printf(\nTeclee el segundo entero );

    scanf(%d,&fin);

    if (inicio > fin)

    {

  • Lenguaje C

    Pgina 41

    temp = inicio;

    inicio = fin;

    fin = temp;

    }

    for (i = inicio; i

  • Pgina 42

    Sentencia break.- Cuando se estudi la sentencia switch, se utiliz la sentencia break para

    terminar un case. Esta sentencia tambin se puede utilizar con cualquier estructura repetitiva, en cuyo

    caso forza a la terminacin del ciclo, continuando el control en la siguiente lnea de este.

    Ejemplo: Del rango de nmeros del 43 al 100, genere nmeros con incrementos de 4 y despliegue nicamente los 10 primeros. Realice este programa usando la sentencia break y con las sentencias for y do-while.

    Sentencia continue.- Esta sentencia es similar a la sentencia break, con la diferencia que en lugar

    de truncar la ejecucin del ciclo, enva el control a la lnea donde se evala la condicin. Saltando las

    instrucciones siguientes a la sentencia. Cabe mencionar que no reinicializa la cuanta del ciclo, sino

    nicamente traslada el control.

    Ejemplo: Tomando la serie 3, 7, 11, 15, 19,... despliegue los 30 primeros nmeros, excepto los que se encuentran en el rango del 20 al 35. Utilice la sentencia for y la sentencia do-while.

  • Lenguaje C

    Pgina 43

    Ejercicios de Programacin

    Unidad III

    1. Realizar un programa en el cual el usuario debe de proporcionar valores al azar y en cuanto de

    entrada a un valor que est comprendido entre el valor 20 a 35, en ese momento debe de abandonar

    el programa. Mientras no se de un valor comprendido entre este rango, el programa deber

    despegar un mensaje indicando que el programa contina.

    2. Escribir un programa en el cual se imprima un * en el primer rengln, en el segundo rengln dos

    asteriscos, en el tercero tres y as sucesivamente hasta completar un nmero el cual lo debe de

    indicar el usuario.

    3. En un da (24 horas) se toma cada hora la temperatura. Realizar un programa que lea las

    temperaturas del da, determine y muestre la temperatura media, la temperatura mas alta y la

    temperatura mas baja.

    4. Escriba un programa que calcule la suma 1+1/2+1/3+1/4+....+1/n donde n se especifica por el usuario.

    5. Realice un programa en el cual se pida al usuario que introduzca una serie de nmeros enteros

    positivos y negativos, dando por terminada la entrada de datos cuando se introduzca el nmero cero

    (0). El programa deber determinar el total de los nmeros introducidos a acepcin del cero y

    debiendo adems de indicar cuantos son positivos y cuantos son negativos.

    6. Escribir un programa que encuentre el primer valor de n para el cual la siguiente suma exceda a

    10000: 1+2+3+4+.....+n.

    7. Escriba un programa que sume una serie de enteros. Suponga que el primer entero ledo desde el

    teclado especifique el numero de valores que faltan por introducirse. Su programa deber leer un

    valor cada vez que sacnf sea ejecutado. Una secuencia de entrada tpica pudiera ser:

    5 100 200 300 400 500

    8. Escriba un programa que calcule e imprima el promedio de varios enteros. Suponga que el ltimo

    valor ledo mediante scanf es el centinela 9999. Una secuencia tpica sera: 10 8 11 7 9 9999

    indicando que debe calcularse el promedio de todos los valores que preceden al 9999.

    9. La funcin factorial se utiliza con frecuencia en problemas de probabilidades. Escriba un programa

    que evale los factoriales de los enteros del 1 al 5. Imprima el resultado el resultado en forma

    tabular.

    10. Escriba un programa que imprima los siguientes patrones por separado, uno debajo del siguiente.

    Utilice ciclos for para generar los patrones. Todos los asteriscos debern ser impresos por un solo

    enunciado printf(*):

    * ********** ********** *

    ** ********* ********* **

    *** ******** ******** ***

    **** ******* ******* ****

    ***** ****** ****** *****

    ****** ***** ***** ******

    ******* **** **** *******

    ******** *** *** ********

    ********* ** ** *********

    ********** * * **********

  • Lenguaje C

    Pgina 45

    Unidad .

    ARREGLOS

    En esta unidad estudiaremos los arreglos unidimensionales que son llamados tambin vectores,

    arreglos bidimensionales llamados tambin matrices y los arreglos multidimensionales.

    Para poder utilizar arreglos es necesario realizar una declaracin de los mismos; proceso en el

    cual se define el tipo, tamao y nombre del arreglo.

    An cuando no lo podamos ver, en forma explcita, los arreglos se almacenan en localidades

    consecutivas de memoria y son accesadas por medio de una base, misma que es la direccin del primer

    elemento y desde esta se realizan accesos relativos para leer/escribir informacin en el arreglo.

    Los elementos que participan en el manejo de arreglos son: El nombre del arreglo, el o los

    ndices por medio del cual se accesa la informacin relativa a un elemento del arreglo.

    Para operar de forma adecuada los arreglos, estos se deben de iniciar con ceros o con los

    valores que se necesiten. Es posible trabajar con ms de un arreglo de diferente tipo y con informacin

    diferente cada arreglo, es decir que se puede tener un vector de nmeros enteros y una matriz de

    valores tipo flotante.

    Como un complemento al estudio de los arreglos, se ha introducido en esta unidad el uso de

    nmeros aleatorios. Estos nos servirn como apoyo en la captura de datos numricos.

    Declaracin de arreglos.

    Un arreglo es una estructura de datos que es utilizada para almacenar un conjunto de datos del

    mismo tipo. Para utilizar arreglos es necesario declararlos e introducirles datos iniciales, debido a que

    cuando se declaran, tienen valores indefinidos (basura).

    Los arreglos se almacenan ntegramente en memoria RAM, y se pierden al apagar la

    computadora.

    Un arreglo se identifica por su nombre, mismo que es un identificador vlido. Los componentes

    individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo

    seguido del ndice o ndices entre corchetes .

    Los arreglos que se pueden declarar son unidimensionales, bidimensionales y

    multidimensionales.

    Arreglo unidimensional.- El formato para declarar los arreglos unidimensionales es el

    siguiente:

    tipo nom_variable tamao;

    tipo = Tipo de datos vlido (int, float, char, double, etc.) nom_variable = Nombre de identificador vlido tamao = Nmero de elementos que contiene el arreglo.

    Podemos definir a tipo como la base que tendr el arreglo, es decir de que tipo va a almacenar cada elemento.

    El espacio que ocupa un arreglo depende del tipo de datos y de la cantidad de elementos que

    tenga el mismo.

    4

  • Pgina 46

    En el siguiente ejemplo se declara un arreglo llamado Meses con 20 elementos enteros.

    int Meses 20;

    Esta declaracin es un arreglo unidimensional, tambin llamados vectores o listas. Su representacin

    grfica es la siguiente:

    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

    Meses

    Donde Meses es el nombre del arreglo, y los nmeros superiores son el ndice de cada elemento.

    Nota: Los ndices inician con el valor cero, de tal forma que si declara una lista de 10

    elementos, el primer elemento tiene ndice cero y el ltimo 9.

    Arreglo bidimensional.- Este tipo de arreglos, se basa en el concepto de dos dimensiones y su

    formato es el siguiente:

    Tipo nom_variable tam 1 dimtam 2 dim.

    Tipo = Tipo vlido de datos (int, char, float, ...) nom_variable = Identificador de la variable tam 1 dim = Tamao de la primera dimensin tam 2 dim = Tamao de la segunda dimensin

    La diferencia entre esta definicin bidimensional y la unidimensional estriba, en el nmero de

    dimensiones, mismas que se definen por separado. Cuando trabajamos con arreglos bidimensionales, la

    primera dimensin indica las filas y la segunda las columnas.

    La declaracin: double ciclo510; define a la variable ciclo con dos dimensiones (5 y 10). La

    siguiente es su representacin grfica:

    0 1 2 3 4 5 6 7 8 9

    0

    1 x Filas

    Ciclo 2 (1 Dim)

    3 x

    4 x

    Columnas (2 Dim)

    Consta de 5x10=50 elementos, y los elementos que estn marcados con una x son: ciclo[1[2,

    ciclo[3[5 y ciclo[4[9. El total de espacio que ocupa esta variable es de 50*4=200 bytes, tomando en

    consideracin 50 elementos del tipo double (cada double ocupa 4 bytes).

    Nota: La interpretacin que tomaremos para las dos dimensiones son: Para la 1 dimensin filas

    y para la 2 dimensin columnas. As ciclo[2[4 denota el elemento que se encuentra en la fila 2 y

    columna 4.

    Arreglos multidimensionales.- Estos arreglos son los que se definen con ms de dos

    dimensiones. En Borland C++, no existe lmite para el nmero de dimensiones que se puedan declarar

    para un arreglo ms que el limitado por la memoria que puedan ocupar los mismos.

  • Lenguaje C

    Pgina 47

    A los arreglos de tres dimensiones se les conoce como tridimensionales y por lo general es hasta

    este tipo de dimensin que se utiliza comnmente, ya que mas de tres, ocupan una mayor cantidad de

    memoria y se puede perder el control de los mismos de parte del usuario por la interpretacin de cada

    dimensin.

    El formato del arreglo tridimensional es el siguiente:

    tipo nom_var [tam 1 dim [tam 2 dim... [tam N dim La siguiente declaracin define un arreglo tridimensional:

    int arbol [5[5[4

    Esta declaracin contiene 5x5x4=100 elementos y ocupa un total de 100*2=200 bytes de memoria.

    Inicializacin y acceso a elementos.

    Borland C++ no inicializa en forma automtica los arreglos, pero permite que estas se inicializen

    al momento de declararlas, encerrando los valores de inicio entre llaves y separando a cada elemento

    por comas.

    Unidimensionales.- Si queremos declarar la variable maq con 5 elementos e inicializar cada

    elemento con cero, lo podemos hacer de la siguiente manera:

    int maq[5 = {0,0,0,0,0}

    Sin embargo si la variable se declara de 100 elementos en lugar de 5, tenemos el inconveniente

    de escribir cien veces el cero entre llaves para poder inicializar el arreglo. En lugar de esto podemos

    utilizar un ciclo for para que lo haga elemento por elemento:

    int maq [100, elem ;

    for (elem=0 ; elem100 ; elem++ ) maq[elem=0;

    Observe como no hay necesidad de inicializar cada elemento por separado, debido a que los

    elementos de un arreglo se accesan por medio del ndice numrico.

    Como se observ en el ciclo for, se puede accesar cualquier elemento de un arreglo

    unidimensional especificando el nombre de la variable y el ndice que se desea accesar, del cual podemos

    deducir que se puede almacenar cualquier valor en cualquier elemento o leer el contenido de cualquier

    elemento. Por ejemplo si deseamos almacenar el valor 5 en el elemento 75 del arreglo maq, escribimos:

    maq[75=5;

    o si queremos copiar el valor almacenado en el elemento 37 del arreglo maq en la variable b, escribimos:

    b = maq[37;

    Bidimensionales.- Si tenemos un arreglo de 2x2, lo podemos inicializar en la declaracin de la

    siguiente manera:

    int tot [2[2 = {0,0,0,0};

  • Pgina 48

    Donde los dos primeros ceros corresponden a las posiciones 0,0 y 0,1, es decir que se inicializa por

    orden de filas, siendo los dos ltimos ceros para los elementos 1,0 y 1,1.

    Sin embargo al igual que con los arreglos unidimensionales, si tenemos un arreglo grande,

    resultara tedioso escribir tanto cero entre llaves, por lo tanto se puede proceder a utilizar el ciclo for

    para inicializar el arreglo, pero ahora con una variante. En lugar de un ciclo for, necesitaremos dos

    ciclos for, uno para controlar la variable de las filas y otro para las columnas.

    int tot [10[20, fila, columna;

    for (fila=0 ; fila10 ; fila++)

    for (columna=0 ; columna20 ; columna++)

    tot[fila[columna = 0;

    Si analizamos este ciclo anidado, podemos observar que el arreglo se inicializa por orden de filas, de la

    siguiente manera:

    0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 0,10 ....... 0,19

    1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8 1,9 1,10 ....... 1,19

    2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8 2,9 2,10 ....... 2,19

    ......................

    ......................

    ......................

    9,0 9,1 9,2 9,3 9,4 9,5 9,6 9,7 9,8 9,9 9,10 ....... 9,19

    Si deseamos almacenar el valor 62 en el elemento de la quinta fila y cuarta columna, lo hacemos

    indicando los ndices correspondientes por fila y columna de la siguiente manera:

    tot[5[4=62;

    Si queremos almacenar el valor del elemento 5,7 en la variable c:

    c = tot[5[7;

    Multidimensionales.- En general podemos deducir que los arreglos se inicializan por orden de

    dimensiones, es decir, la primera dimensin que se inicializa completamente es la 1, despus la 2,

    despus la 3 y as sucesivamente. Si tenemos un arreglo tridimensional: tridi[2[2[2, podemos

    determinar que contiene 8 elementos 2x2x2=8 y su inicializacin correspondiente sera:

    int tridi [2[2[2 = {0,0,0,0,0,0,0,0}

    siendo el orden de los elementos el siguiente:

    0,0,0 0,0,1 0,1,0 0,1,1

    1.0,0 1,0,1 1,1,0 1,1,1

    Utilizando ciclos anidados, necesitamos implementar tres ciclos for de la siguiente manera:

    int tridi[5[4[3,dim1,dim2,dim3;

    for (dim1 = 0 ; dim1

  • Lenguaje C

    Pgina 49

    tridi[dim1[dim2[dim3 = 0;

    Para asignar el valor 19 en el elemento con dimensiones 3,3,1 escribimos:

    tridi[3[3[1 = 19;

    Arreglo de cadenas.

    Una cadena de caracteres (string), est compuesta por caracteres alfanumricos. En el caso de

    Borland C++, se toma como un caso especial de un vector de caracteres (es decir como un arreglo de

    caracteres). La cadena de caracteres deber terminar con un carcter nulo \0 y por lo tanto al

    declarar una variable tipo cadena, esta deber ser lo suficientemente grande para contener este

    carcter. Recuerde que un carcter corresponde a un byte de informacin. Borland C++ no tiene

    operaciones que comprueben los lmites del arreglo, por lo tanto es tarea del programador que no se

    rebasen los lmites declarados en el mismo.

    Una cadena de caracteres se declara como un arreglo de caracteres. La siguiente es la

    declaracin de cad1 como una cadena con longitud de 20 caracteres incluyendo el carcter nulo \0.

    char cad120;

    Cabe mencionar que no podemos hacer asignaciones directas de cadenas, pero s podemos

    asignar directamente un carcter a cualquier elemento de la cadena. Esto se traduce de la misma

    definicin de la cadena como un arreglo de caracteres, es decir que se puede tener control de cada

    carcter de la cadena. Entonces si tenemos que cad1 es una cadena de 20 caracteres, podemos hacer la asignacin de los siguientes caracteres:

    cad10 = A ; cad11 = \0

    De esta forma cad1 tiene como contenido la letra A, misma que se puede desplegar como una string con la sentencia:

    printf(%s,cad1);

    Como podr observar, de la asignacin anterior una cadena deber terminar con un caracter nulo \0.

    En seguida se muestra una representacin grfica que se utilizar para los arreglos de cadenas:

    0 1 2 3 4 5 6 7 8 9 10 11 12 13

    cad2 C O M P U T A C I O N \0

    En esta grfica se muestra la cadena cad2, cuyo contenido es COMPUTACIN. Observe que esta cadena termina con el carcter nulo (\0), y slo ocupa las primeras doce posiciones de la cadena, el

    resto de posiciones que no se ocupan estn indefinidas y para representar esto utilizaremos el smbolo

    . Esta cadena tiene una longitud de 14 e inicia dentro del arreglo de caracteres con la posicin 0 y

    termina en la 13.

    En esta unidad se han incluido las funciones de cadena y de carcter debido a que se pueden

    utilizar en conjunto en algunas aplicaciones.

    Las funciones de manipulacin de cadenas, realizan tareas como copiar el contenido de una

    cadena, comparar cadenas, concatenar cadenas, verificar la longitud,...etc.

    Las funciones de caracteres son de validacin en su mayora, permitiendo determinar si un

    carcter es un numrico, letra, alfanumrico, etc.

  • Pgina 50

    Funciones para el manejo de cadenas.- Borland C++ contiene para el manejo de cadenas de

    caracteres, una variada cantidad de funciones, que le permiten entre otras cosas, copiar cadenas,

    comparar cadenas, concatenar cadenas,...etc.

    Estas funciones se enlistan a continuacin con una breve descripcin de su funcin.

    Funcin Descripcin

    strcpy( ) Copiar cadenas.

    strncpy( ) Permite copiar N caracteres de una cadena a otra.

    strcat( ) Concatena dos cadena.

    strncat( ) Concatena N caracteres de una cadena a otra cadena.

    strchr( ) Encuentra la primera ocurrencia de un caracter en una cadena.

    strrchr( ) Encuentra la ltima ocurrencia de un caracter en una cadena.

    strpbrk( ) Encuentra la primera ocurrencia de un caracter en una cadena, siendo

    este caracter perteneciente a otra cadena.

    strstr( ) Encuentra la primera ocurrencia de una subcadena en una cadena.

    strcmp( ) Compara dos cadena considerando diferentes las maysculas y minsculas.

    stricmp( ) Compara dos cadenas, lexicogrficamente, ignorando el tamao (maysculas y

    minsculas).

    strlen( ) Determina la longitud de una cadena.

    strlwr( ) Convierte una cadena a minsculas.

    strupr( ) Convierte una cadena a maysculas.

    strset( ) Fija un determinado caracter en todos los caracteres de una cadena.

    strnset( ) Fija un determinado caracter en los primeros N caracteres de una cadena.

    strrev( ) Invierte todos los caracteres de una cadena.

    strtok( ) Permite separar palabras de una cadena.

    Nota: Todas estas funciones invocan al archivo de encabezado string.h.

    Funciones para el manejo de caracteres.- Existen ciertas situaciones especiales, en las que

    es necesario analizar o verificar el contenido de un carcter. Para esto Borland C++ ha implementado

    una serie de funciones con las cuales se puede obtener informacin acerca del contenido de un

    carcter. Se puede determinar si el contenido es un carcter alfabtico, numrico, alfanumrico, etc..

    Las funciones que se utilizan para la validacin son las siguientes:

    Funcin Descripcin

    isalpha( ) Determina si el carcter es una letra del alfabeto

    isdigit( ) Determina si el carcter es un dgito

    isxdigit( ) Determina si el carcter es un hexadecimal

    isalnum( ) Determina si el carcter es una letra del alfabeto o un dgito

    isascii( ) Comprueba si pertenece al conjunto de caracteres ASCII

    iscntlr( ) Determina si es un carcter de control

    isgraph( ) Determina si el carcter es imprimible

    isprint( ) Determina si el carcter es imprimible, incluyendo el espacio

    ispunct( ) Determina si el carcter es un smbolo de puntuacin

    isspace( ) Determina si el carcter es un espacio en blanco

    islower( ) Determina si es una letra minscula

    isupper( ) Determina si es una letra mayscula

    tolower( ) Convierte una letra en minscula

  • Lenguaje C

    Pgina 51

    toupper( ) Convierte una letra en mayscula

    Nota: Todas estas funciones invocan al archivo de encabezado ctype.h.

    Arreglos de cadenas bidimensionales.- Si queremos un arreglo de caracteres seguimos el

    formato de la declaracin de arreglos bidimensionales. Si deseamos un arreglo llamado texto con 2

    cadenas de 10 caracteres cada una, la declaramos e inicializamos de esta manera:

    char texto [2[10 = {Primer cadena,Segunda cadena};

    En el caso del acceso, los arreglos de caracteres tienen un mtodo, en el que no se necesita

    indicar la segunda dimensin para disponer de la informacin. La siguiente instruccin despliega en

    pantalla las dos cadenas previamente inicializadas:

    prinf(%s %s,texto[0,texto[1);

    Como se puede observar solo se indic una dimensin y esta corresponde a la primera y segunda

    lnea, ya que por default la cadena supone que la columna tiene ndice cero.

    La siguiente es una representacin grfica de un arreglo de cadenas:

    0 1 2 3 4 5 6 7 8 9

    0

    datos 1 filas

    2 (1 dim)

    3

    Columnas (2 Dim)

    En esta grfica se muestra la variable datos, que es un arreglo de 4 cadenas con 10 caracteres

    cada cadena. An cuando esta representacin elimin las celdas de cada carcter, se puede accesar

    cada carcter de cualquiera de las cuatro cadenas. Por ejemplo si deseamos accesar el carcter 7 de la

    tercera cadena podemos escribir la instruccin:

    a = datos [2[6

    Debe tener cuidado a las indicaciones; Como indicamos la tercera cadena es la nmero dos y no

    la tres, debido a que la numeracin inicia desde cero, lo mismo sucede con las columnas.

  • Pgina 52

    Nmeros aleatorios.

    Con el fin de ayudar la compresin de los arreglos, evitando una captura exhaustiva de los

    elementos de los mismos en arreglos muy grandes, se ha incorporado el uso de los nmeros aleatorios.

    Existen dos funciones que generan nmeros aleatorios, una de ellas genera valores entre 0 y

    32767 y la otra funcin, valores entre 0 y un determinado valor menos uno. Estas funciones son rand y

    random.

    Para utilizar nmeros aleatorios, es necesario inicializar el generador de nmeros aleatorios, la

    funcin que realiza esto es randomize. Estas funciones se detallan a continuacin:

    Funcin rand() stdlib.h .- Genera una secuencia de nmeros pseudo-aleatorios.

    int rand( )

    devuelve un valor entero entre 0 y 32767. El siguiente ejemplo genera 10 nmeros aleatorios:

    int main()

    { int i;

    for (i=0 ; i

  • Lenguaje C

    Pgina 53

    main( )

    { int i;

    for (i=0 ; i

  • Pgina 54

    Sintaxis: double acos(double arg) Funcin: atan( ) Calcula el arco tangente de un valor, dado en radianes

    Sintaxis: double atan(double arg)

    Funcin: hypot( ) Calcula la longitud (hipotenusa) de un tringulo rectngulo, dados sus

    lados.

    Sintaxis: double hypot(double x double y)