Está en la página 1de 40

UNIVERSIDAD PRIVADA SAN PEDRO

ESCUELA PROFESIONA DE INGENIERIA INFORMATICA Y DE SISTEMAS

CICLO I

ESTRUCTURA DE DATOS Y ALGORITMOS

Docentes: Ing Oscar Ascn Valdivia

Chimbote 2007
Ing. Oscar Ascn Valdivia 1

LOS SISTEMAS DE PROCESAMIENTO DE LA INFORMACIN


Datos: Se refiere a la representacin de algn hecho, concepto o entidad real los datos pueden tomar diferentes formas; por ejemplo: palabras escritas o habladas, nmeros, dibujos, etc. Informacin: Implica datos procesados y organizados. Sistema: Es un conjunto de componentes conectados e interactivos, que tienen propsito y una unidad total. un

Sistema de procesamiento de informacin: Es un sistema que transforma datos brutos en informacin organizada, significativa y til. Entrada de datos Procesador Salida de informacin

Hardware: Conjunto de componentes fsicos en una computadora. El Hardware de una computadora se compone de : 1. Unidad central de procesamiento. 2. Memoria central 3. Dispositivos de almacenamiento secundario. 4. Perifricos o dispositivos de entrada / salida. Software: Conjunto de programas que controlan el funcionamiento de una computadora.

Dispositivos de E/S

Memoria central

Almacenamiento Sec.

Unidad Central de Proceso

Diagrama de una computadora

Ing. Oscar Ascn Valdivia

Concepto de algoritmo: Describe la secuencia ordenada de pasos que conducen a la solucin de un problema dado. La resolucin de un programa exige el diseo de un algoritmo que resuelve el problema propuesto.

Problema

Diseo del algoritmo

Programa de computadora

Los pasos para la solucin de un problema son: 1. Diseo de algoritmo que describe la secuencia ordenada de pasos, que conducen a la solucin de un problema dado. 2. Expresar el algoritmo como un programa en un lenguaje de programacin adecuado. 3. Ejecucin y validacin del programa por la computadora. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que se ejecuta. Caractersticas: Debe de ser preciso e indicar el orden de realizacin de cada paso. Un algoritmo debe de estar definido. Obtener el mismo resultado Un algoritmo debe de ser finito.

La definicin de un algoritmo debe de describir tres partes: Entrada, proceso y salida. Ejemplo: Disear un algoritmo para obtener la ultima cifra de un numero ingresado por teclado.. 1. Inicio. 2. Introducir un numero, Num. 3. Modulo de Num con 10, X=Num mod 10 4. Imprimir X, como resultado 5. Fin Ejemplo: Num= 245 1. 2. 3. 4. 5. Inicio Ingresar 225 X= 225 mod 10 Imprimir X Fin

Ing. Oscar Ascn Valdivia

Ejemplo: I. Disear un algoritmo que calcule el promedio de 2 notas. 1. 2. 3. 4. 5. 6. II. Disear un algoritmo que calcule el subtotal, total y el IGV, dado el precio y la cantidad. 1. 2. 3. 4. 5. 6. 7. 8.

TIPOS DE DATOS
El primer objetivo de toda computadora es el manejo de la informacin o datos. Un dato es la expresin general que describe los objetos con los cuales opera una computadora. Los tipos de datos simples son los siguientes: Numrico (Integer, real) Lgicos (Bolean) Carcter (char, string) Datos Numricos: Es el conjunto de valores numricos. Estos pueden representarse en dos formas distintas: Numero entero (Integer) Numero real (real) Enteros: Es un subconjunto finito de los nmeros enteros. Los enteros son nmeros completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o positivos. Los nmeros enteros mximos y mnimos de una computadora suelen ser 32768 a +32767.

Ing. Oscar Ascn Valdivia

Reales: Es un subconjunto de los nmeros reales. Los nmeros reales siempre tienen un punto decimal y pueden ser positivos y negativos. Un numero real consta de un entero y una parte decimal. Datos Lgicos: Tambin denominado booleano es aquel dato que puede tomar uno de 2 valores: Verdadero Falso. Ejemplo: Cuando se pide si un valor entero es positivo, la respuesta ser verdadera o falsa. Datos Carcter: El tipo carcter es el conjunto finito y ordenado de caracteres que la computadora reconoce, un dato tipo carcter contiene un solo carcter. Tipos de carcter: Carcter Alfabtico: A, B, C, D, .... Z Carcter Numricos: 0, 1, 2, 3, ...9 Caracteres Especiales: +, -, *, =, /, %, #... Una cadena (String) de caracteres es una sucesin de caracteres que se encuentra delimitados entre unas comillas, la longitud de caracteres esta comprendida entre los separadores. Datos

Numrico

Carcter

Lgico

Entero

Real

Ing. Oscar Ascn Valdivia

Tipos en C#
C# es un lenguaje de tipeado seguro (o fuertemente tipado) lo cual quiere decir que el programador debe definir a que tipo pertenece cada pedazo de informacin o cada objeto que se crea. Los tipos bsicos no son ms que alias para tipos predefinidos en la librera base de la plataforma .NET. As, el tipo nmero entero (que se representa con la palabra clave int), no es ms que una forma rpida de escribir System.Int32. Los tipos por valor difieren de los tipos por referencia en que las variables de los tipos por valor contienen directamente su valor, mientras que las variables de los tipos por referencia almacenan la direccin donde se encuentran los objetos, es por eso que se las llaman referencias. Ms adelante describiremos como funcionan cada una de estas categoras. Tipos bsicos o internos Los tipos bsicos como hemos dicho son espacios predefinidos y categorizados donde se almacena informacin. En C# tenemos los siguientes tipos internos:

Tipo C# bool byte sbyte short ushort int uint long ulong float

Nombre para plataforma .NET System.Boolean System.Byte System.SByte System.Int16 System.Uint16 System.Int32 System.Uint32 System.Int64 System.Uint64 System.Single

la Bytes utilizados 1 1 1 2 2 4 4 8 8 4 8 12 2

Valores que soporta true o false (verdadero o falso en ingls) 0 hasta 255 -128 hasta 127 -32.768 hasta 32.767 0 hasta 65535 -2.147.483.648 hasta 2.147.483.647 0 hasta 4.394.967.395 -9.223.372.036.854.775.808 9.223.372.036.854.775.807 0 hasta 18446744073709551615 Approximadamente 1.5E-45 hasta 3.4E38 con 7 cifras significativas Approximadamente 5.0E-324 1.7E308 con 7 cifras significativas hasta hasta

double System.Double decimal System.Decimal char System.Char

Approximadamente 1.0E-28 hasta 7.9E28 con 28 29 cifras significativas Cualquier carcter Unicode (16 bits)

int sueldo; string nombre;


Ing. Oscar Ascn Valdivia 6

CONSTANTES Y VARIABLES
Constantes: Es una partida de datos que permanecen sin cambios durante todo el desarrollo del algoritmo o durante la ejecucin del programa. Constantes tipo numrico: Entero 31025 125 2 Constantes tipo carcter, cadena: A, B ISTP, Computacin e Informtica Constantes lgicas (boleen) Verdadero, Falso. Real 0.258 158.25 782156

const int mes = 30; const string nombre = "Oscar Ascn";


Variables: Es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa. Dependiendo del lenguaje hay diferentes tipos de variables, tales como enteros, reales, carcter, lgico y de cadena. Una variable que es de un cierto tipo, pueden tomar valores de este tipo. Ejemplos (C#) int X, Y; float A, B; char R; X=20 Y=30250 A=7.325 B=0.0258 R=A

Para la solucin de problemas con computadoras se puede dividir en 3 fases: Anlisis del problema Diseo del algoritmo Solucin del algoritmo en la computadora.

Ing. Oscar Ascn Valdivia

Anlisis del problema:

Anlisis del Problema

Definicin del Problema

Especificaciones de Entrada

Especificaciones de Salida

Diseo de Algoritmos:

Suma de dos nmeros

Entrada de datos

Calcula la suma

Salida de resultados

Entrada n1, n2.

S= A+B

Salida A, B, S

Ing. Oscar Ascn Valdivia

Estructura de un Programa en C#
using System; using System.Collections.Generic; using System.Text; namespace Ejemplo1 //Nombre del Programa { class Program // Nombre de la Clase { static void Main(string[] args) { System.Console.Write("Universidad Privada San Pedro"); System.Console.Write("Ingenieria Informatica y de Sistemas"); System.Console.ReadKey(); } } }

Cuerpo del Programa

Ing. Oscar Ascn Valdivia

CASOS PRCTICOS
1. Implementar un programa que permita calcular el IGV usando constantes, dado el precio y la cantidad static void Main(string[] args) { DECLARACION DE VARIABLES int c; double p, st, t; DECLARACION DE CONSTANTES const double igv = 0.19; MOSTRAR TITULOS System.Console.WriteLine ("Ingresar Precio:"); LEER VALOR p = Convert.ToDouble( Console.ReadLine ()); System.Console.WriteLine("Ingresar Cantidad:"); c = Convert.ToInt16(Console.ReadLine()); REALIZAR OPERACIONES st = p * c; t = st + st * igv; MOSTRAR RESULTADOS Console.WriteLine("Sub Total:{0} ", st); Console.WriteLine("Total:{0} ", t); System.Console.ReadKey(); } 2. Implementar un programa que permita la declaracin de los diferentes tipos de variables static void Main(string[] args) { int edad; double sueldo; char sexo; string nombre; DateTime fecha; Console.WriteLine("Ingresar Nombre"); nombre =Convert.ToString (Console.ReadLine()); Console.WriteLine("Ingresar Sexo (M / F)"); sexo =Convert.ToChar ( Console.ReadLine()); Console.WriteLine("Ingresar Sueldo");

Ing. Oscar Ascn Valdivia

10

sueldo =Convert.ToDouble( Console.ReadLine()); Console.WriteLine("Ingresar Edad"); edad =Convert.ToInt16( Console.ReadLine()); Console.WriteLine("Ingresar Fecha"); fecha=Convert.ToDateTime(Console.ReadLine()); Console.ReadKey(); } 3. Desarrollar un programa que permita sumar 2 nmeros static void Main(string[] args) { int n1,n2,s; System.Console.WriteLine("Ingresar Numero1:"); n1 = Convert.ToInt16 (Console.ReadLine()); System.Console.WriteLine("Ingresar Numero2:"); n2 = Convert.ToInt16(Console.ReadLine()); s = n1 + n2; Console.WriteLine("Suma:{0} ", s); System.Console.ReadKey(); }

PRACTICA
Desarrollar los siguientes problemas: Cdigo: C# 1. Calcular la superficie de un circulo (S=pi * R2) 2. Calcular el permetro de la superficie de un rectngulo dadas la base y altura del mismo. (S=Base * Altura; P=2 * (base + altura)) 3. Calcular el rea de un cuadrado. 4. Calcular el valor de Y=X2 5. Calcular el valor de Y=(X2-X) / 2 6. Calcular la multiplicacin de dos nmeros. 7. Calcular la divisin de dos nmeros 8. Calcular el modulo de dos nmeros.

Ing. Oscar Ascn Valdivia

11

REPRESENTACIN GRAFICA DE LOS ALGORITMOS


Los mtodos usuales para representar un algoritmo son: 1. Diagrama de flujo 2. Diagrama N S (Nassi Schneiderman) 3. Pseudocdigo 4. Lenguaje espaol 5. Formulas Diagrama de Flujo: Es una de las tcnicas de representacin de algoritmos mas antiguas y a la vez ms utilizada. Un diagrama de flujo es un diagrama que utiliza los smbolos estndar unidas por flechas denominadas lneas de flujo que indican la secuencia que se debe ejecutar. Smbolos Principales Funcin Terminal: Representa el inicio o fin de un programa

Entrada / Salida, cualquier tipo de datos introducidos a la memoria desde los perifricos (entrada), o registro de informacin procesada en un perifrico (salida) Proceso: Cualquier tipo de operacin que pueda originar cambio de valor, formato o posicin de la informacin almacenada en memoria. Decisin: Indica operaciones lgicas o de comparacin entre datos, normalmente tiene dos salida si, no. Decisin mltiple: En funcin del resultado de la comparacin se seguir uno de los diferentes caminos de acuerdo con dicho resultado. Conector: Sirve para enlazar dos partes cuales quiera de un ordinograma a travs de un conector en la salida y otro conector en la entrada. Lnea de flujo: Indica el sentido de la ejecucin de las operaciones. Lnea conectora: Sirve de unin entre dos smbolos

Conector: Conexin entre dos puntos del organigrama situado en paginas diferentes. Llamada a sub rutina o a un proceso predeterminado.

Ing. Oscar Ascn Valdivia

12

Ejemplos: Sumar dos numero y mostrar el resultado


Inicio

Leer

Suma A+B

Imprimir

Fin

Diagramas N S: Es como un diagrama de flujo donde se omiten las flechas de unin 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 Ejemplo: Nombre del algoritmo Accin 1 Accin 2 Accin n

Pseudocdigo: Es un lenguaje de especificacin de algoritmos, el uso de tal lenguaje hace el paso de codificacin final relativamente fcil. El pseudocdigo original utiliza para representar las acciones sucesivas palabras reservadas en ingles similares a sus homonimias en los lenguajes de programacin. Ejemplo: Calcular el salario neto semanal de un trabajador en funcin al nmero de horas trabajadas y la tasa de impuesto.

Ing. Oscar Ascn Valdivia

13

Pseudocdigo:
Inicio Leer nombre, horas, pre_hora Sal_Bruto horas * precio_horas Tasa 0.30*sal_bruto Sal_neto sal_bruto tasa Visualizar Nombre, Sal_bruto, Tasa, Sal_neto. Fin

Diagrama flujo
Inicio Ingresar horas, sal_ horas, tasa Sal_brutohoras*sal_horas

Tot_imp sal_bruto*tasa

Sal_neto sal_bruto-tot_imp

Visualizar sal_bruto, tasa, sal_neto

Fin

NS
Inicio Ingresar horas, sal_horas, tasas Sal_bruto horas * sal_horas Tot_imp sal_bruto- tasa Sal_neto sal_bruto tot_imp fin
Ing. Oscar Ascn Valdivia 14

ESTRUCTURAS DE PROGRAMACIN
Estructura Secuencial:
La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso Diagrama de Flujo N S

Accin 1

Accin 1 Accin 2 . . . Accin N

Accin 2 Accin 3

Ejemplo: Calcular la suma, resta, multiplicacin, divisin de dos nmeros. (Diagrama Flujo, N-S, Pseudocdigo). Pseudocodigo Inicio Leer un numero A Leer un numero B Suma S. SA + B Producto P. PA * B Escribir S,P Fin Diagrama de Flujo Inicio Leer A

Leer B

S= A + B P= A * B Escribir S, P

Fin
Ing. Oscar Ascn Valdivia 15

Implementacion del Programa en C#

using System; using System.Collections.Generic; using System.Text; namespace Factorial { class Program { static void Main(string[] args) { int n1,n2; int s, r, m, d; Console.WriteLine("Ingresar numero 1: "); n1 = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Ingresar numero 2: "); n2 = Convert.ToInt16(Console.ReadLine()); s = n1 + n2; r = n1 - n2; m = n1 * n2; d = n1 / n2; Console.WriteLine("Suma={0}", s); Console.WriteLine("Resta={0}", r); Console.WriteLine("Multiplicacion={0}", m); Console.WriteLine("Division={0}", d); Console.ReadKey(); } } }

Practica
1. Desarrollar los siguientes diagramas de Flujos (Pseudocodigo), implementarlos en el Lenguaje de Programacin C# a. Calcular el salario neto de un trabajador en funcin del numero de horas trabajadas, precio de la hora de trabajo y considerando unos descuentos fijos al sueldo bruto en concepto de impuestos 20%. b. Calcular el monto neto a pagar a telefnica, teniendo en cuenta que se tienen 2 tipos de llamadas (Local =0.5, Nacional = 2), debe de permitir ingresar el total de minutos de llamadas locales y nacionales.

Ing. Oscar Ascn Valdivia

16

Estructura Selectiva
Se utiliza para tomar decisiones lgicas; de ah que se suelan denominar tambin estructuras de seleccin o alternativas. En las estructuras selectivas se evala una condicin y y en funcin del resultado de la misma se realiza una opcin u otra. Las estructuras selectivas o alternativas pueden ser: Simple Dobles Mltiples

Alternativa Simple (Si - entonces, If Then)


La estructura selectiva simple si entonces (If Then) ejecuta una determinada accin cuando se cumple una determinada condicin. Si la condicin es verdadera, entonces ejecuta la accin SI Si la condicin es falsa, entonces no hacer nada

Diagrama Flujo

N - S

Pseudocdigo

V
Condicin?

Condicin

Si (condicin) entonces Accin 1 Accin 2 Fin si

Accin 1

Alternativa Doble (Si - entonces Si no, If - Then - Else )


Si la condicin C es verdadera, se ejecuta la accin SI, y si es falsa se ejecuta la accin S2

Ing. Oscar Ascn Valdivia

17

Diagrama Flujo
V
Condicin?

N - S
Condicin F

Pseudocdigo
Si (condicin) entonces Accin 1 Sino Accin 2 Fin si

Accin 1
Accin S2 Accin S1

Accin 2

Ejemplo: Ingresar un numero e indicar si el numero es positivo o negativo. Pseudocodigo Inicio Leer N Si (N>0) Entonces Escribir N es positivo Sino Escribir N es negativo Fin

Diagrama de Flujo
Inicio Leer N

Falso

N>0
Verdadero

Escribir N Negativo

Escribir N Positivo

Fin

Ing. Oscar Ascn Valdivia

18

using System; using System.Collections.Generic; using System.Text; namespace Factorial { class Program { static void Main(string[] args) { int n; Console.WriteLine("Ingresar numero: "); n = Convert.ToInt16(Console.ReadLine()); if (n > 0) { Console.WriteLine("Es Numero positivo {0}", n); } else { Console.WriteLine("Es Numero negativo {0}", n); } Console.ReadKey(); } } }

Practica
1. Calcular el total de un articulo dado el precio y la cantidad, si el total es mayor que 50 tiene un descuento de 15%. 2. Dada tres notas calcular el promedio; si el promedio es <= 10.5 la condicin es jalado, si el promedio<=14 la condicin es Bueno, caso contrario la condicin es Excelente. 3. Identificar si el numero ingresado es par o impar. 4. Ingresar un numero e indicar si el numero es mayor que 50 5. Los trabajadores de una fabrica de automviles tienen tres turnos: Maana, Tarde y Feriados; se desea calcular el sueldo semanal a razn de 5 das de trabajo de las Siguientes tarifas: 50 S/. Turno Maana 60 S/. Turno Tarde 100 S/. Turno Feriado 6. Ingresar un numero e indicar si el numero es igual a Cero, mayor que cero o menor que cero. 7. Ingresar un numero e indicar si el numero es positivo o negativo, adems debe mostrar si el numero es par o impar.

Ing. Oscar Ascn Valdivia

19

Alternativa mltiple.
La estructura de decisin mltiple evaluara una expresin que podr tomar n valores distintos 1, 2, 3, 4, 5, .n. Segn que elija uno de estos valores en la condicin, se realizara una de las n acciones.

Diagrama Flujo

N - S

Pseudocdigo
Case expresin E1: accin 1 E2: Accin 2 Otherwise Accin x End case

Cond 1 2
A1 A2 A3 An

Condicin
3 n

Ejemplo: Ingresar un Numero del 1 al 12 e indicar el mes que le corresponda. Inicio Leer N

1 N 2 11 Enero Febrero Noviembre 12 Diciembre

Fin

Ing. Oscar Ascn Valdivia

20

using System; using System.Collections.Generic; using System.Text; namespace Factorial { class Program { static void Main(string[] args) { int n; Console.WriteLine("Ingresar numero del Mes: "); n = Convert.ToInt16(Console.ReadLine()); switch (n) { case 1: Console.WriteLine("El mes {0} es Enero", n); break; case 2: Console.WriteLine("El mes {0} es Febrero", n); break; case 3: Console.WriteLine("El mes {0} es Marzo", n); break; case 4: Console.WriteLine("El mes {0} es Abril", n); break; case 5: Console.WriteLine("El mes {0} es Mayo", n); break; case 6: Console.WriteLine("El mes {0} es Junio", n); break; case 7: Console.WriteLine("El mes {0} es Julio", n); break; case 8: Console.WriteLine("El mes {0} es Agosto", n); break; case 9: Console.WriteLine("El mes {0} es Setiembre", n); break; case 10: Console.WriteLine("El mes {0} es Octubre", n);

Ing. Oscar Ascn Valdivia

21

break; case 11: Console.WriteLine("El mes {0} es Noviembre", n); break; case 12: Console.WriteLine("El mes {0} es Diciembre", n); break; } Console.ReadKey(); } } }

Practica
1. Disear un menu que muestre las operaciones aritmticas y haga los clculos correspondientes. 2. Desarrollar un programa que muestre un men con cuatro opciones diferentes, cada opcin debe realizar una operacin. 3. Desarrollar un algoritmo que permita ingresar el salario de un trabajador e identificar que cargo tiene. Salario >2500 Gerente Salario <=1500 Jefe Salario <1000 Maestro Salario <=700 Operario

Ing. Oscar Ascn Valdivia

22

Estructuras Repetitivas:
Las estructuras que repiten una secuencia de instrucciones un nmero determinada de veces se denominan bucles, y se determinan iteracin al hecho de repetir la ejecucin de una secuencia de acciones. Mientras (While) Repetir (Repeat) Desde (For)

Estructuras Mientras (While)


Es aquella en el que el cuerpo del bucle se repite mientras se cumple una determinada condicin.

Diagrama flujo
N Mientras

NS
Condicin

Pseudocdigo
Mientras (condicin) hacer Accin 1 Accin 2 Accin n Fin Mientras

Cond. S Accin

Accin

Ejemplo: Contar los nmeros enteros positivos, el clculo se realiza cuando se ingresa un nmero negativo.

Inicio

C0

Leer N

N>0 si Leer N CC+1

no

Escribir C

Fin
Ing. Oscar Ascn Valdivia 23

Estructura repetir (Repeat)


La estructura repetir se ejecuta hasta que se cumpla una condicin determinada que se comprueba al final del bucle.

Diagrama Flujo

N S

Pseudocdigo
Repetir

Accin Accin

Accin 1 Accin 2 Hasta que (condicin)

Cond.

Repetir condicin

Ejemplo: Calcular el factorial de un nmero N, que responde a la formula: N! = N(N-1) (N-2) .. 3 x 2 x 1

Inicio

Leer N

Factorial =1 I =1

Factorial=factorial * I

I=I+1

N >= I No Escribir Factorial

Fin
Ing. Oscar Ascn Valdivia 24

While

using System; using System.Collections.Generic; using System.Text; namespace Factorial { class Program { static void Main(string[] args) { int n,c; c=0; Console.WriteLine("Ingresar numero: "); n = Convert.ToInt16(Console.ReadLine()); while (n >=0) { c = c + 1; Console.WriteLine("Ingresar numero: "); n = Convert.ToInt16(Console.ReadLine()); } Console.WriteLine("Total Numeros={0}", c); Console.ReadKey(); //Console.ReadKey(); } } } Do While

using System; using System.Collections.Generic; using System.Text; namespace Factorial { class Program { static void Main(string[] args) { int n, factorial, i; Console.WriteLine("Ingresar numero: "); n = Convert.ToInt16(Console.ReadLine());

Ing. Oscar Ascn Valdivia

25

factorial = 1; i = 1; do { factorial = factorial * i; i = i + 1; } while (n >= i); Console.WriteLine("Factorial={0}", factorial); Console.ReadKey(); } Console.ReadKey(); } } }

Practica
1. Disear un algoritmo que permita Ingresar dos nmeros y sumarlos, debe de mostrar mensaje de continuar S/N 2. Disear un algoritmo que permita Ingresar Nmeros , el programa termina cuando se ingresa el numero Cero 3. Disear un algoritmo que permita Ingresar nmeros; dada la cantidad de nmeros. 4. Disear un algoritmo que permita Calcular el promedio dada una cantidad de nmeros 5. Disear un algoritmo que permita Contar y sumar cuantos nmeros pares e impares
se ingresa; dada una cantidad de nmeros 6. Disear un algoritmo que permita Contar y sumar cuantos nmeros positivos y negativos s e ingresan; dada la cantidad de nmeros. 7. Disear un algoritmo que permita Ingresar nmeros, e identificar cuantos son mltiplos de Cinco, termina cuando se ingresa el numero cero.

Ing. Oscar Ascn Valdivia

26

Estructura desde / para (for)


En muchas ocasiones se conoce de antemano el numero de veces que se desean ejecutar las acciones de un bucle. En estos casos en el que el numero de iteraciones es fija, se debe usar la estructura desde Pseudocdigo Desde v vi hasta vf [incremento / decremento] Accin 1 Accin n Fin desde Diagrama de flujo
Inicio

Var i,n,c

Ii=

Acciones

Imp. c

Fin

N- S

Desde V_ind V_ini hasta V_fin [Inc / Dec] Acciones

Fin desde

Ing. Oscar Ascn Valdivia

27

Ejemplo: Calcular la suma de los N primeros nmeros. (Ingresar nmero por teclado)

Inicio

Leer N S= 0 Ii= I <= N I=1 I+ 1 I=

I=I+1

S= S + I

Escribir S

Fin

Ing. Oscar Ascn Valdivia

28

using System; using System.Collections.Generic; using System.Text; namespace Factorial { class Program { static void Main(string[] args) { int n,i,s; s = 0; Console.WriteLine("Ingresar numero: "); n = Convert.ToInt16(Console.ReadLine()); for (i = 1; i <= n; i++) { s = s + i; } Console.WriteLine("Suma Numeros={0}",s); Console.ReadKey(); } } }

Practica
1. Implementar un algoritmo que permita Ingresar una Cantidad de Nmeros, conociendo el limite. 2. Implementar un algoritmo que permita identificar los nmeros pares e impares, de 1 hasta el numero ingresado. 3. Implementar un algoritmo que permita mostrar la suma de los nmeros pares menores o iguales a el, y la suma los numero impares.

Ing. Oscar Ascn Valdivia

29

Bucles: Un bucle es un segmento de un algoritmo o programa, cuyas instrucciones se repiten un nmero determinado de veces mientras se cumple una determinada conexin. Leer N

Si .. N=0 No S=S+N
Fin

Escribir S

Contadores: es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteracin.
Cont 1

Cont>5

Cuerpo del bucle

Fin

Cont cont+1

Acumulador: Es una variable cuya misin es almacenar cantidades variables resultantes de sumas sucesivas.
N 0 Suma0 NN+1 SumaSuma+N

N=K?

Escribir Suma

Fin Ing. Oscar Ascn Valdivia 30

PRACTICA
Desarrollar los diagramas de Flujos e Implementarlo en C# 1. Escribir un algoritmo que lea tres notas y calcule el promedio de las notas. Promedio=(n1+n2+2*n3)/4. 2. Escribir un algoritmo en donde se ingrese los das trabajados, y se calcule el sueldo neto, el sueldo = das trabajados por jornal da menos el descuento. (El jornal da =30, el descuento afp=11% del sueldo). 3. Escribir un algoritmo que lea un numero y escriba su cuadrado. 4. Escribir un algoritmo que exprese en horas, minutos y segundos un tiempo expresado en segundos. 5. Disear un algoritmo que realice la siguiente conversin: una temperatura dada en grados Celsius a grados Fahrenheit. ( F = (9/5) C + 32 ). 6. Escribir un algoritmo que obtenga la ultima cifra de un numero. 7. Escribir un algoritmo donde se ingrese un numero. 8. Escribir un algoritmo que lea un numero e indique si el numero es positivo o negativo. 9. Escribir un algoritmo que calcule el sueldo de un empleado dados los das trabajados y el jornal diario; si el sueldo es mayor que 1000, entonces tiene un descuento del 10% caso contrario no hay ningn descuento. 10. Escribir un algoritmo que calcule las nota promedio de un alumno dadas dos notas, si el promedio es mayor o igual a 10.5 entonces mostrar aprobado, caso contrario mostrar Jalado. 11. Escribir un algoritmo que lea un numero e indique si el numero es par o impar. 12. Escribir una algoritmo que lea dos nmeros e indique cual es el mayor y cual es el menor. 13. Escribir un programa que al ingresar un numero adivine el numero mgico (Numero mgico es una constante del programa), si el numero ingresado es igual al numero mgico entonces reportar numero correcto, caso contrario si el numero es mayor, reportar numero demasiado grande, caso contrario numero demasiado pequeo. 14. Calcular el factorial de un numero N, utilizando la estructura desde 15. Imprimir las 20 primeras potencias de 4, es decir, 4 elevado a la 1, 4 elevado a 2,. 16. Calcular la suma de los N primeros nmeros utilizando Mientras 17. Disear un algoritmo para imprimir la suma de los nmeros impares menores o iguales que N. 18. Realizar el algoritmo para obtener la suma de los nmeros pares hasta 500 inclusive. 19. Escribir un algoritmo que permita escribir en una pantalla la frase Desea Continuar S / N, hasta que la respuesta sea S o N. 20. Leer sucesivamente nmeros del teclado, hasta que aparezca un nmero negativo.

Ing. Oscar Ascn Valdivia

31

ESTRUCTURA DE DATOS (ARRAYS) Un array es una secuencia de posiciones de la memoria central a las que se puede acceder directamente, que contiene datos del mismo tipo y pueden ser seleccionados individualmente mediante el uso de subndices. Array Unidimensionales: Los Vectores. Un array (matriz o vector) es un conjunto finito y ordenado de elementos homogneos. Los elementos de un array son homogneos, es decir, del mismo tipo de datos. Un array puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener todos sus elementos de tipo entero, etc. El tipo ms simple de array es el array unidimensional o vector (matriz de una dimensin). Un vector de una dimensin denominado NOTAS que consta de N elementos se puede representar de la siguiente manera: El subndice o ndice de un elemento [1, 2, 3, 4, i, n], designa su posicin en la ordenacin del vector. Notas: 20 15 12 09 13 18 12 Sintaxis public static void Main() { int[] notas = new int[5]; notas [0] = 20; notas [1] = 15; notas [2] = 12; notas [3] = 09; notas [4] = 13; notas [5] = 18; notas [6] = 12; Console.WriteLine( arr[1] ); }

Ing. Oscar Ascn Valdivia

32

Para crear un arreglo debemos especificar de qu tipo deseamos crear el arreglo seguido por corchetes [ ] que es el distintivo del arreglo (en nuestro ejemplo usamos int[]), seguido por la palabra clave new y el tipo y la cantidad de parmetros que tendr nuestro arreglo. En el ejemplo anterior, por ejemplo, se cre un arreglo notas unidimensional con capacidad para 6 enteros (especificado por new int[5]), y luego se le asign a cada parmetro un entero distinto (ntese que se comienza a contar a partir de 0 y el nmero del parametro se encuentran entre corchetes). Existe una forma ms corta para declarar el arreglo y asignarle los valores: int[] arr = {1,2,3}; //es exactamente lo mismo que el ejemplo anterior Casos Prcticos 1. Desarrollar e implementar un programa que permita ingresar y reportar un arreglo de notas, segn una cantidad de elementos ingresados using System; using System.Collections.Generic; using System.Text; namespace Arreglos { class Program { static void Main(string[] args) { // Declaracion de variables int i, n; // Declaracion del arreglo NOTA int [] nota =new int[6]; // Cantidad de elementos del arreglo System.Console.WriteLine("Ingresar numero de notas: "); n =Convert.ToInt16( Console.ReadLine()); // Ingreso de elementos al arreglo for (i = 0; i < n; i++) { Console.WriteLine("Nota [{0}]:",i); nota[i] =Convert.ToInt16( Console.ReadLine()); } // Reportar elementos del arreglo for (i = 0; i < n; i++) { Console.WriteLine("Nota: {0}",nota[i]); } Console.ReadKey(); } }
Ing. Oscar Ascn Valdivia 33

} 2. Implementar un programa que permita ingresar un arreglo, e identificar los elementos positivos y negativos. static void Main(string[] args) { int i, n; int[] nota = new int[6]; System.Console.WriteLine("Ingresar numero de notas: "); n = Convert.ToInt16(Console.ReadLine()); for (i = 0; i < n; i++) { Console.WriteLine("Nota [{0}]:", i); nota[i] = Convert.ToInt16(Console.ReadLine()); } for (i = 0; i < n; i++) { if (nota[i] > 0) { Console.WriteLine("Elemento {0}, es Positivo", nota[i]); } else { Console.WriteLine("Elemento {0}, es Negativo", nota[i]); } } Console.ReadKey(); } 3. Implementar un programa que permita ingresar un arreglo, y permita contar y acumular los nmeros pares e impares. static void Main(string[] args) { int i, n; int cp, ci, ap, ai; cp = 0; ci = 0; ap = 0; ai = 0; int[] nota = new int[6];

Ing. Oscar Ascn Valdivia

34

System.Console.WriteLine("Ingresar numero de notas: "); n = Convert.ToInt16(Console.ReadLine()); for (i = 0; i < n; i++) { Console.WriteLine("Nota [{0}]:", i); nota[i] = Convert.ToInt16(Console.ReadLine()); } for (i = 0; i < n; i++) { if (nota[i] % 2==0) { cp = cp + 1; ap = ap + nota[i]; } else { ci = ci + 1; ai = ai + nota[i]; } } Console.WriteLine("Total elementos Pares:{0}:", cp); Console.WriteLine("Total elementos Impares:{0}:", ci); Console.WriteLine("Suma Total Pares:{0}:", ap); Console.WriteLine("Suma Total Impares:{0}:", ai); Console.ReadKey(); }

PRACTICA
1. Implementar un programa que permita mostrar que elementos son positivos y/o negativos. 2. Implementar un programa que permita Sumar todos los elementos del arreglo. 3. Implementar un programa que permita ingresar 2 arreglos y sumar los elementos de los dos arreglos en un tercer arreglo. 4. Implementar un programa que permita ingresar 2 arreglos y multiplicar los elementos de los dos arreglos en un tercer arreglo. 5. Implementar un programa que permita calcular el promedio de los elementos ingresados en un arreglo. 6. Implementar un programa que permita ingresar elementos a un arreglo, y luego debe de permitir ingresar un numero para verificarlo si se encuentra en el arreglo. 7. Implementar un programa que permita ingresar elementos a un arreglo, y luego debe de reportarlos del ultimo al primero.

Ing. Oscar Ascn Valdivia

35

Array Bidimensionales: Los Arreglos. El array bidimensional se puede considerar como un vector de vectores. Es, por consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es significativo y en el que se necesitan especificar dos subndices para poder identificar a cada elemento del array. Fila 1 Fila 2 Fila 3 Fila 4 Fila 5 Columna 5 Columna 4 Columna 3 Columna 2 Columna 1 En notacin estndar, normalmente el primer subndice se refiere a la fila del array, mientras que el segundo subndice se refiere a la columna del array. Es decir B(i,j). 1 1 2 3 4 5 Sintaxis public static void Main() { int[ , ] arr = new int[2,2]; arr[0,0] = 1; arr[1,0] = 2; arr[0,1] = 3; arr[1,1] = 4;
Ing. Oscar Ascn Valdivia 36
5,2

Console.WriteLine("El valor que posee la variable arr[1,1] es {0}", arr[1,1] ); } Ejemplo: 1. Implementar un programa que permita ingresar y reportar elementos de una matriz. using System; using System.Collections.Generic; using System.Text; namespace Matriz { class Program { static void Main(string[] args) { // Declarar la Matriz int[,] matriz = new int[5, 5]; int f, c, i, j; // Ingresar filas y columnas Console.WriteLine("Ingresar N Filas:"); f = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Ingresar N Columnas:"); c = Convert.ToInt16(Console.ReadLine()); // Ingresar elementos a la matriz for (i = 0; i < f; i++) { for (j = 0; j < c; j++) { Console.WriteLine("Mat: "); matriz[i, j] = Convert.ToInt16(Console.ReadLine()); } } // Reportar elmentos de la matriz for (i = 0; i < f; i++) { Console.Write("\n"); for (j = 0; j < c; j++) { Console.Write(" {0} ", matriz[i,j]); } } Console.ReadKey(); } } }
Ing. Oscar Ascn Valdivia 37

2. Implementar un programa que permita contar cuantos elementos positivos y negativos tiene la matriz. static void Main(string[] args) { int[,] matriz = new int[5, 5]; int f, c, i, j,cp,cn; cp = 0; cn = 0; Console.WriteLine("Ingresar N Filas:"); f = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Ingresar N Columnas:"); c = Convert.ToInt16(Console.ReadLine()); for (i = 0; i < f; i++) { for (j = 0; j < c; j++) { Console.WriteLine("Mat: "); matriz[i, j] = Convert.ToInt16(Console.ReadLine()); } } for (i = 0; i < f; i++) { Console.Write("\n"); for (j = 0; j < c; j++) { if (matriz[i, j] > 0) { cp = cp + 1; } else { cn = cn + 1; } } } Console.WriteLine("Total positivos {0}:", cp); Console.WriteLine("Total negativos {0}:", cn); Console.ReadKey(); }

Ing. Oscar Ascn Valdivia

38

PRACTICA 3. Implementar un programa que permita mostrar que elementos son positivos y/o negativos. 4. Implementar un programa que permita Sumar todos los elementos de la matriz . 5. Implementar un programa que permita ingresar 2 matrices y sumar los elementos de las dos matrices en un tercer matriz. 6. Implementar un programa que permita calcular el promedio de los elementos ingresados en una Matriz. 7. Implementar un programa que permita ingresar elementos a una matriz, y luego debe de permitir ingresar un numero para verificarlo si se encuentra en la matriz. 8. Implementar un programa que permita ingresar elementos a una matriz, y luego debe de reportarlos el elemento mayor y menor.

Ing. Oscar Ascn Valdivia

39

Ing. Oscar Ascn Valdivia

40