jueves, 15 de abril de 2021

Paradigmas de Programación

Programación Estructurada

En este tipo de paradigma no existe encapsulamiento de código, como podemos observar todo el código se estructura de manera secuencial en un solo bloque haciendo uso de estructuras condicionales y bucles de repetición:

#ifdef WIN32
   #include <conio.h> //Solo si se compila para Windows se usa este header
#endif
#include <stdio.h>
int main(){
   float n1, n2, total;
   char signo;
   printf("Ingrese un numero: ");
   scanf("%f", &n1);
   printf("Ingrese un numero: ");
   scanf("%f", &n2);
   printf("Ingrese un signo: ");
   scanf("%1s", &signo);
   if(signo=='-'){ total=n1-n2; }
   else if(signo=='+'){ total=n1+n2; }
   else if(signo=='*'){ total=n1*n2; }
   else if(signo=='/'){ total=n1/n2; }
   else{ total = 0.0; }
   printf("total=%.2f \n",total);
   #ifdef WIN32
      getch();
   #else
      getchar();
   #endif
   return 0;
}


Programación Funcional

En este tipo de paradigma se encapsulan fragmentos de código para reutilizarse cuantas veces se necesite y podemos observarlo en el siguiente ejemplo:

#ifdef WIN32
   #include <conio.h> //Solo si se compila para Windows se usa este header
#endif
#include <stdio.h>
float function_calculadora(float n1, float n2, char signo){
   float total;
   if(signo=='-'){ total=n1-n2; }
   else if(signo=='+'){ total=n1+n2; }
   else if(signo=='*'){ total=n1*n2; }
   else if(signo=='/'){ total=n1/n2; }
   else{ total = 0.0; }
   return total;
}

int main(){
   float n1, n2, total;
   char signo;
   printf("Ingrese un numero: ");
   scanf("%f", &n1);
   printf("Ingrese un numero: ");
   scanf("%f", &n2);
   printf("Ingrese un signo: ");
   scanf("%1s", &signo);
   total = function_calculadora(n1,n2,signo);
   printf("total=%.2f \n",total);
   #ifdef WIN32
      getch();
   #else
      getchar();
   #endif
   return 0;
}


Programación Orientada a Objetos

En este tipo de paradigma se tienen fragmentos de código encapsulado en objetos con variables denominadas atributos y funciones denominadas métodos:

public class Persona {
   /*Atributos del objeto Persona*/
   private String Nombres;
   private String Apellidos;
   /*Inicializado del objeto*/
   public Persona(){
      this.Nombres = "";
      this.Apellidos = "";
   }
   public Persona(String Nombres, String Apellidos) {
      this.Nombres = Nombres;
      this.Apellidos = Apellidos;
   }
   /*Metodos de Retorno de Variable*/
   public String getNombres() {
      return Nombres;
   }
   public String getApellidos() {
      return Apellidos;
   }
   /*Metodos de Alteracion de Variable*/
   public void setNombres(String Nombres) {
      this.Nombres = Nombres;
   }
   public void setApellidos(String Apellidos) {
      this.Apellidos = Apellidos;
   }
   /*Metodo para Mostrar Nombre Completo en consola*/
   public void Mostrar_Nombre_Completo_en_Consola(){
      System.out.println("Nombre: "+getNombres()+" "+getApellidos());
   }
}


public class Alumno extends Persona{ //Heredamos del objeto Persona codigo
   /*Atributo exclusivo del objeto Alumno*/
   private String NIE;
   /*Inicializado del objeto*/
   public Alumno() {
      super();
   }
   public Alumno(String Nombres_Alumno, String Apellidos_Alumno, String NIE) {
      super(Nombres_Alumno, Apellidos_Alumno);
      this.NIE = NIE;
   }
   /*Metodos de Retorno de Variable*/
   public String getNIE() {
      return NIE;
   }
   /*Metodos de Alteracion de Variable*/
   public void setNIE(String NIE) {
      this.NIE = NIE;
   }
   /*Metodo para Mostrar Nombre Completo y NIE en consola*/
   public void Mostrar_Nombre_Completo_y_NIE_en_Consola(){
      Mostrar_Nombre_Completo_en_Consola();
      System.out.println("NIE: "+getNIE());
   }
}


public class Programa{
   public static void main (String args[]){
      /*creamos arreglo del objeto alumnos con solo dos alumnos*/
      Alumno alumnos[]=new Alumno[2];
      alumnos[0] = new Alumno("Ricardo","Valladares","VR201104");
      alumnos[1] = new Alumno("Veronica","Arias","AQ201104");
      /*mostramos los alumnos*/
      for (int i=0;i<alumnos.length;i++){
         System.out.println("");
         alumnos[i].Mostrar_Nombre_Completo_y_NIE_en_Consola();
      }
   }
}


En este tipo de paradigma no se tiene una función o bloque de código principal o inicial casi siempre llamado main, en este tipo de paradigma se tienen múltiples funciones que se ejecutan simultáneamente al haber la acción de algún evento en el programa:

<HTML>
<HEAD>
<TITLE>Ejemplo de Eventos</TITLE>
<META NAME='viewport' CONTENT='width=device-width, initial-scale=1'>
<SCRIPT TYPE='text/javascript'/>
    function primerevento(){
        alert('Eventos');
    }
    function sumar(){
        var n1=parseFloat(document.getElementById('n1').value);
        var n2=parseFloat(document.getElementById('n2').value);
        if(!(isNaN(n1))&&!(isNaN(n2))){
            document.getElementById('resultado').value=n1+n2;
        }
        else{
            document.getElementById('resultado').value='Datos Invalidos';
        }
    }
    function restar(){
        var n1=parseFloat(document.getElementById('n1').value);
        var n2=parseFloat(document.getElementById('n2').value);
        if(!(isNaN(n1))&&!(isNaN(n2))){
            document.getElementById('resultado').value=n1-n2;
        }
        else{
            document.getElementById('resultado').value='Datos Invalidos';
        }
    }
    function mutiplicar(){
        var n1=parseFloat(document.getElementById('n1').value);
        var n2=parseFloat(document.getElementById('n2').value);
        if(!(isNaN(n1))&&!(isNaN(n2))){
            document.getElementById('resultado').value=n1*n2;
        }
        else{
            document.getElementById('resultado').value='Datos Invalidos';
        }
    }
    function dividir(){
        var n1=parseFloat(document.getElementById('n1').value);
        var n2=parseFloat(document.getElementById('n2').value);
        if(!(isNaN(n1))&&!(isNaN(n2))){
            document.getElementById('resultado').value=n1/n2;
        }
        else{
            document.getElementById('resultado').value='Datos Invalidos';
        }
    }
</SCRIPT>
</HEAD>
<BODY BGCOLOR='black' TEXT='lawngreen' ONLOAD='primerevento()'>
<H3>Eventos onload, onclick</H3>
<HR>
<FORM>
<CENTER>
operador: <INPUT TYPE='text' ID='n1'><BR><BR>
operador: <INPUT TYPE='text' ID='n2'><BR><BR>
<INPUT TYPE='button' ONCLICK='sumar()' VALUE='sumar'>
<INPUT TYPE='button' ONCLICK='restar()' VALUE='restar'>
<INPUT TYPE='button' ONCLICK='mutiplicar()' VALUE='mutiplicar'>
<INPUT TYPE='button' ONCLICK='dividir()' VALUE='dividir'><BR><BR>
resultado: <INPUT TYPE='text' ID='resultado'><BR><BR>
</CENTER>
</FORM>
</BODY>
</HTML>


Programación Basada en Componentes

En este tipo de paradigma se hacen uso de librerías o kits de desarrollo los cuales son como cajas negras las cuales no se sabe el código interno de como funcionan, pero si se saben los atributos y métodos públicos que traen para su funcionamiento, esto permite que los programadores usen librerías creadas por otros programadores, sin embargo la importancia de este paradigma es reducir tiempo de desarrollo al no tener que crear código que en ocasiones no se tiene ni idea de como desarrollarlo, ejemplo librería que convierte texto a vocalizar palabras:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Voz;
namespace Texto2Voz{
   class Program{
      static void Main(string[] args){
         //Libreria que es como una caja negra
         Audio Sonido = new Audio("Hola Mundo");
         bool Ejecucion = Sonido.Hablar();
         //Funciones propias de C# para consola
         Console.WriteLine("Ejecucion exitosa? {0}", Ejecucion);
         Console.ReadKey();
      }
   }
}





No hay comentarios.:

Publicar un comentario