Guia de Ingenieria de Software 1
Guia de Ingenieria de Software 1
Guia de Ingenieria de Software 1
UNIVERSIDAD SALESIANA
ING. IVAN VERASTEGUI PALAO
FASE 1
GESTION 2023
Boceto del proyecto del sistema
SISTEMA DE INVENTARIOS
Sistema de INVENTARIO
PARAMETROS GENERALES
DESARROLLO DE SOFTWARE
PROCESO DE
PROCESO DE COMPRA PROCESO DE VENTA CONTROL DE
INVENTARIOS
REPORTES DE SOFTWARE
CONTROL DE
COMPRAS VENTAS
INVENTARIOS
GUIA NETBEANS
1. INTRODUCCIÓN A LOS ALGORITMOS
1.1.1 Algoritmo
Características
Encima del nombre del proyecto que aparece en la parte izquierda de la ventana,
se da click derecho, y en el menú que se despliega, se escoge la opción New,
y luego la opción Java Class.
Imagen 4. Ventana Creación de la clase.
Se culmina con la creación del programa el cual se crea con las siguientes
instrucciones:
/*
* prueba.java
*
* Created on 11 de julio de 2007, 12:45
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
*
* @author estudiante
*/
public class prueba {
/** Creates a new instance of prueba */
public prueba() {
}
Esto quiere decir que se creó un programa, en la fecha y hora indicada. Además
note que aparece una instrucción que es:
public prueba() {
Este indica el fin del algoritmo, por lo tanto para escribir el algoritmo debe presionar
la tecla Enter al final de la instrucción de inicio para que cree un espacio entre las
dos líneas de código.
2.1. INSTRUCCIONES
Librería es donde se definen operaciones que realiza el sistema, para los cual es
necesario ser llamadas para poder utilizar dichas funciones, entre las cuales se
tienen las siguientes:
import javax.swing.*; El cual permite enviar resultados en pantalla y leer datos por
teclados entre otras operaciones.
Las variables son valores que pueden o no cambiar en el tiempo. Las características
de una variable es que debe tener dos componentes: Nombre y tipo de dato.
2.1.4 ESTRUCTURA DE DATOS ESTATICAS. Son estructuras fijas entre los cuales
tenemos los arreglos unidimensionales y bidimensionales.
Existen diferentes tipos de operadores entre los cuales se tienen los siguientes:
Operadores matemáticos, lógicos y relacionales.
Operación Operador
Suma +
Resta -
División /
Módulo de División %
Cociente de División /
Ejemplo:
Los operadores aritméticos tienen un orden de realizarse las operaciones este orden
se muestra en la siguiente tabla:
Tabla 2. Precedencia de Operadores.
1. 17+5-6
Solución: 12 – 6
6
2. 9+7*8-36/5
Solución: 9+56-36/5
9+56-7,2
65-7,2
57,8
3. 15/2*(7+(68-15*33+(45**2/16)/3)/15)+19
Solución: 15/2*(7+(68-15*33+(2025/16)/3)/15)+19
15/2*(7+(68-15*33+126.5625/3)/15)+19
15/2*(7+68-495+126.5625/3)/15+19
15/2*(7+(68-495+42.1875)/15+19
15/2*(7+(-427+42.1875/15)+19
15/2*(7+(-)384.8125/15+19
15/2*(7+(-)25.6541)+19
15/2*(-)18.6541+19
7.5*(-)18.6541+19
-139.9062+19
-120.9062
Operación Operador
Asignación =
Igual ==
Diferente <>
Menor <
Mayor >
Menor Igual <=
Mayor Igual >=
Ejemplo:
1. A=5 B=16
(A**2)>(B*2)
25 > (B*2)
25>32
FALSO
2. X=6 B=7.8
(X * 5 + B ** 3 / 4) <= (X ** 3 div B)
(X * 5 + B ** 3 / 4) <= (X ** 3 div B)
(X * 5 + 474.552 / 4) <= (X ** 3 div B)
(30 + 474.552 / 4) <= (X ** 3 div B)
(30 + 118.638) < = (X ** 3 div B)
148.638 <= (X ** 3 div B)
148.638 <= (216 div B)
148.638 < = 27
FALSO
Operaci Operad
ón or
Y &&
O ||
Ejemplo3:
Sea: a = 10 b = 12 c = 13 d =10
1. ((a>b) or (a<c)) and ((a=c) or (a>=b))
F T F F
T F
F
2. ((a>=b or (a<d)) and (a>=d) and (c>d))
F F T T
F T
T
3. not (a=c) and (c>b)
F T
T
T
Ejemplo
Leer Variable
Las instrucciones de entrada son aquellas que permiten ingresar datos a la solución
es decir, lea o leer. Existen dos formas de realizar las lecturas en Netbeans como
son:
Por consola:
import java.io.*;
Como segundo paso
Ejemplo:
num=Integer.parseInt(lectura.readLine());
Teniendo en cuenta que la variable num es definida como entera es decir int.
Pero para realizar este primer paso es necesario definir en las librerías la
siguiente:
import javax.swing.*;
Ejemplo:
num=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese el valor”));
num=Float.parseFloat(JOptionPane.showInputDialog(“Ingrese el valor”));
num=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese el
valor”));
Teniendo en cuenta que la variable num es definida como entera es decir int.
Pseudocódigo
Por consola:
System.out.println(“Mensaje”+variable)
Ejemplo:
System.out.println(“El resultado es ”+num);
import javax.swing.*;
Luego,
JOptionPane.showMessageDialog(“Mensaje”+variable).
Ejemplo:
JOptionPane.showMessageDialog(“el resultado es ”+num);
Ejemplo del código completo en netbeans donde se realiza una entrada, es decir,
una lectura, y una escritura, es decir, escribir.
import java.io.*;
public class ejercicio1 {
public static void main(String[]args)throws IOException {
BufferedReader lectura = new BufferedReader(new InputStreamReader(System.
in));
int num;
System.out.println(“Ingrese numero: “);
num = Integer.parseInt(lectura.readLine());
import javax.swing.*;
public class ejercicio1 {
En este caso se ejecutan las instrucciones una tras otra, es decir de forma lineal.
Operador Asignación
Se debe tener en cuenta que en una solución algorítmica los datos o expresiones
matemáticas deben ser guardadas en las variables utilizando este operador, y se
representa por el siguiente símbolo: =
Ejemplo:
1. a1=2+3
b=a1+4
Tabla 4. Ejemplo 1.
Número de Asignación a1 b
1 5
2 9
2. Supongamos que las variables I, ACUM y J son de tipo entero, REA y SUM de
tipo real, CAR de tipo carácter y BAND de tipo booleano 6. Consideremos también
que tenemos que realizar las siguientes asignaciones:
3 CAIRÓ BATTISTUTI, Osvaldo. Metodología de la Programación.
Algoritmos, diagramas de flujo y programas, México D.F.:Alfaomega.2005, p 13-
23.
1. I<- 0
2. I<-I+1
3. ACUM<-0
4. J<-5**2 div 3
5. Car<-‘a’
6. ACUM<- J div I
7. REA<- ACUM/3
8. BAND<-(8>5)y(15<2**3)
9. SUM<-ACUM*5/J**2
10. I<-I*3
11. REA<-REA/5
12. BAND<-BAND o (I=J)
13. I<-REA
14. CAR<-J
Tabla de Memoria
Número de
I J ACUM REA SUM CAR BAND
Asignación
1 0
2 1
3 0
4 8
5 a´
6 8
7 2.66
8 FALSO
9 0.625
10 3
11 0.532
12 FALSO
13 ERROR
14 ERROR
Ejercicios Propuestos
Realizar las tablas de Memoria de las siguientes asignaciones.
1. Se supone que las variables A, B y J son de tipo entero, C y D de tipo real, CAD
de tipo carácter y DEC de tipo booleano. Consideremos también que tenemos que
realizar las siguientes asignaciones:
1. A<- 1
2. A<-A+3
3. J<-0
4. J<-4**3 mod 3
5. Cad<-‘Casa Verde’
6. B<- J div A
7. C<- B/3
8. DEC<-(8>5)y(15<2**3)
9. D<-B*5/J**2
10. A<-A*3
11. C<-C/5
12. DEC<-DEC o (I=J)
13. A<-C
14. CAD<-J
2. Se supone que las siguientes variables inician con los siguientes valores
BETA=200, CES=0.5, CONT=800, SUM=600, AME=100, PAG=40, TEN=10, RES=2,
MAX=2000, ULT=0.20
1. TOTA<-BETA*CES+10
2. ROT<-PAG
3. MAN<- MAX / TEN
4. FAC<-PAG * AME / 2
5. BOTA<-CONT + SUM –MAX
6. FAC<-RES * TEN * AME
7. TOTA<-60 + PAG – AME
8. ZOR<-MAX * ULT / 2 + ROT
9. CARO<-BETA + AME + TEN + ULT
10. NEKO<- MAX * AME + PAG – RES * CARO
Estructura Inicio – Fin
Esta estructura permite delimitar la solución del problema a través del Pseudocódigo
así:
Inicio
Instrucciones;
Fin
Ejemplo.
Realizar un algoritmo que dados dos (2) números, calcule la suma de dichos
números.
Datos de Entrada: Número1 y Número2
Datos de Salida: Suma
Proceso: Número1 + Número2
Solución
Inicio
Escribir(“Ingrese el Primer Número”)
Leer n1
Escribir(“Ingrese el Segundo Número”)
Leer n2
S=n1+n2
Escribir(“La suma es ”, S)
Fin
Realizar un algoritmo que dados base y altura. Calcule el área del triángulo y el
rectángulo.
Solución
Inicio
Escribir(“Ingrese la base del Triángulo”)
Leer bt
Escribir(“Ingrese la altura del triángulo”)
Leer ht
At=(b*h)/2
Escribir(“El área del Triángulo es ”, At)
Escribir(“Ingrese la base del Rectángulo”)
Leer br
Escribir(“Ingrese la altura del Rectángulo”)
Leer hr
Ar=(b*h)
Escribir(“El área del Rectángulo es ”, Ar)
Fin
Solución en Netbeans
import javax.swing.*;
public class Áreas{
public static void main(String args[]) {
double bt,ht,At,br,hr,Ar;
bt=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese la base del
Triángulo”));
ht=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese la altura del
Triángulo”));
At=(b*h)/2;
JOptionPane.showMessageDialog(null,”El área del triángulo es ” “+At);
br=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese la base del
Rectángulo”));
hr=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese la altura del
Rectángulo”));
Ar=(br*hr);
JOptionPane.showMessageDialog(null,”El área del Rectángulo es ” “+Ar);
}
}
Dado el nombre y tres 3 calificaciones de un estudiante obtenidas a lo largo del
semestre. Realice un algoritmo que muestre el nombre del estudiante y el
promedio de sus calificaciones.
Solución en Pseudocódigo
Inicio
Escribir(“Ingrese el nombre del Estudiante)
Leer nombre
Escribir(“Ingrese la primera nota)
Leer n1
Escribir(“Ingrese la segunda nota)
Leer n2
Escribir(“Ingrese la tercera nota)
Leer n3
P=(n1+n2+n3)/3
Escribir(“El promedio de ”,nombre,” es de “,P)
Fin
Solución en Netbeans
import javax.swing.*;
public class Promedio {
public static void main(String args[]) {
String nombre;
double n1,n2,n3;
nombre=JOptionPane.showInputDialog(“Ingrese el valor del numerador”);
n1=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese el número”));
n2=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese el número”));
n3=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese el número”));
P=(n1+n2+n3)/3;
JOptionPane.showMessageDialog(null,”El promedio de “+nombre+ “es de
“+P);
}
}
Ejemplos en Netbeans de Estructuras Secuenciales
Este programa calcula la potencia cuadrada de un número dado
import javax.swing.*;
public class ejercicio1 {
/** Creates a new instance of ejercicio1 */
public static void main(String args[]) {
int n,d;
n=Integer.parseInt (JOptionPane.showInputDialog(“Ingrese el valor del
numerador”));
d=n*n;
JOptionPane.showMessageDialog(null,”El valor de la potencia es “+d);
}
}
Para crear un nuevo programa en el mismo proyecto solo debe volver a seguir los
pasos para crear una clase que son:
Encima del nombre del proyecto que aparece en la parte izquierda de la
ventana, se da click derecho, y en el menú que se despliega, se escoge la
opción New, y luego la opción Java Class.
En la ventana que se obtiene, en la parte en donde se encuentra Class
Name, se coloca el nombre del programa.
Presiona el botón Finísh.
De esta forma se creará un nuevo espacio para realizar otro programa, recuerde
que el nombre de la clase debe ser referente al objetivo del programa, además que
no debe contener espacios y debe empezar por letra.
5. Realizar un algoritmo que dado dos números enteros y muestre su suma, resta,
multiplicación, división.
6. Realizar un algoritmo que una vez se ingrese una medida expresada en centímetros
la convierta en pulgadas (1pulgada = 2,54 centímetros).
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto
presupuestal.
12. Todos los lunes, miércoles y viernes, una persona corre la misma ruta y
cronometra los tiempos obtenidos. Determinar el tiempo promedio que la persona
tarda en recorrer la ruta en una semana cualquiera.
13. En una gasolinera tiene el siguiente problema, los surtidores registran lo que
surten en galones, pero el precio de la gasolina está fijado en litros. El algoritmo
debe calcular e imprimir lo que hay que cobrarle.
1 Galón tiene 3785 litros.
14. Realizar un algoritmo que dado como datos el radio y la altura de un cilindro,
calcule e imprima el área y su volumen.
15. Realizar un algoritmo que calcule la distancia entre dos puntos, dado como
datos las coordenadas de los puntos P1 y P2.
D=√(x1-x2)2+(y1-y2)2
16. La relación entre los lados (a ,b) de un triángulo rectángulo y la hipotenusa (h)
viene dada por la formula
a2 + b2 = h2 h: hipotenusa
Escribir un algoritmo que lea la longitud de los dos lados y calcule la hipotenusa.
Se debe tener en cuenta que para utilizar estas expresiones se utilizan los operadores
relacionales como se mostró anteriormente en el ítem de operadores, entre los
cuales están <,>, <=, >=, =, <>.
Ejemplo:
Pseudocódigo:
Si (Condiciones) Entonces
Instrucciones
Sino
Instrucciones
Fin-si
La estructura Si en cascada.
1. 78A un trabajador le pagan según sus horas y una tarifa de pago por horas. si la
cantidad de horas trabajadas es mayor a 80 horas. la tarifa se incrementa en un
13% para las horas extras. Realizar un algoritmo que le permita calcular el
salario del trabajador dadas las horas trabajadas y la tarifa.
10. ¿Dado el monto de una compra realizar un algoritmo que le permita calcular el
descuento considerado
a. Descuento es 10% si el monto es mayor a $50000
b. Descuento es 20% si el monto es mayor a $20000 bolivianos y menor o igual a
$50000.
c. no hay descuento si el monto es mayor o igual a $10000.
12. Ingresar un número determinado de segundos, realizar un algoritmo que le
permita convierta en horas, minutos y segundos.
13. Realizar un algoritmo que permita ingresar la hora, minutos y segundos y que
me calcule la hora en el siguiente segundo (“0=< H =<23”, “0=< M =<59” “0=<
S=<59”).
14. Realizar un algoritmo que permita que al dar la hora hh, mm, ss, muestre las
horas, minutos y segundos y también nos calcule la hora después de 2
segundos.
15. Realizar un algoritmo que permita que lea 2 números y deducir si están en
orden creciente o decreciente.
16. A un profesor le pagan según sus horas y una tarifa de pago por horas. Si la
cantidad de horas trabajadas es mayor a 40 horas, la tarifa se incrementa en
un 50 % para las horas extras. Realizar un algoritmo que calcule el salario del
profesor dadas las horas trabajadas y la tarifa.
17. Realizar un algoritmo que Calcule el perímetro de una circunferencia dado
su radio. Luego calcule el perímetro de la misma si se reduce al 50%. Luego
calcule el perímetro de la misma si se reduce al 25% con respecto al resultado
anterior.
2.4.7 ESTRUCTURAS SELECTIVAS
switch (variable) {
Case valor1: Instrucciones;
break;
Case valor2: Instrucciones;
break;
Case valor3: Instrucciones;
break;
.
.
.
Case valor n: Instrucciones;
break;
default: Instrucciones;
}
2
TABLA DE CATEGORÍAS
CATEGO PRECIO HORAS
RÍA EXTRAS
1 $30000
2 $38000
3 $50000
4 $70000
Cada trabajador puede tener como máximo 30 horas extras, si tienen más sólo se
les pagarán 30. A los trabajadores con categoría mayor a 4 no debemos pagarles
horas extras.
ejercicio1 {
public static void main(String
args[]) { int i;
for (i=10;i<=20;i++){
JOptionPane.showMessageDialog(null,
i+”,”);
i=i+2;
}
}
}
2. Realizar un programa que calcule la tabla de sumar de un valor dado hasta el 10.
Solución en Netbeans:
import javax.swing.*;
public class
ejercicio1 {
public static void main(String
args[]) { int i, n, R;
n=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese el valor para
calcular la tabla de sumar “));
for
(i=1;i<=10;i++){
R=n+i;
JOptionPane.showMessageDialog(null, n+”+”+i+”=”+R);
}
}
}
import javax.swing.*;
public class
ejercicio1 {
public static void main(String
args[]) { int i, n, num, p=0,im=0;
n=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese la
cantidad”)); for (i=1;i<=n;i++){
num=Integer.parseInt(JOptionPane.showInputDialog(“Ingrese el valor”));
if(num % 2==0){
p=p+1
}else{
im=im+1
}
}
JOptionPane.showMessageDialog(null, “En el conjunto de valores
hay”+p+”pares”);
6
1. Un estudiante tiene problemas para manejar las tablas de multiplicar, por lo tanto
requiere para su ayuda un algoritmo que permita que dado un número N, calcule
l tabla de multiplicar de dicho número.
DÍGIT COLO
O R
1o2 amarill
a
3o4 rosa
5o6 roja
7o8 verde
9o0 azul
Realice un algoritmo que asignes los Stikers teniendo en cuenta la tabla anterior.
3. Un docente requiere realizar un programa que permita ingresar las notas de los
tres cortes de N estudiantes que se especifica así: Primer parcial el cual tiene un
valor del 30% de la nota definitiva, Segundo parcial el cual tiene un valor del 30%
de la nota definitiva y examen final el cual tiene un valor del 40% de la nota
definitiva y el nombre, calcular la cantidad de estudiantes que obtuvieron notas
definitivas entre
4.0 y 5.0 y mostrar el nombre de dichos estudiantes, mostrando además que estos
estudiantes obtuvieron un beca por buen rendimiento académico.
4. Realizar un algoritmo dadas las edades de un grupo y los sexos del grupo, Calcular
el promedio de edades de hombres, mujeres y de todo el grupo de alumnos.
bajado o subido de peso desde la última vez que se reunieron. Para esto se debe
realizar un ritual de pesaje en donde cada uno se pesa en m básculas distintas para
así tener el promedio más exacto de su peso. Si existe diferencia positiva entre este
promedio de peso y el peso de la última vez que se reunieron, significa que subieron
de peso. Pero si la diferencia es negativa, significa que bajaron. Lo que el problema
requiere es que por cada persona se imprima un letrero que diga: “SUBIO” o “BAJO”
y la cantidad de kilos que subió o bajo de peso.
Haga
instruccion
es
}mq(condición)
C=N;
While (N!=0) {
nota=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese la
nota”));
S=S+not
a;
N=N-1;
}
P=S/C;
JOptionPane.showMessageDialog(null, “El promedio del grupo es”+P);
}
}
2. Realizar un programa que dados varios números , los acumule hasta que se
ingrese el valor de cero. Mostrar el valor acumulado y la cantidad de valores.
Solución en Netbeans:
import javax.swing.*;
public class
ejercicio1 {
public static void main(String
args[]) { int C=0;
double S=0,num;
num=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese el
número
“));
While (num !=
0) {
S=S+num;
num=Double.parseDouble(JOptionPane.showInputDialog(“Ingrese el valor”));
C=C+1;
}
JOptionPane.showMessageDialog(null, “El valor Acumulado es ”+S+” de “+C+”
números”));
}
}
}
I=I+
1;
}while(I<=n);
JOptionPane.showMessageDialog(null, n+“ contiene ”+D+” Divisores “));
}
}
PRIMITIVA
REPETITIVA
Mq (Condición) while while
haga (condición) { (condición) {
Instrucciones Instrucciones; Instrucciones;
FMq } }
Para (i=Valor Inicial, Valor for (i=Valor inicial; for (i=Valor inicial;
final, Incremento o i<=Valor Final; i++ o i-- i<=Valor Final; i++ o
decremento) haga ){ Instrucciones; i--){ Instrucciones;
Instrucciones; } }
FPara
Haga do{ do{
instruccion instruccion instruccion
es es; es;
}mq(condición) }while(condición); }while(condición);
Ejemplo: 284=2*8*4=64.
2. Realizar un algoritmos que dado un número calcular la suma de los dígitos hasta
que el resultado de dicha suma dé como resultado un número de una cifra.
Ejemplo: 9856=9+8+5+6=28=2+8=10=1+0=1
3. Se tienen como datos los importes de las ventas de cada una de las sucursales
de una empresa, junto con el código de sucursal (1, 2, 3, 4 ó 5).- Cada sucursal
puede tener varias ventas. Los datos no están ordenados por código de sucursal.
Un código igual a cero indica fin de datos.- Obtener el total de ventas para cada
sucursal.
GUIA PSENT
INDICE
INTRODUCCIÓN ................................................................................................... 4
¿QUÉ ES PSEINT? ............................................................................................... 5
La interfaz y el área de trabajo ............................................................................. 5
EL PSEUDOCÓDIGO ............................................................................................ 7
FORMA GENERAL DE UN ALGORITMO EN PSEUDOCÓDIGO ......................... 7
TIPOS DE DATOS ................................................................................................. 7
Tipos de Datos Simples .................................................................................... 8
Estructuras de Datos: Arreglos ......................................................................... 8
Dimensionamiento (Arreglos-Arrays) ................................................................ 8
EXPRESIONES ..................................................................................................... 9
Operadores ....................................................................................................... 9
Funciones matemática .................................................................................... 10
PRIMITIVAS SECUENCIALES (COMANDOS DE ENTRADA, PROCESO Y
SALIDA) .......................................................................................................... 11
Lectura o entrada ............................................................................................ 11
Asignación o proceso...................................................................................... 11
Escritura o salida ............................................................................................ 11
ESTRUCTURAS DE CONTROL (PROCESO) .................................................... 12
Condicionales..................................................................................................... 12
Si-Entonces (If-Then) ...................................................................................... 12
Selección Múltiple (Select If)........................................................................... 12
Repetitivas ......................................................................................................... 13
Mientras Hacer (while) .................................................................................... 13
Repetir Hasta Que (do-while).......................................................................... 14
Para (for)......................................................................................................... 14
EJECUCIÓN PASO A PASO ............................................................................. 145
EJEMPLOS DE ALGORITMOS ......................................................................... 167
EJERCICIOS RESUELTOS UTILIZANDO PSEINT ........................................... 212
13
INTRODUCCIÓN
¿Qué es PSEINT?
Buscar
Ejecutar el algoritmo
El Pseudocódigo
Proceso SinTitulo
accion 1;
accion 1;
.
.
.
accion n;
FinProceso
Comienza con la palabra clave Proceso seguida del nombre del programa, luego le
sigue una secuencia de instrucciones y finaliza con la palabra FinProceso. Una
secuencia de instrucciones es una lista de una o más instrucciones, cada una
terminada en punto y coma.
Tipos de datos
Los arreglos son estructuras de datos homogéneas (todos sus datos son del mismo
tipo) que permiten almacenar un determinado número de datos bajo un mismo
identificador, para luego referirse a los mismo utilizando uno o más subíndices. Los
arreglos pueden pensarse como vectores, matrices, etc.
Dimensionamiento (Arreglos-Arrays)
Expresiones
• Operadores.
• Funciones.
Operadores
Este pseudolenguaje dispone de un conjunto básico de operadores que pueden
ser utilizados para la construcción de expresiones más o menos complejas.
Funciones matemática
Función Significado
RC(X) Raíz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X
EXP(X) Función Exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
TAN(X) Tangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero más cercano a X
AZAR(X) Entero aleatorio entre 0 y x-1
Lectura o entrada
Esta instrucción lee N valores desde el ambiente (en este caso el teclado) y los
asigna a las N variables mencionadas. Pueden incluirse una o más variables, por lo
tanto el comando leerá uno o más valores.
Asignación o proceso
Escritura o salida
Esta instrucción imprime al ambiente (en este caso en la pantalla) los valores
obtenidos de evaluar N expresiones. Dado que puede incluir una o más
expresiones, mostrará uno o más valores.
• Repetitivas
o Mientras
o Repetir
o Para
Condicionales
Si-Entonces (If-Then)
Si <condición> Entonces
<instrucciones>
Sino
<instrucciones>
FinSi
21
La cláusula Entonces debe aparecer siempre, pero la cláusula Sino puede no estar.
En ese caso, si la condición es falsa no se ejecuta ninguna instrucción y la ejecución
del programa continúa con la instrucción siguiente.
Cada opción está formada por uno o más números separados por comas, dos
puntos y una secuencia de instrucciones. Si una opción incluye varios números, la
secuencia de instrucciones asociada se debe ejecutar cuando el valor de la variable
es uno de esos números.
Repetitivas
Note que las instrucciones del cuerpo del ciclo pueden no ejecutarse nunca, si al
evaluar por primera vez la condición resulta ser falsa.
Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un
ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener
alguna instrucción que modifique la o las variables involucradas en la condición,
de modo que ésta sea falsificada en algún momento y así finalice la ejecución del
ciclo.
Repetir
<instrucciones>
Hasta Que <condición>
Note que, dado que la condición se evalúa al final, las instrucciones del cuerpo del
ciclo serán ejecutadas al menos una vez.
23
Además, a fin de evitar ciclos infinitos, el cuerpo del ciclo debe contener alguna
instrucción que modifique la o las variables involucradas en la condición de modo
que en algún momento la condición sea verdadera y se finalice la ejecución del ciclo.
Para (for)
Para <variable> <- <inicial> Hasta <final> ( Con Paso <paso> ) Hacer
<instrucciones>
FinPara
El botón "Comenzar" del panel sirve para iniciar la ejecución automática. Cuando
lo utilice, el algoritmo comenzará a ejecutarse lentamente y cada instrucción que se
vaya ejecutando según el flujo del programa se irá seleccionando en el código de
dicho algoritmo. La velocidad con que avance la ejecución del algoritmo,
inicialmente depende de la seleccionada en el menú "Configuración", aunque
mientras la ejecución paso a paso está en marcha, puede variarla desplazando el
control rotulado como "Velocidad" en el panel.
Otra forma de comenzar la ejecución paso a paso es utilizar el botón "Primer Paso"
del mismo panel. Este botón iniciará la ejecución, pero a diferencia de "Comenzar"
no avanzará de forma automática, sino que se parará sobre la primer línea del
programa y esperará a que el usuario avance manualmente cada paso con el mismo
botón (que pasará a llamarse "Avanzar un Paso".
Para determinar el valor de una variable o expresión, una vez pausada la ejecución
paso a paso, utilice el botón "Evaluar...". Aparecerá una ventana donde podrá
introducir cualquier nombre de variable o expresión arbitraria (incluyendo funciones
y operadores), para luego observar su valor.
Algunas Observaciones
Ejemplos de Algoritmos
Si intentos=0 Entonces
Escribir "El numero era: ",num_secreto;
Sino
Escribir "Exacto! Usted adivinó en ",11-intentos," intentos.";
FinSi
FinProceso
Si datos[1]>datos[2] Entonces
may1<-datos[1];
may2<-datos[2];
Sino
may1<-datos[2];
may2<-datos[1];
FinSi
// cargar datos
Escribir "Ingrese el lado 1:";
Leer l1;
Escribir "Ingrese el lado 2:";
Leer l2;
Escribir "Ingrese el lado 3:";
Leer l3;
hip<-l3;
cat2<-l1;
FinSi
Sino
cat1<-l1;
Si l2>l3 Entonces
hip<-l2;
cat2<-l3;
Sino
hip<-l3;
cat2<-l2;
FinSi
FinSi
FinProceso
// leer la lista
cant<-0;
Leer nombre;
Mientras nombre<>"" Hacer
cant<-cant+1;
lista[cant]<-nombre;
Repetir // leer un nombre y ver que no esté ya en la lista
Leer nombre;
se_repite<-Falso;
Para i<-1 Hasta cant Hacer
Si nombre=lista[i] Entonces
28
se_repite<-Verdadero;
FinSi
FinPara
Hasta Que NO se_repite
FinMientras
// ordenar
Para i<-1 Hasta cant-1 Hacer
// busca el menor entre i y cant
pos_menor<-i;
Para j<-i+1 Hasta cant Hacer
Si lista[j]<lista[pos_menor] Entonces
pos_menor<-j;
FinSi
FinPara
Proceso Promedio
acum<-0;
prom<-acum/n;
Proceso Escribir_nombre
Escribir "Programa para saludar"; //muestra en pantalla:
"Progr...saludar"
Escribir "Escribe tu nombre"; //instrucción
Leer a; //ingresa por teclado un texto
Escribir "Hola! Tu nombre es: ", " ****", a, "****"; //muestra un saludo
con el nombre escrito
FinProceso //fin del proceso
30
//Algoritmo para sumar dos números enteros 'a' y 'b' desarrollado por RPC
Proceso repetir_nombre
Escribir "Ingresa tu nombre"; //muestra en teclado: ingresa ti nombre
leer nombre; //leer/ingresar por teclado el nombre
Para i<-1 Hasta 5 Con Paso 1 Hacer //para: use la opción del menú
de la derecha
Escribir " " , nombre; // escribe el nombre 5 veces, las comillas
le dan espacio
FinPara //fin del comando "Para"
FinProceso //fin del proceso
Proceso sin_titulo
escribir "Digita un numero"; //Muestra en pantalla la instrucción
leer a; //ingresa la variable 'a' (número menor a 10)
Para a<-a+1 Hasta 10 Con Paso 1 Hacer //Comando Para: está al
final derecha de este IDE
escribir " ", a; //El espacio entre comillas ("") solo ajusta el
texto debajo de la variable ingresada
FinPara //Fin del comando Para
FinProceso //Fin del proceso
Proceso suma_n_numeros
33
Proceso sumar_numero
Repetir
34
a<-a
tot<-tot
tot<-Tot+a;
Escribir "Ingrese un número (0 para salir)";
Leer a;
Hasta Que a = 0
Escribir "Total: ",tot;
FinProceso
Proceso numero_entre_0_10
Escribir "Ingresa un numero";
35
Leer a;
Segun a Hacer
0,1,2,3: Escribir "Correcto!!! ", a, " está en el rango de 0 a 10";
6,5,4: Escribir "Correcto!!! ", a, " está en el rango de 0 a 10";
10,9,8,7: Escribir "Correcto!!! ", a, " está en el rango de 0 a
10";
De Otro Modo:
Escribir "Error...", a, " es mayor que 10...Debes escribir
un numero del 0 al 10";
FinSegun
FinProceso
36
Proceso calculadora
escribir "Que quieres hacer?";
escribir "1: Sumar";
escribir "2: Restar";
escribir "3: Multiplicar";
escribir "4: Dividir";
leer a;
Si a=1 Entonces
escribir "digita un valor";
leer b;
escribir "digita un segundo valor:";
leer c
d<-b+c;
escribir " La Suma de ", b, " + ", c, " = ", d
Sino
Si a=2 Entonces
escribir "digita tu valor";
leer b;
escribir "digita tu segundo valor:";
leer c
d<-b-c;
escribir " La Resta de " , b, " - ", c, " = ", d
Sino
Si a=3 Entonces
escribir "digita tu valor";
leer b;
escribir "digita tu segundo valor:";
leer c
d<-b*c;
Sino escribir " La Multiplicación de " , b, " * ", c," = " , d
Si a=4 Entonces
escribir "digita tu valor";
leer b;
escribir "digita tu segundo valor:";
leer c
Sino d<-b/c;
FinSi escribir " La División de " , b, " / ", c, " = ", d
FinSi
37
FinSi
FinSi
FinProceso
38
9. Restar a de b
//Algoritmo que determina el mayor de dos números 'a' y 'b'. Desarrollado por RPC
Proceso cálculo_mental_sumas
Escribir "Cálculo mental de dos números: le ganas a una máquina?";
Escribir "Ingresar un numero A";
Leer A;
Escribir "Ingresar un numero B";
Leer B;
Escribir "Piensa: La Suma A + B = ?";
Leer Piensa; //Piensa es la variable (pensada) por el usuario
Suma <- A + B; // Función Suma
Si piensa = Suma Entonces
Escribir "Correcto!!!...Eres bueno/a en sumar"
Sino
Escribir "Error...Necesitas estudiar!!!"
FinSi
FinProceso
44
45
//Algortimo para calcular el tiempo transcurrido entre dos horas H-1 y H-2.
Desarrollado por RPC
Proceso Calcular_tiempo_dos_horas
Escribir "Programa para clacular el Tiempo transcurrido entre dos
horas";
Escribir "Hora-1 (h1, m1)"; //H-1 expresado en Horas:minutos
Leer h1; //introduce h1 por teclado
Leer m1; //introduce m1 por teclado
Escribir "Hora-2 (h2, m2)";
Leer h2;
Leer m2;
dh<-(h2-h1); //operador diferencia_horas
dm<-(m2-m1); //operador diferencia_minutos
Si dh<0 Entonces //si dh es negativo (<0) volver positivo
dh<-(-1*dh) // multiplicar por -1
Sino
dh<-dh // dh>0 positivo, no se 'hace ninguna operación'
FinSi
Escribir "La El tiempo trascurrido entre H-1 y H-2 es: ", dh, " horas ",
dm, " minutos ";
FinProceso
46
47
Proceso Salario
Escribir "Ingresar horas trabajadas por semana":
Leer HT; //ingresa por teclado las horas_trabajadas_semana
Escribir "Ingresar el salario Bs/hora";
Leer SH; //ingresa por teclado el salario Bs/hora
Salario<-HT*SH; //operador
Escribir "El Salario Semanal ganado es: ", " ", Salario, " Bs";
FinProceso
48
Proceso Promedio
Escribir "Ingrese la cantidad de datos";
Leer N;
acum<-0;
prom<-acum/N
FinProceso
49
50
Aplicando TDD
You can’t write any production code until you have first written a failing unit
test.
You can’t write more of a unit test than is sufficient to fail, and not compiling
is failing.
You can’t write more production code than is sufficient to pass the currently
failing unit test.
expect(suma(1,2)).toEqual(3);
function suma(a,b) {return 3}
Una vez lo tenemos en verde pasamos a la fase de Refactor, en este caso vamos
a quitar duplicación. La duplicación en este caso no es de código sino de datos,
tenemos datos repetidos que a simple vista no se ve, se verá mejor con este
pequeño cambio:
expect(suma(1,2)).toEqual(3);
function suma(a,b) {return 1+2}
Realmente hemos puesto devuelto un 3 pero lo que queríamos hacer es 1+2, que
son los mismos números que hemos pasado como parametros a nuestra función,
ahora vemos la duplicación mas clara, vamos a quitarla:
expect(suma(1,2)).toEqual(3);
function suma(a,b) {return a+b}
Done! Mas adelante explicaremos como sacar la misma implementación con una
técnica algo mas conservadora.
2. Obvious Implementation
En sí la técnica se basa en picar la implementación que nosotros creemos saber y
confirmarla lo mas rápido posible. Esto suele llevar a picar menos test, lo cual de
primeras puedes pensar que es positivo ya que vas mas rápido pero no lo es tanto
cuando piensas que en la fase de Refactor, si no tienes testeado todas las
especificaciones del SUT, puedes romper algo sin enterarte.
52
expect(suma(1,2)).toEqual(3);
function suma(a,b) {return a+b}
3. Triangulate
Como dice Kent Beck en su libro TDD By Example, triangular es la técnica mas
conservadora para conseguir la implementación que buscamos y no le falta razón.
De primeras es lo mismo que Fake It, escribimos un test y lo ponemos en verde
devolviendo una constante. Lo siguiente sería hacer el refactor pero no lo vamos
hacer ahora, teniendo nuestro test en verde, lo que vamos a hacer es escribir otro
test que lo ponga rojo:
Ejemplo:
expect(suma(1,2)).toEqual(3);
expect(suma(3,4)).toEqual(7);
function suma(a,b) {return 3}
extra porque una de dos: o tienes experiencia con TDD o no la tienes. Si tienes
experiencia, directamente te va a salir escribir tests y si no la tienes, prácticar es la
única manera de llegar a entender bien TDD. Puedes leer mucho y pensar muy
bien sobre TDD pero la experiencia es lo único que te hará diferente a los demás.
Bueno, desde el aspecto de la codificación limpia, su estructura de datos debe tener solo
propiedades privadas con captadores y definidores públicos y sin lógica comercial. Por otro
lado, los objetos deben tener solo lógica comercial con conexión a estructuras de datos sobre
abstracciones.
package az.alizeynalli.cleancode.objectanddatastructures
}
// Use this kind of abstract Objects with implementation that is unknwon
to user of this data
interface User {
String getName();
String getRole();
void setName(String name);
void setRole(String role);
}
GUIA SCRUM
Se trata de una metodología de trabajo ágil que tiene varios objetivos, por ejemplo:
Acelerar los procesos para satisfacer al cliente. Actuar con rapidez ante los posibles
cambios. Realizar entregas periódicas del trabajo
Las tareas del sprint no son asignadas po r parte del Scrum master, sino
que los miembros del equipo toman la iniciativa de la forma que creen
más apropiada, según sus conocimientos de la aplicación o sus
habilidades. En este momento ya podemos rellenar nuestra Scrum board.
57
GUIA KANBAN
Ventajas de Kanban
Generación de valor. ...
59
GUIA MOBILE D
WEB PROGRESIVA
64
65
66
GUIA REFACTORING
¿Qué es refactoring en Scrum?
La refactorización de código de software podría describirse como la modificación
del código fuente sin que cambie el comportamiento del mismo. (Limpiar el
código), Ayuda a mejorar la consistencia interna y la calidad, también permite
mejorar la facilidad de comprensión del código para facilitar el mantenimiento
futuro
Los cambios se deben ir realizando poco a poco, y por cada cambio hay que pasar
los tests para ver que no se ha roto su implementación. Esto es clave, ya que es la
única manera de que este proceso sea predecible y sea seguro.
67
68