estructura de datos y algoritmos

Anuncio
UNIVERSIDAD PRIVADA “SAN PEDRO”
ESCUELA PROFESIONA DE INGENIERIA INFORMATICA
Y DE SISTEMAS
CICLO I
ESTRUCTURA DE DATOS Y ALGORITMOS
Docentes: Ingº Oscar Ascón Valdivia
Chimbote 2007
Ing. Oscar Ascón Valdivia
1
LOS SISTEMAS DE PROCESAMIENTO DE LA
INFORMACIÓN
Datos: Se refiere a la representación de algún hecho, concepto o entidad real los datos
pueden tomar diferentes formas; por ejemplo: palabras escritas o habladas, números,
dibujos, etc.
Información: Implica datos procesados y organizados.
Sistema: Es un conjunto de componentes conectados e interactivos, que tienen
propósito y una unidad total.
un
Sistema de procesamiento de información: Es un sistema que transforma datos brutos en
información organizada, significativa y útil.
Entrada de datos
Procesador
Salida de información
Hardware: Conjunto de componentes físicos 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. Periféricos 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 Ascón Valdivia
2
Concepto de algoritmo: Describe la secuencia ordenada de pasos que conducen a la
solución de un problema dado.
La resolución de un programa exige el diseño de un algoritmo que resuelve el problema
propuesto.
Problema
Diseño del
algoritmo
Programa de
computadora
Los pasos para la solución de un problema son:
1. Diseño de algoritmo que describe la secuencia ordenada de pasos, que conducen a la
solución de un problema dado.
2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado.
3. Ejecución y validación del programa por la computadora.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan
como de la computadora que se ejecuta.
Características:
•
Debe de ser preciso e indicar el orden de realización de cada paso.
•
Un algoritmo debe de estar definido. Obtener el mismo resultado
•
Un algoritmo debe de ser finito.
La definición de un algoritmo debe de describir tres partes: Entrada, proceso y salida.
Ejemplo:
Diseñar 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.
Inicio
2.
Ingresar 225
3.
X= 225 mod 10
4.
Imprimir X
5.
Fin
Ing. Oscar Ascón Valdivia
3
Ejemplo:
I. Diseñar un algoritmo que calcule el promedio de 2 notas.
1.
2.
3.
4.
5.
6.
II. Diseñar 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 información o datos. Un dato es
la expresión general que describe los objetos con los cuales opera una computadora.
Los tipos de datos simples son los siguientes:
•
Numérico (Integer, real)
•
Lógicos (Bolean)
•
Carácter (char, string)
Datos Numéricos: Es el conjunto de valores numéricos. Estos pueden representarse en dos
formas distintas:
•
Numero entero (Integer)
•
Numero real (real)
Enteros: Es un subconjunto finito de los números enteros. Los enteros son números
completos, no tienen componentes fraccionarios o decimales y pueden ser negativos o
positivos. Los números enteros máximos y mínimos de una computadora suelen ser –32768
a +32767.
Ing. Oscar Ascón Valdivia
4
Reales: Es un subconjunto de los números reales. Los números reales siempre tienen un
punto decimal y pueden ser positivos y negativos. Un numero real consta de un entero y
una parte decimal.
Datos Lógicos: También 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 Carácter: El tipo carácter es el conjunto finito y ordenado de caracteres que la
computadora reconoce, un dato tipo carácter contiene un solo carácter.
Tipos de carácter:
• Carácter Alfabético: A, B, C, D, .... Z
• Carácter Numéricos: 0, 1, 2, 3, ...9
• Caracteres Especiales: +, -, *, =, /, %, #...
Una cadena (String) de caracteres es una sucesión de caracteres que se encuentra
delimitados entre unas comillas, la longitud de caracteres esta comprendida entre los
separadores.
Datos
Numérico
Entero
Ing. Oscar Ascón Valdivia
Carácter
Lógico
Real
5
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 información o cada objeto
que se crea.
Los tipos básicos no son más que alias para tipos predefinidos en la librería base de la
plataforma .NET. Así, el tipo número entero (que se representa con la palabra clave int),
no es más que una forma rápida 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 dirección donde se encuentran los objetos, es por eso que se las llaman
referencias. Más adelante describiremos como funcionan cada una de estas categorías.
Tipos básicos o internos
Los tipos básicos como hemos dicho son espacios predefinidos y categorizados donde se
almacena información. En C# tenemos los siguientes tipos internos:
Tipo
C#
Nombre
para
plataforma .NET
bool
System.Boolean
1
true o false (verdadero o falso en inglés)
byte
System.Byte
1
0 hasta 255
sbyte
System.SByte
1
-128 hasta 127
short
System.Int16
2
-32.768 hasta 32.767
ushort
System.Uint16
2
0 hasta 65535
int
System.Int32
4
-2.147.483.648 hasta 2.147.483.647
uint
System.Uint32
4
0 hasta 4.394.967.395
long
System.Int64
8
-9.223.372.036.854.775.808
9.223.372.036.854.775.807
ulong
System.Uint64
8
0 hasta 18446744073709551615
float
System.Single
4
Approximadamente ±1.5E-45 hasta ±3.4E38
con 7 cifras significativas
double System.Double
8
Approximadamente
±5.0E-324
±1.7E308 con 7 cifras significativas
decimal System.Decimal
12
Approximadamente ±1.0E-28 hasta ±7.9E28
con 28 ó 29 cifras significativas
char
2
Cualquier carácter Unicode (16 bits)
System.Char
la Bytes
utilizados
Valores que soporta
hasta
hasta
int sueldo;
string nombre;
Ing. Oscar Ascón Valdivia
6
CONSTANTES Y VARIABLES
Constantes: Es una partida de datos que permanecen sin cambios durante todo el
desarrollo del algoritmo o durante la ejecución del programa.
Constantes tipo numérico:
Entero
31025
125
2
Real
0.258
158.25
782156
Constantes tipo carácter, cadena:
‘A’, ‘B’ ‘ISTP, ‘Computación e Informática’
Constantes lógicas (boleen)
Verdadero, Falso.
const int mes = 30;
const string nombre = "Oscar Ascón";
Variables: Es un objeto o partida de datos cuyo valor puede cambiar durante el desarrollo
del algoritmo o ejecución del programa.
Dependiendo del lenguaje hay diferentes tipos de variables, tales como enteros, reales,
carácter, lógico 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 solución de problemas con computadoras se puede dividir en 3 fases:
•
Análisis del problema
•
Diseño del algoritmo
•
Solución del algoritmo en la computadora.
Ing. Oscar Ascón Valdivia
7
Análisis del problema:
Análisis del
Problema
Definición
del Problema
Especificaciones
de Entrada
Especificaciones
de Salida
Diseño de Algoritmos:
Suma de dos
números
Entrada de
datos
Calcula la
suma
Salida de
resultados
Entrada n1,
n2.
S= A+B
Salida
A, B, S
Ing. Oscar Ascón Valdivia
8
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();
}
}
}
Ing. Oscar Ascón Valdivia
Cuerpo del
Programa
9
CASOS PRÁCTICOS
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 declaración 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 Ascón 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 números
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: Código: C#
1. Calcular la superficie de un circulo (S=pi * R2)
2. Calcular el perímetro de la superficie de un rectángulo 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 multiplicación de dos números.
7. Calcular la división de dos números
8. Calcular el modulo de dos números.
Ing. Oscar Ascón Valdivia
11
REPRESENTACIÓN GRAFICA DE LOS
ALGORITMOS
Los métodos usuales para representar un algoritmo son:
1. Diagrama de flujo
2. Diagrama N – S (Nassi – Schneiderman)
3. Pseudocódigo
4. Lenguaje español
5. Formulas
Diagrama de Flujo: Es una de las técnicas de representación de algoritmos mas antiguas y
a la vez más utilizada. Un diagrama de flujo es un diagrama que utiliza los símbolos
estándar unidas por flechas denominadas líneas de flujo que indican la secuencia que se
debe ejecutar.
Símbolos Principales
Función
Terminal: Representa el inicio o fin de un programa
Entrada / Salida, cualquier tipo de datos introducidos a la
memoria desde los periféricos (entrada), o registro de
información procesada en un periférico (salida)
Proceso: Cualquier tipo de operación que pueda originar
cambio de valor, formato o posición de la información
almacenada en memoria.
Decisión: Indica operaciones lógicas o de comparación entre
datos, normalmente tiene dos salida si, no.
Decisión múltiple: En función del resultado de la comparación
se seguirá uno de los diferentes caminos de acuerdo con dicho
resultado.
Conector: Sirve para enlazar dos partes cuales quiera de un
ordinograma a través de un conector en la salida y otro
conector en la entrada.
Línea de flujo: Indica el sentido de la ejecución de las
operaciones.
Línea conectora: Sirve de unión entre dos símbolos
Conector: Conexión entre dos puntos del organigrama situado
en paginas diferentes.
Llamada a sub rutina o a un proceso predeterminado.
Ing. Oscar Ascón 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 unión 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
Acción 1
Acción 2
Acción n
Pseudocódigo: Es un lenguaje de especificación de algoritmos, el uso de tal lenguaje hace
el paso de codificación final relativamente fácil. El pseudocódigo original utiliza para
representar las acciones sucesivas palabras reservadas en ingles similares a sus homonimias
en los lenguajes de programación.
Ejemplo:
• Calcular el salario neto semanal de un trabajador en función al número de horas
trabajadas y la tasa de impuesto.
Ing. Oscar Ascón Valdivia
13
Pseudocódigo:
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_brutoßhoras*sal_horas
Tot_impß sal_bruto*tasa
Sal_netoß sal_bruto-tot_imp
Visualizar sal_bruto,
tasa, sal_neto
Fin
N–S
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 Ascón Valdivia
14
ESTRUCTURAS DE PROGRAMACIÓN
Estructura Secuencial:
La estructura secuencial es aquella en la que una acción (instrucción) 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
Acción 1
Acción 1
Acción 2
Acción 2
.
.
.
Acción 3
S
Acción N
Ejemplo: Calcular la suma, resta, multiplicación, división de dos números. (Diagrama
Flujo, N-S, Pseudocódigo).
Pseudocodigo
Inicio
Leer un numero A
Leer un numero B
Suma S. SßA + B
Producto P. PßA * 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 Ascón 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 Programación C#
a. Calcular el salario neto de un trabajador en función 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 telefónica, 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 Ascón Valdivia
16
Estructura Selectiva
Se utiliza para tomar decisiones lógicas; de ahí que se suelan denominar también
estructuras de selección o alternativas.
En las estructuras selectivas se evalúa una condición y y en función del resultado de la
misma se realiza una opción u otra.
Las estructuras selectivas o alternativas pueden ser:
•
•
•
Simple
Dobles
Múltiples
Alternativa Simple (Si - entonces, If Then)
La estructura selectiva simple si – entonces (If – Then) ejecuta una determinada acción
cuando se cumple una determinada condición.
•
•
Si la condición es verdadera, entonces ejecuta la acción SI
Si la condición es falsa, entonces no hacer nada
Diagrama Flujo
N - S
V
¿Condición?
Condición
Pseudocódigo
F
Si (condición) entonces
Acción 1
Acción 2
Fin si
Acción 1
Alternativa Doble (Si - entonces – Si no, If - Then - Else )
•
Si la condición C es verdadera, se ejecuta la acción SI, y si es falsa se ejecuta la
acción S2
Ing. Oscar Ascón Valdivia
17
Diagrama Flujo
N - S
V
Pseudocódigo
Condición
F
¿Condición?
Acción 1
Si (condición) entonces
Acción 1
Sino Acción 2
Fin si
Acción 2
Acción S2
Acción S1
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
Escribir N
Negativo
Verdadero
Escribir N
Positivo
Fin
Ing. Oscar Ascón 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 condición es jalado,
si el promedio<=14 la condición es Bueno, caso contrario la condición 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 automóviles tienen tres turnos: Mañana, Tarde y
Feriados; se desea calcular el sueldo semanal a razón de 5 días de trabajo de las
Siguientes tarifas:
50 S/. Turno Mañana
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, además debe mostrar
si el numero es par o impar.
Ing. Oscar Ascón Valdivia
19
Alternativa múltiple.
La estructura de decisión múltiple evaluara una expresión que podrá tomar n valores
distintos 1, 2, 3, 4, 5, ….n. Según que elija uno de estos valores en la condición, se realizara
una de las n acciones.
Diagrama Flujo
N - S
1 2
A2
Case expresión
E1: acción 1
E2: Acción 2
Otherwise
Acción x
End case
Condición
Cond
A1
Pseudocódigo
A3
3
n
An
Ejemplo: Ingresar un Numero del 1 al 12 e indicar el mes que le corresponda.
Inicio
Leer N
1
N
2
11
Enero
Febrero
……………
12
Noviembre
Diciembre
Fin
Ing. Oscar Ascón 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 Ascón 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. Diseñar un menu que muestre las operaciones aritméticas y haga los cálculos
correspondientes.
2. Desarrollar un programa que muestre un menú con cuatro opciones diferentes, cada
opción debe realizar una operación.
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 Ascón Valdivia
22
Estructuras Repetitivas:
Las estructuras que repiten una secuencia de instrucciones un número determinada de veces
se denominan bucles, y se determinan iteración al hecho de repetir la ejecución 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
condición.
Diagrama flujo
Cond.
N–S
Mientras
N
Pseudocódigo
Condición
Acción
S
Mientras (condición) hacer
Acción 1
Acción 2
Acción n
Fin Mientras
Acción
Ejemplo: Contar los números enteros positivos, el cálculo se realiza cuando se ingresa un
número negativo.
Inicio
Cß0
Leer N
N>0
no
si
Leer N
CßC+1
Escribir
C
Fin
Ing. Oscar Ascón Valdivia
23
Estructura repetir (Repeat)
La estructura repetir se ejecuta hasta que se cumpla una condición determinada que se
comprueba al final del bucle.
Diagrama Flujo
N –S
Pseudocódigo
Repetir
Acción 1
Acción 2
Hasta que (condición)
Acción
Acción
Cond.
Repetir condición
Ejemplo: Calcular el factorial de un número 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 Ascón 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 Ascón 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. Diseñar un algoritmo que permita Ingresar dos números y sumarlos, debe de
mostrar mensaje de continuar S/N
2. Diseñar un algoritmo que permita Ingresar Números , el programa termina
cuando se ingresa el numero Cero
3. Diseñar un algoritmo que permita Ingresar números; dada la cantidad de
números.
4. Diseñar un algoritmo que permita Calcular el promedio dada una cantidad de
números
5. Diseñar un algoritmo que permita Contar y sumar cuantos números pares e impares
se ingresa; dada una cantidad de números
6. Diseñar un algoritmo que permita Contar y sumar cuantos números positivos y
negativos s e ingresan; dada la cantidad de números.
7. Diseñar un algoritmo que permita Ingresar números, e identificar cuantos son
múltiplos de Cinco, termina cuando se ingresa el numero cero.
Ing. Oscar Ascón 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
Pseudocódigo
Desde vß vi hasta vf [incremento / decremento]
Acción 1
Acción 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 Ascón Valdivia
27
Ejemplo: Calcular la suma de los N primeros números. (Ingresar número por teclado)
Inicio
Leer N
S= 0
Ii=
I <= N
I=1I= I+ 1
w
I=I+1
S= S + I
Escribir S
Fin
Ing. Oscar Ascón 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 Números, conociendo
el limite.
2. Implementar un algoritmo que permita identificar los números pares e impares, de 1
hasta el numero ingresado.
3. Implementar un algoritmo que permita mostrar la suma de los números pares menores
o iguales a el, y la suma los numero impares.
Ing. Oscar Ascón Valdivia
29
Bucles: Un bucle es un segmento de un algoritmo o programa, cuyas instrucciones se
repiten un número determinado de veces mientras se cumple una determinada conexión.
Leer N
Si
..
N=0
No
Escribir S
S=S+N
Fin
Contadores: es una variable cuyo valor se incrementa o decrementa en una cantidad
constante en cada iteración.
Contß 1
Cont>5
Cuerpo del bucle
Fin
Contß cont+1
Acumulador: Es una variable cuya misión es almacenar cantidades variables resultantes de
sumas sucesivas.
Nß 0
Sumaß0
NßN+1
SumaßSuma+N
N=K?
Escribir
Suma
Fin
Ing. Oscar Ascón 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 días trabajados, y se calcule el sueldo
neto, el sueldo = días trabajados por jornal día menos el descuento. (El jornal día
=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. Diseñar un algoritmo que realice la siguiente conversión: 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 días
trabajados y el jornal diario; si el sueldo es mayor que 1000, entonces tiene un
descuento del 10% caso contrario no hay ningún 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 números e indique cual es el mayor y cual es el
menor.
13. Escribir un programa que al ingresar un numero adivine el numero mágico (Numero
mágico es una constante del programa), si el numero ingresado es igual al numero
mágico entonces reportar “numero correcto”, caso contrario si el numero es mayor,
reportar “numero demasiado grande”, caso contrario “numero demasiado pequeño”.
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 números utilizando Mientras
17. Diseñar un algoritmo para imprimir la suma de los números impares menores o
iguales que N.
18. Realizar el algoritmo para obtener la suma de los números 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 números del teclado, hasta que aparezca un número negativo.
Ing. Oscar Ascón 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 subíndices.
Array Unidimensionales: Los Vectores.
Un array (matriz o vector) es un conjunto finito y ordenado de elementos homogéneos. Los
elementos de un array son homogéneos, 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 más simple de array es el array unidimensional o vector (matriz de una dimensión).
Un vector de una dimensión denominado NOTAS que consta de N elementos se puede
representar de la siguiente manera:
El subíndice o índice de un elemento [1, 2, 3, 4, i, n], designa su posición en la ordenación
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 Ascón 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 parámetros 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 parámetro un
entero distinto (nótese que se comienza a contar a partir de 0 y el número del parametro se
encuentran entre corchetes).
Existe una forma más corta para declarar el arreglo y asignarle los valores:
int[] arr = {1,2,3}; //es exactamente lo mismo que el ejemplo anterior
Casos Prácticos
1. Desarrollar e implementar un programa que permita ingresar y reportar un arreglo de
notas, según 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 Ascón 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 números 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 Ascón 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 Ascón 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 subíndices 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 notación estándar, normalmente el primer subíndice se refiere a la fila del array,
mientras que el segundo subíndice se refiere a la columna del array. Es decir B(i,j).
1
2
3
4
5
1
2
3
4
5
5,2
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 Ascón Valdivia
36
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 Ascón 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 Ascón 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 Ascón Valdivia
39
I
Ing. Oscar Ascón Valdivia
40
Descargar