Apuntes Programacion 1

download Apuntes Programacion 1

of 50

description

algunos tips de programacion

Transcript of Apuntes Programacion 1

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    1

    ALGORITMOS

    Introduccin.

    El desarrollo de algoritmos es un tema fundamental en el diseo de programas o soluciones. Por

    lo cual el alumno debe tener buenas bases que le sirvan para poder desarrollar de manera fcil y

    rpida sus programas.

    Qu es un algoritmo?

    La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi, nombre

    de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y

    ecuaciones en el siglo IX.

    Un algoritmo es una serie de pasos organizados que describe el proceso que se debe

    seguir, para dar solucin a un problema especfico.

    Formas de representar algoritmos.

    Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural,

    pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Ms adelante se

    vern los diagramas de flujo y pseudocdigo.

    Pasos a seguir para resolver un problema mediante un algoritmo.

    1. Anlisis del problema.

    Una vez que se ha comprendido lo que se desea hacer, es necesario definir:

    - Datos de entrada.

    - Datos de salida

    - El proceso que se debe realizar para obtener la salida.

    2. Identificacin de las variables.

    Todos los datos de entrada y salida deben ser identificados mediante variables, as mismo si

    es necesario tambin se pueden usar otras variables para el proceso.

    3. Elaboracin del diagrama de flujo

    4. Realizar la prueba de escritorio

    Una prueba de escritorio es una ejecucin a mano del algoritmo, por lo tanto se debe llevar

    registro de los valores que va tomando cada una de las variables involucradas en el mismo.

    Datos de

    Entrada

    Proceso Datos de

    Salida

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    2

    ALGORITMOS MEDIANTE DIAGRAMAS DE FLUJO

    Los diagramas de flujo son una manera de representar visualmente el flujo de datos a travs de

    sistemas de tratamiento de informacin. Los diagramas de flujo describen que operaciones y en

    que secuencia se requieren para solucionar un problema dado.

    Smbolos que se utilizan para representar Diagramas de Flujo.

    Inicio y fin del algoritmo

    Flujo de Datos

    Asignacin de valores a variables

    Entrada de Datos (por teclado)

    Salida de Datos (en pantalla)

    Estructura de seleccin

    Ejemplo 1:

    Problema: Sumar dos nmeros introducidos por teclado.

    Anlisis:

    Datos de Entrada: -> 2 nmeros - (variables A y B)

    Datos de Salida: -> 1 nmero - (variable C)

    Proceso: -> sumar los 2 nmeros y asignrselo a un tercero - (C=A+B)

    DIAGRAMA DE FLUJO PRUEBA DE ESCRITORIO

    Variables

    A B C Pantalla

    6 7 13 13

    INICIO

    FIN

    A , B

    C = A + B

    C

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    3

    Ejemplo 2:

    Problema: Calcular el promedio de 3 nmeros introducidos por teclado.

    Ejemplo: Entrada Salida

    6 7 2 5

    Anlisis:

    Datos de Entrada: -> 3 nmeros - (variables x, y, z)

    Datos de Salida: -> 1 nmero - (variable prom)

    Proceso: -> obtener el promedio de 3 nmeros (prom=(x+y+z)/3)

    DIAGRAMA DE FLUJO PRUEBA DE ESCRITORIO

    Variables

    x y z prom Pantalla

    6 7 2 5 5

    Ejemplo 3: Problema: Dado una distancia en metros convertir a sus correspondientes en centmetros y milmetros. Ejemplo: Entrada Salida 6 600 6000 Anlisis:

    Datos de Entrada: -> 1 nmero - (variable m) Datos de Salida: -> 2 nmeros - (variables cm , mm) Proceso: -> para el proceso es necesario analizar la relacin 1 metro = 100 centmetros 1 centmetro = 10 milmetros

    DIAGRAMA DE FLUJO PRUEBA DE ESCRITORIO

    variables

    m cm mm pantalla

    6 600 6000 600 6000

    INICIO

    FIN

    x , y , z

    prom=(x+y+z)/3

    prom

    INICIO

    m

    cm = m * 100

    mm = cm *10

    cm , mm

    FIN

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    4

    Expresiones Lgicas

    Una expresin lgica nicamente puede tomar dos valores Falso (false) o verdadero (true)

    Operadores de Relacin

    Operador Significado Ejemplo Resultado

    > Mayor que 6 > 5 Verdadero

    < Menor que 6 < 5 Falso

    >= Mayor o igual que 6 >= 5 Verdadero

    =4)||(5==6) Verdadero

    (95) Falso

    Estructura de seleccin (si - no)

    SI NO

    P Q &

    V V V

    V F F

    F V F

    F F F

    CONDICIN ?

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    5

    Problema: Dado dos nmeros por teclado, visualizar el mayor Ejemplos: Entrada Salida 6 9 9 8 2 8

    Problema: Dado 1 nmero por teclado, visualizar si es par o impar Ejemplos: Entrada Salida 6 par 9 impar

    Problema: Dos Nmero son aceptables si la suma de ambos es menor que 10 o mayor que 20.

    Realice un algoritmo que dado 2 nmeros por teclado determinar si son aceptables o no

    aceptables

    Ejemplos: Entrada Salida 5 2 Aceptables 12 5 No Aceptables 25 1 Aceptables

    inicio

    A,B

    A>=B

    B A

    fin

    si no

    inicio

    M,N

    (R20)

    Aceptables

    fin

    R=M+N

    No aceptables

    si no

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    6

    ESTRUCTURAS DE SELECCION SI NO ANIDADAS

    PROBLEMA: Algoritmo que permite insertar un nmero por teclado, posteriormente visualiza si el

    nmero es positivo, negativo o cero.

    Ejemplos: Entrada Salida 7 positivo 0 cero -6 negativo

    PROBLEMA: Algoritmo que dado un nmero por teclado, segn sea el nmero mostrar: malo si

    el nmero es menor que 50, bueno si el nmero es mayor que 50 y menor que 75, y excelente

    si el nmero es mayor que 75

    Ejemplos: Entrada Salida 60 bueno 40 malo 82 excelente

    PROBLEMA: Algoritmo que permite insertar 3 nmeros por teclado y visualiza el mayor

    Ejemplos: Entrada Salida 6 5 8 8 7 9 2 9 4 3 1 4

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    7

    PROBLEMA: Algoritmo que visualice divisibles si de dos nmeros introducidos por teclado uno le divide al otro, y no divisibles si ninguno le divide al otro.

    Ejemplos: Entrada Salida 6 3 divisibles 4 8 divisibles 3 7 no divisibles

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    8

    ESTRUCTURA DE CONTROL REPETITIVA

    MIENTRAS

    Ejemplos:

    Algoritmo que permite visualizar en pantalla los primeros N nmeros naturales Ejemplo: Entrada Salida 7 1 2 3 4 5 6 7

    Algoritmo que permite visualizar en pantalla los primeros N nmeros naturales Ejemplo: Entrada Salida 7 7 6 5 4 3 2 1

    Si cumple la condicin

    entra al bucle

    Si NO cumple la condicin

    sale del bucle

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    9

    Algoritmo que visualiza la cantidad de nmeros pares de N nmeros introducidos por teclado Ejemplo: Entrada Salida 5 3 6 3 4 7 2

    Programa que permite insertar N nmeros por teclado, posteriormente visualiza cuntos son menores que 10, cuntos estn entre 10 y 20, y cuntos son mayores que 20 Ejemplo: Entrada Salida 8

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    10

    Lenguaje de Programacin C++

    Qu es un Lenguaje de Programacin?

    Un lenguaje de programacin es un lenguaje diseado para escribir el conjunto de instrucciones que una

    computadora debe ejecutar. Por lo tanto, un lenguaje de programacin es un modo prctico para que los seres

    humanos puedan dar instrucciones a una computadora.

    Qu es C++?

    C++ es un lenguaje de programacin creado a mediados de los aos 1980 por BJarne Stroustrup. La intencin de su

    creacin fue extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de

    objetos.

    Qu es un compilador?

    Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje mquina. De

    esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser

    humano, para luego compilarlo a un programa ms manejable por una computadora.

    CODIGO FUENTE LENGUAJE MAQUINA

    COMPILAR

    OPERADORES ARITMETICOS EN C++

    Un operador es un smbolo especial que indica al compilador que debe efectuar una operacin matemtica o lgica.

    C++ reconoce los siguientes operadores aritmticos:

    SUMA +

    RESTA -

    MULTIPLICACIN *

    DIVISIN /

    MDULO O RESIDUO %

    VARIABLES

    Una variable se define como un identificador que se utiliza para almacenar todos los datos generados durante la

    ejecucin de un programa, por ejemplo con, sum, A, B, C, con2, con3, etc.

    Existen ciertas reglas en cuanto a variables. - Las variables deben ser claras y con referencia directa al problema.

    - No debe tener espacios blancos, ni smbolos extraos en ellas (por ejemplo: con 1, sum A, &e, %r, etc.)

    - No deben ser palabras reservadas del lenguaje (por ejemplo: cin, if, while, void, switch, else, etc.)

    #include void main() { cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    11

    Estructura Bsica de un programa en C++

    #include Declaracin de libreras

    void main() Declaracin de la funcin principal (main)

    { Inicio de bloque

    // cuerpo del programa

    } fin de bloque

    De diagramas de flujo a C++

    Para aprender a programar es recomendable primeramente aprender a realizar algoritmos mediante Diagramas de

    Flujo, como nosotros ya sabemos realizar diagramas de flujo el siguiente paso ser codificar al lenguaje C++ los

    algoritmos realizados mediante diagramas de flujo, para lo cual, primero veremos la representacin en C++ de los

    smbolos de los diagramas de flujo:

    DIAGRAMA DE FLUJO PSEUDOCODIGO C++

    leer A,B cin>>A>>B;

    mostrar A,B cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    12

    Ejemplo 1. Algoritmo que suma dos nmeros

    DIAGRAMA DE FLUJO PSEUDOCODIGO C++

    Inicio A=4 B=7 C=A+B mostrar C fin

    #include void main() { int A; int B; A=4; B=7; C=A+B; coutA; cin>>B; C=A+B; cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    13

    Ejemplo 3. Algoritmo que permite introducir 2 nmeros por teclado y visualiza el mayor

    DIAGRAMA DE FLUJO PSEUDOCODIGO C++

    Inicio leer A,B si(A>=B) mostrar A sino mostrar B fin

    #include void main() { int A; int B; cin>>A>>B; if(A>=B) coutB; if(A==B) cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    14

    DIAGRAMA DE FLUJO C++

    #include void main() { int A; cin>>A; if(A

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    15

    Ejemplo 7. Programa que visualiza la cantidad de nmeros pares, de N nmeros introducidos por teclado.

    DIAGRAMA DE FLUJO C++

    #include void main() { int N,con,p,num; cin>>N; con=0; p=0; while(con>num; if(num%2==0) p=p+1; con=con+1; } coutnum; con=1; c=0; while(con

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    16

    Ejemplo 9. Programa que dado un nmero por teclado, visualiza la sumatoria de sus dgitos

    DIAGRAMA DE FLUJO C++

    #include void main() { int A,sum; cin>>A; sum=0; while(A>0) { dig=A%10 sum=sum+dig A=A/10 } coutN; con=1; may=0; men=0; entre=0; while(con>num; if(num

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    17

    C++

    SALTO DE LNEA.- el salto de lnea es cuando la lnea de impresin en pantalla salta a la siguiente lnea de la pantalla. Se puede saltar de lnea de 2 formas

    - endl (end line fin de linea) - \n

    COMENTARIOS .- cuando se escriben programas es muy til agregar comentarios que ayuden a explicar lo que realiza un programa. En C++ se pueden utilizar dos tipos de comentarios: Por bloque /* comentario por bloque */ Por lnea // comentario por lnea

    ALGORITMOS CON BUCLES ANIDADOS

    while(condicion1) { while(condicion2) { Acciones } }

    Ejemplos:

    1. Programa que visualiza en pantalla segn sea N por teclado

    Ejemplo Salida 4 1 1 2 1 2 3 1 2 3 4

    Condicion1

    Condicion2

    Acciones

    SI

    SI

    NO

    NO

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    18

    DIAGRAMA DE FLUJO C++

    /* ejemplo 1 De bucles anidados */ #include void main() { int N,a,b; cin>>N; //lee N por teclado a=1; while(a

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    19

    2. Programa que visualiza en pantalla los primeros N nmeros primos

    Ejemplo: Entrada Salida

    7 1 2 3 5 7 11 13

    DIAGRAMA DE FLUJO C++

    /* ejemplo 2 De bucles anidados */ #include { int N,num,cant,con,c; num=1; cant=0; while(cant

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    20

    ESTRUCTURAS DE CONTROL REPETITIVAS (BUCLES) DO-WHILE Y FOR

    Son aquellas que crean un bucle (repeticin continua de un conjunto de instrucciones) en la ejecucin de un

    programa respecto de un grupo de sentencias en funcin de una condicin. Existen bsicamente tres estructuras de

    control repetitivas: while, do-while y for.

    DO WHILE (en castellano hacer- mientras)

    La estructura do-while es similar a la while con la diferencia de que antes de la condicin primero se realizan las

    acciones.

    do

    acciones

    while(condicin)

    A continuacin veremos un ejemplo con while y con do-while para ver las pequeas diferencias:

    Algoritmo que visualiza en pantalla los primeros N nmeros naturales

    WHILE DO WHILE C++

    condicin

    acciones

    si no

    si

    no

    inicio

    N

    fin

    con=1

    conN; con=1; do { cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    21

    1. Programa que permite visualizar verticalmente los dgitos de un nmero

    Ejemplo Entrada Salida 3265 5 6 2 3

    2. Programa que permite insertar N nmeros por teclado y posteriormente visualiza cuntos son pares

    Ejemplo:

    Entrada Salida

    5 2

    5 6 4 7 9

    #include void main() { int A,dig; cin>>A; do { dig=A%10; cout>num; if(num%2==0) par=par+1; con=con+1; } while(con

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    22

    ESTRUCTURA REPETITIVA FOR

    La estructura for es una forma resumida de while, es decir tiene una variable con un valor inicial, una condicin y el

    incremento de la variable.

    A continuacin veremos un ejemplo con la estructura for

    Algoritmo que visualiza en pantalla los primeros 5 nmeros naturales

    EJEMPLOS

    1. Programa que permite insertar N nmeros por teclado y visualiza cuntos son pares.

    i=1 ; i

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    23

    2. Programa que permite insertar N nmeros por teclado, y posteriormente visualiza el nmero ms grande.

    Ejemplo: Entrada Salida

    6 9

    7 2 5 9 1 4

    #include

    void main()

    {

    int N,i,num,may;

    cin>>N;

    may=0;

    for(i=0;i>num;

    if(num>may)

    may=num;

    }

    coutN;

    for(i=1;i

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    24

    TIPOS DE ERRORES EN PROGRAMACION Generalmente los errores de programacin caen en las siguientes categoras: de sintaxis y lgica

    ERRORES DE SINTAXIS

    Ocurren cuando el cdigo se escribe incorrectamente, por ejemplo se escribe mal una sentencia o se emite o se

    requiere de cierta puntuacin, o no se escriben estructuras completas como por ejemplo la falta de punto y coma,

    falta de llaves, no declarar variables, etc. Estos errores son fciles de detectar generalmente es el compilador que los

    identifica y hasta muestra la lnea donde se encuentra dicho error.

    En Turbo C++ cuando ejecutamos un programa que tiene errores nos muestra un mensaje como se muestra abajo

    A continuacin veremos los mensajes de error ms comunes.

    INGLES CASTELLANO

    Statement missing ; Le falta ; (quiere decir que al final le falta punto y coma) Compound statement missing } Le falta } (todas las llaves que se abren deben cerrarse, es muy

    comn no cerrar todas las llaves)

    Declaration syntax error Error de sintaxis en declaracin (quiere decir que le falta alguna palabra)

    Undefined symbol Smbolo indefinido (cuando alguna sentencia por ejemplo cin est mal escrito)

    Undefined symbol cont No se ha definido la variable cont (sucede cuando nos olvidamos declarar una variable)

    Multiple declaration for cont Mltiple declaracin para cont (las variables slo se deben declarar una vez, si declaramos dos veces nos mostrara este mensaje)

    ERRORES DE LGICA.-

    Ocurre cuando una aplicacin no realiza lo esperado, este tipo de errores son difciles de encontrar porque

    sintcticamente puede ser cdigo vlido y ejecutarse sin realizar ninguna operacin invlida pero puede producir

    resultados incorrectos, la nica forma de verificar su funcionamiento es probar y analizar los resultados.

    El mensaje nos muestra que

    no tenemos ninguna

    precaucin, pero tiene 3

    errores

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    25

    TIPOS DE DATOS EN C++

    A toda variable que se usa en un programa, se le debe asociar (generalmente al principio del programa) un tipo de

    dato especfico.

    Un tipo de dato define todo el posible rango de valores que una variable puede tomar al momento de ejecucin del

    programa y a lo largo de toda la vida til del propio programa. Los tipos de datos ms comunes en C++ son:

    TIPO DE DATO ESPACIO EN MEMORIA RANGO

    Char 8 bits (1 byte) Caracteres del cdigo ascii

    Short 16 bits (2 bytes) -32,768

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    26

    #include

    void main()

    {

    int a=7,b=2;

    float c=(float) a / b; couta>>b>>c; prom=(float)(a+b+c)/3; couta>>b>>c; prom=(a+b+c)/3; cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    27

    } 3. Programa que permite insertar N nmeros enteros por teclado y visualiza el promedio.

    Ejemplo: Entrada Salida

    5 3,2

    2 2 3 4 5

    #include void main() { int N,con,num,sum; float prom; cin>>N; sum=0; con=0; while(con>num; sum=sum+num; con++; //esto es igual que con=con+1 }

    prom=(float)(sum)/N; coutn; while(con

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    28

    LIBRERAS

    Una librera o biblioteca es un conjunto de funciones prefabricadas que pueden ser utilizados por el programador

    para realizar determinadas operaciones, las mismas deben ser declaradas al inicio del programa (en la cabecera con la

    sentencia include). Como ejemplo citaremos algunas libreras.

    iostream.h esta librera contiene funciones que permiten la entrada y salida de datos de un programa, es decir

    gracias a esta librera podemos utilizar las sentencias cin y cout.

    math.h contiene funciones matemticas

    string.h contiene funciones que permiten trabajar con cadenas.

    time.h contiene funciones que ayudan en la manipulacin de la fecha y hora

    stdlib.h

    conio.h

    LIBRERA math.h

    La librera math.h nos proporciona funciones y constantes matemticas, a continuacin detallamos las ms utilizadas.

    double pow(double x, double y) Devuelve el valor de x elevado a y. double sin(double x) Devuelve el seno de x. double cos(double x) devuelve el coseno de x double acos(double x) Calcula el arco coseno de x. double asin(double x) Calcula el arco seno de x. double atan(double x) Devuelve el arco tangente en radianes. double exp(double x) Devuelve el valor de e (la base de los logaritmos naturales) elevado a la potencia x. double floor(double x) Redondea x hacia abajo al entero ms cercano. int abs(int j) Calcula el valor absoluto de un entero. double log(double x); Devuelve el logaritmo neperiano de x. double log10(double x) Devuelve el logaritmo decimal de x. double sqrt(double x) Devuelve la raz cuadrada no negativa de x. double tan(double x) Devuelve la tangente de x.

    Nota.- Los datos que reciben las funciones trigonomtricas son en radianes

    Constantes matemticas

    M_E La base de los logaritmos naturales e. M_LOG2E El logaritmo de e de base 2. M_LOG10E El logaritmo de e de base 10. M_PI M_PI_2

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    29

    A continuacin mostramos algunos ejemplos:

    1. Programa que calcula el valor de y

    31 x

    xy

    #include #include void main() { double y,x; cin>>x; y=x/(1-pow(x,3)); coutx; y=(sqrt(sin(x)))/exp(x); cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    30

    SENTENCIA DE SALTO break

    Break nos sirve para escapar de un ciclo repetitivo (while, do while, for) o de la estructura de seleccin mltiple

    (switch)

    Cuando dentro del cdigo de un ciclo se introduce la instruccin break, el programa saldr del ciclo (sin importar la

    condicin lgica) y continuar con el resto del cdigo. Veamos algunos ejemplos:

    Ejemplo 1.

    #include

    void main()

    {

    int num=1;

    while(num

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    31

    cin>>num;

    if(num==0)

    break; if(num%2==0)

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    32

    SENTENCIA SWITCH La sentencia switch da una alternativa mucho ms refinada a la necesidad de utilizar o implementar mltiples

    sentencias condicionales if cuando deseamos que una determinada variable tome diferentes valores para cada

    condicin.

    Dentro de la sentencia switch es necesario la implementacin de , - (abrir/cerrar el ciclo); tambin para cada case

    (en espaol caso), es necesario que al final de cada case se rompa la misma con la sentencia break; la palabra default

    se utiliza para realizar algunas acciones en caso de que no cumpla ninguna de los anteriores casos.

    A continuacin veremos algunos ejemplos:

    Ejemplo 1.

    Programa que dado un nmero por teclado visualiza su correspondiente da de la semana.

    #include

    void main()

    {

    int dia;

    coutdia;

    switch(dia)

    {

    case 1: cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    33

    }

    }

    Ejemplo2.

    Programa que permite introducir 2 nmeros y posteriormente nos pide una operacin matemtica (+ , - , * , / ) y

    segn la operacin matemtica que se introduzca visualiza el resultado correspondiente.

    #include

    void main()

    {

    int A,B,D;

    char ope;

    coutA>>B;

    coutope;

    switch(ope)

    {

    case '+': D=A+B;

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    34

    ARREGLOS (ARRAYS)

    Los arreglos son estructuras de datos que consisten en elementos de informacin del mismo tipo relacionados entre

    s. Los arreglos son estructuras de datos estticas porque su tamao no cambia una vez que han sido creadas.

    Un arreglo es un grupo de posiciones contiguas de memoria, las cuales tienen el mismo nombre y el mismo tipo.

    Los arreglos pueden ser unidimensionales (vectores) bidimensionales (matrices).

    Ejemplo: MATRIZ

    VECTOR

    VECTORES

    Todos los datos de un vector deben ser del mismo tipo de dato.

    Cmo algunos ejemplos de vectores podramos tener:

    Vector de Enteros

    Vector de Reales

    Vector de Caracteres

    Vector de Cadenas

    Un vector debe tener un nombre (sin espacios) Por ejemplo

    vec =

    Nombre del vector Elementos del vector vec

    Cada elemento de un vector tiene una posicin, la misma que empieza en cero

    vec =

    POSICIONES vec[0] vec[1] vec[2] vec[3] vec[4] vec[5] vec[6] vec[7] vec[8] vec[9]

    3 5 7 24

    4 6 10 4

    3 5 7 8

    1.3 0.05 4.0 6.7 1.0 4.7 9.002

    a 8 ? j 1 - %

    Bolivia Argentina Per Uruguay Brasil

    12 14 17 8 19 13 7 9 6 92

    10

    12 14 17 8 19 13 7 9 6 92

    10

    12 14 17 8 19 13 7 9 6 92

    10

    12 14 17 8 19 13 7 9 6 92

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    35

    Entonces podemos ver que cada elemento de un vector tiene una posicin y un dato

    Por ejemplo:

    vec[0] tiene el dato 12

    vec[3] tiene el dato 8

    vec[8] tiene el dato 6

    ..

    Cada elemento del vector puede ser manejado como cualquier variable. Por ejemplo:

    int A = vec[0] + vec[8]; // A = 12 + 6 = 18

    int B = 2 + vec[3]; // B = 2 + 8 = 10

    vec[0] = A + B; // vec[0] = 18 + 10 = 28

    Declaracin de vectores en C++

    Los arreglos ocupan espacio en la memoria. El programador especifica el tipo de los elementos y

    la cantidad de elementos mximo que puede almacenar el vector. Entonces para declarar al vector

    vec del ejemplo anteriore sera:

    int vec[10]

    EJERCICIOS

    1.- Realizar un programa para visualizar los datos de un vector

    #include void main() { int vec[]={1,3,5,6,2}; for(int i=0;i

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    36

    2. Realizar un programa para insertar N nmeros en un vector y posteriormente visualizarlos en

    pantalla

    #include void main() { int N,num; int A[15]; cin>>N; for(int i=0;i>num; A[i]=num; } for(int j=0;j

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    37

    } ultimo=A[N-1]; for(int j=0;jultimo) cant++; cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    38

    CARCTER (char)

    char (character) es un tipo de dato que puede almacenar cualquier carcter del cdigo ascii.

    Un carcter siempre debe estar entre comillas simples (apstrofes)

    Ejemplos: 1 , f , F , & , % , ) , a , A , 3 , - , . , w , 6 , /

    CODIGO ASCII

    A continuacin veremos algunos programas con el manejo de caracteres.

    Programa que visualiza el mayor de dos caracteres introducidos por teclado

    Como cada carcter est asociado a un nmero decimal del cdigo ascii, el carcter mayor ser el carcter cuyo valor

    decimal sea mayor, por ejemplo a es mayor que A porque el valor decimal de a es mayor que el de A

    char a,b;

    cin>>a>>b;

    if(a>b)

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    39

    Programa permite introducir dos nmeros y un signo (operacin matemtica), si el signo es suma los nmeros

    deben sumarse y si el signo es resta los nmeros deben restarse.

    Programa que dado un carcter por teclado visualiza su correspondiente nmero decimal asociado.

    Programa que dado un nmero por teclado visualiza su correspondiente caracter asociado.

    int num1,num2,num3;

    char signo;

    cin>>num1>>num2;

    cin>>signo;

    if(signo=='+')

    {

    num3=num1+num2;

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    40

    CADENAS

    Una cadena es un vector de caracteres, una cadena debe estar encerrada entre comillas dobles.

    Por ejemplo una cadena seria: cad=Hola mundo

    La cadena hola mundo est formado por 10 caracteres.

    Posiciones de cada carcter 0 1 2 3 4 5 6 7 8 9

    A cada posicin de la cadena se la maneja como si fuera una variable de tipo char.

    Por ejemplo: char c; c=cad[0]; c tomar el valor de H c=cad[3]; c tomar el valor de a c=cad[4]; c tomar el valor de (espacio)

    CADENAS EN C++

    El manejo de cadenas en C++ se la realiza mediante un vector de caracteres como se muestra a continuacin:

    char cad*11+=Hola mundo;

    Tambin se puede manejar cadenas con punteros de cadenas, por ejemplo:

    char *cad=Hola mundo;

    Pero, en este tutorial el manejo de cadenas se realizar mediante la clase string que evita muchos problemas que

    existen al manejar cadenas.

    Nota.- la clase string no es soportado por cualquier compilador, por ejemplo el compilador de borland Turbo c++ no soporta. Pero, si soporta el compilador del CodeBlock o el compilador DevC++

    A continuacin y mediante algunos ejemplos iremos viendo algunas funciones de las cadenas.

    1. Insertar una palabra por teclado. Se utiliza la funcin cin>>

    #include

    #include

    using namespace std;

    int main(int argc, char *argv[])

    {

    string cad;

    cin>>cad;

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    41

    2. Visualizar la longitud de una cadena. Se utiliza la funcin length(), la misma retorna un valor entero

    #include

    #include

    using namespace std;

    int main(int argc, char *argv[])

    {

    string cad;

    cin>>cad;

    int tam=cad.length();

    coutcad; int tam=cad.length(); for(int i=tam-1;i>=0;i--) cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    42

    B=B+A[i]; //A una cadena se le puede aadir al final un carcter

    cout solo permite introducir palabras (cadenas sin espacios), para introducir cadenas que contengan

    espacios se debe utilizar la instruccin

    getline(cin,[cadena])

    7. En el siguiente ejemplo se introduce una frase por teclado, posteriormente se visualiza cuantas palabras hay en

    la frase.

    string cad;

    int pal=0;

    getline(cin,cad); int tam=cad.length();

    for(int i=0;i

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    43

    9. Programa que copia una subcadena en otra subcadena.

    string A,B;

    A="Tortuga";

    B=A.substr(3,2); //B tomar el valor de tu, a partir de la posicin 3, 2 caracteres cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    44

    FUNCIONES HECHAS POR EL PROGRAMADOR

    Existen 2 tipos de funciones hechas por el programador: las que no retornan ningn valor void (funciones vacas,

    llamadas tambin procedimientos) y las que retornan valores (return).

    Internamente las funciones tienen sus propias variables, estructuras selectivas y estructuras repetitivas.

    FUNCIONES QUE RETORNAN VALORES (tienen return)

    Las funciones en C++ tienen el siguiente formato:

    int suma ( int A, int B)

    {

    int C=A+B;

    return (C);

    }

    La anterior funcin tiene como nombre suma, esta funcin recibe dos parmetros de tipo entero y retorna (devuelve)

    un valor de tipo entero (int)

    La funcin anterior se puede utilizar en una funcin o programa principal de la siguiente manera:

    #include

    int suma(int A,int B)

    {

    int C=A+B;

    return (C);

    }

    void main()

    {

    int num1=4;

    int num2=20;

    int num3=suma(num1,num2);

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    45

    1. Funcin que reciba como parmetros 3 nmeros y devuelva el mayor de los nmeros.

    #include int mayor(int a,int b,int c) { if(a>b) if(a>c) return a; else return c; else if(b>c) return b; else return c; } void main() { int R,x,y,z; cin>>x>>y>>z; R=mayor(x,y,z); cout>n; float prom=promedio(n); cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    46

    int factorial(int num) { int fac=1; for(int i=1;i>n; cout>n; d=decimal(n); cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    47

    } if(c>n; while(con

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    48

    FUNCIONES QUE NO RETORNAN VALORES

    FUNCIONES VACIAS (void)

    Son las que no retornan ningn valor (funciones vacas, llamadas tambin procedimientos)

    Partes de una funcin vaca.

    void nombre_Funcion(parmetros)

    {

    Variables locales

    PROGRAMA INTERNO

    }

    Variables Locales. Este tipo de variables son las que pueden ser utilizadas slo dentro la funcin, no son vlidas para

    otras funciones

    Tambin existen las Variables Globales, ests si pueden ser utilizadas en cualquier funcin del programa, pero, deben

    ser declaradas slo una vez al inicio del programa.

    Ejercicios.

    1. Realice un programa que visualice la suma de dos nmeros introducidos por teclado. Utilizando los siguientes

    subprogramas:

    - leerNumeros()

    - calcularSuma()

    - verSuma()

    #include

    int A,B,C;

    void leerNumeros()

    {

    cin>>A>>B;

    }

    void calcularSuma()

    {

    C=A+B;

    }

    void verSuma()

    {

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    49

    }

    void main()

    {

    leerNumeros();

    calcularSuma();

    verSuma();

    }

    2. Realice un programa que dado un nmero por teclado visualice la cantidad de dgitos que tiene. Utilizando los

    siguientes subprogramas.

    - leerNumero()

    - contarDigitos()

    - mostrarCantidad()

    #include

    int A,res=0;

    void leerNumero()

    {

    cin>>A;

    }

    void contarDigitos()

    {

    int num=A;

    while(num>0)

    {

    res++;

    num=num/10;

    }

    }

    void mostrarCantidad()

    {

    cout

  • Ingeniera de Sistemas Programacin I Ing. Limber Ruz Molina

    50

    - insertarNumeros()

    - mostrarMayores()

    #include

    int N,mayores=0;

    void leerN()

    {

    cin>>N;

    }

    void insertarNumeros()

    {

    int num,con=0;

    while(con>num;

    if(num>5)

    mayores++;

    con++;

    }

    }

    void mostrarMayores()

    {

    cout