Академический Документы
Профессиональный Документы
Культура Документы
COMPUTACION II
Pgina 1
ndice
Temas PAGINA
4.4 Funciones Recursivas.31 4.5 Utilizacin de Pila (Stack) de la Memoria34 4.5.1 Ejemplos.36 4.6 Manejo de Arreglos..41 4.6.1 Ejemplos.41 4.7 Grficos con GDI+48 4.7.1 Ejemplo49
4.8 Glosario54
Pgina 2
Pgina 3
4.1
OBJETIVOS:
Mediante el estudio de este capitulo se aplicar con mayor profundidad los conceptos bsicos de programacin.
Pgina 4
4.2
INTRODUCCIN.
V.C# V.Basic
(Lo mejor de c, C++, Java, V. Basic)
V.C++
V JAVA
(Aberracin del Java de SUN Microsystems)
IDE
(Integrated Development Enviroment) Ambiente de Desarrollo Integrado
.NET Framework
(Infraestructura de Desarrollo de Software)
Aplicaciones Cliente/Servido r
Aplicaciones Mviles
Aplicaciones de Videojuegos (Direct X, XnA) Plataforma Sistemas Operativos Windows Autor: Fanny Alquinga-Alejandra Fonseca. Pgina 5
.NET Framework (Infraestructura de desarrollo) V. Basic V. C# V. C++ V. Java(aberracion del Java de SUN Microsystems)
IDE (Integrated Development Environment)-(Ambiente de desarrollo Integrado) Plataforma Sistema Operativo Windows .NET Framework (Infraestructura de desarrollo) Aplicaciones de Videojuegos (Direct X, XNA)->Game Engine Aplicaciones de Escritorio (Desktop) Aplicaciones de Web(HTML, XML, ASP, ASPX) Aplicaciones Cliente/Servidor Aplicaciones Mobiles Aplicaciones Embebidas(Firmware)
Pgina 6
1. Se lo busca en programas y se elige con el lenguaje de programacin que se desee, trabajaremos con C
Pgina 7
Pgina 8
Propiedades del Botn(Button) Name: Button1 Text: Mostrar Mensaje Image: [Cargar imagen]
Uso de Prefijos para nombres de objetos Objeto Form Button TextBox GroupBox Timer Label ListBox ComboBox Prefijo frm btn txt grb tmr lbl lst cmb Pgina 9
namespace hola_mundo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { MessageBox.Show ("Hola Mundo"); } private void button2_Click(object sender, EventArgs e) { Close(); } } }
Pgina 10
(Name)
frmCirculo
2. Busco Group Box en la caja de herramientas, Ingreso 3 de ellos y les quito el texto 3. En el primer Group Box, ingreso 1 Label y 1 Caja de Texto 4. Modifico el texto del primer label: Ingrese el valor del radio 5. Ingreso 3 botones en el segundo Group Box 6. En el tercer Group Box ingreso dos labels y dos cajas de texto 7. En el label 2 modifico el texto: Permetro del Crculo 8. En el label 3 modifico el texto: rea del Crculo 9. En el segundo Group Box ingreso 3 botones 10. Selecciono el primer botn y le modifico su texto: Calcular 11. Coloco un & para abreviatura de la tecla ALT+ (la letra seleccionada(C)) realizara la funcin del botn 12. Selecciono el segundo botn y le modifico su texto: Resetear 13. Coloco un & para abreviatura de la tecla ALT+ (la letra seleccionada(R)) realizara la funcin del botn 14. Selecciono el segundo botn y le modifico su texto: Salir
Pgina 11
19. Declaramos las variables: prvate doubl radio, permetro, area; 20. Inicializamos los datos txtRadio.Text=0.0; txtPerimetro.Text=0.0; txtArea.Text=0.0; 21. Ahora leemos el radio: radio=float.Parse(txtRadio.Text); 22. Realizamos los clculos a) Del permetro: perimetro=2*Math.PI*radio; b) Del rea: Autor: Fanny Alquinga-Alejandra Fonseca. Pgina 12
24. Modificamos el cdigo del botn Resetear: InicializaDator(); 25. Ahora modifico el cdigo de salir: Close();
CODIGO FUENTE Y SALIDA DEL PROGRAMA
System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms;
namespace WinAppAle { public partial class Form1 : Form { private double radio; private double area; private double perimetro; public Form1() { InitializeComponent(); } private void InicializarDatos() { this.txtRadio.Text = "0.0"; txtPerimetro.Text="0.0"; txtArea.Text="0.0"; }
Pgina 13
Pgina 14
b a A c B
Teorema: un tringulo existe s y slo si la suma de cualquiera de sus dos lados es mayor que el tercer lado (a+b>c)&&(b+c>a)&&(a+c>b) rea=(p*(p-a)*(p-b)*(p-c))
Pgina 15
MEN:
namespace Menu { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void btnCirculo_Click(object sender, EventArgs e) { frmCirculo Obj = new frmCirculo(); Obj.Show(); } private void btnCuadrado_Click(object sender, EventArgs e) { frmCuadrado Obj = new frmCuadrado(); Obj.Show(); } private void btnRectangulo_Click(object sender, EventArgs e) { frmRectangulo Obj = new frmRectangulo(); Obj.Show(); } private void btnTriangulo_Click(object sender, EventArgs e) { frmTriangulo Obj = new frmTriangulo(); Obj.Show(); } private void btnSalir_Click(object sender, EventArgs e) { Close(); }
Pgina 16
CIRCULO:
namespace Menu { public partial class frmCirculo : Form { private double perimetro, area, radio; public frmCirculo() { InitializeComponent(); } private double PerimetroCirculo() { return (2 * Math.PI * radio); } private double AreaCirculo() { return (Math.PI * Math.Pow(radio, 2)); } private void InicializarDatos() { txtArea.Text = "0.0"; txtPerimetro.Text = "0.0"; txtRadio.Text = "0.0"; } private void btnCalcular_Click(object sender, EventArgs e) { radio = float.Parse(txtRadio.Text); perimetro = PerimetroCirculo(); area = AreaCirculo(); txtPerimetro.Text = perimetro.ToString(); txtArea.Text = area.ToString(); } private void btnResetear_Click(object sender, EventArgs e) { InicializarDatos(); } private void btnSalir_Click(object sender, EventArgs e)
Pgina 17
CUADRADO:
using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms;
namespace Menu { public partial class frmCuadrado : Form { private double lado, area, perimetro; public frmCuadrado() { InitializeComponent(); } private double PerimetroCuadrado() { return (4 * lado); } private double AreaCuadrado() { return (lado*lado); } private void InicializarDatos() { txtArea.Text = "0.0"; txtPerimetro.Text = "0.0"; txtLado.Text = "0.0"; } private void btnCalcular_Click(object sender, EventArgs e) { lado = float.Parse(txtLado.Text); area = AreaCuadrado(); perimetro = PerimetroCuadrado(); txtPerimetro.Text = perimetro.ToString(); txtArea.Text = area.ToString(); }
Pgina 18
RECTANGULO:
namespace Menu { public partial class frmRectangulo : Form { private double lado1, lado2, area, perimetro; public frmRectangulo() { InitializeComponent(); } private double PerimetroRectangulo() { return ((2* lado1)+(2*lado2)); } private double AreaRectangulo() { return (lado1 * lado2); } private void InicializarDatos() { txtArea.Text = "0.0"; txtPerimetro.Text = "0.0"; txtLado1.Text = "0.0"; txtLado2.Text = "0.0"; } private void btnCalcular_Click(object sender, EventArgs e) {
Pgina 19
TRIANGULO:
namespace Menu { public partial class frmTriangulo : Form { private double lado1, lado2, lado3, area, perimetro; public frmTriangulo() { InitializeComponent(); } private void InicializarDatos() { txtArea.Text = "0.0"; txtPerimetro.Text = "0.0"; txtLado1.Text = "0.0"; txtLado2.Text = "0.0"; txtLado3.Text = "0.0"; } private double PerimetroTriangulo() { return((lado1)+(lado2)+(lado3)); } private double AreaTriangulo()
Pgina 20
Pgina 21
MENU PRINCIPAL
CIRCULO
Pgina 22
CUADRADO
RECTANGULO
TRIANGULO
Pgina 23
Pgina 24
MEN:
namespace WinFormsAppSeries { public partial class frmMenu : Form { public frmMenu() { InitializeComponent(); } private void bntFactorial_Click(object sender, EventArgs e) { frmNumero Obj = new frmNumero(); Obj.Show(); } private void btnSeno_Click(object sender, EventArgs e) { frmSeno Obj = new frmSeno(); Obj.Show(); } private void bntCoseno_Click(object sender, EventArgs e) { frmCoseno Obj = new frmCoseno(); Obj.Show(); } private void bntSalir_Click(object sender, EventArgs e) { Close(); } private void frmMenu_Load(object sender, EventArgs e) { }
Pgina 25
FACTORIAL DE UN NMERO:
using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms;
namespace WinFormsAppSeries { public partial class frmNumero : Form { private long n; public frmNumero() { InitializeComponent(); } private void InicializarDatos() { txtNum.Text = " 0"; txtFactorial.Text = "0"; lstFactoriales.Items.Clear(); } /*private long FactorialNumero() { long j, acum = 1; for (j = 1; j <= n; j++) acum = acum * j; // acum * = j; return acum; } private long FactorialNumero(long m) { long j, acum = 1;
Pgina 26
Pgina 27
Pgina 28
Pgina 29
Pgina 30
Una funcin f1 es recursiva si esta llama a una funcin f2, la cual bajo ciertas circunstancias llama a f1, creando un ciclo en la secuencia de llamadas. Los problemas que tienen a s mismos a tener una solucin recursiva tienen las siguientes caractersticas. a) Uno o ms casos simples del problema tienen una solucin fija no recursiva. b) Los otros casos pueden ser redefinidos en trminos de problemas que estn relacionados con los casos simples c) Al aplicar este proceso de redefinicin cada vez que la funcin recursiva es llamada, eventualmente el problema se reduce enteramente a casos simples, los cuales son relativamente fciles de resolver
Los algoritmos recursivos que se desarrollan generalmente consisten de una sentencia if con la siguiente forma en pseudocdigo: Si este es un caso simple Resolverlo Caso contrario Redefinir el problema utilizando recursin
Pgina 31
Solucin Iterativa private long Factorial (long n) { long i, acum=1; for(i=1;i<=n;i++) acum=acum*i; return(acum) } Soluci Recursiva private long Factorial (long n) { long respuesta; If (n==0) respuesta=1; else respuesta=n*factorial(n-1); return(respuesta); }
Pgina 32
fact =Factorial(3)
Pgina 33
4.5
Las funciones recursivas utilizan para almacenar y retornar sus valores la pila de la memoria. El compilador mantiene en el sistema una simple pila y cada vez que ocurre una llamada a una funcin todos estos parmetros y variables locales son colocados dentro de la pila a lo largo de las direcciones de memoria de las sentencias de llamada para luego ser vaciada la pila, dependiendo de los casos que tenga un problema.
Soluci Recursiva private int Multiplicar(int m, int n) { int respuesta; if (n!=0) { if(n==1) respuesta = m; else respuesta = m*Multiplicar(m, n-1); return(respuesta); } else return(0); }
Pgina 34
resp=Multiplicar(6,3) m es 6 n es 3 3==1 es falso respuesta es 6 + Multiplicar(6,2) retun(respuesta) m es 6 n es 2 2==1 es falso respuesta es 6 + Multiplicar(6,1) retun(respuesta)
18
12
Pgina 35
namespace MultiplicacionRecursividad { public partial class Form1 : Form { private double num1, num2; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { InicializarDatos(); } private void InicializarDatos() { txtNum1.Text = "0.0"; txtNum2.Text = "0.0"; txtProducto.Text = "0.0"; } private double Multiplicacion(double n) { double acum; if (n == 0) acum = 0; else acum = num1 + Multiplicacion(n - 1); return (acum); } private void btnCalcular_Click(object sender, EventArgs e) { double producto; try { num1 = double.Parse(txtNum1.Text); num2 = double.Parse(txtNum2.Text); } catch (Exception caught) {
Pgina 36
Pgina 37
using System; using using using using using using System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms;
namespace WinFormsAppSeries { public partial class frmNumero : Form { private long n; public frmNumero() { InitializeComponent(); } private void InicializarDatos() { txtNum.Text = " 0"; txtFactorial.Text = "0"; lstFactoriales.Items.Clear(); } /*private long FactorialNumero() { long j, acum = 1; for (j = 1; j <= n; j++) acum = acum * j; // acum * = j; return acum; } private long FactorialNumero(long m) { long j, acum = 1; for (j = 1; j <= m; j++) acum = acum * j; // acum * = j; return acum; }*/ private long FactorialNumero(long n) { long respuesta; if (n == 0) respuesta = 1; else respuesta = n * FactorialNumero(n - 1); return (respuesta); }
Pgina 38
Pgina 39
Pgina 40
Prvate void GenerarArregloAleatorio(ref int[]v, ref int num) { int []temp=new int[MAX]; Random randOnj=new Random(MAX); for(int i=0; i<MAX; i++) temp[i]=randObj.Next(0,16); num=MAX; CopiarDatosArreglo(temp, MAX, ref v, ref num); }
4.6.1 Ejemplos:
namespace WinAppManejoArreglos { public partial class Arreglos : Form { //Datos private const int MAX = 16; private int[] A = new int[MAX]; private int[] B = new int[MAX]; private int[] C = new int[MAX]; private int num_A = 0, num_B = 0, num_C = 0; public Arreglos() { InitializeComponent(); }
Pgina 41
Pgina 42
Pgina 43
Pgina 44
Pgina 45
Pgina 46
Pgina 47
Microsoft.Net define una librera para manejar grficos denominada GDI.+(Graphical Device Interface COM+) con las siguientes clases: System.Drawing System.Drawing. Drawing 2D System.Drawing. Imaging System.Drawing. Printing System.Drawing. Design System.Drawing. Text
Picture Box(pic.grafico)
y(+)
(0,240)
(320,240)
(640,240)
(0,480)
(320,480)
(640,480)
Pgina 48
PROGRAMA QUE CALCULA LAS RACES DE UNA ECUACIN CUADRATICA Y GRAFICA DICHA ECUACIN.
namespace WinAppFuncionCuadratica { public partial class frmFuncionCuadratica : Form { //Declaracion de variables private float a, b, c; private float x1, x2; private int bandera = 0; private const float FE = 10; private void InicializarDatos() { txtA.Text = "0"; TxtB.Text = "0"; txtC.Text = "0"; txtX1.Text = "0"; txtX2.Text = "0"; lstTablaValores.Items.Clear(); picGrafico.Refresh(); a = 0; b = 0; c = 0; x1 = 0; x2 = 0; bandera=0; } public frmFuncionCuadratica() { InitializeComponent();
Pgina 49
Pgina 50
Pgina 51
Pgina 52
Pgina 53
Evento: Accin que ejecuta un objeto Using: Equivalente al # include Sender: Parmetro que activa el manejador de eventos de los objetos E: Parmetro que activa el modo grfico (Graficador objetos) Show: muestra mensaje new:Construimos objeto, separamos memoria. Parse: esta en frances y significa pasar, convetir.
Pgina 54