20 abr 2011

Esquema de un compilador

El proceso de traducción de un lenguaje a otro que realiza un compilador se conoce como compilación.

El entorno en que se desarrolle el compilador y el lenguaje en que se implante puede afectar la velocidad y fiabilidad de la implantación del compilador.

La traducción de un lenguaje fuente de alto nivel a un programa ejecutable en lenguaje maquina suele implicar más de un paso de traducción. El paso mismo de compilación puede compernder de un cierto numero de pasos que traducen progresivamente el lenguaje a varias formas intermedias antes de producir el programa objeto final.
 (Imagen 1: Esquema de un compilador)
 (Imagen 2: Fases de un compilador)
 Imagen 3: Analisis y Sintesis

9 abr 2011

Paso de parametros entre paginas en ASP.Net

Para poder pasar parametros en diferentes paginas web, se puede utilizar el metodo de VS PostBackURL, para este ejemplo partiremos del siguiente sitio web "wbSample1" el cual consta de 2 paginas "Default.aspx" y "Default2.aspx"
Lo que harermos sera pasar un parametro de "Default.aspx" hacia "Default.aspx" utilizando PostBackURL.

Default.aspx consta de un objeto TextBox = TextBox1 y de un Button = Button1
Seleccionando el Button1, en sus propiedades se busca la opcion PostBackURL y se desplegara la ventana para seleccionar la pagina destino, como nuestro proyecto solo consta de dos paginas, es facilmente idetificable, se selecciona la pagina "default2.aspx" y OK
Eso es todo para el archivo "default.aspx", ahora se debe trabajar en el codigo de la pagina default2.aspx, en este ejemplo estamos utilizando el lenguaje Visual Basic

Ingresa en el codigo de default2.aspx en el Page Load  se debe escribir lo siguiente:

Partial Class Default2
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'si se carga esta pagina sin cargar previamente la primera sale "error"
        If Page.PreviousPage Is Nothing Then
            Label1.Text = "Error: Usted no debe estar aqui..."
        Else
            'Se toma el contenido del TextBox y se lo coloca en una variable
            Dim Nombre = CType((PreviousPage.FindControl("TextBox1")), TextBox).Text
            'si no existen datos muestra el primern mensaje
            If Nombre = "" Then
                Label1.Text = "Hola Anonimo bienvenido..."
            Else 'sino muestra el saludo con el nombre
                Label1.Text = "Hola " & Nombre & " bienvenido..."
            End If
        End If
    End Sub
End Class

Ahora solo ejecutamos el sitio web desde el servidor:

Vemos como se carga la pagina, pero esta primera vez no colocamos nada en el TextBox, y presionamos el Button, entonces se carga la segunda pagina, pero como el TextBox estaba vacio nos muestra este mensaje "Hola anonimo bienvenido...."
Para la segunda prueba, colocamos un nombre en el TextBox y presionamos el boton, esta vez si nos muestra el mensaje de bienvenida que queremos "Hola jc Mouse bienvenido..."

6 abr 2011

Problema "Sucesión de ULAM"

La siguiente se llama conjetura de ULAM en honor del matematico S.Ulam
  • Comience con cualquier entero positivo
  • Si es par, dividalo entre 2; si es impar, multipliquelo por 3 y agreguele 1.
  • Obtenga enteros sucesivamente repitiendo el proceso
Al final, obtendra el número 1, independientemente del entero inicial, Por ejemplo, cuando el entero inicial es 26, la secuencia será: 26,13,40,20,10,5,16,84,2,1.

Construya un diagrama de flujo y su codigo correspondiente que lea un numero entero positivo y obtenga e imprima la sucesion de ULAM (tambien conocido como Conjetura de Collatz)

Datos:
N, es una variable de tipo entero, que representa el número que ingresa.

Diagrama de Flujo


Codigo Fuente Visual Basic


Module problema_320

    Sub Main()
        Console.Write("Ingrese número : ")
        Dim N = Val(Console.ReadLine)
        If N > 0 Then
            Console.WriteLine(N)
            While N <> 1
                If (N Mod 2) = 0 Then
                    N = N \ 2
                Else
                    N = N * 3 + 1
                End If
                Console.WriteLine(N)
            End While
        Else
            Console.Write("N tiene que ser un entero positivo")
        End If
        Console.ReadLine()
    End Sub

End Module
Resultado

5 abr 2011

Problema "Rango de Calificaciones"

Se tiene las calificaciones de un grupo de alumnos que presentaron un examen de computación. Haga un diagrama de flujo y su respectivo programa que calcule e imprima cuantas calificaciones hay en cada uno de los rangos:
  • de 0 a 3.99
  • de 4 a 5.99
  • de 6 a 7.99
  • de 8 a 10

Datos: CAL1, CAL2, CAL3..... -1
donde CAL es una variable de tipo real, que representa la calificación del alumno, el fin de la introduccion de los datos esta dado por el valor -1

Diagrama de Flujo

donde RANGO1,RANGO2,RANGO3,RANGO4 son variables de tipo entero , son contadores, cuentan el numero de calificaciones que se encuentran entre los rangos dados respectivamente.

Codigo Consola Visual Basic


Module problema_320

    Sub Main()
        Dim RANGO1 As Integer = 0
        Dim RANGO2 As Integer = 0
        Dim RANGO3 As Integer = 0
        Dim RANGO4 As Integer = 0
        Dim CAL As Double

        Console.Write("Ingresa Calificacion [para terminar -1]: ")
        CAL = Val(Console.ReadLine)

        While CAL <> -1
            If CAL <= 3.99 Then
                RANGO1 = RANGO1 + 1
            Else
                If CAL <= 5.99 Then
                    RANGO2 = RANGO2 + 1
                Else
                    If CAL <= 7.99 Then
                        RANGO3 = RANGO3 + 1
                    Else
                        RANGO4 = RANGO4 + 1
                    End If
                End If
            End If
            Console.Write("Ingresa Calificacion [para terminar -1]: ")
            CAL = Val(Console.ReadLine)
        End While
        Console.WriteLine("0...3.99 = " & RANGO1)
        Console.WriteLine("4...5.99 = " & RANGO2)
        Console.WriteLine("6...7.99 = " & RANGO3)
        Console.WriteLine("8...10.0 = " & RANGO4)
        Console.ReadLine()
    End Sub

End Module



4 abr 2011

Problema "Aumento de Sueldos"

Construya un diagrama de flujo y codigo correspondiente tal que dado como dato el sueldo de un trabajador, calcule su aumento según el siguiente criterio:

  • SUELDO < 1000 BS   = AUMENTO DE 25%
  • SUELDO >= 1000 BS y <=1500 bs  = AUMENTO DE 21%
  • SUELDO > 1500 BS   = AUMENTO DE 18%

Imprima el nuevo sueldo del trabajador
Datos: SUELDO
donde Sueldo es una variable de tipo real, que expresa el sueldo del trabajador
DIAGRAMA DE FLUJO
Explicacion de variables
Sueldo: Variable de tipo real
nsueldo: variable de tipo real, Almacena el nuevo sueldo del trabajador con el aumento correspondiente

Codigo Consola Visual Basic

Module Module1

    Sub Main()
        Console.Write("Ingresa el sueldo: ")
        Dim sueldo = Val(Console.ReadLine)
        Dim nsueldo As Double
        If (sueldo < 1000) Then
            nsueldo = sueldo * 1.25
        Else
            If (sueldo <= 1500) Then
                nsueldo = sueldo * 1.21
            Else
                nsueldo = sueldo * 1.18
            End If
        End If
        Console.WriteLine("El nuevo sueldo es de: " & nsueldo)
        Console.ReadLine()
    End Sub

End Module
Resultado

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cna certification