sep_bc_1_36algoritmos_dom__0__1.pdf

35
Universidad Nacional de Ingenieria Facultad de Mecanica BORLAND C++ 5.0 CON APENDICE EN MATLAB Ingeniero Daniel Osorio Maldonado

Upload: maxz-cisneros-cabello

Post on 29-Sep-2015

6 views

Category:

Documents


1 download

TRANSCRIPT

  • Universidad Nacional de Ingenieria

    Facultad de Mecanica

    BORLAND C++ 5.0 CON APENDICE EN MATLAB

    Ingeniero Daniel Osorio Maldonado

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 3 de 183

    NTRODUCCION Borland C++ es un lenguaje de programacin orientado a Objetos que utiliza como plataforma las herramientas del lenguaje C estndar y del Lenguaje C++ . El curso esta orientado para aquellas personas que deseen conocer y aprender a programar con una herramienta de un lenguaje de programacion que tiene dentro de sus caracteristicas el ser bastante flexible y facil de manipular en cuanto a su sintaxis. Debe tener en cuenta que esta herramienta ha servido para desarrollar otras aplicaciones que hoy en dia vemos en el mercado. El curso empieza con una breve descripcion del diseo a mano de los pasos a seguir en la solucion de un problema este diseo es conocido como la etapa algoritmica que puede contener la parte textual(pseudocodigo) y la parte grafica(Diagrama de Flujo). A esta etapa se le debe dar la importancia necesaria, ya que es aqu donde se plantea el camino ha seguir. El curso se va desarrollar integramente haciendo uso del editor, herramienta que permitir el manipuleo de variables en linea de textos. Se seguir luego la descripcin del Entorno Integrado de Desarrollo del Borland C++. El esqueleto o estructura del Lenguaje Borland C++/C++ que , acompaar durante todo el curso. Se dar nfasis a la tcnica de programacin en el uso correcto de la sintaxis, el buen uso del tipo de dato desde las principales y luego sus derivadas,las Instrucciones de control simples o multiples y luego las instrucciones de control repetitivas, se tratar el tema de los arreglos, recursividad, los punteros, las estructuras, asignacin dinamica de memoria, para finalmente terminar con un enfoque preliminar de lo que se entiende por programacin orientada a objetos, con ejemplos sencillos. En el Apndice se desarrolla una primera parte de Matlab en su etapa, sin llegar aprofundizar con la idea que sirva de apoyo en la formacin del estudiante En cuanto a la Progragramacion Orientada a Objetos, el uso de los proyectos y la programacion en windows se ha reservado para un segundo Curso. INTRODUCCIN A LA PROGRAMACIN El Objetivo es Familiarizar al alumno con el entorno del Lenguaje de Programacin verstil y fcil de manipular como es Borland C++; es mi deseo que Ud aproveche y aplique los conocimientos adquiridos, tanto en clase de teoria como en el Laboratorio. Algunos conceptos a tomarse en cuenta: Dato(s) Es una informacin que va a ser representada en un programa para su posterior modificacin. Lenguaje maquina Conjunto de instrucciones numricas en sistema binario (1 0 0 1 ) reconocido por el computador como micro_operaciones. Preprocesador Permite la inclusin de archivos(#include), sustitucin de macros(#define) y compilacin condicional, las lneas que comienzan con # contiene instrucciones para que el compilador realice ciertas tareas antes de que la compilacion del programa se active es decir antes que el compilador traduzca el programa fuente en codigo mquina. Su sintaxis es independiente del resto del lenguaje, siendo necesaria que estas lneas sean escritas desde la primera columna del programa. Compilador Es un programa encargado de traducir las instrucciones de un programa a instrucciones de lenguaje de maquina, verifica que no exista errores sintacticos del Lenguaje de programacin . Sentencia Describe el conjunto de acciones a seguir especificado en un lenguaje de programacin que ser ejecutado por el computador. Sintaxis La sintaxis de un lengueje de programacion es el conjunto de reglas para formular instrucciones gramaticalmente correctas para el lenguaje sea cual fuere. Ahora bien, en la practica significa esto que una instruccin en Borland C++ con la sintaxis correcta tiene una forma apropiada especificada para su compilador, de tal manera que ste aceptar la instruccin y no generar un mensaje de error.

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 4 de 183

    TEMA: ALGORITMOS

    PSEUDOCODIGO / DIAGRAMA DE FLUJO Los algoritmos pueden constituir por as decirlo en un listado de instrucciones que indican el camino a seguir para dar solucin a un problema y que puede o no ser ser resuelto por una computadora , generalmente el algoritmo viene acompaado de un pseudocdigo y un diagrama de flujo. Cuando el Algoritmo se ha desarrollado en forma correcta, el paso siguiente es llevar el pseudocodigo a la codificacion del loenguaje de programacion. Como ya se explic, la codificacion del algoritmo(pseudocodigo) en un determinado lenguaje debe respetar su sintaxis para que el compilador pueda traducirlo en Lenguaje Maquina y hallar la solucion al problema planteado. ALGORITMO: Es un conjunto de pasos, procedimientos o acciones, que nos permite alcanzar un resultado, resolviendo el problema planteado. Etapas en la solucin de un Problema.

    Un anlisis profundo del problema planteado. Diseo y construccin del Algoritmo. Verificacin del algoritmo.

    Se entiende que por verificacin del algoritmo, el seguimiento del mismo con datos que se ajusten a las caracterstica del problema que se va a resolver. Caracterstica: Los algoritmos en general deben ser:

    Precisos :Los pasos a seguir en el algoritmo deben ser precisados claramente. Definido: Debe dar siempre el mismo resultado para un conjunto de datos idnticos de entrada. Finito : El algoritmo, independientemente de la complejidad del mismo, debe ser siempre de

    longitud finita. Metodologa:

    Definicin de los Objetos_Datos de Entrada y Salida(Ingreso desde teclado y salida por pantalla) Objetos_Datos de Entrada: Datos que se ingresan por teclado. Objetos_Dato de salida: Datos u objetos de resultado. Procesamiento de los Objetos_Datos (datos). Visualizacion/Impresin de resultados.

    Pseudocodigo Es la parte textual del algoritmo,se podra decir que es como la receta para un paciente o tambin una receta culinaria para cocinar un plato. Generalmente es la traduccin del Ingls de la sintaxis del compilador al idioma con el que estamos trabajando.

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 5 de 183

    DIAGRAMA DE FLUJO

    Un diagrama de flujo es la representacin grfica de un algoritmo. En cuanto a la simbologia utilizada para la representacin, se tomara la norma (ANSI ISO).

    DIAGRAMA

    DEFINICION

    INICIO FIN

    ENTRADA DE DATOS

    PROCESOS/CONSTANTES

    F V

    BIFURCACIN(V/F)

    PROCESOS(Desde/Para)

    LLAMADA A (PROCEDIMIENTOS/FUNCIONES)

    ESCRITURA

    PANTALLA

    CONECTOR

    CONECTOR A SIGUIENTE PAGINA

    Direcciones del flujo del programa

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 6 de 183

    DIAGRAMA NASSI_SCHNEIDERMAN(N-S) Tambien conocido como diagrama de CHAPIN es como un diagrama de flujo en el que se omiten las flechas y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujo se pueden escribir diferentes acciones en una caja y dependiendo de las acciones de control estas cambian para su mejor interpretacin, tal como se vera en los ejercicios y aplicaciones.

    Inicio Accion 1 Accion 2 Accion 3

    Fin Codificacin y Programacin Es el Proceso mediante el cual se traduce un algoritmo a una codificacin en un lenguaje de programacin especifico. Programa Conjunto de instrucciones que se ha desarrollado con la finalidad de que sea ejecutado por el computador. Objetos_Datos Son Objetos_Datos de un programa, todos aquellos datos manipulados por las Instrucciones. Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de las distintas operaciones que intervienen en la solucin del problema. Se les da este nombre solo para efectos de entrada y salida de datos en la solucion de un problema.

    IDENTIFICADORES Los identificadores son palabras creadas por el programador para dar nombre a los objetos y dems elementos que necesita declarar en un programa: variables, constantes, tipos, estructuras de datos, archivos, procedimientos. Deben empezar siempre con una letra, no deben existir espacios en el nombre, no empezar con un numero. Z; labora_1; practica1; aulamb514dh VARIABLES : Una variable es un ente (objeto_dato) que almacena una posicin de memoria cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Una variable se identifica por los siguientes atributos:

    a) nombre que le identifica. b) tipo que describe el universo en donde se desenvuelve la variable.

    Los nombres de las variables, a veces conocidos como Identificadores, suelen constar de varios caracteres alfanumricos de los cuales el primero debe necesariamente ser una letra. Ejemp: int par; float num_123 ; char opc1 ; char nombre[15] ; short pequenio1 ; par=2. unsignet sin_signo; CONSTANTES: Son identificadores que generalmente son declarados en el programa antes de las variables, estos identificadores por lo general asumen un valor dado por el programador, ste valor no cambia durante el proceso del programa.

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 7 de 183

    Tipos de datos en general: Se denomina tipo de datos a las caractersticas propias de un objeto_dato o entidad, por ejemplo la edad o el domicilio de un registro, deben tener una caracterstica que la diferencie una de otra, la edad debe ser entero y el domicilio cadena (tambin se conoce como alfanumrico), podemos decir entonces que existen, en la mayora de los lenguaje de Programacin, los siguientes tipos de datos: Numricos Alfanumricos Carcter Lgicos (booleano) : cierto/falso Este tipo de Dato no existe en C++/Borland C++, lo que existe es la representacin 0 para falso y 1 para verdadero. En Borland C++ es bueno sealar que el tipo de dato bool permite que una variable cualquiera se le inicialice con los terminos de true (verdadero=1) y false (falso=0), esto se aprecia cuando forzamos la salida de las variables, se notar que true equivale a 1 y que false equivale a 0. Esto se nota en el siguiente programa, rseuelto con Borland C++ y Visual C++ pero como proyecto Win Console: #include #include main( ){

    bool t,f; t= "True";

    coutVea otra aplicacin y con diagrama de flujo, mas adelante.

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 8 de 183

    R

    S=pi*R*R

    L=2*pi*R

    S, L

    FIN

    INICIO

    Operacin de Asignacin: La operacin de asignacin es el modo de darle valores a una variable. La operacin de asignacin se representa con el smbolo . Nombre de la variable dato o valor numerico. Ejemp. A 45 No olvidarse que los datos son almacenados en la memoria de la computadora, especficamente en celdas de memoria y una direccion, de all que se hace necesario tener un nombre que las identifique , ya sea constante o variable. El siguiente grfico esquematiza lo dicho: LAS VARIABLES EN LA MEMORIA

    Como puede apreciar los valores son almacenados en bloque, claro que esta explicacin es muy simplista,en realidad cada valor es almacenado en caldas de memoria y tienen una direccion que determina que espacio de memoria va a utilizar. El espacio de memoria la determina el tipo de datos que es utilizado por la variable o identificador. Esto hace que un lenguaje de programacin difiera de un programa de aplicacin. Espero que con estas lineas se comprenda la razon por la cual es necesario que una variable tenga un tipo de datos.

    TEMA: Los Procesos Secuenciales Los procesos secuenciales, son todos aquellos procesos en los cuales la solucion de un problema se realiza de manera directa y sin desviaciones o bifurcaciones. P1: hallar el Area y la longitud de una circulo Objeto_datos de Entrada:R (radio) Objeto_datos de Salida :Area, Longitud DIAGRAMA N S Pseudocodigo Inicio Leer R Calculo del rea S=pi*R*R Calculo de la longitud L=2*pi*R Escribir S,L Fin P2: Hallar la resultante de 02 Fuerzas que forman un ngulo Objeto_dato de Entrada: F1,F2, theta Objeto_dato de Salida : Resultante R Pseudocodigo Inicio Leer F1,F2,theta K=pi/180

    INICIO LEER R CALCULAR S =pi*R*R CALCULA L=2*pi*R ESCRIBE S,L FIN

    SUM0 VAR1=66 AUXVAR1+17

    ACUVAR1+5 SUMSUM+AUX+ACU

    SUM0+(66+17)+(66+5)

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 9 de 183

    Q

    b200 =entero(Q/200) Q=resto(Q/200) b100=entero(Q/100) Q=resto(Q/100) b50=entero(Q/50) Q=resto(Q/50) b20=entero(Q/20) Q=resto(Q/20) b10=entero(Q/10)

    b200,b100,b50,b20,b10

    FIN

    INICIO

    INICIO

    K=pi/180

    R

    R= )*cos(21221 22 kFFFF ++

    F1,F2,

    FIN

    Calculo de la Resultante

    R= )cos(21221 22 thetaKFFFF ++ ESCRIBIR R FIN DIAGRAMA N - S INICIO K=PI/180 LEER F1,F2,THETA

    KCOSFFFFR *(2121 22 ++= ESCRIBIR R FIN P4. Desarrolle un algoritmo que permita simular el retiro de dinero de un cajero automatico.El cajero solo emite billetes de las siguientes denominaciones: 200,100,50,20 y 10 . Objeto_dato de Entrada: Q //Cantidad Objeto_dato de Salida : b200, b100, b50, b20, b10 //denominacin de billetes Pseudocodigo

    Inicio Leer Q b200 =entero(Q/200) Q=resto(Q/200) b100=entero(Q/100) Q=resto(Q/100) b50=entero(Q/50) Q=resto(Q/50) b20=entero(Q/20) Q=resto(Q/20) b10=entero(Q/10) Escribir b200,b100,b50,b20,b10 Fin N-S

    TEMA: INSTRUCCIONES QUE CONTROLAN UN PROGRAMA Las estructuras de seleccin permite al usuario tener un control del programa mediante el uso de instrucciones de control,constituyendo mecanismos para dirigir el flujo de ejecucin, dentro de estas a).Instruccin de Control Simle. La estructura Si - Entonces

    Leer Q b200=entero(Q/200) Q=resto(Q/200) b100=entero(Q/100) Q=resto(Q/100) b50=entero(Q/50) Q=resto(Q/50) b20=entero(Q/20) Q=resto(Q/20) b10=entero(Q/10) Escribir b200,b100,b50,b20,b10 Fin

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 10 de 183

    INICIO

    FIN

    INICIO

    DATOS

    CONDICION

    PROCESO_V PROCESO_F

    ESCRIBIR

    FIN

    V F

    INICIO

    RESTO(A/2)=0

    Mensaje= PAR

    ESCRIBIR

    FIN

    V

    F

    A

    Indica a la computadora que efecte una serie de una o mas instrucciones basadas en el resultado de una comparacin.

    Pseudocodigo SI condicion es cierta, entonces V Proceso de Cierta Fin de SI F DIAGRAMA NASSI_SCHNEIDERMAN(N-S)

    CONDICION VERDAD (SI)

    PROCESO 1

    PROCESO 2

    ESCRIBIR

    FIN

    b). Instruccin de Control de alternativa doble

    NASSI SCHNEIDERMAN(N S)

    Ejemplos de alternativa simple Ingresar desde teclado un numero y emitir un mensaje si el numero ingresado es par.

    Solucion Objetos deatos de entrada: A Objeto dato de Salida: A es par Pseudocodigo Inicio

    CONDICION

    PROCESO

    CONDICION FALSO VERDAD PROCESO_F PROCESO_V

    ESCRIBIR

    FIN

    Indica a la computadora que debera realizar la comparacin de 02 alternativas, si se cumple la alternativa verdadera debera realizar el proceso para esta alternativa VERDADERA. En caso contrario debera realizar la alternativa FALSA. Pseudocodigo Si (condicion )es Verdaddera entonces Proceso_Verdadad Sino Proceso_Falso Fin del Si

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 11 de 183

    F

    INICIO

    E

    E>=18

    Mayor de Edad

    Men, E

    Fin

    V

    F

    V

    INICIO

    A>B

    Tempo=A A=B

    B=Tempo

    ESCRIBIR A, B

    FIN

    A,B

    Leer A Si(residuo de A/2=0) entonces Mensaje= El numero es par Fin del Si Escribir Mensaje Fin

    Ingresar 02 numeros y luego ordenarlos mediante un algoritmo de menor a mayor

    Solucion Objetos datos de entrada: A,B Objeto dato de Salida: Ordenado Pseudocodigo Inicio Leer A,B

    Ingrese una edad y decir si es mayor de edad e imprimir la edad ingresada Objeto_Dato de Entrada: Edad Objeto_Dato de Salida :Men y edad Pseudocodigo Inicio Leer E Si (E>=18) entonces Men= Mayor de Edad

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 12 de 183

    Fin del Si Escribir Men, E Fin

    Ejemplos de alternativa doble

    Se tienen 02 numeros ingresados desde teclado verificar si A es divisible por B Solucion Objetos Datos de Entrada: A,B Objetos Datos de Salida : mensaje Inicio Leer A y B Si A=0 entonces men= A debe ser diferente de cero F V Sino Si B=0 entonces Men= no es posible la divisin V Si (A>B) entonces Si (resto(A/B)=0) entonces F Men= A es divisible por B Sino Men = A no es divisible por B Fin del Si F Sino V Men= A debe se mayor que B F Fin del Si Escribir Men Fin V Se tienen cuatro mensajes para las notas obtenidas en un curso de Actualizacion. Cuando la nota obtenida es igual o mayor a 17 debe decir Sobre Saliente; si la nota es igual o mayor a 15 Notable;igual o mayor a 13 Aprobado; Asistente para el resto.

    Haga el Algoritmo Objeto_Dato de entrada:Nota Objeto_Dato de Salida :Mensaje Pseudocodigo Inicio

    inicio

    Leer E Si(E>=18) VERDAD (SI)

    Men= Mayor de Edad

    ESCRIBIR Men,E

    FIN

    INICIO

    A,B

    A=0

    Men= A debe ser diferente de cero

    B=0

    Men= No es possible la division

    A>B

    Residuo(A/B)=0

    Men= A es divisible por B

    Men= A no es divisible por B

    Mensaje

    INICIO

    N

    FIN

    A debe ser mayor que B

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 13 de 183

    INICIO

    LEER NOTA N

    SI N>=17

    Leer Nota (N) Si N>=17 entonces F Men=Sobre Saliente Si no V Si N>=15 entonces Men= NOTABLE F Sino Si N>=13 entonces V Men= Aprobado Sino Men= Asistente Fin del Si V Fin del Si Fin del Si F Escribir Men Fin

    N - S NO SI N>=15 NO SI SOBRESALIENTE NO N>=13 SI NOTABLE ASISTE APROB ESCRIBIR MEN FIN

    N>=17

    SOBRE SALIENTE N>=15

    Notable

    N>=13

    Aprobado Asistente

    Men

    INICIO

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 14 de 183

    V F

    V F

    INICIO

    A,B

    A>B

    A mayor que B A= B

    A es igual a B B mayor que A

    Mensaje

    FIN

    V F

    V F

    INICIO

    A,B

    A>B

    A mayor que B A= B

    A es igual a B B mayor que A

    Mensaje

    FIN

    Algoritmo que lee 02 numeros y nos dice cual es el mayor o son iguales Pseudocodigo Inicio Leer A y B Si (A > B) entonces A es mayor en B Si no Si (A = B) entonces A es igual a B Si no B es mayor que A Fin del Si Fin del Si

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 15 de 183

    Un ejemplo con (sw): Algoritmo que lee un secuencia de notas(con valores que van desde 0 a 10) que termina con el valor -1 y nos dice si hubo o no alguna nota con valor 10.

    Objeto_datos: NOTA : variable para leer la secuencia. SW :switch para controlar la aparicion de notas 10 con los siguientes significados: FALSO :No hay nota 10 CIERTO :Si hay nota 10

    INICIO

    SWFALSO

    LEER NOTA

    NOTA-1

    Escribir Hubo 10

    SW

    Escribir Hubo 10

    NOTA=10

    SWCIERTO

    LEER NOTA IMPRIME

    FIN

    F

    TT FT

    F

    T

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 16 de 183

    Tema: Instruccin de Control de Seleccin Multiple (conocido como do Case; Case of; switch() )

    Permite tener un control de una Var_Selectora, como condicin para varias alternativas; dependiendo del Lenguaje de Programacin la condicin se le conoce como:

    Var_Selectora ->(Case...), cuando se trata de Pascal, Vsual Basic, Visual Fox, etc. Var_Selectora ->Switch cuando se trata de Lenguaje C o Borland C++ /Turbo C++,Visual C++,

    usado tambien por Matlab. Case(Var_Select) of cuando se trata de Pascal Consideraciones a tener en cuenta en el uso del control multiple

    La Var_Selectora puede ser variable, expresin, funcin; empero, sin embargo, el valor representado debe ser por decir lo menos, un valor escalar es decir un dato numrico entero o un carcter . No se acepta una cadena o un dato real. Se debe entender que cada alternativa tiene un nico valor y que va ha realizar una determinada accin o proceso. Modo en que Funciona (a) El valor de la Var_Selectora o(condicin) se evala en las alternativas uno a uno. (b) Si halla una coincidencia que contenga el valor de la Var_Selectora, entonces ejecutara el proceso

    correspondiente dando por finalizado la estructura, para luego buscar otra coincidencia, y ejecutar. (c) Existe un termino que se usa ocasionalmente y que representa la accin cuando ninguna de las

    alternativas se cumple, es el caso del si no , el termino no es obligatorio, pero permita clarificar una aplicacin.

    Pseudocodigo Condicion o var_Selectora En Caso que (Var_Selctora) sea Caso 1 proceso_1 Caso 2 proceso_2 Caso 3 proceso_3 . Caso N proceso_N Caso X proceso_Desconocido Fin del Caso

    Condicion

    Var_alterna1 Proceso1

    IMPRIMIR

    INICIO

    Leer Dato

    Var_alterna2 Proceso2

    Var_alterna3 Proceso3

    Var_alternaN ProcesoN

    Var_alternaX Proceso_Desco

    FIN

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 17 de 183

    1 CONDICIONANTE O VAR_SELECTORA 2 3 Proceso_1 Proceso_2 Proceso_3 X .... N Proce_N Proc_Desc

    DIAGRAMA N - S

    Aplicacin: Programar una operacin Aritmtica con 02 operandos: Operando1 y Operando2 (enteros O reales) y que de acuerdo al Operador elegido habra un resultado. Considere que ud. Ha diseado una calculadora que le permita realizar operaciones matemticas elementales y que Los operadores permitidos son:

    + : suma - : diferencia * : producto ? : divisin entera : residuo ~ : potencia

    solucion: Definir objetos_datos Objeto_dato de entrada: operador,Ope1,Ope2. Objeto_dato de salida : Resultado. Pseudocodigo: Definir los Operadores: Inicio Leer operador Ingrese : Ope1, Ope2 En CASO que Operador SEA + : Resultado = Ope1 + Ope2 - : Resultado = Ope1 Ope2 * : Resultado = Ope1 * Ope2 ? : SI Ope2 es diferente de 0 entonces Resultado = Ope1 ? Ope2 si no Resultado =0 Fin del SI : SI Ope2 es diferente de 0

    Entonces Resultado =Residuo(Ope1/Ope2) si no Resultado =0 Fin del SI ~ :Resultado=Ope1 elevado al Ope2 Otro Caso :Rsultado : No existe Operacin Fin del Caso Imprimir respuesta fin

    Mas =+ Menos =- Por =* Entre =? Residuo = Potencia = ~

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 18 de 183

    N - S

    Se deja como ejercicio para que sea completado. Podra Ud. Completar el cuadro?

    INICIO Establecer Operandos op1,op2

    Mas +; Menos -; Por *; Entre ?; Residuo ; Potencia ~ + op1+op2 - * op1-op2 op1*op2 ? op20 no si error no op20si ~ X

    1

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 19 de 183

    *

    No Si

    TEMA: Instruccin de Control Repetitivas

    Son aquellas Instrucciones que permiten que ciertas aplicaciones en las cuales una opercion o conjunto de ellas deben repetirse muchas veces, por consiguiente se puede afirmar que un programa que lee una lista

    DIGITAR EL OPERADOR A USAR

    INGRESE : OPERANDO1 OPERANDO2

    OPERADOR

    + Resultado = Operando1 + Operando2

    - Resultado = Operando1 - Operando2

    Resultado = Operando1 * Operando2

    ?

    Operando2 Diferente de

    Resultado= Ope1 ? Ope2 RESULTADO =

    RESULTADO=RESIDUO(OPER1/OPER2)

    ~ RESULTADO=(OPE1)~(OPE2)

    1

    IMPRIMIR RESULTADO

    INICIO

    Inicializar constantes Mas =+ Menos =- Por =* Entre =? Residuo = Potencia =~

    FIN

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 20 de 183

    de numeros puede repetir la misma secuencia de mensajes al usuario e instrucciones de lectura, hasta que todos los numeros del rango establecido sean leidas. Para efectos del C++/Borland C++ se van a tomar en cuenta slo las tres mas usadas:

    mientras ->(While ) Hacer proceso Mientras (Condicion)-> (Do while) Desde/Para-> (For)

    Para otros lenguajes de programacion son en alguno casos combinaciones de ellas o en su defecto usan otra nomenclatura como por ejemplo para Pascal es comun usar la instruccin (repeat until) repetir hasta que, mientras que en Visual Basic es comun usar (do until) hacer hasta que ,estas son las mas representativas de estos lenguajes de programacion.

    Instruccin de control Repetitivo Mientras

    la estructura repetiriva mientras(en Ingles WHILE o DOWHILE:hacer mientras ) es auella en que el cuerpo del bucle se repite mientras se cumple una determinada condicin.se pueden representar: Pseudocodigo mientras (condicin ) sea verdadera proceso fin del mientras NO Diagrama Nassi_Schneiderman SI

    1. Desarrollar la suma de los primeros M terminos de la siguiente suma :

    D=BNABABABAA *

    13

    12

    111+++++++++ K

    solucion: definir objetos_datos E/S objeto_dato de entrada: A,B,N. Objeto_dato de salida : SUMA DE N. Pseudocodigo: Inicio Leer A,B,N. Definir C=1 //contador Suma=0. Mientras(C=N) hacer

    CONDICION

    ACCIONES

    IMPRIMIR MIENTRAS < CONDICION>

    Accion1 Accion2 Accion3

    A,B,N

    SUMA=0 ; C=1

    FIN

    FIN

    1

    1

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 21 de 183

    Proceso 1

    Proceso 2

    Condicin

    Escribir

    FIN

    V F

    AB=(A+c*B). Inverso=1/AB. Suma=Suma+Inverso. C++. Fin del mientras Escribir: Suma=Suma+1/A. Fin

    2. En la siguiente serie se pide hallar la suma de los elementos que ocupan las posiciones pares,y la suma total de elementos, sabiendo que el # de termninos es igual a 50.

    ...78

    56

    342 ++++=Su

    Solucion: Objetos_Datos de Entrada: N Objetos_Datos de Salida: suma de posiciones pares: sp suma total de elementos: su Pseudocodigo Inicio Leer N F Establecer variables i=1; par=0;Su=0; mientras(i

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 22 de 183

    Leer num

    inverso 0,Su 0, M0

    dgtresto(num/10)

    inversoinverso*10+dgt Su Su+digito

    numentero(nume/10)

    num> 0

    Inverso , Su, M

    FIN

    INICIO

    V

    V

    dgt>M

    Mdgt

    F

    F

    vez antes de comprobar si la condicin se cumple, es muy parecida al repeat until del Pascal. Pseudocodigo Hacer (procesos) mientras (condicin ) sea verdadera fin del hacer . DIAGRAMA (N-S) Problema de Aplicacin Se ingresa un Numero de varias cifras, y luego hallar la suma de sus cifras, el numero invertido y la cifra mayor. Por ejemplo 1234, la suma es:10, invertido es 4321 y la cifra mayor es 4. Objetos_datos de entrada y Salida Objeto_Dato de Entrada: Numero Objeto_Dato de Salida:Salida numero invertido. Pseudocodigo Inicio Leer numero Inicializar variables : inverso 0, Su0,M0 Hacer digito resto(M/10) Inverso inverso*10+digito. Su Su+digito Si (digito>M) entonces M digito Fin del si numero=entero(numero/10) Mientras(numero>0) Escribir inverso, Su, M Fin

    PROCESO1 PROCESO2

    MIENTRAS CONDICION

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 23 de 183

    Esta instruccin hacer procesos mientras (condicion) sea verdadera, es utilizada para consistenciar y controlar la repeticion de un propgrama sin necesidad de salir, dandole al usuario el control del mismo. Vea el siguiente ejemplo: Se desea hallar la suma de los primeros N terminos de la siguiente serie:

    Instruccin de control Repetitivo for

    Esta instruccin de control repetitivo considera: que el proceso debe iniciarse para un valor inicial que vendra a ser el inicio del contaje, una segunda expresin que contiene el valor mximo o mnimo que puede tener el contaje y determina cuando termina el ciclo, hasta aqu tal vez es el formato que usa la mayoria de los lenguajes de programacin; sin embargo para el lenguaje C, C++ o Borland C++, existe lo que se conoce como el incremento o decremento (se suma o se reta el contaje). Para otros lenguajes es tal vez mas facil iniciar con el Valor Maximo para luego ir disminuyendo en unida en unidad.

    ...74

    453

    332

    21t

    1 ++++++= tttS

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 24 de 183

    Diagrama de Flujo (for ) Pseudocodigo desde/para vi=1 hasta vf de uno en uno Hacer

    Proceso_A Proceso_B ..

    Fin del desde/para Diagrama N-S

    F

    INICIO

    Lee ne

    ContDivi=0

    para Divisor=1, hasta ne

    Resto(ne/Divisor)=0

    Escribir Divisor

    ContDivi=ContDivi+1

    V

    ContDivi=2

    Numero PrimoNo es Primo

    MENSAJ DIVISORE

    FIN

    VF

    Para Vcont= Valor_inic, Valor_fin

    HACER

    PROCESO

    IMPRIMIR

    desde/para de var_contador=Vi Hasta Vf Fin desde/para

    ProcesoA ProcesoB

    INICIO

    FIN

    Aplicacin Se va a Ingresar un Numero y la tarea consiste en mostrar todos los divisores de ese numero ingresado. Cuando el numero Ingresado tiene por divisores a la unidad(1) o al mismo numero mostrara un mensaje diciendo El Numero es Primo SOLUCION Objetos_Datos de ENTRADA Y SALIDA Objejo_Datos de Entrada: el Numero entero(NumeEnte) Objeto_Dato de Salida : numero de divisores(NumeDivi), mensaje PSEUDOCODIGO Inicio Leer un Numero entero: NumeEnte Definir la variable Contador de Divisores e Inicializarla a 0 NumeDivi=0 Contabilizar los divisores y mostrarlos PARA Divisor=1 HASTA NumeEnte, HACER SI Residuo de NumeEnte/Divisor=0, ENTONCES Escribir Divisor ContDiv=ContDiv+1 Fin del SI Escribir mensaje SI ContDiv=2,ENTONCES MENSAJE Numero Primo SINO MENSAJE No es Primo Fin del Si Fin

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 25 de 183

    TEMA: ELEMENTOS BSICOS DEL BORLAND C++

    Smbolos Estn clasificados en: letras : A..Z, a..z (no incluye la y ) dgitos : 0 1 2 3 4 5 6 7 8 9 smbolos especiales se tienen los siguientes: simples :

    SIMPLES

    + - * / = < >

    ; ! : % & { } . ,

    ^ | sizeof

    DOBLES = == !! |= &&

    ?: -> >> >=

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 26 de 183

    Suma 2m= no debe haber espacios entre el nombre//incorrecto Suma_2m= correcto Suma+si= incorrecto, no debe haber operacin entre su nombre S9_suma= correcto S9+suma=incorrecto

    Palabras reservadas Son identificadores que tienen un significado especial establecido por el lenguaje de programacin. Siempre deben escribir en minsculas. Se lista a continuacin las palabras reservadas definidas por el compilador Borland C++

    asm

    auto

    break

    case

    continue

    char class const default delete Do double else enum extern Far float for friend if

    inline int interrup long near new operator pascal private protected

    public register signed sizeof static struct union unsigned virtual void

    volatile while time rand random()

    Comentarios Sirven para documentar un programa y siempre van entre /* */ //. Ejemplo : /* Este es un comentario que tiene mas de una linea */ //Otro comentario pero solo de una linea EXPRESIONES Y OPERACIONES DE BORLAND C++ Expresin Es un conjunto de operaciones ( Datos y/o variables ) y operadores que actan realizan operaciones sobre los operandos, y que mediante el uso racional de parntesis puede forzar las expresiones matemticas convenientes. Ejemplo : 13*A+(11+B/46) ( x +41) /37 El cierto y falso en Borland C++ Borland C++, como ya hemos visto tiene una manera de tratar el tipo de dato booleano es decir cierto, falso sin embargo, es bueno hacer notar que en algunas aplicaciones es imprescindible la forma natural que tiene el lenguaje, me refiero al 0 y 1, ya que para borland C++ el 0 significa falso, por el contrario el 1. Lo podran apreciar en las aplicaciones que estan en ste libro.

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 27 de 183

    Tema: Los Operadores de Borland C++ [ ] ( ) . -> ++ -- & * + - ! sizeof / % > < > < = > == != | && !! ? : = * = / = % = + = - = > & = | = , # ## Las siguientes operaciones son especficos de C++/Borland C++ Los operadores # y ## son usados nicamente por el preprocesador. Al usar un operador depende de la forma de el contexto, para que el mismo operador & puede ser interpretado como : Un and a nivel de bits ( A & B ) Un operador de direccin ( &A ) En C++ un paso de parmetro por referencia a una funcin. En el primer caso el & es un Operador Binario. En el segundo caso el & es un Operador Unario. Prioridad de Operadores En Borland C++ la tabla de Prioridad de los Operadores esta dividida en 16 categoras. La categora #1 tiene la ms alta Prioridad. La categora #2 ( los Operadores Unarios ) toman la segunda Prioridad, hasta el Operador coma (,) que tiene igual Prioridad Para el caso de los operadores unarios ( la categora #2 ), condicional ( la categora #14 ) y la de asignacin ( la categora #15) La agrupacin de estos operadores se ejecutan de Derecha a Izquierda todo, otra asociacin de los operadores de Izquierda a Derecha. Teniendo presente la prioridad de los operadores podemos deducir que resultado se obtendr al momento que le programa ejecute una determinada sentencia, compuesta por expresiones que enlazan mediante los operadores a las variables y datos del programa, predeterminando de esta forma que operador se desarrolla primero. Categora #1 Operador Que realiza (o ejecuta) 1. Ms alta ( )

    [ ] -> : : .

    llamada de una funcin Subscripcin de un Arreglo C++ selector de componente Indirecto C++ acceso o resolucin del alcance C++ selector de componente directo

    2. Unaria ! + - ++ -- & * sizeof new delete

    Negociacin Lgica ( NO) A nivel de bits ( complemento a I ) Unitario ms Unitario menos Preincremento o postincremento Predecremento o postdecremento Direccin de la variable Indireccin Devuelve el tamao del operando en ocho bits (separacin de memoria dinmica en C++ ) (liberacin de memoria dinmica en C++ )

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 28 de 183

    3. Miembros de acceso . * *

    C++ Referencia a un campo C++ Referencia a un campo

    4. Multiplicativos * / %

    Multiplica Divide Resto ( mdulo o resto de la Divisin entera )

    5. Aditivo + -

    Binario ms Binario menos

    6. Desplazo >

    Desplazamiento de bits a la izquierda Desplazamiento de bits a la derecha

    7. Relacional < < = > > =

    Menor que Menor que o igual que Mayor que Mayor que o igual que

    Categora #2 Operador Que realiza (o ejecuta ) 8. Igualdad ==

    ! = Igual a (tambien identicamente igual a) No es igual a

    9. & A nivel de bits Y 10. ^ A nivel de bits XOR 11. | A nivel de bits 0 12. && Lgico y 13. || Lgico o 14. Operador Ternario ? :

    (a >b )? Indica if (a) then x, else y Donde el operador > puede ser cualquier otro operador, =, =

    Asignacin sencilla Asigna el producto Asigna el cociente Asigna el resto ( residuo) Asigna la suma Asigna la diferencia Asigna AND a nivel de bits Asigna XOR a nivel de bits Asigna Or a nivel de bits Asigna desplazamientos de bits a la izquierda Asigna desplazamientos de bits a la derecha

    16. La coma , Evaluacin El Operador Ternario (a>b)? a:b Este operador reemplaza en cierta medida a la instruccin if es verdadero entonces proceso_verdadero, si no (else) proceso_falso. Para nuestro caso (a>b)? a:b significa que si la condicon es verdadera entonces resulta a sino resulta b. Ejemplo: se tienen 03 nmeros A =30, B=19 y C=27, se pide hallar el menor de ellos #include #include main(){ float A =30, B=19 y C=27; M=((A

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 29 de 183

    0 1 2 310152030506070 80 1 2 gotoxy(20,2); cin>>A; 3 15 gotoxy(30,15);cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 30 de 183

    main(){ float x,y,z;randomize(); x=random(17)+7; gotoxy(10,5);cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 31 de 183

    Tipo de Dato para (32-bits)

    Tipo Ancho Rango unsigned char 8 bits To 255 Char 8 bits -128 To 127 short int 16 bits -32,768 To 32,767 unsigned int 32 bits 0 To 4,294,967,295Int 32 bits -2,147,483,648 To 2,147,483,647unsigned long 32 bits 0 To 4,294,967,295Enum 16 bits -2,147,483,648 To 2,147,483,647Long 32 bits -2,147,483,648 To 2,147,483,647Flota 32 bits 3.4 x 10-38 To 3.4 x 10+38 Double 64 bits 1.7 x 10-308 To 1.7 x 10+308 long double 80 bits 3.4 x 10-4932 To 1.1 x 10+4932near (pointer) 32 bits not aplicable far (pointer) 32 bits not aplicable

    El uso de datos de tipo double y float es aplicado en las matemticas como punto flotante. (Nmeros reales) En Borland C++ realiza en forma automtica en las operaciones la asignacin del punto flotante cuando ste no se especifique.

    Tipos de dato void (tipo de dato vaco)

    Este tipo de dato es utilizado cuando una funcin realiza una tarea y la funcin no retorna valor alguno. Ejemplo : void error ( char *name) { cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 32 de 183

    Ejemplo

    #include #include main(){ int x;float r; void *p=&x; //*p apunta a x cout>x; cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 33 de 183

    main ( ) { // Inicio de la funcin principal int a, b; // Datos del programa long prod // Resultado a = 19; // Asigna al valor 19 a la variable a b = 13; // Asigna al valor 13 a la variable b prod = a*b; // Asigna el producto a*b en prod cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 34 de 183

    #include // Para C++/Borland C++ con objetos #include iostream.h Las comillas dobles indican que el fichero ser buscado primero en el directorio actual de trabajo y si no es encontrado continuar con la bsqueda en el los directorios standard especificados en el submen Options del Ambiente Integrado (Editor Compilador) del Borland C++. Si el fichero especificado se escribe de la siguiente forma: #include El fichero solo ser buscado en el directorio standart. El fichero iostream.h provee una serie de facilidades definidas en base a clases que se encargan de la entrada y salida de datos y transformarlos al tipo de variable correspondiente. Se tiene los siguientes Objetos coutLee caracteres de la entrada estndar (teclado)

    Salida Permite la salida de datos por pantalla al tener una variable o expresin numrica como salida esta es transformada a caracteres para ser mostrada en pantalla.

    Ejemplo : # include #include

    #include main ( ) { float a,b; double poten; coutb; poten=pow(a,b); cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 35 de 183

    II Multiples : switch(){ case .procesos.; break; default: }

    III Repetitivas o de Iteracion : a) while() b)do . while() c)for (.)

    INSTRUCCIONES SELECTIVAS O CONDICIONALES: Falso Verdadero Dado que las expresiones lgicas toman el valor de verdadero o falso se necesita una instruccin de control que dirija al computador para ejecutar otras instrucciones, en "C/C++" esta alternativa lo realiza con la instruccin o estructura de control

    if (simple) if else (doble) if else if if(){ instruccin} Ejemplo #include main( ){ int a; couta; if(a>0) cout

  • UNI FIM BORLAND C++

    Ing. Daniel Osorio Maldonado Pgina 36 de 183

    if(opc=='N')break;} }

    El compilador evala las expresiones condicionales desde arriba descendiendo, y tan pronto como el compilador encuentre una condicin verdadera, ejecuta la instruccin asociada y salta el resto de la escalera. Si no es as se ejecutara el "else" final. Si no hay else al final y son falsas las otras condiciones no se efecta nada. La Instruccin switch Esta instruccin, realiza comprobaciones mltiples o condiciones mltiples. Borland C++ comprueba una variable sucesivamente frente a una lista de constantes enteras o de carcter, luego de encontrar una coincidencia, la computadora ejecuta las instrucciones o bloque de instrucciones que se asocian a la constante. Default Si al evaluar esta toma un valor que no se encuentra en ninguna de los casos entonces se proceder con la ejecucin de la .

    Sintaxis : switch() { case : instruccin(s);break; case : instruccin(s);break; case : instruccin(s);break; . . default : instruction(s);

    EXPRESION

    EXP_CONST 1

    EXP_CONST 2

    EXP_CONST 3

    EXP_CONST N

    OTRO CASO

    INSTRUCCIN 1

    INSTRUCCIN 2

    INSTRUCCIN 3

    INSTRUCCIN N

    INSTRUCCIN X

    MENSAJE

    INICIO

    FIN