lab programación de computadoras i 2014 cap2

Upload: larry-saldana

Post on 15-Oct-2015

21 views

Category:

Documents


1 download

TRANSCRIPT

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 1

    Objetivo: En base a un algoritmo el alumno har su traduccin a lenguaje C, participando en todo

    momento en los pasos necesarios de la creacin de un programa ejecutable en lenguaje C. El

    alumno tendr contacto directo con el compilador de lenguaje C en la computadora, conociendo las

    posibilidades de edicin que se tiene en la escritura de un programa.

    Duracin de la Prctica: 2 Horas.

    Lugar de realizacin: Laboratorio de cmputo.

    El conocimiento requerido para realizar esta Prctica es de haber asimilado: Tipos de datos,

    variables y constantes, operadores y expresiones, y estructuras de seleccin if else.

    TRANSFORMACIN DEL LENGUAJE ALGORITMICO (PSEUDOCODIGO) AL LENGUAJE C/C++

    LENGUAJE ALGORITMICO LENGUAJE C/C++

    ESTRUCTURA DEL PROGRAMA

    ALGORITMO Nombre_de_algoritmo

    Definicin de variables

    Definicin de constantes

    Declaracin de funciones

    INICIO

    Instrucciones ejecutables

    FIN

    declaracin de importaciones:

    #include ,

    definicin de constantes:

    #define nombre_equiv cadena

    definicin de tipos

    declaracin de prototipos de funciones

    void main (void)

    {

    declaracin de variables;

    instrucciones ejecutables;

    }

    definicin de funciones

    TIPOS DE DATOS

    carcter

    entero

    real

    lgico

    cadena

    char

    int / long

    float / double

    tipo definido: typedef enum {Falso, Cierto} Logico;

    tipo definido: typedef char Cadena[MAXCAR];

    TIPOS DE DATOS:

    VARIABLES, CONSTANTES

    ASIGNACIONES,

    EXPRESIONES

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 2

    DEFINICIN DE CONSTANTES

    constante o const

    Nombre_ constante = valor

    PI = 3.14159

    #define identificador_constante valor

    #define PI 3.14159

    DECLARACIN DE VARIABLES

    variable o var

    tipo: nombre_variable1, nombre_variable2,

    ...., nombre_variableN

    var

    entero: i, j, k

    real: raiz1, raiz2

    , [,

    , ....];

    int 1, j, k;

    float raiz1, raiz2;

    ASIGNACIN

    Nombre_variable expresin

    areat (base*altura)/2

    Nombre_variable = expresin;

    areat (base*altura)/2;

    ENTRADA

    leer (nombre_variable1, nombre variable2, ...)

    carcter: ch

    entero: i

    real: x

    leer (ch)

    leer ch, i, x

    getchar (carcter),

    gets (cadena),

    scanf (%x1, %x2,..., &arg1, &arg2,...); (con

    formato)

    cin >> nombre_variable; (propio del C++)

    char ch;

    int i;

    double x;

    ch = getchar();

    scanf ("%c%d%lf", &ch, &i, &x);

    SALIDA

    escribir (cadena de caracteres, variable1,

    variable2, ...)

    carcter : ch

    entero : i

    real : x

    escribir (ch)

    escribir (ch, i, x)

    putchar (carcter),

    puts (cadena),

    printf (%x1, %x2,..., arg1, arg2,...); (con formato)

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 3

    si (i 0) entonces

    x sen(i)/i

    fsi

    if (i != 0)

    x = sin(i)/i;

    ESTRUCTURA SELECTIVA DOBLE

    Si (condicin) entonces

    sentencias

    sino

    sentencias

    fsi

    Si (n mod 2 = 0) entonces

    Escribir ("nmero par")

    Sino

    Escribir ("nmero impar")

    fsi

    if (condicin)

    instruccin;

    else

    instruccin;

    if (n%2 == 0)

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 4

    Traduzcamos el algoritmo que definimos para el problema inicial y veamos como queda en el

    lenguaje:

    1. /****************************************************** 2. Universidad Nacional Mayor de San Marcos 3. Escuela Acadmica de Ingeniera de Sistemas - FISI 4. Laboratorio de Algoritmica I 5. ******************************************************* 6. Nombre de archivo : c:\Porccand.cpp 7. Fecha de Creacin : 16/09/2004 8. Hora de Creacin : 02:00:00 p.m. 9. Descripcin : "Calculo Porcentajes de Candidatos" 10. Autor : Ing. John Ledgard Trujillo Trejo 11. Copyright : Unmsm FISI 2012 12. */

    13. #include 14. #include

    15. main() 16. { 17. float votos1, votos2, votost; 18. float porc1, porc2;

    19. clrscr(); 20. cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 5

    Las primeras lneas 1 al 12, es lo que se conoce como un comentario. Los comentarios se pueden

    situar en cualquier parte de nuestro cdigo y se considerar como comentario cualquier

    mensaje que se encuentre entre los caracteres /* y */.

    13. #include 14. #include

    Las lneas 13 y 14 es lo que se conoce como directiva del preprocesador, todos los

    compiladores de C/C++ disponen de un preprocesador, un programa que examina el cdigo antes

    de compilarlo. En el se incluyen los archivos de cabecera de las libreras del C/C++ que contienen

    las funciones utilizadas en el programa.

    La librera iostream.h contiene las funciones de entrada (cin) y de salida (cout).

    La librera conio.h contiene la funcion getch.

    15. main()

    En la siguiente lnea nos encontramos con main(). Esto indica que aqu comienza nuestro

    programa. La funcin main (principal en ingls) siempre debe existir y contendr el programa

    principal.

    float votos1, votos2, votost;

    float porc1, porc2;

    Declara votos1, votos2, votost, porc1, porc2 como variables reales.

    float indica que el tipo de nmero que puede almacenar la variable es un nmero real.

    clrscr(); una sentencia de borrar pantalla.

    coutvotos1;

    Lee un nmero real desde el teclado y lo asigna (guarda) a (en) la variable votos1.

    cin es una funcin que:

    Espera que el usuario ingrese un nmero (tecleando dgitos y ENTER).

    Lee (obtiene, reconoce) el valor numrico.

    Entrega el valor numrico como resultado.

    votost = votos1 + votos2;

    asigna a la variable real votost la suma de los valores de las variables votos1 y votos2.

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 6

    EJERCICIOS

    Problema No. 1. Escribir un algoritmo y un programa en C que lea dos valores enteros y muestre

    su suma, resta, multiplicacin, divisin entera y resto de la divisin.

    DATOS DE ENTRADA: a y b nmeros enteros.

    Algoritmo Operaciones_Aritmticas

    var

    entero: a, b

    inicio

    escribir ("Introduce el primer nmero: ")

    leer (a)

    escribir ("Introduce el segundo nmero: ")

    leer (b)

    escribir ("La suma es: ", a + b)

    escribir ("La resta es: , a - b)

    escribir ("La multiplicacin es: ", a * b)

    escribir ("La divisin entera es: ", a / b)

    escribir ("El resto de la divisin entera es:", a % b)

    fin

    Lenguaje C++

    /******************************************************

    Universidad Nacional Mayor de San Marcos

    Escuela Acadmica de Ingeniera de Sistemas

    Laboratorio de Algoritmica I

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

    Nombre de archivo : c:\operente.cpp

    Descripcin : "Operaciones aritmticas con dos enteros."

    Autor : Ing. John Ledgard Trujillo Trejo

    Copyright : Unmsm - FISI - 2012

    */

    #include

    #include

    void main (){

    int entero1, entero2;

    clrscr();

    coutentero1;

    coutentero2;

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 7

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 8

    main()

    {

    //Declaracion de variables

    float base, altura, radio;

    float areat, areac;

    //Ingreso de datos

    clrscr();

    coutbase;

    coutaltura;

    areat = (base * altura)/2;

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 9

    Lenguaje C++

    /******************************************************

    Universidad Nacional Mayor de San Marcos

    Escuela Acadmica de Ingeniera de Sistemas

    Laboratorio de Algoritmica I

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

    Nombre de archivo : c:\cuatroop.cpp

    Descripcin : "Cuatro operaciones"

    Autor : Ing. John Ledgard Trujillo Trejo

    Copyright : Unmsm - FISI - 2012

    */

    #include

    #include

    main()

    {

    //Declaracin de variables

    float num1,num2,resul;

    char oper;

    //Ingreso de datos

    clrscr();

    coutnum1;

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 10

    inicio

    escribir ("Ingrese el valor del primer lado: ")

    leer (lado1)

    escribir ("Ingrese el valor del segundo lado: ")

    leer (lado2)

    escribir ("Ingrese el valor del tercer lado: ")

    leer (lado3)

    si ((lado1=lado2) y (lado2=lado3) y (lado1=lado3)) entonces

    escribir ("El triangulo es equilatero")

    sino

    si ((lado1lado2) y (lado2=lado3) y (lado1lado3)) entonces

    escribir ("El triangulo es escaleno")

    sino

    leer ("El triangulo es isoceles")

    fin_si

    fin_si

    fin

    Lenguaje C++

    /******************************************************

    Universidad Nacional Mayor de San Marcos

    Escuela Acadmica de Ingeniera de Sistemas

    Laboratorio de Algoritmica I

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

    Nombre de archivo : c:\triang.cpp

    Descripcin : " Determinacion si un triangulo es escaleno, isosceles o equilatero"

    Autor : Ing. John Ledgard Trujillo Trejo

    Copyright : Unmsm - FISI - 2012

    */

    #include

    #include

    main()

    {

    //Declaracion de variables

    float lado1,lado2,lado3;

    //Ingreso de datos

    clrscr();

    coutlado1;

    coutlado2;

    coutlado3;

    //Proceso de datos y mostrara resultados

    if((lado1=lado2) && (lado2==lado3) && (lado1==lado3))

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 11

    cout

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 12

    El cdigo que suele emplearse en las resistencias es un cdigo de 4 colores, es decir, cada

    resistencia est marcada con 4 bandas y cada una de ellas puede ser de diferente color. Cada

    banda tiene un significado, que depende de cada color:

    Las primeras 2 bandas indican un nmero de 2 dgitos: Esos dos dgitos vienen dados por el

    color de esas bandas, segn la columna "Dgito" de la tabla.

    La tercera banda es un valor por el que se multiplicar el nmero obtenido por las bandas

    anteriores. Una vez multiplicados ambos valores, obtenemos el valor de la resistencia en

    Ohmios (W).

    La cuarta banda indica la tolerancia de la resistencia y, como puede verse en la tabla, no

    puede ser de cualquier color.

    Ejemplo: Unas resistencias con los siguientes colores, tienen los siguientes valores de resistencia

    y tolerancia:

    Verde-Azul-Amarillo-Oro 560kW, 5%

    Rojo-Negro-Rojo-Rojo 2kW, 2%

    Rojo-Rojo-Marrn-Plata 220W, 10%

    Segn todo lo anterior, implemente un algoritmo y un programa que permita calcular la resistencia

    y la tolerancia de una resistencia, sabiendo los cdigos de colores. El subprograma tendr, como

    mnimo, 4 argumentos, que sern nmeros naturales, y que indicarn el color de las bandas segn

    la columna "Dgito". Los colores Oro, Plata y Ninguno tomarn los valores 10, 11 y 12

    respectivamente.

    PROBLEMAS PROPUESTOS

    Problema No. 10. Ingresar tres nmeros a travs del teclado e imprimir la secuencia ordenada

    de mayor a menor.

    Problema No. 11. Calcular las posibles races para una ecuacin de segundo grado: ax2+bx+c=0.

    Incluya en la solucin las races imaginarias.

    Problema No. 12. Determinar la cantidad de dinero que recibir un trabajador por concepto de

    las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden

    de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal

    cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo

    que se pagan las horas normales y el resto al triple.

    Problema No. 13. Hacer un algoritmo y un programa en C++ que convierta las horas dadas en

    forma de un nmero real, en nmero de horas, minutos, segundos y dcimas de segundo.

    Problema No. 14. Hacer un algoritmo y un programa en C++ que pida ingresar las coordenadas de

    un punto (x, y) e ubique su posicin en el plano cartesiano y su distancia al origen (0, 0).

    Problema No. 15. Hacer un algoritmo y un programa en C++ que implemente los nmeros

    complejos y sus operaciones bsicas: suma, resta, multiplicacin y dimisin. Los nmeros

    complejos se definen en trminos de dos nmeros reales, llamados real e imaginario.

  • Departamento Acadmico de Ciencias de la Computacin - UNMSM Escuela Acadmica de Ingeniera de Sistemas - FISI

    Tipos de Datos: Variables, Constantes, Asignaciones, Expresiones

    Ing. John Ledgard Trujillo Trejo Pag. No. 13

    Problema No. 16. Hacer un algoritmo para calcular las operaciones bsicas de los nmeros

    racionales. Los nmeros racionales se definen en trminos de dos nmeros enteros, llamados

    numerador y denominador.

    Problema No. 17. Hacer un algoritmo y un programa en C++ que implemente una recta y

    determinar sus caractersticas de la forma: y = mx + b. donde m es pendiente y b el punto de

    corte en el eje de las abcisas. Usar las formulas de una recta con dos puntos p1(x1, y1) y p2(x2,

    y2):

    m = Y2 Y1

    X2 X1

    Determinar si la recta es horizontal, vertical u oblicua.

    Y = mX + (Y1 mX1)