programacionconc

download programacionconc

of 40

Transcript of programacionconc

  • 8/6/2019 programacionconc

    1/40

    ESTRUCTURA GENERAL DE UN PROGRAMA

    - Bloque de declaraciones. En l se especifican todos los objetos que utiliza el programa (constantes,variables, tablas, registros, archivos, etc.) indicando las caractersticas de estos. Este bloque se encuentralocalizado siempre por delante del comienzo de las acciones.

    - Bloque de instrucciones. Constituido por el conjunto de operaciones que se han de realizar para laobtencin de los resultados deseados.

    PARTES PRINCIPALES DE UN PROGRAMA

    Las partes principales de un programa estn relacionadas con sus dos bloques ya mencionados. Dentro delbloque de instrucciones podemos diferenciar tres partes fundamentales, como se muestra en la siguientefigura:

    DECLARACIONES

    PROGRAMAEntrada de datos

    INSTRUCCIONES Proceso o algoritmoSalida de resultados

    Entrada de Datos: La constituyen todas las instrucciones que toman los datos de entrada desde undispositivo externo y los almacena en la memoria principal para que puedan ser procesados.

    Proceso o algoritmo: Est formado por las instrucciones que modifican los objetos a partir de su estadoinicial (datos de entrada) hasta el estado final (resultados) dejando los objetos que lo contiene disponibles enla memoria principal.

    Salida de resultados: Conjunto de instrucciones que toman los datos finales (resultado) de la memoria

    principal y los envan a los dispositivos externos.

    CLASIFICACION DE LAS INSTRUCCIONES

    Segn la funcin que desempean dentro de un programa, las instrucciones se clasifican de la siguientemanera:

    Instrucciones de declaracin:

    Su misin es anunciar la utilizacin de objetos en un programa indicando que identificador, tipo y otrascaractersticas corresponden a cada uno de ellos.

    Instrucciones primitivas:

    Son aquellas que ejecuta el procesador de modo inmediato. Es decir, no dependen de otra cosa que de supropia aparicin en el programa para ser ejecutadas. Las instrucciones primitivas pueden ser de entrada, deasignacin o de salida.

    - Instruccin de entrada: Su misin es tomar uno o varios objetos desde un dispositivo de entrada yalmacenarlos en la memoria central en los objetos cuyos identificadores aparecen en la propiainstruccin. Si estos objetos tuviesen algn valor previo, ste se perdera.

    En un ordinograma aparece con el smbolo de operacin de entrada/salida de la siguiente manera:

    Leer dato

    - Instruccin de asignacin: Es la que nos permite realizar clculos evaluando una expresin ydepositando su valor final en un objeto o realizar movimiento de datos de un objeto a otro.

    En un ordinograma aparece bajo el smbolo de operacin en general con el siguiente formato:

    A = A + 3B = A

    - Instruccin de salida: Su misin consiste en enviar datos a un dispositivo externo, bien tomndolos deobjetos depositados en la memoria o definidos de alguna forma en la propia instruccin.

    En un ordinograma se representa por medio del smbolo de operacin de entrada/salida de la siguientemanera:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 1

  • 8/6/2019 programacionconc

    2/40

    Escribir "Fecha", dia, mes, agno

    Instrucciones de control:

    Son instrucciones que no realizan trabajo efectivo alguno salvo la evaluacin de expresiones, generalmente

    lgicas, con el objetivo de controlar la ejecucin de otras instrucciones o alterar el orden de ejecucin normalde las instrucciones de un programa.

    Existen tres grandes grupos de instrucciones de control:

    - Instrucciones alternativas: Son aquellas que controlan la ejecucin de uno o varios bloques deinstrucciones dependiendo del cumplimiento o no de alguna condicin o del valor final de una expresin.Existen tres modelos tpicos de instrucciones alternativas:

    - Alternativa simple: Controla la ejecucin de un conjunto de instrucciones por el cumplimiento ono de una condicin, de tal forma que, si se cumple, se ejecutan; si no se cumple, no se ejecutan. Surepresentacin en un ordinograma es la siguiente:

    CONDICIN INSTRUCCIONESSI

    NO

    - Alternativa doble: Controla la ejecucin de dos conjunto de instrucciones por el cumplimiento ono de una condicin, de tal forma que si se cumple, se ejecutan las instrucciones de un bloque; si nose cumple, se ejecutan las instrucciones del otro. Su representacin en un ordinagrama es lasiguiente:

    CONDICIN INSTRUCCIONESSI

    NO

    INSTRUCCIONES

    - Alternativa Mltiple: Controla la ejecucin de varios conjuntos de instrucciones por el valor deuna expresin, de tal forma que cada conjunto de instrucciones est ligado a un posible valor de laexpresin, existiendo un bloque al final que engloba otros posibles valores no definidos. Se ejecutarel conjunto que se encuentre relacionado con el valor que resulte de la evaluacin de la expresin, detal forma que si ste no aparece se ejecutar el ltimo. Su representacin en un ordinograma es lasiguiente:

    CONDICION

    V1 V2 VN OTROS

    INST 1 INST 2 ....... INST N INST

    - Instrucciones repetitivas: Son aquellas que controlan la repeticin de un conjunto de instruccionesdenominado rango mediante la evaluacin de una condicin que se realiza cada nueva repeticin o pormedio de un contador asociado. Existen tres tipos de instrucciones repetitivas que dependen de suconfiguracin:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 2

  • 8/6/2019 programacionconc

    3/40

    - Instruccin MIENTRAS (WHILE): Controla la ejecucin del conjunto de instrucciones queconfiguran su rango, de tal forma que stas se ejecutan mientras se cumpla la condicin, que serevaluada siempre antes de cada repeticin. Es decir, mientras la condicin sea cierta. Suconfiguracin en el ordinograma es la siguiente:

    CONDICINNO

    SI

    RANGO

    - Instruccin REPETIR (REPEAT - UNTIL o DO WHILE): Controla la ejecucin de un

    conjunto de instrucciones que configuran un rango, de tal forma que stas se ejecutan hasta que secumpla la condicin, que ser evaluada siempre despus de cada repeticin, es decir, hasta que lacondicin sea CIERTA. La diferencia entre este bucle y el anterior es que este bucle siempre seejecutar una vez. Su configuracin en el ordinograma es la siguiente:

    RANGO

    NO

    CONDICIN

    SI

    - Instruccin PARA (FOR): Controla la ejecucin de un conjunto de instrucciones que configuran unrango, de tal forma que stas se ejecutan un nmero determinado de veces que queda definido en lo quese denomina la cabecera del bucle. En ella se define un identificador de variable que va a actuar comocontador asociado y que se denomina variable de control del bucle (Vc), definindose al mismo tiemposu valor inicial, (Vi) su valor final (Vf) y el incremento (I) que esta variable de control va adquirir encada repeticin.

    La variable de control toma el valor inicial y va incrementndose en cada nueva repeticin, de tal maneraque el proceso termina cuando la variable de control supera el valor final. Su configuracin en unordinograma es la siguiente:

    Vc = Vi

    Vc > VfSI

    NO

    RANGO

    Vc = Vc + I

    - Instrucciones de ruptura de secuencia: Alteran la secuencia normal de ejecucin de instrucciones enun programa, que, como se sabe, es de la primera hasta la ltima, y de una en otra. La alteracin de estasecuencia hace que contine en otro lugar definido en la propia instruccin utilizando lo que se denominaetiqueta.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 3

  • 8/6/2019 programacionconc

    4/40

    - Instruccin de alto incondicional: Altera la secuencia normal de ejecucin de instrucciones,continuando la misma en la instruccin referenciada por medio de la etiqueta que figura en la propiainstruccin

    IR A

    - Instruccin de alto condicional: Altera la secuencia normal de ejecucin de instrucciones si secumple una condicin, continuando la misma en la instruccin referenciada por medio de la etiqueta

    que figura en la propia instruccin

    A > 3 X

    .

    .X

    INSTRUCCION

    Instrucciones compuestas

    Es aquella que representa un conjunto de instrucciones que estn definidas en otra parte. Son llamadassubprogramas (funciones, subrutinas, prrafos, etc.). Su presentacin en un ordinograma utiliza el smbolo desubprograma:

    NOMBRE

    Comentarios:

    Son frases que se incluyen en un programa con intencin de aclarar el cometido o funcin de un objeto oconjunto de instrucciones. En un ordinograma se representa con el smbolo:

    -------- COMENTARIO

    VARIABLES AUXILIARES DE UN PROGRAMA

    Son objetos que utiliza un programa y por la funcin que realizan dentro del mismo toman un nombreespecial, modelando su funcionamiento debido a su frecuente utilizacin.

    - Contadores: Es un objeto que se utiliza para contar cualquier evento que pueda ocurrir dentro de unprograma. Se utilizan realizando sobre ellos dos operaciones bsicas:

    - Inicializacin: Todo contador se inicializa en 0 o un valor inicial si se desea realizar otro tipo decuenta

    CONTA = 0

    - Incremento: Cada vez que aparece el evento a contar se ha de incrementar el contador en 1 uotro valor si se realiza otro tipo de cuenta:

    CONTA = CONTA + 1

    - Acumuladores: Son objetos de un programa para acumular elementos sucesivos con una mismaoperacin. En general se utilizan para acumular sumas y productos, sin descartar otros posibles tipos deacumuladores. Al igual que los contadores, para utilizarlos hay que realizar sobre ellos las operaciones deinicializacin y acumulacin.

    ALGORITMOS EN PSEUDOLENGUAJE

    PSEUDOLENGUAJE: Su significado informtico es: un lenguaje de programacin no formal.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 4

  • 8/6/2019 programacionconc

    5/40

    Un algoritmo expresado en pseudolenguaje consta de los siguientes elementos:

    Cabecera Variables de memoria Asignaciones Instrucciones

    Cabecera de un algoritmo: Entenderemos por cabecera de un algoritmo a la orden INICIO que nospermitir dar comienzo al algoritmo. Su contrapartida es la orden FIN para dar finalizado el algoritmo.

    Variables: Una variable es un espacio de memoria del computador a la cual se le da un nombre paraidentificar dicho espacio. Este nombre puede contener letras, dgitos y guiones con la sola condicin que el

    primer carcter del nombre sea una letra.

    Las variables tienen un valor nico. Este valor puede ser cambiado o modificado, para ello existe unainstruccin de asignacin que permite asignarle o darle un valor, este se cambia por el nuevo valor.

    Asignacin: La instruccin de asignacin est representada por el smbolo = que representa un signo igual.

    El valor que se le asigna a una variable puede estar tambin dado por otra variable o por una expresinmatemtica.

    Ej: Supongamos que tenemos las siguiente variables y valores:

    A B C TT X R J K H2 5 10 4 5 0 0 0 1

    R = 4 + 3 Ahora la variable R es 7J = A + B Ahora el valor de J es 7K = (C * B) + 2 Ahora el valor de K es 52H = H + 1 Ahora el valor de H es 2

    Reglas prcticas:

    1. Toda variable que aparezca al lado derecho de = debe tener un valor.2. Cuando se usa = solo la variable que est a la izquierda cambia d valor.3. Las variables que se encuentran a la derecha del = no cambian de valor.4. Si una variable aparece a ambos lados del =, sta cambia de valor por estar a la izquierda.5. Los operadores permitidos son:

    +, -, *, /, ** suma, resta, multiplicacin, divisin, exponenciacinRESTO(resto de la divisin)PARTENT(parte entera de la divisin)

    6. Las funciones permitidas son

    ENT(VALOR)Retorna el valor entero de lo que est entre parntesis, o si este tiene decimales.MAYUS(carcter) Transforma el carcter especfico a maysculas.

    7. La prioridad de los operadores matemticos es:

    1.- ( )2.- funciones.3.- *, /4.- +, -

    Si dos operadores de la misma prioridad estn en una misma operacin se evaluar primero el que est ms a

    la izquierda.Instrucciones de entrada/salida de datos

    Las instrucciones de entrada/salida de datos, le permiten al usuario0 final (que es la persona para quien se vaa realizar el programa final) tener una comunicacin con el algoritmo, dndole los valores a manipular yrecibiendo por parte de ste los resultados de los procesos realizados con los datos ingresados.

    La instruccin de entrada de datos, LEER, permite que el usuario le d valores a las variables desde elteclado. As la persona que est frente a computador va a poder digitar los valores que desea procesar.

    FORMATO:LEER var1, var2, ... varN

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 5

  • 8/6/2019 programacionconc

    6/40

    En ella puede haber desde una hasta las que el usuario desee.

    Ejemplo: Supongamos que queremos determinar el valor del sucesor de 13:

    INICIONUM, SUCESOR : NUMERICASNUM = 13SUCESOR = NUM + 1

    FINEste algoritmo slo permite calcular el sucesor de 13, si necesitamos calcular el sucesor de otro nmero,habra que hacer otro algoritmo, uno para cada nmero. Pero si usamos la orden LEER, podemos permitirleal usuario ser l quien determine el valor sobre el que se desarrollar el clculo.

    INICIONUM, SUCESOR : NUMERICASLEER NUMSUCESOR = NUM + 1

    FIN

    En este ejemplo, el usuario lee en el algoritmo l valor del que se calcular su sucesor.

    Instrucciones de salida.

    En pseudolenguaje la instruccin que permite realizar una visualizacin de informacin en la pantalla esMOSTRAR.

    FORMATO:MOSTRAR exp1, exp2, ... expN

    Donde las expresiones pueden ser variables o mensajes.

    Para especificar un mensaje o comentario, este debe aparecer entre comillas dobles. Ejemplo:

    MOSTRAR "Este mensaje aparecer en la pantalla"

    Haciendo uso de esta instruccin, ahora podemos visualizar en la pantalla algn comentario o resultado.

    INICIONUM, SUCESOR : NUMERICASMOSTRAR "Ingrese un nmero"LEER NUMSUCESOR = NUM + 1MOSTRAR "El sucesor es :" , SUCESOR

    FIN

    Con instruccin MOSTRAR, el algoritmo ahora puede comunicarle al usuario que es lo que debe leer y,adems, indicarle en la pantalla al usuario, cual fue el resultado.

    Toma de decisiones (instrucciones de bifurcacin)

    Es habitual que en la vida diaria debemos tomar decisiones que signifiquen realizar o no una accin, o bienelegir entre un conjunto de acciones.

    Supongamos, por ejemplo, que estamos de cumpleaos y tenemos que decidir que hacer si nuestras opcionesson hacer una fiesta o salir a cenar. Para dar solucin a esta disyuntiva, no hacemos la siguiente pregunta:Quiero hacer una fiesta? La respuesta slo puede ser SI o NO, por lo que s nuestra respuesta es SI, se hacela fiesta, si no entonces vamos a cenar

    Traspasando esto a un algoritmo cualitativo tendramos:

    Inicio del algoritmoSi deseo hacer una fiesta

    Hago la fiestaSino

    Voy a cenarFin de seleccin

    Fin algoritmo

    En pseudolenguaje existen instrucciones que nos permiten realizar este tipo de discriminacin. Estas son:

    De decisin simpleSIDe decisin doble SI - SINODe decisin mltiple HACER EN CASO

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 6

  • 8/6/2019 programacionconc

    7/40

    Decisin simple: Esta instruccin permite ejecutar o no una o varias instrucciones

    FORMATO:SI condicin

    Instruccin (es)FIN SI

    Donde:

    Instruccin (es): es la instruccin o instrucciones que van a ser ejecutadas si se cumple la condicinCondicin: Es el evento que debe cumplirse para que la instruccin (es) se ejecutada.

    Decisin doble: Esta instruccin se utiliza cuando se tiene que elegir entra la ejecucin de una u otrainstruccin a partir de una condicin.

    FORMATO:SI condicin

    Instruccin(es) 1SINO

    Instruccin(es) 2FIN SI

    Donde:Condicin es el evento que tiene que cumplirse para que se ejecute el grupo 1 de instrucciones. Deno cumplirse el evento, se ejecuta el grupo 2 de instrucciones.Instruccin (es) 1: Es la instruccin o conjunto de instrucciones que deben ejecutarse en el caso deque la condicin se cumpla (sea verdadera).Instruccin (es) 2: Es la instruccin o instrucciones que se van a ejecutar si la condicin no secumple.

    En este tipo de bifurcacin, solo se ejecuta uno de los dos grupo de instrucciones, Nunca los dos.

    Condicin es una expresin lgica que dar un resultado verdadero si ella se cumple o falso, en caso de queno se cumpla.

    Para representar las condiciones en pseudolenguaje, se hace uso de expresiones lgicas las que estncompuestas por operadores de relacin y conectores lgicos.

    Operadores de relacin: Son aquellos que e utilizan para expresar condiciones

    = igual distinto= mayor o igual> mayor que< menor que

    FORMATO:

    Expresin 1 operador de relacin expresin 2

    Ejemplo:Sea A = 4 y B = 7

    El resultado de:A > B es falsoA

  • 8/6/2019 programacionconc

    8/40

    (A > B) O (B < C) verdadero(A + 2 = 6) O (B = C) falso

    Aplicaciones en Pseudolenguaje

    1.- El siguiente algoritmo determina si dos nmeros ingresados por el usuario son o no iguales:

    INICIO

    VAR1, VAR2 : NUMERICASMOSTRAR "Ingrese dos nmeros"LEER VAR1, VAR2SI (VAR1 = VAR2)

    MOSTRAR "Los valores son iguales"SINO

    MOSTRAR "Los valores son distintos"FIN SIMOSTRAR "Proceso terminado"

    FIN

    En este algoritmo primero se despliega un mensaje en la pantalla para que el usuario sepa que tiene que

    ingresar dos valores que son recibidos en la instruccin siguiente (LEER VAR1, VAR2). Cuando los valoresya han sido ingresados por el usuario, el algoritmo procede a compararlos para saber si son iguales o noiguales utilizando la instruccin SI (VAR1 = VAR2).

    El algoritmo desplegar en pantalla el mensaje "Los valores son iguales" cuando la expresin VAR1 =VAR2 sea verdadera. El mensaje "Los valores son distintos" aparecer en la pantalla cuando la expresinevaluada en la instruccin SI sea falsa.

    Luego de haber desplegado el mensaje en la pantalla, el algoritmo seguir ejecutando las instrucciones quesiguen a continuacin de las palabras FIN SI, que sirven para indicar que ah termina la bifurcacin, o sea,mostrar en mensaje "Proceso terminado", el que se ejecutar siempre sin importa cuales hayan sido losvalores ingresados.

    2.- El siguiente algoritmo le permite al usuario ingresar dos valores y determinar cul de ellos es el mayor,teniendo en cuenta que tambin puede darse la igualdad.

    Un primer razonamiento se puede basar en que e tienen tres alternativas:

    VAR1 = VAR2VAR1 > VAR2VAR1 < VAR2

    Entonces uno puede preguntar por cada una de las alternativas creando un algoritmo con la siguienteestructura:

    INICIOVAR1, VAR2 : NUMERICAS

    MOSTRAR "Ingrese dos nmeros"LEER VAR1, VAR2SI (VAR1 = VAR2)

    MOSTRAR "Son iguales"FIN SISI (VAR1 > VAR2)

    MOSTRAR "El primero es mayor"FIN SISI (VAR1 < VAR2)

    MOSTRAR "El segundo es mayor"FIN SI

    FIN

    Tambin se podra haber pensado:

    Si tengo tres alternativas evalo la primera. SI VAR1 = VAR2 muestro el mensaje "Son iguales" y termino;sino son iguales, entonces puede que sea VAR1 mayor que VAR2 o VAR2 mayor que VAR1, por lo que

    pregunto SI VAR1 > VAR2 entonces muestro "El primero es mayor", si la condicin es falsa muestro "Elsegundo es mayor", ya que si no son iguales y VAR1 no es mayor que VAR2 solo puede ser que VAR2 seamayor que VAR1 puesto que es la nica alternativa que queda.

    INICIOVAR1, VAR2 : NUMERICASMOSTRAR "Ingrese dos nmeros"

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 8

  • 8/6/2019 programacionconc

    9/40

    LEER VAR1, VAR2SI (VAR1 = VAR2)

    MOSTRAR "Son iguales"SINO

    SI (VAR1 > VAR2)MOSTRAR "El primero es mayor"

    SINO

    MOSTRAR "El segundo es mayor"FIN SI

    FIN SIFIN

    3.- En el siguiente algoritmo determinaremos el mayor de tres nmeros ingresados por el usuario.

    En el anlisis de lo que se nos pide observamos que:

    Se tiene que leer tres nmerosTenemos tres posibles respuestas:

    a) El primer valor es el mayorb) El segundo valor es el mayorc) El tercer valor es el mayor

    De esta informacin podemos determinar que:

    1.- Tenemos que usar tres variables para recibir los nmeros que van a ser ingresados.2.- Tenemos que leer los valores antes de preguntar cual de ellos es mayor3.- Para saber si un nmero es el mayor tenemos que:

    a) Preguntar si el primero es mayor que los otros dos, o sea, si es mayor al segundo y al tercero.b) Si era mayor lo indicamos con un mensaje, de lo contrario, tenemos que ver si el mayor es el

    segundo o el tercero, puesto que el primero ya no lo es.c) Si el segundo es el mayor lo indicamos con un mensaje, de los contrario, indicamos que e mayor

    es el tercero ya que es el nico que queda.

    El algoritmo que resulta de esto es:INICIO

    A, B, C : NUMERICASMOSTRAR "Ingrese tres nmeros"LEER A, B, CSI (A > B) Y (A > C)

    MOSTRAR "El primero es el mayor"SINO

    SI (B > C)MOSTRAR "El segundo es el mayor"

    SINO

    MOSTRAR "El tercero es el mayor"FIN SIFIN SI

    FIN

    Ejercicios:

    1.- Codifique un algoritmo que permita determinar si un alumno aprob o no un ramo si consideramos que seevala con cuatro notas y el promedio se obtiene aritmticamente

    Se deben ingresar las cuatro notas, calcular el promedio, se debe desplegar el mensaje "Alumno aprob", siel promedio es mayor o igual a cuatro, de lo contrario desplegar el mensaje "Alumno reprob"

    2.- Modifique el algoritmo anterior, sabiendo que el promedio final ser igual al 60% del promedioaritmtico de las notas, ms el 40% de la nota de examen, por lo tanto deber ingresar adems de las cuatronotas, una nota de examen, deber desplegar los mismos mensajes.

    Seleccin mltiple:

    Esta instruccin permite escoger un grupo de instrucciones a ejecutar segn sea el valor de una variable.

    FORMATO:HACER EN CASO

    EN CASO VARIABLE = VALOR1:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 9

  • 8/6/2019 programacionconc

    10/40

    INSTRUCCIN(ES) 1EN CASO VARIABLE = VALOR2:

    INSTRUCCIN(ES) 2EN CASO VARIABLE = VALOR3:

    INSTRUCCIN(ES) 3[ SEA OTRO VALOR:

    INSTRUCCIN(ES) N ]

    En esta instruccin, se escoger slo un grupo de instrucciones dependiendo del valor de la variable. Sicoincide con el primer valor, ejecutar el primer grupo de instrucciones; si coincide con el segundo valor, seejecutar el segundo grupo y as sucesivamente, y si no coincide con ningn valor indicado en a instruccinse ejecutaran las instrucciones que estn indicadas para SEA OTRO VALOR.

    SEA OTRO VALOR es opcional, por lo que slo se colocar de ser necesario.

    Supongamos que alguien desea tener un algoritmo que permita, ingresando el cdigo de un mes, saber laglosa correspondiente al cdigo y cuantos das tiene ste.

    INICIOVARMES : NUMERICAMOSTRAR "Ingrese un cdigo"HACER EN CASO

    EN CASO VARMES = 1:MOSTRAR "enero = 31"

    EN CASO VARMES = 2:MOSTRAR "febrero = 28 29"

    EN CASO VARMES = 3:MOSTRAR "marzo = 31"

    EN CASO VARMES = 4:MOSTRAR "abril = 30"

    EN CASO VARMES = 5:MOSTRAR "mayo = 31"

    EN CASO VARMES = 6:MOSTRAR "junio = 30"EN CASO VARMES = 1:

    MOSTRAR "Julio = 31"EN CASO VARMES = 8:

    MOSTRAR "agosto = 31"EN CASO VARMES = 9:

    MOSTRAR "septiembre = 30"EN CASO VARMES = 10:

    MOSTRAR "octubre = 31"EN CASO VARMES = 1:

    MOSTRAR "noviembre = 30"

    EN CASO VARMES = 1:MOSTRAR "diciembre = 31"SEA OTRO VALOR:

    MOSTRAR "Cdigo no existe"FIN EN CASO

    FIN

    EJERCICIOS:

    1.- Recorra los siguientes algoritmos y determine los valores finales de cada variable:

    INICIOJOSE, SS, J, R : NUMERICASJOSE = 4

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 10

  • 8/6/2019 programacionconc

    11/40

    SS = 5J = 3R = 2J = SS + RSI (J = TRUNCAR(J / 2) * 2)

    SS = JOSE * 2J = J + 2 + 3

    HACER EN CASOEN CASO J = 35:J = J + 1

    EN CASO J = 36:J = J - 1

    EN CASO j = 37J = J * 2

    FIN EN CASOSINO

    J = SS + 3SI (J = SS * 3 - 1)

    J = J * 3 + RSINO

    J = SS * (R ** 2) / 2FIN SIFIN SIJ = J + 1SS = J * 2

    FIN

    INICIOUNO, DOS, TRES, CUATRO : NUMERICASUNO = 1DOS = UNO + 1TRES = DOS - 1

    CUATRO = TRES + 1SI (TRES CUATRO)DOS = DOS + 3SI (TRES < DOS) Y (CUATRO = 4)

    UNO = 2SINO

    UNO = 3FIN SISI (TRES CUATRO)

    TRES = CUATRO + 1SINO

    UNO = 1HACER EN CASO

    EN CASO UNO = 1:HACER EN CASO

    EN CASO DOS = 1:UNO = 2

    EN CASO DOS = 2:DOS = 1

    FIN EN CASOEN CASO UNO = 2:

    CUATRO = TRES + 1SEA OTRO VALOR:

    DOS = CUATRO - DOSFIN EN CASO

    FIN SI

    UNO = (TRES + DOS) - CUATROFIN SI

    FIN

    2.- Revisa los siguientes algoritmos y determina si estn buenos o no. Hay a lo menos uno malo.

    - El siguiente algoritmo le permite al usuario leer un nmero y saber si ste es par o impar. El cero es neutro.

    INICION : NUMERICASMOSTRAR "Ingrese un nmero"

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 11

  • 8/6/2019 programacionconc

    12/40

    LEER NSI (N = 0)

    MOSTRAR "El nmero es cero"SINO

    SI (RESTO(N / 2) = 0)MOSTRAR "El nmero es par"

    SINO

    MOSTRAR "El nmero es impar"FIN SIFIN SI

    FIN

    - Determinar si un nmero ingresado por el usuario es positivo y menor que 12 al mismo tiempo.

    INICION : NUMERICASMOSTRAR "Ingrese un nmero"SI (N > 0) Y (N < 12)

    MOSTRAR "El nmero cumple la condicin"SINO

    MOSTRAR "El nmero no cumple la condicin"

    FIN SIFIN ALGORITMO

    El siguiente algoritmo determina si una persona es aceptada o no en un trabajo. Para ello cuenta con lossiguientes requisitos:

    Para mujeres: Debe ser soltera, mayor de 18 aos y menor de 26

    Para hombres: Si es casado debe tener ms de 40 aos, si es soltero debe tener ms de 18 aos y menor de 31aos.

    Adems, para determinar el sexo de la persona y su estado civil hay que tener en cuenta los siguientes datos:

    Sexo : 1 = masculino 2 = femenino

    Estado civil : 1 = soltero 2 casado 3 separado 4 viudo

    INICIOXCIV, XSEX, XED : NUMERICASMOSTRAR "Indique estado civil"LEER XCIVMOSTRAR "Indique su sexo"LEER XSEXMOSTRAR "Indique su edad"LEER XEDHACER EN CASO

    EN CASO XSEX = 1:SI (XCIV = 1) Y (XED > 18) Y (XED < 31)

    MOSTRAR "Est seleccionado"SINO

    SI (XCIV = 2) Y (XED > 40)MOSTRAR "Est seleccionado"

    SINOMOSTRAR "Esta eliminado"

    FIN SIFIN SI

    EN CASO XSEX = 2:SI (XED > 18) Y (XED < 26)

    MOSTRAR "Est seleccionada"SINO

    MOSTRAR "Est eliminada"

    FIN SISEA OTRO VALOR

    MOSTRAR "ERROR DE INGRESO DE VALOR"FIN EN CASO

    FINConfeccione un algoritmo para cada uno de los siguientes requerimientos:

    1. Leer dos nmeros y determine cul de ellos es menor o si son iguales

    2. Leer tres nmeros y determine cual de ellos es menor. Supongamos que van a ser distintos.

    3. Leer tres nmeros y determinar cual es el mayor teniendo en cuenta que se pueden dar igualdad entreellos.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 12

  • 8/6/2019 programacionconc

    13/40

    4. Leer tres nmeros y mostrarlos ordenados de menos a mayor. Supongamos que van a ser distintos entres.

    5. Leer un nmero y determinar si es mayor igual que 10 o no.

    6. Leer un nmero y determinar si es positivo y par al mismo tiempo.

    7. Leer un nmero y determinar si es divisible por 5.

    8. Leer un nmero y determinar si este es positivo e impar.9. Leer un nmero y determinar si este es mayor a 10 y menos a 86 y par al mismo tiempo.

    10. Leer un nmero, si es positivo smele 3, si es negativo smele 6, luego indique si el resultado del calculoes positivo, negativo o 0.

    11. Leer un nmero y determinar si es divisible por 3 y por 2 al mismo tiempo.

    12. Leer un nmero y determinar si es divisible por 3 y por 2 al mismo tiempo pero sin usar conectoreslgicos. Busque a lo menos dos soluciones distintas.

    13. Lea un nombre y edad de dos personas y muestre el nombre de la persona mayor.

    14. Leer dos nmero y determinar si el primero es el antecesor del segundo. Tenga en consideracin que slo

    se puede determinar si un nmero es sucesor de otro si stos son enteros.

    15. Determine el nmero de das e un mes ingresado por el usuario si ste ingresa el nombre del mes.

    16. Una empresa necesita contratar una secretaria. Para ello se le hacen las siguientes preguntas:

    - Es soltera (1) o casada (2)- Cuntos hijos tiene? Si no tiene indicar 0- Tiene ttulo tcnico S/N?- Cul es su edad?

    La postulante debe cumplir los siguientes requisitos para ser preseleccionada:

    Las solteras deben poseer ttulo tcnico, no tener hijos y ser menor a 24 aos.

    Las casadas debe tener edad superior a 40 aos y tener hijos.

    El algoritmo que desarrolle debe permitir evaluar estas condiciones para determinar, mediante mensajes,si el contrato se hace efectivo o no, por lo tanto, debe realizar los ingresos correspondientes y entregar elmensaje respectivo.

    17. Una empresa de turismo necesita realizar permanentemente clculo de paridad cambiaria. Para realizardicho clculo, maneja la siguiente lista de valores:

    1.- DLAR 670 PESOS2.- DRACMA 405 PESOS3.- LIBRAS 495 PESOS4.- RUPIAS 293 PESOS

    El algoritmo debe recibir por parte del usuario el cdigo (nmero de lista) de la moneda a la que se deseahacer la transformacin y el valor en pesos a transformar a la moneda indicada.

    18. Usando los mismos valores de la tabla anterior, ingrese el cdigo de la moneda y el monto a transformary muestre su equivalente en pesos.

    19. Una empresa tiene en su planta vendedores divididos en tres categoras ( A, B, C). Cada categora tieneun porcentaje de comisin por ventas realizadas (A = 1,3%; B = 1,25%; C = 1,11%). Se necesita unalgoritmo que determine cuanto se le pagar a un vendedor. Para esto, el algoritmo debe permitiridentificar al vendedor (nombre) e indicar el monto que este vendi y mostrar el monto de la comisincorrespondiente.

    INSTRUCCIONES CICLICAS O ITERATIVAS

    Una instruccin cclica es una orden que permite que un conjunto de instrucciones (bucle) se ejecuten variasveces, aunque en algunos casos podra darse que se ejecutaran una vez o simplemente no se ejecutaran.

    Las instrucciones de este tipo son: PARA, MIENTRAS Y REPETIR.

    PARA: Permite que un conjunto de instrucciones se ejecuten un numero determinados de veces.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 13

  • 8/6/2019 programacionconc

    14/40

    FORMATO:PARA var = val1 HASTA val2 [ SUMANDO VAL3 ]

    instruccionesFIN PARA

    Var: es la variable que ser utilizada para ir contando el numero de veces que se ha de repetir el ciclo. Estavariable aumenta en una unidad cada vez que se repite el ciclo y se omite el parmetro SUMANDO.

    Val1 es el valor que toma var en el inicio del primer ciclo.Val2: Es el ltimo valor con que se ejecutar el ciclo.

    Ejemplo: Con el siguiente algoritmo se muestran en pantalla todos los nmeros del 1 al 10

    INICIOPARA N = 1 HASTA 10

    MOSTRAR NFIN PARA

    FIN

    Cuando se llega a la instruccin PARA, la variable N toma el valor 1 y ejecuta la instruccin MOSTRAR N.Como N es una variable que en la primera ejecucin vale 1, es mostrado este valor.

    Cuando se llega a FIN PARA, se procede a realizar la segunda iteracin, comenzando el bucle desde elprincipio e incrementando , en este caso, la variable N en 1.

    Este proceso se realizar hasta que N tome el valor 10. Cuando esto ocurra se ejecuta por ultima vezmostrando el valor 10. Esta vez, al llegar al FIN PARA, se realiza un ltimo incremento a la variable Nquedando esta con el valor 11. Sin embargo, como ya se supero el valor final, no se ejecutar el ciclo y secontina con las instrucciones que vengan despus del FIN PARA.

    Ejemplos: Se necesita calcular la suma de los 10 primeros nmero naturales positivos:

    INICIORESULTADO, X : NUMERICASRESULTADO = 0

    PARA X = 1 HASTA 10RESULTADO = RESULTADO + XFIN PARAMOSTRAR "LA SUMA DIO ", RESULTADO

    FIN

    Mostrar todos los nmeros mayores o iguales a 10 y menores a 41

    INICIOX : NUMERICAPARA X = 10 HASTA 40

    MOSTRAR XFIN PARA

    FIN

    MIENTRAS: Se diferencia de la anterior porque no necesitamos saber el nmero de veces que se tiene querepetir el bucle para determinar el fin de la ejecucin, sino que necesitamos saber que se tiene que dar(condicin) para que se siga ejecutando.

    FORMATO:MIENTRAS (condicin) HACER

    InstruccionesFIN MIENTRAS

    Condicin: Expresin lgica la cual tiene que ser verdadera para que se ejecute el bucle. El termino deejecucin se produce cuando la condicin no se cumple.

    Esta instruccin funciona de la siguiente manera: Cuando se llega a ella, se evala el valor de la condicin.Luego, si esta es verdadera, se ejecutan todas las instrucciones que hay entre MIENTRAS Y FINMIENTRAS.

    Cuando se llega a FIN MIENTRAS se vuelve a hacer el mismo procedimiento hasta que la condicin seafalsa.

    Ejemplo: Calcular la suma e todos los nmeros pares positivos menores a 66

    INICIOTOTAL, NUM : NUMERICASTOTAL = 0NUM = 2

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 14

  • 8/6/2019 programacionconc

    15/40

    MIENTRAS (NUM < 66) HACERTOTAL = TOTAL + NUMNUM = NUM + 2

    FIN MIENTRASMOSTRAR " Resultado es", TOTAL

    FIN

    En la instruccin MIENTRAS, se tiene que dar un valor inicial a la variable de la condicin utilizando una

    instruccin de asignacin previa y el incremento se tiene que hacer dentro del bucle.Leer tantos nmeros como el usuario desee y determinar la suma de ellos. El ingreso finaliza cuando la sumasea mayor o igual a 666.

    INICIOn, suma : NUMERICASsuma = 0MIENTRAS (SUMA < 666) HACER

    MOSTRAR "Ingrese un nmero"LEER nSuma = suma + n

    FIN MIENTRAS

    MOSTRAR "La suma es ", sumaFIN

    Leer y sumar tantos nmeros como el usuario desee. Para determinar si se tiene que leer otro nmero o no, sele debe preguntar al usuario si desea seguir ingresando nmeros. Si el usuario desea seguir deber digitar unaS y si no va a seguir, digitar una N.

    INICIOResp : ALFANUMERICATotal, num : NUMRICASResp = "S"Total = 0MIENTRAS (Resp = "S") HACER

    MOSTRAR "Ingrese un nmero"

    LEER numTotal = Total + numMOSTRAR "Desea seguir ingresando S/N"LEER RespResp = MAYUS(Resp)

    FIN MIENTRASFIN

    En este algoritmo se le da un valor "S" a la variable Resp para que la primera vez que se llega al cicloMIENTRAS, se pueda leer. I a Resp no se le da el valor inicial de "S" asignndosele otro, cuando llegue aMIENTRAS por primera vez el ciclo no se ejecutar

    REPETIR: Esta instruccin es muy similar en su funcionamiento a la instruccin MIENTRAS.

    FORMATO:REPETIR

    InstruccionesHASTA QUE (condicin)

    Esta instruccin, a diferencia de MIENTRAS, la evaluacin de la condicin se realiza despus de ejecutar elbucle y esta condicin indica cuando va a pasar a parar la ejecucin

    Esta instruccin se utiliza preferentemente para asegurarnos que un dato cumpla con algn requisitopreestablecido.

    Ejemplo: Leer siete nmeros positivos y determinar su promedio.

    INICIOCont, suma, prom, num : NUMERICASsuma = 0prom = 0PARA CONT = 1 HASTA 7

    REPETIR

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 15

  • 8/6/2019 programacionconc

    16/40

    MOSTRAR "Ingrese un nmero"LEER num

    HASTA QUE (num > 0)suma = suma + num

    FIN PARAprom = suma / 7MOSTRAR "El promedio es ", prom

    FINOtros conceptos relacionados con ciclos

    A) Contador: Se dice que una variable es de tipo contador cuando esta se va a incrementa o decrementarcada vez que se realice la instruccin que lo contiene.

    B) Sumadores, Acumuladores o Totalizadores: Son variables utilizadas para guardar cantidades variablesresultantes de sumas sucesivas. Realiza una funcin similar a la de un contador, con la diferencia de quela cantidad que se le suma o resta es constante.

    Ejemplo: leer 10 nmeros cualesquiera y determinar el promedio de los nmeros enteros.

    Para ello utilizaremos un ciclo Para que realizar 10 ingresos. Adems, dentro del bucle, preguntaremos si elnumero es entero para ver si tenemos que sumarlo o contarlo. Hay que tener en cuenta que si bien son 10

    nmeros los que se van a leer, no se sabe cuantos de ellos son enteros por lo que tendremos que utilizar uncontador.

    INICIOAcum, contador, x, n, prom : NUMERICASAcum = 0Contador = 0PARA x = 1 HASTA 10

    MOSTRAR "Ingrese un nmero"LEER nSI (n = (ENTERA(n))

    Acum = Acum + ncontador = contador + 1

    FIN SIFIN PARAProm = Acum / contadorMOSTRAR " El promedio es ", prom

    FIN

    C) Interruptores: conocidos como switch, centinela, bandera o flag. Es una variable que puede tomar dosvalores a lo largo del algoritmo y que permiten comunicar informacin de una parte a otra parte del mismo.

    Los usos ms habituales de un interruptor son:

    Si el programa a pasado o no por de6terminado punto pregu8ntando por su estado o contenido. Salir de un ciclo cuando se cambie el valor del interruptor. Hacer otra operacin dependiendo de un estado u otro.

    Ejemplo:INICIO

    Sw, x , n : NumricasSw = 0PARA x = 1 HASTA 10

    REPETIRMOSTRAR "Ingrese un nmero"LEER n

    HASTA QUE (n = int(n)) y (n > 0)SI (n = 7)

    Sw = 1FIN SI

    FIN PARASI (Sw = 0)

    MOSTRAR " " No se ingres el 7"SINO

    MOSTRAR "se ingreso el 7"FIN SI

    FIN

    Como se puede ver, SW va a tener el valor 0 desde la partida del algoritmo y dentro del bucle slo va acambiar su valor a 1 cundo se ingrese el nmero 7.

    Ejemplos:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 16

  • 8/6/2019 programacionconc

    17/40

    1.- El siguiente algoritmo muestra los 10 primeros nmeros pares positivos.

    INICIOx, num, : numricasPARA x = 1 HASTA 10

    Num = 2 * xMOSTRAR num

    FIN PARA

    FIN

    2.- La serie numrica 1, 3, 5, 7, 9, 11, ..., 21, es mostrado por el siguiente algoritmo:

    INICIOx : numricax = 1MIENTRAS x 0) Y (nn = entero(nn))aux = nnMIENTRAS (aux > 0) HACER

    a = Ent(aux / 10) * 10dig = aux - aaux = aMOSTRAR dig

    FIN MIENTRASFIN

    5.- Calcular el promedio de 10 nmeros ingresados por el usuario.

    INICIOsum, x, n, p : Numricassum = 0a = 0PARA x = 1 HASTA 10

    MOSTRAR "Ingrese un nmero"LEER nsum = sum + n

    FIN PARAp = sum / 10MOSTRAR " El promedio es :", p

    FIN

    6.- El siguiente algoritmo permite leer 10 nmeros cualesquiera y determina cual fue el mayor de ellos.

    INICIOmayor, n, x : Numricasn = 0PARA x = 1 HASTA 10 hacer

    MOSTRAR "Ingrese un nmero"LEER n

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 17

  • 8/6/2019 programacionconc

    18/40

    SI (x = 1)mayor = n

    SINOSI (n > mayor)

    mayor = nFIN SI

    FIN SI

    FIN PARAFIN

    7.- El siguiente algoritmo permite mostrar alternativamente las palabras "Hola" y "Chao". Esto har hastaque se muestren 13 palabras.

    INICIOSw, x : NumricasSw = 0PARA x = 1 HASTA 13

    SI (Sw = 0)MOSTRAR "Hola"Sw = 1

    SI NO

    MOSTRAR "Chao"Sw = 0FIN SI

    FIN PARAFIN

    8.- Una empresa dedicada al cambio de monedas extranjera, cuenta con la siguiente lista de precios:

    1.- Dlar 680 pesos2.- Dracma550 pesos3.- Dinares 150 pesos4.- Rupias 350 pesos

    El requerimiento planteado por esta empresa, plantea la necesidad indeterminada de cambios monetarios.En cada intercambio se debe leer el cdigo de la moneda y el monto que se pretende transar, para que elalgoritmo indique su equivalente en pesos.

    Adems, la empresa requiere saber, luego de finalizadas las transacciones, cuantas monedas se recibieron decada una.

    INICIOresp: Alfanumricam, dlar, dracma, dinar, rupia, monto Numricasresp = "S"dlar = 0dracma = 0

    dinar = 0rupias = 0MOSTRAR " MENU

    1.- Dlar 680 pesos2.- Dracma 550 pesos3.- Dinares 150 pesos4.- Rupias 350 pesos"

    MIENTRAS (resp = "S") o (resp = "s") HacerREPETIR

    MOSTRAR "Indique cdigo de moneda"LEER m

    HASTA QUE (m > 0) y (m< 5)REPETIR

    MOSTRAR "Ingrese el monto"LEER monto

    HASTA QUE (monto > 0)

    HACER EN CASOEN CASO m = 1:

    dlar = dlar + montopesos = monto * 680

    EN CASO m = 2dracma = dracma + montopesos = monto * 550

    EN CASO m = 3

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 18

  • 8/6/2019 programacionconc

    19/40

    dinar = dinar + montopesos = monto * 150

    EN CASO m = 3rupia = rupia + montopesos = monto * 350

    FIN EN CASOREPETIR

    MOSTRAR "Desea seguir S o N)LEER respResp = Mayusc(resp)

    HASTA QUE (resp = "S") o (resp = "N")FIN MIENTRASMOSTRAR "Total dlares : ", dlarMOSTRAR "Total dracmas : ", dracmaMOSTRAR "Total dinares : ", dinarMOSTRAR "Total rupias : ", rupias

    FIN

    ARREGLOS

    Se puede visualizar un arreglo como un conjunto de datos de un mismo tipo (numrico o alfanumrico). Alos cuales se les asigna un nombre para identificar as al conjunto total de valores. A cada dato partcipe delarreglo se le denomina Elemento.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 19

  • 8/6/2019 programacionconc

    20/40

    Arreglo unidimensional o Vectores: Es un conjunto de celdas, ordenadas en fila, en las que se depositandatos de mismo tipo.

    Un arreglo unidimensional es un conjunto de datos organizados en forma de lista. Los valores que semuestran en el siguiente ejemplo pueden considerarse como elementos de un arreglo unidimensional ovector:

    21,14,15,80,17,25,30

    Si a este conjunto (lista) de edades se le coloca un nombre como EDADES, se puede hacer referencia acualquier elemento del vector agregando un nmero encerrado entre parntesis cuadrados [ ], al que se ledenomina ndice, el cual indica la posicin que ocupa dentro del vector un determinado elemento.

    150000 50000 450000 348000 500000 400000 600000

    A este vector le llamaremos SUELDOS, y la referencia a sus elementos sera de la siguiente manera:

    Sueldo[1] = 150000Sueldo[2] = 50000...

    Sueldo[7] = 600000Los ndices o subndices pueden representarse por medio de una variable, nmero o expresin matemtica.

    Ejemplo:

    Sueldo[K]Sueldo[1]Sueldo[K+1]

    Los subndices deben servalores enteros y positivos.

    Los elementos de un vector pueden ser operados, comparados, modificados, ingresados y mostrados, como sifueran variables.

    Ejemplo:

    S = Sueldo[1] + 500Sueldo[3] = 500Si Sueldo[2] > 300000Leer Sueldo[X]Mostrar Sueldo[X]

    Declaracin de Vectores

    Se debe realizar al comienzo del algoritmo justo despus de la palabra INICIO.

    Se debe indicar mediante la instruccin arreglo seguido por el nombre del vector y entre parntesis la

    cantidad de elementos.Formato:

    DECLARAR Nombvector[largo] de tipo

    Ejemplo:DECLARAR Sueldo[7] de numricas

    Esto indica que se ha definido un vector con el nombre SUELDO que contiene como mximo 7 elementos detipo numrico.

    Ingreso de datos en un Vector

    INICIODECLARAR Lista[4] de numricas

    LEER lista[1]LEER lista[2]LEER lista[3]

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 20

  • 8/6/2019 programacionconc

    21/40

    LEER lista [4]

    Se observa la definicin del arreglo lista de largo 4 del tipo numrico, posteriormente, cuatro instruccionesde ingreso, una para cada elemento. Sin embargo, el ingreso de datos se puede realizar utilizando lainstruccin iterativa PARA, quedando de la siguiente manera:

    INICIODECLARAR lista[4] de numrica

    X : numricaPARA x = 1 HASTA 4

    LEER lista[x]FIN PARA

    FINObsrvese que la variable x cambia de 1 a 4. De esta manera, cada una de las iteraciones permite leer unelemento en una nueva posicin.

    Desplegar o mostrar los elementos de un vector

    La lgica de este proceso es la misma que para leer, salvo que ahora se usa la instruccin Mostrar.

    INICIO

    DECLARAR lista[4] de numricaX : numricaPARA x = 1 HASTA 4

    LEER lista[x]FIN PARAPARA x = 1 Hasta 4

    MOSTRAR lista[x]FIN PARA

    FIN

    Si se desea mostrar un elemento en forma particular, se indica el nombre del vector y el lugar donde esta elelemento

    EjemploINICIO

    DECLARAR Nombre[100] de numricaX : numricaMOSTRAR "Ingrese posicin 1 al 100"LEER XMOSTRAR "En esa posicin est : ", Nombre[X]

    FIN

    Ejemplos:

    1.- El siguiente algoritmo permite llenar un vector de 10 posiciones y luego mostrar su contenido de manerainversa al ingreso:

    INICIODECLARAR datos[10] de numricaX : numrica

    PARA x = 1 HASTA 10MOSTRAR "ingrese un valor"

    LEER datos[x]FIN PARAPARA x = 10 HASTA 1 restando 1

    MOSTRAR datos[x]FIN PARA

    FIN

    2.- En el siguiente algoritmo se llenar un vector llamado Lista de 100 elementos desde la ltima posicinhasta la primera.

    INICIODECLARAR lista[100] de numrica

    X : numricaPARA x = 100 HASTA 1 restando 1

    LEER lista[x]

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 21

  • 8/6/2019 programacionconc

    22/40

    FIN PARAFIN

    3.- En el siguiente algoritmo se llenar un vector de 100 posiciones llamado ABC y despus de finalizado elingreso de dato, se contar cuantos nmeros son positivos

    INICIODECLARAR ABC[100] de numrica

    X , Contador : numricaContador = 0PARA x = 1 Hasta 100

    MOSTRAR "Ingrese un nmero"LEER ABC[x]

    FIN PARAPARA x = 1 HASTA 100

    SI(ABC[x] > 0Contador = Contador + 1

    FIN SIFIN PARAMOSTRAR "Se ingresaron ", Contador, "nmeros positivos"

    FIN

    4.- Se tiene un vector llamado Vec de 50 posiciones. El siguientes algoritmo permite llenar dicho vector slocon nmeros positivos:

    INICIODECLARAR Vec[50] de numrica

    X , : numricaPARA x = 1 HASTA 50

    REPETIRMOSTRAR "Ingrese un nmero"LEER Vec[x]

    HASTA QUE (Vec[x] > 0)FIN PARA

    FIN

    5.- Supongamos que tenemos un vector llamado Lista de 100 posiciones con elementos enteros positivospreviamente ingresados. Con el siguiente algoritmo se puede determinar el promedio de todos los elementosque hay en el vector.

    INICIODECLARAR Lista[100] de numrica

    Acum, x , p : numricaAcum = 0X = 0PARA x = 1 HASTA 100

    Acum = Acum + Lista[x]FIN PARA

    P = Acum / 100MOSTRAR "El promedio es de ", PFIN

    6.- Utilizando el mismo vector del algoritmo anterior cambiaremos todos los elementos por su doble. Vamosa suponer que el elemento ya est lleno.

    PARA x = 1 HASTA 100Lista[x] = Lista[x] * 2

    FIN PARA

    7.- Supongamos que tenemos un vector llamado Lista de 10 posiciones con nmeros ya ingresados en l. Elsiguiente algoritmo ordena de menor a mayor dicho vector.

    INICIODECLARAR Lista[10] de numricasx, y : NumricaPARA x = 1 HASTA 9

    PARA y = x+1 Hasta 10

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 22

  • 8/6/2019 programacionconc

    23/40

    SI Lista[x] > lista[y]Aux = Lista[x]Lista[x] = Lista[y]Lista[y] = aux

    FIN SIFIN PARA

    FIN PARA

    FIN8.-- Determinaremos cual es el promedio mayor de dos vectores cuyos elementos ya estn ingresados. Losvectores de llaman A y B.

    INICIODECLARAR A[10], B[10] de numricasacuma, acumb, pos, proma, promb : numricasacuma = 0acumb = 0PARA pos = 1 HASTA 10

    acuma = acuma + A[pos]acumb = acumb + B[pos]

    FIN PARAproma = acuma / 10promb = acumb / 10SI (proma > promb)

    MOSTRAR " El promedio mayor es el del vector A"SI NO

    MOSTRAR " El promedio mayor es el del vector B"FIN SI

    FIN

    Paralelismo entre vectores

    Los vectores no siempre se usan de manera independiente, pues en ocasiones hay informacin que hacereferencia a un mismo ente, por tanto, se requiere usar vectores de un modo paralelo. Esto significa que elloscumplirn con las siguientes caractersticas.

    - La informacin almacenada en ellos guardada esta relacionada entre s a partir de su posicin.- Cualquier modificacin de sus ubicaciones tiene que ser hecha en todos los vectores que estn siendo

    tratados paralelamente.

    Si tenemos tres vectores en donde guardamos: nombre, sexo y edad de 6 personas, entonces tendramos algoas:

    NOMBRE SEXO EDAD

    ANA F 25

    PEDRO M 23DIEGO M 32ROSA F 28CARLOS M 40HERNAN M 30

    En estos vectores la informacin de una persona est contigua en los tres vectores, as, si en la primeraposicin del vector NOMBRE aparece ANA, el sexo y la edad que aparecen en los otros vectores pertenecena ella.

    En este tipo de vectores, si se altera el orden de los datos en un vector, este cambio debe realizarse en losotros vectores para no perder contigidad de los elementos.

    Por ejemplo si intercambiamos en el vector NOMBRE el primer elemento por el segundo, pasara losiguiente:

    NOMBRE SEXO EDAD

    PEDRO F 25ANA M 23DIEGO M 32

    ......... .......... ........Como se puede aprecia, al no realizar el cambio en los otros vectores, se produjo una alteracin en los datos,ya que ahora Pedro aparece con sexo femenino y con 25 aos que eran los datos de Ana, as mismo Ana

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 23

  • 8/6/2019 programacionconc

    24/40

    quedo con los datos de Pedro. Por lo tanto, los cambios deberan hacerse tambin en los otros dos vectorespara que queden as:

    NOMBRE SEXO EDAD

    PEDRO M 23ANA F 25DIEGO M 32

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

    De eta forma los datos cambiaron de posicin pero no perdieron su relacin.

    Ejemplo:INICIO

    DECLARAR Nombre[6] de alfanumricasDECLARAR Edad[6] de numricasDECLARAR Sexo[6] de alfanumricasauxN, auxS : alfanumricasauxE, x, y : numricasPARA x = 1 HASTA 6

    MOSTRAR "Ingrese nombre"LEER Nombre[x]MOSTRAR "Ingrese sexo"LEER Sexo[x]MOSTRAR "Ingrese edad"LEER Edad[x]

    FIN PARAPARA x = 1 HASTA 5PARA y = 2 HASTA 6

    SI (Nombre[x] > Nombre[y]auxN = Nombre[x]Nombre[x] = Nombre[y]Nombre[y] = auxN

    auxS = Sexo[x]Sexo[x] = Sexo[y]Sexo[y] = auxSauxE = Edad[x]Edad[x] = Edad[y]Edad[y] = auxE

    FIN SIFIN PARA

    FIN PARAFIN

    EJERCICIOS

    Desarrolle los siguientes algoritmos:

    1.- Llene un vector llamado Nmeros, de 100 posiciones con elementos enteros positivos.

    2.- Usando el mismo vector del ejercicio anterior, haga un algoritmo que permita llenar el vector slo connmeros que sean mltiplos de 5

    3.- Se tiene un vector llamado Orden de largo 100 con elementos enteros pero distintos entre s. Ordene laprimera mitad de ste de menor a mayor y la segunda mitad de mayor a menor.

    4.- Se tiene un vector de 50 posiciones de letras ingresadas, cree un algoritmo que determine cuantas vecesse da que una letra se encuentre en una posicin que coincida con su posicin dentro del abecedario.

    5.- una tienda de calzado ha utilizado un vector para colocar los precios de sus zapatos de tal forma que elprecio de un zapato est ubicado en la posicin que corresponda a su nmero, as, un zapato nmero 33 tienesu precio en la posicin 33 del vector y un zapato nmero 40 tiene su precio en la posicin 40m del vector.

    Con estos datos realice un algoritmo que le permita al usuario procesar tantas ventas como desee si por cadauna de ellas tiene que leer e nmero del zapato y la cantidad de pares que desea llevar para recibir delalgoritmo el monto a pagar.

    6.- Una empresa tiene una lista de sus empleados en la que se tiene sus nombres, edad y su estado civil.Confeccione un algoritmo que permita determinar cual es la edad que se repite ms en la lista.

    7.- Una persona ha escrito en un vector un mensaje. Si se sabe que:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 24

  • 8/6/2019 programacionconc

    25/40

    - En cada casilla hay un carcter.- El mensaje no necesariamente empieza en la primera posicin.- El mensaje no termina necesariamente en la ultima posicin del vector.- Cada palabra est separada por uno o ms espacio en blanco.

    Cree un algoritmo que permita determinar cuantas palabras fueron ingresadas.

    8.- Se tiene dos arreglos unidimensionales. KALTO y KABAJO de 50 elementos. Se debe crear otros tresarreglos. El primero, con la suma de os elementos respectivos, el segundo con el producto y el tercero con ladifere3ncia (si la diferencia es negativa coloque 0 como valor).

    9.- Se tiene un arreglo llamado AX de 40 elementos determine:

    - La cantidad de nmeros impares.- La cantidad de nmeros positivos- La cantidad de nmeros entre 0 y 9- La cantidad de nmeros pares.

    10.- Cree un algoritmo que permita corregir una prueba de seleccin nica de 30 preguntas. Para ello debecrear tres vectores: uno con las respuestas correctas, otro con las respuestas del alumno y el tercero ser para

    la correccin.La correccin ser de la siguiente forma:

    Si la respuesta del alumno esta en blanco deber colocar un * en el vector correccin.Si la respuesta del alumno es igual al de la pauta colocar una letra B.Si la respuesta del alumno no coincide con la de la pauta colocar una letra M.

    La no ser igual a 7 dividido por la cantidad de preguntas y el resultado multiplicado por la cantidad derespuestas buenas.

    Deber desplegar: la pauta de correccin, las respuestas del alumno, la correccin y la nota obtenida.

    El algoritmo debe corregir n cantidad de pruebas.

    LENGUAJE C

    En la redaccin de un programa en C se pueden utilizar para formar los elementos bsicos (constantes,variables, operadores de expresin) las letras maysculas de la A a la Z, las minsculas de la a a z, los dgitosde 0 al 9 y ciertos caracteres especiales.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 25

  • 8/6/2019 programacionconc

    26/40

    Caractersticas del lenguaje C

    C tiene cinco tipo de datos bsicos incorporados, entre ellos estn los enteros, los caracteres y los reales.

    Palabras claves

    Una palabra clave es aquella que tiene un significado especial dentro del lenguaje. Debido a esto, nuncadeben ser utilizadas como nombres de variables o de funciones.

    Las palabras claves en C estn escritas en minsculas, siendo 32 las definidas por el estndar ANSI de C:

    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

    en C, las mayusculas son diferentes con las minsculas, as: else es una palabra clave y ELSE no lo es.

    Estructura de un programa en C

    Los programas en C, consisten en una o ms funciones. La nica funcin que siempre debe estar presente esla denominada main(), ya que es la primera en ser llamada cuando comienza la ejecucin de programa.

    La estructura general de un programa en C es la siguiente:

    #include

    #define

    declaracin de funciones

    declaracin de variables globales

    main()

    {

    variables locales del main()

    sentencias

    }

    f1()

    {

    variables locales de la funcin f1()

    sentencias

    }

    .

    .

    fn(){

    variables locales de la funcin fn()

    sentencias

    }

    Los #include son necesarios cuando ocupamos determinadas sentencias que necesitan sus respectivabibliotecas para poder ejecutarse. Por ejemplo, por lo general una sentencia de entrada/salida requerir de labiblioteca stdio; se debe codificar #include

    Los #define se ocupan cuando una variable debe tener un valor equivalente a travs de todo el programa porejemplo que la variable PI sea siempre igual a 3.1416; se debe codificar #define PI 3.1416.

    Las declaraciones de funciones consisten bsicamente en establecer que existe una funcin en algn lugar delprograma con una cantidad determinada de variables de entrada y que deber retornar un determinado tipo devalor.

    Las variables globales son aquellas que se utilizarn a lo largo de todo el programa, en cambio, las variableslocales son aquellas que se usarn slo en las funciones.

    El main() es la funcin principal de un programa en C, siempre debe declararse pues el programa en su iniciola primera funcin que se lee es el main(). Si n existe nos arrojar un error.

    Las funciones deben estar previamente declaradas para poder ser utilizadas.

    Un programa bsico deber contener a lo menos un rea para el main() y otras rea para los #include.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 26

  • 8/6/2019 programacionconc

    27/40

    Biblioteca y enlazado

    Una biblioteca es una coleccin de funciones para llevar a cabo diversas tareas.

    La biblioteca estndar de C, no forma parte del lenguaje, pero si es un entorno que proporcionadeclaraciones, funciones y macrodefiniciones

    C no proporciona dentro de la definicin real del lenguaje, mtodos para llevar a cabo las operaciones de

    entrada/salida (E/S), debido a esto, la mayora de los programas incluyen llamadas a variadas funcionescontenidas en la biblioteca estndar del lenguaje C.

    Cuando e llama a una funcin que no es parte del programa que se ha escrito, C recuerda su nombre. Mstarde, en enlazador combina el cdigo objeto producido al compilar el programa fuente, con el cdigo objetode la funcin que se encuentra en la biblioteca estndar. Este proceso se llama enlazamiento.

    Identificadores y palabras claves

    Identificadores: corresponden a los nombres usados para referirse a las variables, funciones, etiquetas y otrosobjetos definidos por el programador.

    La longitud de un identificador puede variar entre 1 y 32 caracteres. Para definirlos se deben seguir lassiguientes reglas:

    Todo identificador debe empezar con una letra entre "a" y "z" o entre "A" y "Z" o con underscore "_". El resto del identificador pueden ser letras o dgitos del 0 al 9 o underscore. Otros smbolos no pueden

    ser utilizados. Se consideran caracteres significativos solo los primeros 32. Los identificadores diferencian entre maysculas y minsculas.

    Ejemplo:

    Nombres vlidos: x y12 suma_10 _tempe TABLA SuElDo

    No vlidos 4num el primer carcter debe ser una letra.

    "x" Caracteres ilegales (").

    Or-den carcter ilegal (-)

    Id error carcter ilegal (espacio en blanco)

    Tipo de datos

    Existen en C distintos tipos de datos, cada uno de los cuales se puede encontrar representado de formadiferente en la memoria del computador.

    Tipo Tamao en bits Rango Descripcin

    Char 8 0 a 255 Solo contiene un carcter Int 16 - 32768 a 32767 Nmero enteroFloat 32 3.4*10-38 a 3.4*1038 Punto flotante precisin simple

    double 64 1.7*10-308

    a 1.7*10308

    Punto flotante de doble precisin

    Los valores tipo char se usan para guardar los valores definidos en el juego de caracteres ASCII; lasvariables tipo int se usan para guardar cantidades enteras; las variables tipo float y double se utilizan paranmeros reales

    Declaracin de variables

    Todas las variables deben ser declaradas antes de usarlas. La sintaxis para ello es:

    Tipo lista_de_variables

    Donde tipo debe ser un tipo vlido n C y lista_de_variables puede ser uno o ms nombres de identificadoresseparados por comas.

    Ejemplos: int i,j,k;float impuesto, IVA, calculo;

    Es muy importante en el uso de variables el realizar una adecuada inicializacin de las mismas, ya que alcrearlas, stas pueden tomar cualquier valor, lo que puede afectar el correcto funcionamiento de programa.

    La forma tradicional de inicializacin en los lenguajes de programacin es:

    int contador;

    contador = 0

    Sin embargo, en C es posible realizar dicha inicializacin en e momento de la declaracin de la variable

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 27

  • 8/6/2019 programacionconc

    28/40

    int contador=0, loop =-1;

    float IVA=0.18

    Constantes

    C tiene cuatro tipos bsicos de constantes: constantes enteras, de cmo flotante, de carcter y de cadenas decaracteres.

    Las constantes enteras y de coma flotante representan nmeros. Se las denomina en general constantes detipo numrico. Las siguientes reglas se pueden aplicar a todas las constantes numricas:

    No se pueden incluir comas ni espacios en blanco. Si se desea, la constante puede ir precedida de un signo menos (-)

    Una constante entera decimal puede tener cualquier combinacin de dgitos tomados del conjunto de 0 a 9.

    Una constante de coma flotante es un nmero decimal que contiene un punto decimal.

    Una constante de carcter es un solo carcter encerrado entre comillas simples.

    Una constante de cadena de caracteres consta de cualquier nmero de caracteres consecutivos encerradosentre comillas (").

    Operadores en C

    Un operador es un smbolo que le indica al compilador que lleve a cabo ciertas manipulaciones matemticaso lgicas.

    En C, hay tres clases generales de operadores: aritmticos, relacionales y lgicos.

    Operadores aritmticos

    Operador Accin- Resta+ Suma* Multiplicacin

    / Divisin% Divisin en mdulo-- Decremento++ incremento

    Operadores relacionales

    Operador Accin> Mayor

    >= Mayor o igual< Menor

  • 8/6/2019 programacionconc

    29/40

    Una expresin representa una unida de datos simples, tal como un nmero o un carcter. La expresin puedeconsistir en una entidad simple, como una constante, una variable, un elemento de un array o una referencia auna funcin. Tambin puede consistir en alguna combinacin de tales entidades interconectadas por uno oms operadores.

    Sentencias

    Una sentencia hace que el computador lleve a cabo alguna accin. Hay tres tipos de sentencias en C: deexpresin, compuestas y de control.

    Una sentencia de expresin consiste en una expresin seguida de un punto y coma (;).

    Una sentencia compuesta esta formada por una o varias sentencias individuales enceradas con un par dellaves ({}). Una sentencia compuesta no termina en un punto y coma.

    La sentencias de control se utilizan para conseguir ciertas acciones especiales en los programas, tales comocomprobaciones lgicas, bucles y ramificaciones. Muchas sentencias de control requieren que otrassentencias se encuentren incluidas en ellas.

    ENTRADA Y SALIDA DE DATOS

    Funcin scanf()

    Biblioteca

    Es una funcin de entrada que permite leer datos y almacenarlos en variables predefinidas.

    Formato:

    scanf("especificacin de formato", arg1, arg2, ... argn)

    Los especificadores de formato estn predefinidos por el smbolo % e indica los tipos de datos que se van aleer a continuacin.

    Algunos especificadores:

    Cdigo Significado%c Leer un nico carcter %d Leer un entero decimal%f Leer un nmero flotante%s Leer un string

    Cada nombre de variable debe ser precedido por un ampersand (&). Sin embargo, los nombres de strings nodeben ser precedidos por el ampersand.

    Ejemplo:

    scanf("%s %d %f", letras, &entero, &flotante);

    En este ejemplo se leer en primer lugar un string a continuacin un numero entero y por ltimo un numeroflotante.

    Funcin printf()

    Biblioteca

    Es una funcin de salida que permite escribir datos y desplegarlos por pantalla.

    Formato:

    printf("especificacin de formato", arg1, arg2, ... argn)

    La especificacin de formato son similares a los de la funcin scanf().

    Ejemplo:

    printf("%f %d", a, b)

    En este ejemplo se desplegara en primer lugar un numero flotante a continuacin un numero entero.

    En el siguiente ejemplo se den ingresar tres nmeros y se deber desplegar la multiplicacin del primernmero con el segundo y el resultado de la divisin del resultado de la primer operacin dividido por e tercernmero ingresado.

    #include main(){

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 29

  • 8/6/2019 programacionconc

    30/40

    int a,b,c,d,e;a = 0;

    b = 0;c = 0;d = 0;e = 0;

    printf("ingrese valor de a";

    scanf("%d",a);printf("ingrese valor de b";scanf("%d",b);

    printf("ingrese valor de c";scanf("%d",c);d = a * b;e = d / c;

    printf("resultado multiplicacin %d \n", d)printf("resultado divisin %d \n", e)

    }

    Sentencias de control:

    Sentencia if - else

    Se utiliza para realizar un test lgico y a continuacin llevar a cabo una de dos posibles acciones,dependiendo del resultado.

    Formato 1:

    If (expresin){

    Sentencias}

    Formato 2:If (expresin){

    Sentencias}else{

    Sentencias}

    ejemplos:

    if (x > 0){

    printf(" X es mayor a 0: %d", x}

    if (x > 0){

    printf(" X es mayor a 0: %d", x}else

    { printf(" X es menor o igual a 0: %d", x}

    Sentencia for

    Es una estructura de control que define un nmero fijo de iteraciones sobre un grupo de expresiones.

    Formato:

    for (inicializacin;condicin;incremento){

    grupo de instrucciones}

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 30

  • 8/6/2019 programacionconc

    31/40

    inicializacin: se utiliza para inicializar un parametro que controla la repeticin del ciclo.

    Condicin: es la condicin que debe ser satisfecha para que se contine la ejecucin del ciclo.

    Incremento: se utiliza para modificar el valor del parametro inicialmente asignado en la inicializacin.

    Ejemplo:

    .......A = 1;B = 5;I = 0;For (I = 1; I

  • 8/6/2019 programacionconc

    32/40

    printf("%d \n", digito);++digito;

    }while (digito

  • 8/6/2019 programacionconc

    33/40

    Ejemplo:int x[10];char texto[80];

    #include #define tamano 80main()

    {char letra[tamano];int cont:

    /* leer una lnea en minsculas y desplegarla en mayscula */for (cont = 0; cont < tamano; cont++

    letra[cont] = getchar();/* despliega la lnea en mayscula */

    for (cont = 0; cont < tamano; cont++putchar(toupper(letra[cont]));

    En este ejemplo se utilizan las funciones getchar y putchar.

    Mediante la funcin getchar se puede conseguir la entrada de caracteres uno a uno. La funcin no requiere deargumentos, aunque es necesario que un par de parntesis vacos sigan a la palabra getchar.

    Mediante la funcin putchar se puede visualizar un carcter. Esta funcin es complementaria a la funcingetchar y transmite un carcter al dispositivo de salida. El carcter que se transmite estar representado poruna variable tipo carcter. Se debe proporcionar como argumento de la funcin encerrado entre parntesis,siguiendo a la palabra putchar.

    Asignacin de valores a una array

    Ejemplo:

    int digitos[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9,10}char letras[5] = "ABCD",char letras[5] = {'A', 'B', 'C', 'D', \0};en este ejemplo se debe incluir explcitamente el carcter nulo

    Un string es un array de caracteres que finaliza con el carcter nulo, y un carcter es el valor de un byte.

    Arrays bidimensionales

    Ejemplo:int valor[3] [4]; /* arreglo de 3 filas y 4 columnas */int valor[3] [4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

    int valor[3] [4] = { {1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};

    FUNCIONES

    FUNCION: Es un segmento del programa que realiza determinadas tareas bien definidas. Todo programa Ccuenta de una o ms funciones. Una de estas funciones debe llamarse main. La ejecucin del programasiempre comenzara por la de las instrucciones contenidas en main.

    Si un programa contiene varias funciones, sus definiciones deben aparecer en cualquier orden, pero deben serindependientes una de otras. Esto es, una definicin de una funcin no puede estar incluida en otra.

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 33

  • 8/6/2019 programacionconc

    34/40

    Cuando se llama a una funcin desde alguna determinada parte del programa, se ejecutan las instrucciones deque consta. Se puede acceder a una funcin desde varios lugares distintos del programa. Una vez que se hacompletado la ejecucin de una funcin, se devuelve el control al punto desde que se accedi.

    Las funciones en C, presentan la siguiente forma:

    Tipo_funcin nombre (lista_parametros){

    cuerpo de la a funcinreturn(valor);

    }

    Tipo_funcion corresponde al tipo de valor que devuelve la funcin, pudiendo ser cualquier tipo valido, si nodevuelve valor el tipo es void.

    La sentencia return, tiene dos usos importantes. Primero fuerza una salida inmediata de la funcin en que seencuentra, siguiendo la ejecucin en la sentencia siguiente de donde fue llamada. El otro uso, es devolver unvalor.

    En C, todas las funciones excepto las de tipo void, devuelven valor. Este valor, se especifica explcitamenteen la sentencia return. Cuando una funcin no se define de tipo void y, adems, no se especifica un valor deretorno, entonces el valor devuelto por la funcin queda tcnicamente indefinido

    En C, es fundamental colocar el tipo de la funcin, pues de lo contrario se interpretara, que la funcin retornaun entero.

    ARGUMENTOS DE FUNCIONES: Cada funcin que use argumentos, debe declarar variables queacepten los valores de los argumentos. Esta variables se llaman parmetros formales de la funcin.

    Ejemplo:Mul(int a, int b){

    return(a * b);}

    La funcin Mul tiene dos parmetros: a y b.

    Al igual que como otro tipo de variables, se pueden hacer asignaciones a los parmetros formales de unafuncin o usarlos en cualquier expresin vlida de C.

    PASO DE ARGUMENTOS A LAS FUNCIONES

    LLAMADA POR VALOR: En esta forma de pasar argumentos, se copia el valor del argumento en elparmetro formal de la funcin. De esta manera, los cambios producidos en los parmetros de la funcin noafectan alas variables que se usan en la llamada.

    Ejemplo:

    #include #include int SUMA(int a, int b) int SUMA(int a, int b);{ int c; main()

    c = a + b); { int x=5, y=6,z=0;return (c); z = SUMA(x,y);

    } printf("la suma de %d + %d = %d"x,y,z);main() }{ int x=5, y=6,z=0; int SUMA(int a, int b)

    z = SUMA(x,y); { int c;printf("la suma de %d + %d = %d",x,y,z); c = a + b);

    } return (c);

    }

    LLAMADA POR REFERENCIA: Es otra forma de pasar argumentos a una funcin. En este mtodo, secopia la direccin del argumento en el parmetro formal, cualquier cambio producido en los parmetros de lafuncin, modifican a la variable usada en la llamada.

    Para causar una llamada por referencia se debe pasar un puntero al argumento, esto se hace incorporando un& delante de l. Adems, se debe declarar el respectivo parmetro formal de tipo puntero.

    Ejemplo:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 34

  • 8/6/2019 programacionconc

    35/40

    #include main(){

    int x=5, y=6;printf("x = %d y = %d \n",x,y);

    CAMBIAR(&x,&y);printf("ahora x = %d y = %d \n",x,y);

    }int CAMBIAR(int *a, int *b){ int z;

    z = *x;*x = *y;*y = z;

    }

    PUNTEROS

    PUNTERO: es una variable que contiene una direccin de memoria. Normalmente, esa direccin es laposicin en memoria de otra variable.

    La forma general de declarar un puntero es la siguiente: tipo *nombre

    Tipo, es cualquier tipo valido en C; nombre, es el nombre de la variable puntero.

    Existen 2 operadores especiales de puntero: & y *. El & devuelve la direccin de memoria de su operando, yel *, devuelve el valor de la variable que se encuentra en la direccin apuntada.

    Ejemplo:#include main(){

    int x=5;

    /* define un puntero a p1 y p2 */int *p1, *p2;/* p1 toma la direccin de x */

    p1 = &x;/* p2 toma el valor de p1 */

    p2 = p1;printf("Contenido de x %d \n", x);printf("Direccion de x en p1 y en p2 %p %p \n", p1, p2);printf("Contenido de p1 y p2 como entero %d %d \n", *p1, *p2);printf("Contenido de p1 y p2 como punteros %p %p \n", *p1, *p2);

    }

    #include main(){

    int x=100, y=200;/* define un puntero a p */

    int *p;/* p toma la direccin de y */

    p = &y;/* x toma el resultado de la multiplicacin del valor que tiene la direccin asignada a p * 5 */

    x = *p * 5;printf(" x = %d \n", x);printf(" y = %d \n", y);

    printf( direccion p = %p \n", p);printf( valor de p = %d \n", *p);

    }ESTRUCTURAS

    Una estructura es un tipo conglomerado que esta compuesto por dos o ms elementos relacionados. Adiferencia de los arreglos, cada elemento de una estructura puede tener su propio tipo, que puede diferir delos tipos de los otros elementos. Los elementos individuales de una estructura son referidos como miembros.

    Una estructura debe ser definida en trminos de sus miembros individuales.

    Las estructuras se definen usando la siguiente forma general:

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 35

  • 8/6/2019 programacionconc

    36/40

    struct etiqueta{

    tipo elem-1;tipo elem-2:.........tipo elem-n;

    } variables tipo etiqueta;

    Ejemplo:

    struct libros{

    char autor[25];char titulo[30];char editor[25];int cantidad;

    float valor;} nuelib, antlib;

    Tambin se pueden declarar variables de estructura del tipo etiqueta, en el ejemplo libros es la etiqueta ynuelib y antlib son variables del tipo libros, es decir, tienen el mismo formato que libros.

    PROCESAMIENTO DE UNA ESTRUCTURA: Los miembros de una estructura se procesangeneralmente en forma individual, esto se realiza escribiendo:

    variable.miembro

    variable es el nombre de una variable tipo de un tipo de estructura y miembro el nombre de un miembrodentro de la estructura, la variable y el miembro deben ir separados por un punto.

    Ejemplo: nuelib.autor

    MANEJO DE ARCHIVOS EN LENGUAJE C

    APERTURA Y CIERRE DE UN ARCHIVO: Cuando se trabaja con archivos, el primer paso es establecerun rea de buffer donde la informacin se almacena temporalmente mientras se esta transfiriendo entre lamemoria y el archivo de datos. Esta rea de buffer permite leer y escribir informacin del archivo msrpidamente. El rea de buffer se establece definiendo un puntero tipo archivo de la siguiente forma:

    FILE *nombre-variable

    FILE (en mayscula) es un tipo especial de estructura que establece el rea de buffer, nombre-variable lavariable puntero que indica el principio del rea (FILE normalmente definido en stdio.h).

    Un archivo debe ser abierto antes de ser creado a procesado. Esto asocia el nombre de archivo con el rea debuffer. Tambin especifica como se va a utilizar el archivo.

    Para abrir el archivo se codifica lo siguiente:

    nombre-variable = fopen("nombre-archivo","tipo-archivo");

    Nombre-archivo y tipo-archivo son cadenas que representan, respectivamente, el nombre del archivo y laforma en que el archivo ser utilizado.

    Tipo-archivo:

    "r" abre el archivo para lectura. "w" abre el archivo para escritura, si existe ser destruido y creado uno nuevo. "a" agrega, abre o crea el archivo para escribir al final. "r+" abre el archivo para actualizacin. "w+" crea el archivo para actualizacin; descarta cualquier contenido previo si existe. "a+" Lee y agrega, si no existe crea uno nuevo.La funcin fopen retorna un puntero al principio del rea de buffer asociada con el archivo, Se retorna elvalorNULL si no puede abrir el archivo.

    Ejemplo:

    FILE *ftp;................ftp = (fopen("hola.dat","r"))if (ftp == NULL)

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 36

  • 8/6/2019 programacionconc

    37/40

    printf("No puedo abrir archivo ya que archivo no existe");else PROCESOfclose(ftp);

    otra forma:

    if ((ftp = fopen("hola.dat","r")) == NULL)

    printf("No puedo abrir archivo ya que archivo no existe");else PROCESO

    .........fclose(ftp);

    LECTURA Y ESCRITURA DE ARCHIVOS

    Funcin fread: permite leer un archivo. Formato: fread(&nn,sizeof(nn),1,pp);

    Funcin fwrite: permite escribir en un archivo . Formato: fwrite(&nn,sizeof(nn),1,pp);

    Cada una de estas funciones necesita cuatro argumentos:

    nn: es la variable estructura tipo registro,sizeof(): el tamao del bloque de datos.1: el numero de bloques a transferir.pp: el puntero al archivo.

    Ejemplo lectura:

    fread(&nuelib,sizeof(nuelib),1,ftp);

    Ejemplo escritura:

    fwrite(&nuelib,sizeof(nuelib),1,ftp);

    EJEMPLO DE MANEJO DE ARCHIVOS

    #include #include ......

    Define estructura para el registro de datos del archivo

    struct nombre-estructura{

    definicin de campos

    } nombre-registro;main(){Define puntero para el archivo

    FILE *puntero;. ..

    }

    GRABACION DE ARCHIVOS

    Abre el archivo para escribir (grabar) registro

    If ((puntero=fopen("nomb-archivo,"wb")) == NULL){

    printf("No hay espacio en disco para crear archivo");exit(1);

    }

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 37

  • 8/6/2019 programacionconc

    38/40

    ...........Graba registro en archivo

    fwrite(&nomb-registro,sizeof(nomb-registro,1,puntero)

    LECTURA DE ARCHIVO

    Abre archivo para lectura

    If ((puntero=fopen("nomb-archivo,"rb")) == NULL){

    printf("No existe el archivo en el disco");break;

    }...........Lee un registro del archivo

    fread(&nomb-registro,sizeof(nomb-registro,1,puntero)Proceso del registro

    .........

    ACTUALIZACION DE ARCHIVO

    Abre archivo para actualizacin

    If ((puntero=fopen("nomb-archivo,"rb+")) == NULL){

    printf("No existe el archivo en el disco");break;

    }...........

    ...........Lee un registro del archivo y guarda la cantidad de bytes ledos (ftell)

    fread(&nomb-registro,sizeof(nomb-registro,1,puntero)X = ftell(puntero);...

    Proceso del registro. ......Regrabacin del registro actualizado

    X tiene la cantidad de bytes ledosLR tiene que tener la longitud del registro

    X = X - LR;fseek(puntero,X,0); se posiciona para regrabar el registrofwrite(&nomb-registro,sizeof(nomb-registro,1,puntero)X = X + LR; suma la longitud del registro

    . ...Lee el siguiente registro

    fseek(puntero,X,0); se posiciona en el siguiente registrofread(&nomb-registro,sizeof(nomb-registro,1,puntero)X = ftell(puntero);

    ...Cierre del archivofclose(puntero);

    CICLO PARA PROCESO HASTA FIN DE ARCHIVO

    Leer registro

    while(!feof(puntero)){....

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 38

  • 8/6/2019 programacionconc

    39/40

    Proceso del registro........

    Leer registro nuevamente}.

    ALGUNAS FUNCIONES DE BIBLIOTECA

    funcin Tipo PropsitoArchivoinclude

    exit(u) void Cerrar los archivos y terminar el programa. stdlib.hfclose(f) int Cierra el archivo f, devuelve 0 si se ha cerrado con xito. stdio.hfeof(f) int Determina si se ha encontrado fin de archivo, si es as, stdio.h

    Preparado por Prof: Luis Gonzlez T. Slo para fines docentes 39

  • 8/6/2019 programacionconc

    40/40

    devuelve un valor distinto de 0.fmod(d1,d2) double Retorna el resto de d1/d2 con el mismo signo que d1. math.hfopen(s1,s2) file* Abre un archivo llamado s1, del tipo s2. stdio.hfread(s,i1,i2,f) int Permite leer registros de un archivo. stdio.hfseek(f,l,f) int Mueve el puntero al archivo f una distancia de 1 byte

    desde a posicin donde se encuentra.stdio.h

    ftell(f) long int Retorna la posicin actual del puntero dentro del archivof.

    stdio.h

    fwrite(s,i1,i2,f) int Permite grabar registros en un archivo. stdio.hgetch() int Espera que se le ingrese un carcter y devuelve el valor

    pero no lo muestra en pantalla.conio.h

    getchar(void) int Lee un carcter desde el dispositivo standard. stdio.hgetche() int Espera que se le ingrese un carcter y devuelve el valor

    mostrndolo en pantalla.conio.h

    gets(s) char* Lee una cadena desde el dispositivo standard. stdio.hisalnum(c) int Determina si e argumento es alfanumrico. Retorna un

    valor distinto de 0 si es cierto.ctype.h

    isalpha(c) int Determina si el argumento es alfabtico. Retorna un valor

    distinto de 0 si es cierto.

    ctype.h

    isdigit(c) int Determina si el argumento es un dgito decimal. Retornaun valor distinto de 0 si es cierto.

    ctype.h

    islower(c) int Determina si el argumento es una letra minsculaRetorna un valor distinto de 0 si es cierto.

    ctype.h

    ispunct(c) Int Determina si el argumento es un carcter de puntuacin.Retorna un valor distinto de 0 si es cierto.

    ctype.h

    isspace(c) int Determina si el argumento es un espacio en blanco.Retorna un valor distinto de 0 si es cierto.

    ctype.h

    isupper(c) int Determina si el argumento es una letra mayscula.Retorna un valor distinto de 0 si es cierto.

    ctype.h

    pow(d1,d2) double Retorna d1 elevado a d2. math.hprintf(...) int Escribe datos en el dispositivo de salida standard. stdio.hputchar(c) int Escribe un carcter en el dispositivo de salida standard stdio.h puts(s) int Escribe una cadena en el dispositivo de salida. stdio.hscanf(...) int Lee datos del dispositivo de entrada standard. stdio.hsqrt(d) double Retorna la raz cuadrada de d. math.hstrcat(cd1,cd2) char Concatena una copia de cd2 en cd1 y aade al final de

    cd1 un carcter nulo.string.k

    strcmp(s1,s2) int Compara dos cadenas. Retorna un valor negativo si s1 s2. Esta funcinconsidera las maysculas y minsculas.

    string.h

    strcmpi(s1,s2) int Compara dos cadenas. Retorna un valor negativo si s1 s2. Compara sinconsidera las maysculas y minsculas.

    string.h

    strcpy(s1,s2) char* Copia la cadena s2 en la cadena s1. string.hstrlen(s,c) int Retorna el numero de caracteres de la cadena string.hstrset(s,c) char* Pone todos los caracteres de s en c (excluyendo el

    carcter nulo del final \0).string.h

    tolower(c) int Convierto una letra a minscula. ctype.hstdlib.h

    toupper(c) int Convierto una letra a mayscula. ctype.hstdlib.h