sábado, 9 de mayo de 2020

Usabilidad del Software

Para que un sistema interactivo cumpla sus objetivos tiene que ser usable y accesible a la mayor parte de la población humana

La Norma ISO 9241 que se encuentra enfocada a la calidad en usabilidad y ergonomía tanto de hardware como de software, define a la usabilidad como: "the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use."

Lo que nos indica que la usabilidad es el grado en que un producto puede ser utilizado por usuarios específicos para lograr determinados objetivos específicos cumpliendo con:

  • Efectividad
  • Eficiencia
  • Satisfacción 
Todo esto realizado dentro de un contexto de uso específico de dicho Hardware o Software.

Calidad de Software y la usabilidad

El estandar ISO/IEC 9126 menciona a la usabilidad como la capacidad de un software de ser comprendido, aprendido, usado y ser atractivo para el usuario, en condiciones específicas de uso. Posteriormente, este fue reemplazado en el 2005 por el estándar ISO/IEC 25000 SQuaRE (System and Software Quality Requirements and Evaluation) que es una familia de normas que tiene por objetivo la creación de un marco de trabajo común para evaluar la calidad del producto software y actualmente tienen una acepción de usabilidad en el contexto de la creación de Software idéntica a la del ISO 9241 indicando características de esta que son:

  • Reconocibilidad de adecuación: grado en que los usuarios pueden reconocer si un producto o sistema es apropiado para sus necesidades.
  • Capacidad de aprendizaje: grado en que usuarios específicos pueden usar un producto o sistema para lograr los objetivos específicos de aprender a usar el producto o sistema con efectividad, eficiencia, libertad de riesgos y satisfacción en un contexto de uso específico.
  • Operabilidad: grado en que un producto o sistema tiene atributos que facilitan su operación y control.
  • Protección contra errores del usuario: grado en que un sistema protege a los usuarios contra errores.
  • Estética de la interfaz de usuario: grado en que una interfaz de usuario permite una interacción agradable y satisfactoria para el usuario.
  • Accesibilidad: grado en que un producto o sistema puede ser utilizado por personas con la más amplia gama de características y capacidades para lograr un objetivo específico en un contexto de uso específico.

Usabilidad en el desarrollo de Software

Es sabido que la usabilidad se enfoca en medir la satisfacción del usuario, y dentro de las etapas de desarrollo de Software, de debe implementar según el modelo elegido en las etapas correspondientes (generalmente en la etapa de pruebas) o fases (como en las metodologías RUP o UP). Para ello, se emplean diversos métodos heurísiticos donde se evalúa a grupos de usuarios interactuando con el programa definiendo algunas reglas como márgenes de tiempo, criterios predefinidos, etc.

Es así que la usabilidad debería medir como prioridad lo relacionado a:

  • Interfaces de usuario
  • Adaptación del sistema a la tarea
  • Costo de aprendizaje
  • Adaptación a estándares
  • Documentación
Existen diversos estándares y normas que deben seguirse a fin de crear diversas herramientas que nos permiten evaluar la usabilidad de un Software o programa.



Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


Diseño de interfaces de usuario

Para definir una interfaz de usuario, se debe recordad el significado de "interfaz" que dice: "superficie de contacto entre dos entidades", de forma que en nuestra vida estamos en contacto permanente con diversas interfaces como las puertas, timones, pedales, teclados, micrófonos, etc.

De estos ejemplos, se define a la interfaz de usuario (IU o UI) como el medio o espacio en que el usuario puede comunicarse con una máquina, es decir donde se produce la interacción para que el usuario pueda tener control o poder sobre la máquina.

Dentro de la computación e informática, las IU son las partes del sistema con las que el usuario
entra en contacto de forma física (interactúa con teclados, pantallas, etc) y cognitiva (El usuario debe comprender como interactuar). Además, podemos encontrar que tenemos interfaces de Software y de Hardware o híbridas que resultan en tres tipos fundamentales de interfaces que son:

  • Interfaz de línea de comandos - CLI, la interacción es principalmente textual mediante instrucciones.
  • Interfaz gráfica de usuario - GUI, la interacción se propicia gracias a la representación gráfica que el usuario puede visualizar en pantalla.
  • Interfaz natural de usuario - NUI, la interacción es inherente al mismo ser humano mediante voz, movimientos o táctil.

Toda UI debe ser usable, intuitiva y útil.


Importancia de las IU

Para todo tipo de programa o máquina la forma como el usuario se comunica es sumamente importante. Por ello, la interfaz de usuario es una parte vital en estos. Se han atribuido numerosos accidentes y desastres al diseño de la interfaz de usuario.

Una IU deficiente es la culpable de provocar mayores tasas de error, mayores costos de capacitación y un rendimiento reducido. Esto se transforma para las empresas en sobre-costos y en los usuarios genera estrés o que no se emplee la herramienta creada.


Diseño de interfaces de usuario

Partiendo de la palabra diseño, tenemos que se define como: "actividad creativa que tiene por fin proyectar objetos que sean útiles y estéticos", uniendo esto a las IU tenemos que es una disciplina que se encarga de definir la forma, función, utilidad, disposición y otros aspectos relevantes que afectan a la apariencia externa de las IU de una máquina o sistema con el objetivo de hacer que la interacción del usuario sea lo más simple y eficiente posible (usable).

El diseño de interfaces de usuario usables se cimienta en diversas disciplinas que incluyen la ciencia computacional, psicología cognitiva y diseño gráfico.


Diferencia entre el diseño de IU y la IHC

Ambos emplean a otras disciplinas como la psicología o la erganomía para sus fines, pero mientras que la IHC estudia como los humanos interactúan con las computadoras y sus sistemas, el diseño de IU es una disciplina orientada a la creación de IU que permiten una mejor interacción de los usuarios con los sistemas computacionales.




Fuentes:

  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.
  • Stone, D., Jarret, C., Woodroffe, M. y Minocha, S. (2005). User Interface Design and Evaluation. United States of America: Elsevier.


lunes, 27 de abril de 2020

Programación orientada a objetos

Para entender la programación orientada a objetos (POO) es necesario tener conocimiento de las definiciones de:
  • Arquitectura orientada a objetos
  • Análisis orientado a objetos
  • Diseño orientado a objetos
  • Lenguaje orientado a objetos
  • Metodología de desarrollo orientado a objetos
Para ver la definición de clases y objetos has clic aquí.


Arquitectura orientada a objetos

La arquitectura del software orientado a objetos da como resultado una serie de subsistemas en capas que encapsulan clases colaboradoras. Cada uno de estos elementos de sistema (subsistemas y clases) realiza funciones que ayudan a lograr los requerimientos del sistema.


Análisis orientado a objetos

analiza los requisitos desde una óptica de clases y objetos que encontrará durante los flujos de trabajo fundamentales de requisitos y análisis


Lenguaje orientado a objetos

Según el Institute of Electrical and Electronics Engineers (IEEE) son todos aquellos lenguajes de programación que permiten al usuario expresar un programa en términos de objetos y mensajes entre estos. Tenemos entre ellos a:
  • Java
  • PHP
  • C#
  • etc.

Diseño orientado a objetos

Según el IEEE el diseño orientado a objetos es una técnica de desarrollo de software en la cual un sistema o componente de este se expresa en términos de objetos y conexiones entre estos.


Metodología de desarrollo orientado a objetos

Es un enfoque de desarrollo que tiene como eje las abstracciones de objetos y clases, así como el uso de módulos para poder analizar y diseñar un software mediante el análisis y diseño orientado a objetos y posteriormente con ello desarrollar dicho sistema mediante la programación orientada a objetos que debe soportar como mínimo el encapsulamiento, herencia y polimorfismo. Para continuar luego con las demás fases de desarrollo.

Clases y objetos en POO

Objetos

Un objeto es:
  • La unidad básica de construcción en la programación orientada a objetos POO.
  • La abstracción de un concepto del mundo real contemplando sus atributos y las operaciones disponibles que realiza. 
  • Un módulo (identidad) que contiene atributos (estado) y métodos (comportamiento), visto como programa.
  • La instancia de una clase.

Atributos y métodos

  • Los atributos son las características o atributos que posee un objeto, deben declararse en la clase. Por ejemplo: el color, la profesión, número de hijos, edad, fecha de nacimiento, etc. son atributos de un objeto.
  • Los métodos son las operaciones o  comportamientos que posee un objeto, deben declararse en la clase. Por ejemplo: 

Clases

Las clases son:
  • Las definiciones de estructura y comportamiento abstracto que servirá posteriormente para la creación de objetos.
  • Abstracciones que definen a un determinado tipo de objetos, como si fueran plantillas.

Consideraciones

  • Cuando se crea un objeto, primero se debe definir a la clase.
  • Los objetos al crearse reciben un "nombre" que es su identidad y permanece inalterado aún cuando se realicen cambios en su estado. 
  • El proceso de creación de un objeto se conoce como instanciación.


domingo, 29 de marzo de 2020

Introducción al lenguaje unificado de modelado UML

Comprender que es exactamente el Lenguaje Unificado de Modelado (UML) resulta una tarea relativamente compleja si no realizamos una analogía a otras ciencias como la Ingeniería Civil, en ella se establece una serie de planos o documentos que especifican las características y demás de una obra que se va a construir. En las ciencias computacionales (Ing. de Software, Informática, etc.) se requiere artefactos similares que especifiquen las características, componentes y funcionamiento de un proyecto de software. De ahí parte una interrogante ¿Cómo estandarizar estos "planos"? Y la respuesta es un lenguaje gráfico de propósito general al que llamamos UML y que tiene como objetivos:
  • Especificar
  • Visualizar
  • Construir
  • Documentar
A todos los artefactos de un proyecto de software. Siendo independiente de la metodología de desarrollo de software a emplear. Aunque, la más empleada en conjunto es el Proceso Unificado de Desarrollo (UP o RUP).

UML incluye diversos conceptos semánticos, de notación y de principios generales que acompañan todas las fases de desarrollo. Este tiene partes estáticas, dinámicas, de entorno y organizativas. Se debe resaltar que la especificación de UML no define o pretende ser un proceso estándar, pues los métodos de desarrollo son casi únicos en cada proyecto a diferencia de lo que sucede en otras disciplinas que tienen antigüedades de hasta milenios, pero está orientado a dar apoyo a la mayoría de los procesos de desarrollo orientados a objetos existentes. Esto implica que esta íntimamente ligado a los lenguajes orientados a objetos.

UML nace al unificar tres metodologías de desarrollo orientado a objetos que son: OMT, Bootch y OOSE en una sola durante la década de los 90 que fue formalmente presentado en 1997.

Las versiones de UML fueron la 1.1, 1.5 y actualmente la 2.0 y posteriores hasta el 2015 con la versión 2.1.5

En UML existen tres áreas principales que se subdividen en vistas y estas tienen sus artefactos, llamados diagramas. Cada diagrama tiene sus propias características y sirven a determinados fines.

Área principal Vista Diagrama
Estructural Vista estática Diagrama de clases
Vista de diseño Estructura interna
Diagrama de colaboración
Diagrama de componentes
Vista de casos de uso Diagrama de casos de uso
Dinámica Vista de máquina de estado Diagrama de máquina de estados
Vista actividad Diagrama de actividad
Vista de interacción Diagrama de secuencia
Diagrama de comunicación
Física Vista de despliegue Diagrama de despliegue
Gestión del modelo Vista de gestión del proyecto Diagrama de paquetes

En conclusión, UML es un lenguaje gráfico que nos brinda un estándar en la construcción de los diversos artefactos de un sistema. Estos artefactos pueden describir los procesos del negocio, los componentes internos, la forma como interactúa con el usuario, los dispositivos, etc.


Fuentes:

  • Rumbaugh, J., Jacobson, I. y Booch, G. (2007). El lenguaje unificado de modelado: manual de referencia. (2a ed.). (Trad. Sánchez, S., San Juan, O. y García-Bermejo, R.). Madrid: Pearson Educación.
  • Alarcón, R. (2000). Diseño orientado a objetos con UML. Madrid: Grupo Eidos



miércoles, 18 de marzo de 2020

Interacción hombre-máquina y hombre-computadora

¿Qué es la interacción hombre-máquina y hombre-computadora?


La interacción hombre-máquina (IHM) es una disciplina que estudia el cómo los usuarios interactúan con las diversas tecnologías (incluyendo las computacionales) empleando principios psicológicos, sociales y de diseño.

La interacción hombre-computadora (IHC) es una disciplina relacionada con el diseño, implementación y evaluación de sistemas informáticos interactivos para uso de seres humanos.

En otras palabras la IHC estudia como los humanos interactúan con los sistemas computacionales teniendo como contribuidores a las disciplinas de: ingeniería, ergonomía, psicología y diseño gráfico principalmente.



Importancia y objetivos


Gran parte del éxito de un sistema informático está estrechamente relacionado con la facilidad y la comprensión natural del funcionamiento de este por parte del usuario. Esta facilidad se proporciona a través de las interfaces intuitivas con las que interactúa el usuario final.

Actualmente gran parte del código de un programa se dedica exclusivamente a la interfaz gráfica con la que el usuario interactúa, dependiendo del tipo de programa el porcentaje en líneas de código puede aumentar significativamente.

El objetivo de esta disciplina es desarrollar y/o mejorar la seguridad, utilidad, eficacia, eficiencia y usabilidad de sistemas que incluyan ordenadores (computadores de escritorio, portátiles, móviles, etc.).




Evolución


El desarrollo de software y hardware cada vez más sofisticado ha ido transformado la forma de trabajar, estudiar y jugar. Por ello, la IHM se ha convertido desde hace 4 décadas en una de las áreas de estudio en las ciencias de la información y administración de la tecnología en las que se desarrolla investigación y se le presta mayor atención.

Este estudio sistemático del desempeño humano comenzó en serio a principios del siglo pasado en las fábricas, con énfasis en las tareas manuales. Explícitamente en 1949 con la Segunda Guerra Mundial como antecedente que generó un impulso para estudiar la interacción entre humanos y máquinas, ya que cada bando durante este periodo se esforzó por producir armamento más efectivo, debido a esto se llevó a una ola de interés en el área entre los investigadores y a la formación de la Sociedad de Investigación de Ergonomía en 1949.

La ergonomía, una de las disciplinas en las que se apoya la IHM, pone énfasis en las características físicas de las máquinas y sistemas, y cómo afectan el rendimiento del usuario al utilizarlas. Los factores humanos (otra disciplina), incorporan estas preocupaciones y también las relacionadas a problemas cognitivos (entender el uso de la máquina o sistema).

La ergonomía y los factores humanos son disciplinas que están relacionadas con el rendimiento del usuario en el contexto de cualquier sistema, ya sea informático, mecánico o manual. A medida que el uso de la computadora se generalizó, un número cada vez mayor de investigadores se especializó en estudiar la interacción entre las personas y las computadoras, con respecto a los aspectos físicos, psicológicos y teóricos de este proceso. Este proceso de investigación se denominó originalmente como interacción hombre-máquina, pero el término se convirtió en interacción hombre-computadora en reconocimiento del interés particular en las computadoras y la composición de la población de usuarios.



Fuentes:


  • Dix, A., Finlay, J., Abowd, G. y Beale, R. (2004). Human–Computer Interaction (3a ed.). England: Pearson Education.



domingo, 9 de febrero de 2020

Ejercicios resueltos de pseudocódigos

Un maestro desea saber qué porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. Elaborar un pseudocódigo que permita ingresar la cantidad de varones y mujeres y muestre el porcentaje de estos para su grupo de estudiantes.

SOLUCIÓN

Proceso procentajeAlumnos
 Definir varones, mujeres Como Entero
 Definir porcentajeVar, porcentajeMuj Como Real
 
 Escribir "Ingrese la cantidad de varones"
 Leer varones
 Escribir "Ingrese la cantidad de mujeres"
 Leer mujeres
 
 porcentajeVar <- varones / (varones + mujeres) * 100
 porcentajeMuj <- mujeres / (varones + mujeres) * 100
 
 Escribir "El porcentaje de varones es: ", porcentajeVar, "%"
 Escribir "El porcentaje de mujeres es: ", porcentajeMuj, "%"
FinProceso



Digite el importe de una compra, en caso de que el importe sea 150 o más, se le descontará el 12%. Mostrar el descuento otorgado y el importe de compra final

SOLUCIÓN

Proceso descuentos
 Definir impBase, dscto, impFinal Como Real 
 
 Escribir "Ingrese el importe"
 Leer impBase 
 
 dscto <- 0 
 Si impBase >= 150 Entonces
  dscto <- impBase * 0.12
 FinSi 
 impFinal <- impBase - dscto
 
 Escribir "Importe final S/", impFinal
FinProceso



Ingrese el nombre de un alumno y las notas de su examen parcial, examen final y el promedio de prácticas; muestre el nombre del alumno y su promedio final solo si el alumno está aprobado. Tenga en cuenta que para el cálculo del promedio la nota del examen final tiene peso doble. Considere que para aprobar se debe tener una nota de 11.5 o más.

SOLUCIÓN

Proceso aprobados
 Definir nombre Como Caracter
 Definir practicas, parcial, final Como Entero 
 Definir promedio Como Real
 
 Escribir "Ingrese el nombre"
 Leer nombre
 Escribir "Ingrese las notas de las prácticas"
 Leer practicas 
 Escribir "Ingrese la notas del parcial"
 Leer parcial  
 Escribir "Ingrese la notas del final"
 Leer final 
 
 promedio <- (practicas + parcial + 2*final)/4 
 
 Si promedio >= 11.5 Entonces  
  Escribir "Nombres ", nombre
  Escribir "Promedio ", promedio
 FinSi  
FinProceso



Ingrese un numero natural de dos cifras y muestre el mensaje “Es capicúa” o “No es capicúa” según sea el caso.

SOLUCIÓN

Proceso capicua2
 Definir num Como Entero
 
 Escribir "Ingrese un número de dos cifras"
 Leer num 
 
 Si num MOD 11 = 0 Entonces  
  Escribir num, " es capicúa"
 SiNo  
  Escribir num, " no es capicúa"
 FinSi  
FinProceso



Realizar un pseudocódigo que permita ingresar el nombre del cliente, la cantidad en soles a cambiar y el tipo de moneda a la que se desea cambiar, en este caso sólo será dólares o euros, se deberá visualizar la cantidad en la moneda extranjera cambiada. Tenga en cuenta el siguiente tipo de cambio $1 = S/ 2.35 y €1 = S/ 3.58.

SOLUCIÓN

Proceso divisas 
    Definir nombre, moneda Como Caracter      
    Definir monto, cambio Como Real      
    Escribir "Ingresa el nombre"  
    Leer nombre  
    Escribir "Ingrese el monto a cambiar en S/"  
    Leer monto  
    Escribir "Ingrese la moneda a cambiar dolares o euros"  
    Leer moneda          
    Si Mayusculas(moneda) = "DOLARES" Entonces   
        cambio <- monto/2.35   
    SiNo   
        Si Mayusculas(moneda) = "EUROS" Entonces    
            cambio <- monto/3.58    
        FinSi   
    FinSi      
    Escribir "Cambio ", cambio  
FinProceso 



Dado un número entero; determinar si el mismo es par, impar o nulo.

SOLUCIÓN

Proceso ceros 
    Definir num Como Entero 
    Escribir "Ingresa un número" 
    Leer num 
    Si num = 0 Entonces 
        Escribir "Es nulo" 
    SiNo 
        Si num MOD 2 = 0 Entonces 
            Escribir "Es par" 
        SiNo 
            Escribir "Es impar" 
        FinSi 
    FinSi 
FinProceso



A un trabajador le descuentan de su sueldo el 10% si su sueldo es menor o igual a 1000, por encima de 1000 hasta 2000 el 5% del adicional, y por encima de 2000 el 3% del adicional. Calcular el descuento y sueldo neto que recibe el trabajador dado un sueldo.

SOLUCIÓN

Proceso descuentos  
    Definir sueldo, dscto, sneto Como Real      
    Escribir "Ingrese el sueldo"  
    Leer sueldo  
    Si sueldo <= 1000 Entonces   
        dscto <- 0.1*sueldo   
    SiNo           
        Si sueldo <= 2000 Entonces    
            dscto <- 0.05*(sueldo-1000)    
        SiNo    
            dscto <- 0.03*(sueldo-2000)                
        FinSi   
    FinSi  
    sneto <- sueldo - dscto  
    Escribir "Sueldo:       S/", sueldo  
    Escribir "Descuento:    S/", dscto  
    Escribir "Sueldo neto:  S/", sneto  
FinProceso 



Una agencia de seguros para autos asigna costos mensuales en base al sexo y edad del conductor. Los varones menores de 25 años pagan 1000 soles, los de 25 a más pagan 700 soles. Las mujeres de 21 años o menos pagan 500 y las que tienen más de 21 años paga 600 soles. Realizar un programa en pseudocódigo que solicite la edad y sexo de la persona, luego de acuerdo con lo mencionado muestre el costo mensual del seguro en pantalla.

SOLUCIÓN

Proceso seguros 
    Definir genero Como Caracter // V o M 
    Definir edad Como Entero 
    Definir precio Como Real 
    Escribir "Ingrese el genero V o M" 
    Leer genero 
    Escribir "Ingrese la edad" 
    Leer edad 
    Segun Mayusculas(genero) Hacer 
        "V": 
            Si edad < 25 Entonces 
                precio <- 1000 
            SiNo 
                precio <- 700  
            FinSi 
        "M": 
            Si edad >= 21 Entonces 
                precio <- 500 
            SiNo 
                precio <- 600                

            FinSi             
        De Otro Modo: 
            Escribir "ERROR" 
    FinSegun 
    Escribir "El pago es: S/", precio 
FinProceso



Hacer un pseudocodigo que imprima los números pares entre 0 y 100

SOLUCIÓN

Proceso pares1_100
    Para cont <- 1 Hasta 100 Con Paso 1 Hacer        
        Si cont MOD 2 = 0 Entonces 
            Escribir cont," - " Sin Saltar 
        FinSi          
    FinPara 
FinProceso



Proceso pares1_100
    Para cont <- 2 Hasta 100 Con Paso 2 Hacer
            Escribir cont," - " Sin Saltar     
    FinPara 
FinProceso



Calcular el salario total de un grupo de “n” trabajadores (el valor “n” se ingresa por teclado) dada la cantidad de horas trabajadas y la tarifa por hora para cada uno de los trabajadores.

SOLUCIÓN

Proceso sueldos 
    Definir horas, n Como Entero 
    Definir tarifa, sueldo, sueldoTotal Como Real     
    sueldoTotal <- 0//acumulador, aumenta de acuerdo a un valor "x" 
    Escribir "Ingrese el numero de trabajadores" 
    Leer n     
    Para cont <- 1 hasta n Con Paso 1 Hacer 
        Escribir "Ingrese las horas" 
        Leer horas 
        Escribir "Ingrese la tarifa por hora" 
        Leer tarifa 
        sueldo <- horas * tarifa 
        sueldoTotal <- sueldoTotal + sueldo 
    FinPara     
    Escribir "Sueldo del grupo: S/",sueldoTotal 
FinProceso 



Construir un programa que calcule el factorial de un número

SOLUCIÓN

Proceso factoriales 
    Definir n,fact,aux Como Entero 
    fact<-1 
    Escribir "Ingrese n" 
    Leer n 
    Para i<-1 hasta n Con paso 1 Hacer 
        fact<-fact*i 
    FinPara 
    Escribir n,"! = ", fact 
FinProceso

Proceso factoriales
    Definir n,fact,aux Como Entero 
    fact<-1 
    aux<-1 
    Escribir "Ingrese n" 
    Leer n   
    Mientras aux<=n Hacer 
        fact<-fact*aux 
        aux<-aux+1 
    FinMientras       
    Escribir n,"! = ", fact 
FinProceso



Dado un número entero positivo cualquiera, invertirlo y mostrarlo en pantalla

SOLUCIÓN

Proceso invertido  
    Definir num, cf, inv, aux Como Entero    
    Leer num  
    aux<-num  
    Mientras aux>0 Hacer   
        cf <- aux MOD 10   
        aux <- (aux - cf)/10  
        inv<-inv*10+cf   
    FinMientras      
    Escribir "numero inicial  :", num  
    Escribir "numero invertido:", inv 
FinProceso



Se desea crear un algoritmo para un sistema de votación. Supóngase en este caso que hay cuatro candidatos, con identificadores 1, 2, 3, 4. Usted habrá de calcular mediante un programa, el número de votos correspondiente a cada candidato y el porcentaje que obtuvo respecto al total de los votantes. El usuario ingresara los votos de manera desorganizada, tal y como se obtuvieron en la elección. El conteo de votos se detiene si se ingresa el valor cero. Observe, como ejemplo, la siguiente lista: 1 3 1 4 2 2 1 3 1 1 1 3 4 1 2 4 4 0

SOLUCIÓN

Proceso votaciones  
    Definir v,a,b,c,d Como Entero  
    // Contadores para cada cantidato
    a<-0  
    b<-0  
    c<-0  
    d<-0  
    Repetir   
        Escribir "ingrese voto"   
        leer v   
        Si v=1 Entonces    
            a<-a+1    
        FinSi   
        Si v=2 Entonces    
            b<-b+1    
        FinSi   
        Si v=3 Entonces   
            c<-c+1    
        FinSi   
        Si v=4 Entonces    
            d<-d+1    
        FinSi   
    Hasta Que v=0 //Se detiene si v es CERO
    Escribir "votos del candidato 1=", a 
    Escribir "votos del candidato 2=", b  
    Escribir "votos del candidato 3=", c  
    Escribir "votos del candidato 4=", d 
FinProceso



Construir un algoritmo que permita ingresar un número “n” de estudiantes (se cumple que: 1<=n<=50), cada uno de los cuáles cursa 5 materias. Para cada alumno se ingresa, clave y las 5 calificaciones. Escriba un algoritmo para calcular el promedio de cada estudiante luego de ingresar sus notas.

SOLUCIÓN

Proceso clase  
    Definir n, notas Como Entero  
    Definir clave Como Caracter  
    Definir prom Como Real  
    prom<-0  
    Repetir   
        Escribir "Ingrese la cantidad de alumnos"   
        Leer n 
 Hasta Que n>=1 Y n <=50
 Para i<-1 Hasta n Con Paso 1 Hacer
  Escribir "Ingrese la clave del alumno#",i
  Leer clave  
  Para j<-1 Hasta 5 Con Paso 1 Hacer  
   Repetir    
    Escribir "Ingrese la nota #",j     
    Leer notas  
   Hasta Que notas>=0 Y notas<=20
   prom<-prom+notas     
  FinPara    
  prom<-prom/5
  Escribir "Codigo: ", clave, " Promedio: ", prom     
  prom<-0
 FinPara   
FinProceso



viernes, 13 de diciembre de 2019

Creando una mariposa en PSeInt

En esta ocasión se muestra el código para crear una figura de una "mariposa" empleando el caracter "@", se puede realizar con otro caracter como el "*" o"#".

Código completo


Proceso Mariposa
   Definir cade Como Caracter 
   Escribir "Ingrese el tamaño"
   Leer ta
   Para i <- 1 Hasta ta Con Paso 1 Hacer
     cade<-""
     Para j<-1 Hasta ta Con Paso 1 Hacer
       Si i<=ta/2 Entonces    
         Si j<=i o j>ta-i Entonces
           cade<-cade+"@"
         SiNo
           cade<-cade+" "
         FinSi
       SiNo
         Si j>i o j<=ta-i Entonces
           cade<-cade+"@"
         SiNo
           cade<-cade+" "
         FinSi
       FinSi   
     FinPara
     Escribir cade
   FinPara
FinProceso


Variables


Tenemos dos variables que son "cade" y "ta", estas representan a cada línea de la mariposa (horizontal) y el tamaño que tendrá la mariposa respectivamente. Al ser "ta" una variable de entrada, se deben de leer. Por ello le pedimos al usuario que indique el tamaño, si el usuario coloca 6 tendrá una mariposa que tiene 6 filas por 6 columnas, si coloca 10 tendrá una de 10 columnas por 10 filas y así sucesivamente. Por ello, tenemos dos estructuras repetitivas "PARA" una dentro de otra.

Proceso


En cada ciclo (que representa cada fila) se reinicia la variable "cade", para que sea reescrita en cada iteración. En cada columna se valida si supera o no al tamaño medio (ta/2), en el primer condicional se evalúa posteriormente que vaya del inicio subiendo de uno en uno o desde el final retrocediendo de uno en uno y en esos casos se escribe una "@", caso contrario se escriben espacios en blanco (" ").

Luego que supera a la mitad de filas se debe replantear al condicional con otro que hace lo opuesto del anterior, va escribiendo filas con "@" y cada vez más espacios en blanco en medio y eso genera la mariposa final.

lunes, 30 de septiembre de 2019

Creando un Reloj con PseInt

Código


El reloj que se ha realizado en PseInt primero pide la hora, minutos y segundos con los que va a iniciar, mediante el uso de estructuras repetitivas valida datos correctos y posteriormente muestra la hora ingresada y avanza tal cual lo hace un reloj de segundo en segundo mediante la función ESPERAR

Proceso reloj
   Definir hora, minuto, segs Como Entero
   Repetir
     Escribir "Ingrese la hora"
     Leer hora 
   Hasta Que hora>=0 Y hora <24
   Repetir
     Escribir "Ingrese los minutos"
     Leer minuto  
   Hasta Que hora>=0 Y hora <60
   Repetir
     Escribir "Ingrese los segundos"
     Leer segs  
   Hasta Que hora>=0 Y hora <60
   Escribir "Presiona una tecla para comenzar"
   Esperar Tecla
   Mientras Verdadero Hacer
     Limpiar Pantalla
     Si hora<10 Entonces
       Escribir "0" hora Sin Saltar
     Sino
       Escribir hora Sin Saltar
     FinSi
     Escribir " : " Sin Saltar
     Si minuto<10 Entonces
       Escribir "0" minuto Sin Saltar
     Sino
       Escribir minuto Sin Saltar
     FinSi  
     Escribir " : " Sin Saltar
     Si segs<10 Entonces
       Escribir "0" segs
     Sino
       Escribir segs
     FinSi
     segs<-segs+1  
     Si segs=60 Entonces
       minuto<-minuto+1
       segs<-0
       Si minuto=60 Entonces
         hora<- hora+1
         minuto<-0
         Si  hora=24 Entonces
           hora<-0
         FinSi
       FinSi
     FinSi 
     Esperar 1 Segundo  
   FinMientras
FinProceso

miércoles, 18 de septiembre de 2019

Ejercicios con PseInt de estructuras repetitivas - Avanzado


EJERCICIO #1


Crear una calculadora de MCD en pseudocódigo, que permita ingresar dos números y muestre el MCD. Solo se debe permitir ingresar números enteros positivos




EJERCICIO #2


Realizar un pseudocódigo que permita ingresar un número positivo, luego una base menor a 10 y devuelva el número en dicha base.




EJERCICIO #3


Crear un pseudocódigo que permita ingresar una frase u oración y devuelva la cantidad de vocales que hay.




EJERCICIO #4


Crear un algoritmo que simule "n" lanzamientos de un dado y muestre el valor que salió en cada lanzamiento. Finalmente debe mostrar una tabla resumen de cuantas veces salio cada valor. Nota: use arreglos




EJERCICIO #5


Desarrollar un pseudocódigo que permita calcular el sueldo mensual de "n" empleados de una empresa. Se ingresa el nombre, categoria y número horas trabajadas. Si la categoría es A, el pago por hora es de 50 soles, si es B es de 35 soles, si es C es de 25 soles y si es D es de 21 soles. Luego mostrar el pago que le corresponde a cada trabajador, el pago total que se debe hacer, el total de trabajadores que ganan menos de 1000 soles, el total que ganan desde 1000 soles a 4000 soles y los que ganan más de 4000 soles.

Ejercicios con PseInt de estructuras repetitivas - Intermedio


EJERCICIO #1


Crear una calculadora en pseudocódigo, que permita ingresar un número positivo y lo devuelva en binario.




EJERCICIO #2


Realizar un pseudocódigo que permita calcular el factorial de un número entero positivo. Nota: Mostrar 1 si se pide calcular el factorial de cero.




EJERCICIO #3


Realizar un pseudocódigo que permita calcular el monto total de sueldos de todos los empleados de N empleados de una empresa para el mes de Junio. Se ingresa el nombre, número de días programados y número de días que faltó por cada empleado. Además, se pide el monto total de sueldos de todos los empleados. El pago por día a cada empleado es 50 soles y el descuento por día de falta es de 100% del pago diario.




EJERCICIO #4


Desarrollar un pseudocódigo que luego de ingresar 2 números naturales, donde el segundo debe ser mayor que el primero, por teclado. Luego imprima los números naturales pares que hay entre ambos empezando por el menor y luego haga el mismo proceso para los impares




EJERCICIO #5


Crear una algoritmo en pseudocódigo que permita ingresar un número positivo y muestre el número de cifras totales, el número de cifras pares e impares

Ejercicio con PseInt usando funciones

Las funciones dentro de PseInt se pueden crear mediante la palabra reservada SubProceso, SubAlgortimo o Función. Esto dependerá del estilo d...