viernes, 30 de septiembre de 2022

JPA


JPA (JAVA PERSISTENCE API)

Persistencia: La persistencia es el mecanismo que se usa para mantener la información almacenada.

JPA Es un ORM, tiene como objetivo lograr la persistencia de datos entre una aplicación desarrollada en Java y una base de datos 

JPA busca traducir el modelado de las clases de Java a un modelado relacional en la base de datos permitiendo al programador elegir que clases u objetos quiere persistir

jueves, 29 de septiembre de 2022

Ejercicios Java con CHAR Y STRING


Ejercicios Java con CHAR Y STRING

1. Realizar un programa que pida al usuario una frase y una letra a buscar en esa frase.
La funcion debe devolver la cantidad de veces que encontró la letra.

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    System.out.print("Ingresa una frase: ");
    String frase = sc.nextLine();
    System.out.print("Ingresa una letra a buscar: ");
    char letra = sc.next().charAt(0);

    int c = 0;
    for (int i = 0; i < frase.length(); i++) {
      if (frase.charAt(i) == letra) {
        c++;
      }
    }
    System.out.println("cantidad de veces de la letra " + letra + ": " + c);
  }

2. Realizar un programa que pida al usuario ingresar una cadena hasta que el usuario escriba una cadena vacia o un espacio en blanco. Muestre la concatenacion de todas las cadenas.

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();
    String cadena = "";

    System.out.print("Ingrese una cadena: ");
    cadena = sc.nextLine();

    while (!cadena.equals("") && !cadena.equals(" ")) {
      sb.append(cadena);//concat+=cadena;
      System.out.print("Ingrese una cadena: ");
      cadena = sc.nextLine();
    }
    String result = sb.toString();
    System.out.println(result);
  }

3. Se tiene la siguiente cadena de texto: "Hola mundo desde JAVA"
Realizar un programa que Elimine los espacios en blanco de la cadena de texto y luego muestre el resultado final en pantalla.

public static void main(String[] args) {
    String cadena = "Hola mundo desde JAVA";
    StringBuilder sb = new StringBuilder(cadena);

    for (int i = 0; i < sb.length(); i++) {
      if (sb.charAt(i) == '\u0020' || sb.charAt(i) == '\n') {
        sb.deleteCharAt(i);
        i--;
      }
    }
    System.out.println(sb.toString());
  }

Otra Altenativa usando Expresiones Regulares
String cadena = "Hola mundo desde JAVA";
    cadena = cadena.replaceAll("\\s+", "");
    System.out.println(cadena);

4. Realizar un programa que pida al usuario ingresar un año por teclado e indicar si es bisiesto o no.

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Ingrese el año a evaluar: ");
    int year = sc.nextInt();
    if ((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)) {
      System.out.println(year + " ES UN AÑO BISIESTO");
    } else {
      System.out.println(year + " NO ES UN AÑO BISIESTO");
    }
  }

5. Generar 10 números entre 1 y 10
//int numAleatorio =  (int) (Math.random() * (max - min + 1)) + min;

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int aleatorio = 0;
    int min = 1;
    int max = 10;
    for (int i = 0; i < 10; i++) {
      aleatorio = (int) (Math.random() * max + min);
      System.out.println(aleatorio);
    }
  }

6. Realizar un programa que pida ingresar una frase e indicar si es o no es palíndromo.

public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  System.out.print("Ingrese una frase: ");
  String cadena = sc.nextLine();
  cadena = cadena.replaceAll("\\s+", "");
  StringBuilder sb = new StringBuilder();

  for (int i = cadena.length() - 1; i >= 0; i--) {
    sb.append(cadena.charAt(i));
  }

  if (cadena.equals(sb.toString())) {
    System.out.println("ES PALINDROMO");
  } else {
    System.out.println("NO ES PALINDROMO");
  }
}

miércoles, 28 de septiembre de 2022

Scanner en Java



Scanner en Java
===============

Esta clase la que nos permitirá ingresar datos por teclado.

Scanner es la mejor clase para recibir información a través del teclado y nos permite capturar datos primitivos tipo int, double, string y varios más, que han sido introducidos por el usuario.

next() → Lee un String hasta encontrar un delimitador, generalmente un espacio.
nextBoolean() → Lee valores booleanos.
nextByte() → Lee valores byte que ingresan por teclado.
nextDouble() → Lee valores decimales (double) introducidos por el usuario.
nextFloat() → Recibe los valores float, que ingresan.
nextShort() → Lee un dato de tipo short.
nextInt() → Para leer datos del tipo entero.
nextLong() → Para leer un dato del tipo long.
nextLine() → Lee un String hasta encontrar un salto de línea.
close() → Cierra la clase Scanner luego de utilizada


El buffer de entrada de datos de la clase Scanner
-----------------------------------------------------------------
Un buffer, recibe los datos del usuario. El buffer recibirá por un lado el dato enviado y por otro la pulsación del ENTER en un código Ascii.

Ejemplo:

public class Ejemplo {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Ingresa tu edad: ");
    int edad = sc.nextInt();
    System.out.print("Ingresa tu nombre: ");
    String nombre = sc.nextLine();
    System.out.println("El nombre es " + nombre + " la edad es " + edad);
  }
}
Resultado:  Ingresa tu edad: 20
                    Ingresa tu nombre: 
                    El nombre es  la edad es 20

El buffer de la clase scanner almacena el dato ingresado y el salto de línea(string).
El nextInt extrae del buffer y toma el dato entero y lo asigna en la variable edad (int), en el buffer queda guardado el intro. el buffer tiene que estar vacío para poder recibir nuevos datos.
El nextLine extrae del buffer toma todo los caracteres hasta antes de llegar al intro y elimina el intro del buffer, por lo tanto solo se asigna una cadena vacía a la variable nombre(String).

Solución:
Se debe limpiar el buffer de entrada si se van a leer datos de tipo carácter a > continuación de la lectura de datos numéricos.
La forma más sencilla de limpiar el buffer de entrada en Java es ejecutar la instrucción:
sc.nextLine();

lunes, 26 de septiembre de 2022

CONFIGURACION VISUAL STUDIO CODE



{
"editor.fontSize": 17,
"editor.fontFamily": "Hasklig, Mononoki Nerd Font, Consolas, 'Courier New', monospace",
"editor.letterSpacing": 0.3,
"editor.parameterHints.enabled": false,
// "editor.lineHeight": 0,
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.detectIndentation": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.folding": true,
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.formatOnType": true,
"editor.suggestSelection": "recentlyUsedByPrefix",
"editor.suggest.preview": true,
"editor.wordWrap": "on",
"editor.smoothScrolling": true,
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.linkedEditing": true,
"editor.cursorBlinking": "smooth",
"editor.renderWhitespace": "selection",
"extensions.ignoreRecommendations": true,
"editor.fontLigatures": true,
"workbench.list.smoothScrolling": true,
"files.trimFinalNewlines": true,
"files.insertFinalNewline": false,
"files.trimTrailingWhitespace": true,
"workbench.startupEditor": "none",
"workbench.settings.editor": "json",
"workbench.editor.wrapTabs": true,
"window.titleBarStyle": "custom",
"workbench.iconTheme": "material-icon-theme",
"workbench.sideBar.location": "right",
"workbench.activityBar.visible": false,
"window.restoreWindows": "none",
"git.ignoreMissingGitWarning": true,
"terminal.integrated.profiles.windows": {
"PowerShell": { "path": "C:\\Program Files\\PowerShell\\7\\pwsh.exe" }
},
"terminal.integrated.fontFamily": "Hack Nerd Font Mono",
"terminal.integrated.defaultProfile.windows": "PowerShell",
"terminal.integrated.fontSize": 17,
// "files.autoSave": "onFocusChange",
"explorer.autoReveal": false,
"explorer.sortOrder": "type",
"explorer.openEditors.visible": 0,
"editor.occurrencesHighlight": false,
//"editor.glyphMargin": false,
//"editor.renderWhitespace": "all",
"workbench.editor.enablePreview": false,
"comment-divider.mainHeaderFiller": "=",
"prettier.tabWidth": 2,
"prettier.useTabs": false,
"prettier.htmlWhitespaceSensitivity": "ignore",
// "prettier.printWidth": 120,
"prettier.bracketSpacing": true,
// "prettier.semi": true,
//"editor.rulers": [120],
"php.suggest.basic": false,
"php.executablePath": "C:\\laragon\\bin\\php\\php-8.1.7-Win32-vs16-x64\\php.exe",
"intelephense.format.braces": "k&r",
"workbench.tree.indent": 17,
"html.autoClosingTags": true,
"css.validate": true,
"scss.validate": true,
"less.validate": true,
"javascript.validate.enable": false,
"eslint.enable": true,
"eslint.validate": ["javascript"],
"eslint.alwaysShowStatus": true,
"material-icon-theme.folders.color": "#DDB686",
"workbench.colorTheme": "Palenight Italic",
"editor.inlineSuggest.enabled": true,
"blade.format.enable": true,

"workbench.colorCustomizations": {
"titleBar.activeBackground": "#2D2D2D",
"editor.background": "#1D1D1D",
"activityBar.background": "#0F0F1A",
"activityBar.border": "#3F3F46",
"sideBar.background": "#252526",
"sideBar.border": "#434343",
"sideBar.foreground": "#DFDFDF",
"sideBarSectionHeader.background": "#37373D",
"activityBar.foreground": "#a9ebff",
"activityBar.inactiveForeground": "#6B7A83",
// "activityBar.activeBackground": "#ccda14",
"activityBarBadge.background": "#00e6cb",
"activityBarBadge.foreground": "#000000",
"list.activeSelectionBackground": "#7144BB",
"list.inactiveSelectionBackground": "#5f3b9e",
"editorIndentGuide.activeBackground": "#8BD0FE",
"editorIndentGuide.background": "#1E292F",
"list.inactiveSelectionForeground": "#fff",
"tab.activeBorder": "#52DCFF",
"tab.inactiveBackground": "#252526",
"tab.activeBackground": "#1F4061",
"tab.inactiveForeground": "#888888",
"editorGroupHeader.tabsBackground": "#252526",
"editorCursor.foreground": "#FFCC00",
// "editor.wordHighlightBackground": "#39f00b",
"editor.wordHighlightBackground": "#1e1e1e00",
"panel.border": "#007ACC",
"statusBar.background": "#4A1757",
"editor.lineHighlightBackground": "#1D1D1D",
"editor.lineHighlightBorder": "#696969",
"editorLineNumber.activeForeground": "#FFF",
"editorLineNumber.foreground": "#7D7D7D",
"editor.selectionBackground": "#264F78",
"editorBracketMatch.background": "#464646",
"editorBracketMatch.border": "#1E1E1E",
"scrollbarSlider.hoverBackground": "#4F4F4F",
"scrollbarSlider.background": "#4F4F4F",
"scrollbarSlider.activeBackground": "#343C40",
"editor.findMatchHighlightBackground": "#8f1527",
//"editor.findMatchHighlightBackground": "#4D78CC",
"editor.findMatchBackground": "#4D78CC",
"list.hoverBackground": "#343C40",
"list.focusBackground": "#1B67A5",
"pickerGroup.foreground": "#00F4D6",
"editorWidget.resizeBorder": "#6ffd62",
// "editorWidget.background": "#262930",
//"editor.findMatchHighlightBorder": "#00ff22",
"input.border": "#0086DF",
"input.background": "#272727",
"selection.background": "#0082D9",
"editorHoverWidget.border": "#7E57C2",
"editorSuggestWidget.selectedBackground": "#2E64C8",
"editorSuggestWidget.foreground": "#e7e5e5",
"editorSuggestWidget.focusHighlightForeground": "#00FFFF",
// "terminal.background": "#ff0000",
"panel.background": "#1E1E1E"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},

"[php]": {
"editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
"editor.formatOnSave": true,
"editor.formatOnPaste": true
},

"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.tabSize": 2,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
}

},

"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.tabSize": 2
},

"emmet.includeLanguages": {
"javascript": "html",
"php": "html"
},

"editor.tokenColorCustomizations": {
"[Palenight Italic]": {
"comments": "#8B9398",
// "functions": "#9BBCFF",
// "strings": "#FF0000",
"textMateRules": [
{
"scope": ["punctuation.section.embedded"],
"settings": {
"foreground": "#EE8CF0"
}
},
{
"scope": ["keyword.control"],
"settings": {
"fontStyle": "italic"
}
},
{
"scope": ["punctuation.definition.variable.php"],
"settings": {
"foreground": "#07E8C1"
}
},
{
"scope": ["variable.other.php"],
"settings": {
"foreground": "#07E8C1"
}
},
{
"scope": ["variable.other.env"],
"settings": {
"foreground": "#E48596"
}
}
]
}
},

"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.fixAll.stylelint": true
},

"files.associations": {
"*.json": "jsonc"
},

"[blade]": {
"editor.defaultFormatter": "shufo.vscode-blade-formatter"
},

"security.workspace.trust.untrustedFiles": "open",
"files.autoSave": "afterDelay",
"window.menuBarVisibility": "compact"
}

domingo, 25 de septiembre de 2022

LinQ Expresiones lambda C#


Ejercicios Expresiones Lambda con LinQ C#
==================================

1. Se tiene una lista de objetos de tipo Empleado, crear la clase Empleado con las siguientes          propiedades: IdEmpleado, Nombre.

List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro"},
                new Empleado {IdEmpleado=2, Nombre="Maria"},
                new Empleado {IdEmpleado=3, Nombre="Luis"},
                new Empleado {IdEmpleado=4, Nombre="Andrea"},
            };

Mostrar los nombres de los empleados

Solución:

               var consulta = listaEmpleado.Select(e => e.Nombre);

               foreach (var c in consulta)
                      Console.WriteLine(c);

2. Se tiene una lista de alumnos, donde tiene 2 propiedades el IdAlumno y el CursoFavorito.
    Listar solo los cursos favoritos de los alumnos.
            List<Alumno> listaAlumno = new List<Alumno>
            {
                new Alumno {IdAlumno=1, CursoFavorito="Algebra"},
                new Alumno {IdAlumno=2, CursoFavorito="Geometria"},
                new Alumno {IdAlumno=3, CursoFavorito="Trigonometria"},
                new Alumno {IdAlumno=4, CursoFavorito="Geografia"},
new Alumno {IdAlumno=5, CursoFavorito="Aritmetica"}
            };

Solución:

              var consulta = listaAlumno.Select(a => a.CursoFavorito);

                 foreach (var c in consulta)
                        Console.WriteLine(c);

3. Se tiene una lista de empleados, donde tiene 3 propiedades el IdEmpleado, Nombre y el IdModalidad.

            List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro", IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Maria", IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis", IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Andrea", IdModalidad=3}
            };

Obtener una lista con los nombres de los empleados cuya IdModalidad es igual a 1.

Solución:

     var consulta = listaEmpleado.Where(e => e.IdModalidad == 1).Select(e => e.Nombre);
        foreach (var c in consulta)
               Console.WriteLine(c);

4. Se tiene una lista de empleados, donde tiene 3 propiedades el IdEmpleado, Nombre y el IdModalidad.

            List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro", IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Maria", IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis", IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Andrea", IdModalidad=3}
            };

Listar el nombre del empleado y el IdModalidad, ordenado ascendentemente por el nombre.

Solución:

            var consulta = listaEmpleado.OrderBy(e => e.Nombre).Select(e => new
            {
                NombreEmpleado = e.Nombre,
                IdModalidad = e.IdModalidad
            });

            foreach (var c in consulta)
                System.Console.WriteLine(c.NombreEmpleado + " " + c.IdModalidad);
            


LINQ INNER JOIN


LINQ INNER JOIN

1. Dadas las siguientes 2 listas de objetos, Crear la clase Empleado con las siguientes propiedades:
    IdEmpleado, Nombre y el IdModalidad
    Crear la clase Modalidad Contrato con las siguientes propiedades:
    IdModalidad y el NombreModalidad.
             List<Empleado> listaEmpleado = new List<Empleado>
            {
                new Empleado {IdEmpleado=1, Nombre="Pedro",IdModalidad=1},
                new Empleado {IdEmpleado=2, Nombre="Jorge",IdModalidad=2},
                new Empleado {IdEmpleado=3, Nombre="Luis",IdModalidad=1},
                new Empleado {IdEmpleado=4, Nombre="Julio",IdModalidad=3},
            };

            List<ModalidadContrato> listaModalidad = new List<ModalidadContrato>
            {
                new ModalidadContrato {IdModalidad=1, NombreModalidad="CAS"},
                new ModalidadContrato {IdModalidad=2, NombreModalidad="TEMPORAL"},
                new ModalidadContrato {IdModalidad=3, NombreModalidad="INDEFINIDO"}
            };

Mediante una consulta linq Imprimir el siguiente resultado:
El empleado ____(nombre empleado) es ____(nombre modalidad). 

Solución:

            var consulta = from m in listaModalidad
                                      join e in listaEmpleado on m.IdModalidad equals e.IdModalidad
                                      orderby e.IdEmpleado
                                      select new
                                      {
                                          NombreEmpleado = e.Nombre,
                                          NombreModalidad = m.NombreModalidad
                                       };

            foreach (var c in consulta)
                Console.WriteLine("El empleado " + c.NombreEmpleado + " es " + c.NombreModalidad);

2.  Dadas las siguientes 3 listas de objetos, Crear la clase Categoria con las siguientes propiedades:
     IdCategoria, NombreCategoria.
     Crear la clase Proveedor con las siguientes propiedades:
     IdProveedor, Nombre.
     Crear la clase Producto con las siguientes propiedades:
     IdProducto, Nombre, IdCategoria y el IdProveedor.

             List<Categoria> listaCategoria = new List<Categoria>
            {
                new Categoria{IdCategoria=1 , NombreCategoria="Fruta"},
                new Categoria {IdCategoria=2 ,NombreCategoria="Verdura"}
            };
            List<Proveedor> listaProveedor = new List<Proveedor>
            {
                new Proveedor{IdProveedor=1 , Nombre="ABC"},
                new Proveedor {IdProveedor=2 , Nombre="XYZ"}
            };
            List<Producto> listaProducto = new List<Producto>
            {
                new Producto{IdProducto=1 , Nombre="Fresa" , IdCategoria=1 , IdProveedor=2},
                new Producto {IdProducto=2 , Nombre="Tomate" , IdCategoria=1 , IdProveedor=2}
            };

Mediante una consulta linq Imprimir el siguiente resultado:
El producto es ____(nombre producto) su categoria es ____(nombre categoria) y su proveedor es ____(nombre proveedor). 

Solucion:

         var consulta = from cat in listaCategoria
                                  join prod in listaProducto on cat.IdCategoria equals prod.IdCategoria
                                  join prov in listaProveedor on prod.IdProveedor equals prov.IdProveedor
                                 select new
                                 {
                                    NombreProducto = prod.Nombre,
                                    NombreCategoria = cat.NombreCategoria,
                                    NombreProveedor = prov.Nombre
                                 };

            foreach (var c in consulta)
                Console.WriteLine("El producto es " + c.NombreProducto + " su categoria es " + c.NombreCategoria + " su proveedor es " + c.NombreProveedor);

3. Dadas las siguientes 3 listas de objetos, Crear la clase Empleado con las siguientes propiedades:
    IdEmpleado, Nombre, IdModalidad y el IdSexo
    Crear la clase Modalidad Contrato con las siguientes propiedades:
    IdModalidad y el NombreModalidad.
    Crear la clase Sexo con las siguientes propiedades:
    IdSexo y el NombreSexo.

            List<Sexo> listaSexo = new List<Sexo>
            {
                new Sexo {IdSexo=1, NombreSexo="Masculino"},
                new Sexo {IdSexo=2, NombreSexo="Femenino"}
            };

            List<Empleado> listaEmpleado = new List<Empleado>
            {    
                new Empleado {IdEmpleado=1, Nombre="Pedro",IdModalidad=1, IdSexo=1},
                new Empleado {IdEmpleado=2, Nombre="Maria",IdModalidad=2, IdSexo=2},
                new Empleado {IdEmpleado=3, Nombre="Luis",IdModalidad=1, IdSexo=1},
                new Empleado {IdEmpleado=4, Nombre="Andrea",IdModalidad=3, IdSexo=2},
            };

            List<ModalidadContrato> listaModalidad = new List<ModalidadContrato>
            {
            new ModalidadContrato {IdModalidad=1, NombreModalidad="CAS"},
            new ModalidadContrato {IdModalidad=2, NombreModalidad="TEMPORAL"},
            new ModalidadContrato {IdModalidad=3, NombreModalidad="INDEFINIDO"}
            };

Mediante una consulta linq Imprimir el siguiente resultado:
Mostrar el nombre del empleado, el sexo y el nombre de la modalidad.

Solución:

    var consulta = from s in listaSexo
                             join e in listaEmpleado on s.IdSexo equals e.IdSexo
                             join m in listaModalidad on e.IdModalidad equals m.IdModalidad
                             select new
                             {
                                NombreEmpleado = e.Nombre,
                                SexoEmpleado = s.NombreSexo,
                                NombreModalidad = m.NombreModalidad
                             };

            foreach (var c in consulta)
                Console.WriteLine(c.NombreEmpleado + " " + c.SexoEmpleado + " " + c.NombreModalidad);

sábado, 24 de septiembre de 2022

SQL INNER JOIN

 

SQL INNER JOIN



Presentar una lista de productos, mostrando:
  Codigo del producto, 
  Nombre del producto, 
  Descripcion, el precio, el Stock. 
  Categoria del producto El codigo, el nombre y la descripcion.

SELECT
   p.idProduct,
   p.name,
   p.description,
   p.price,
   p.stock
   c.idCategory,
   c.name,
   c.description,
FROM Category c
INNER JOIN Product p 
ON c.idCategory = p.idCategory
GO



-------------------------------------------------------------------------------
ALTER TABLE Category
ADD CONSTRAINT UQ_Category_name
UNIQUE (name)
GO

ALTER TABLE Category 
ADD CONSTRAINT DF_Category_enabled 
DEFAULT 1 FOR enabled
go

ALTER TABLE Product
ADD CONSTRAINT UQ_Product_name
UNIQUE (name)
go

ALTER TABLE Product 
ADD CONSTRAINT DF_Product_enabled 
DEFAULT 1 FOR enabled
go


viernes, 23 de septiembre de 2022

Ejercicios LINQ

Ejercicios LINQ

1. Se tiene un array de numeros:
      int[] numeros = {21,56,18,100,12};


Filtrar solo aquellos que son menores a 90

Solución:

int[] numeros = { 21, 56, 18, 100, 12 };

var consulta = from n in numeros
                        where n < 90
                        select n;

foreach (var numero in consulta)
{
Console.WriteLine(numero);
}


2. Se tiene un array de numeros:
       int[] numeros = {11,15,17,19,14,18};

Filtrar solo aquellos que son mayores a 12 pero menores a 17

Solución:

int[] numeros = { 11, 15, 17, 19, 14, 18 };

var consulta = from n in numeros
                       where n > 12 && n < 17
                       select n;

foreach (var numero in consulta)
{
Console.WriteLine(numero);
}

3. Dado el siguiente arreglo:
      string[] colors = { "green", "brown", "blue", "red" };

a) Obtener todos los elementos que contengan la letra "r".
c) Obtener la cantidad de elementos que empiezan con la letra "r"
b) Ordenar de forma descendente

Solución:

a)
string[] colors = { "green", "brown", "blue", "red" };

var consulta = from c in colors
                         where c.Contains("r")
                         select c;

foreach (var color in consulta)
{
Console.WriteLine(color);
}

b)
string[] colors = { "green", "brown", "blue", "red" };

            var consulta = from c in colors
                                     where c.StartsWith("r")
                                     select c;
            Console.WriteLine(consulta.Count());

c)
string[] colors = { "green", "brown", "blue", "red" };

var consulta = from c in colors
                       orderby c descending
                       select c;

foreach (var color in consulta)
{
Console.WriteLine(color);
}

4. Se tiene el siguiente array de números , 
        int[] numeros = { 17, 14, 24, 27, 30, 29 };

a) Mostrar aquellos que son menores a 28 y ordenarlos ascendentemente.
b) Dado el resultado de la pregunta anterior, Obtener el numero de elementos
c) Dado el resultado de la pregunta anterior, Obtener el valor maximo
d) Dado el resultado de la pregunta anterior, Obtener el promedio

Solución:
a)
            int[] numeros = { 17, 14, 24, 27, 30, 29 };

            var consulta = from n in numeros
                                     where n < 28
                                     orderby n
                                     select n;

            foreach (var numero in consulta)
            {
                Console.WriteLine(numero);
            }
b)   Console.WriteLine(consulta.Count());
c)    Console.WriteLine(consulta.Max());
d)    Console.WriteLine(consulta.Average());


5. Se tiene una lista de objetos de tipo Alumno, crear la clase Alumno con las siguientes propiedades: Nombre completo y Notas.
              List<Alumno> alumnos = new List<Alumno>
               {
                new Alumno{NombreCompleto="Felipe Melo", Notas=new List<int>{14,10,20,14,9} },
                new Alumno{NombreCompleto="Gerardo Martino", Notas=new List<int>{20,3,5,6,7}},
                new Alumno{NombreCompleto="Luis perez", Notas=new List<int>{14,10,20,14,9}},
                new Alumno{NombreCompleto="Javier Mendoza", Notas=new List<int>{11,6,1,8,13}},
               };

a) Obtener de la lista de alumnos el nombre completo y la primera nota.

Solución:
a)
            List<Alumno> alumnos = new List<Alumno>
            {
                new Alumno{NombreCompleto="Felipe Melo", Notas=new List<int>{14,10,20,14,9} },
                new Alumno{NombreCompleto="Gerardo Martino", Notas=new List<int>{20,3,5,6,7}},
                new Alumno{NombreCompleto="Luis perez", Notas=new List<int>{14,10,20,14,9}},
                new Alumno{NombreCompleto="Javier Mendoza", Notas=new List<int>{11,6,1,8,13}},
            };

            var consulta = from a in alumnos
                           select a.NombreCompleto + a.Notas[0];

            foreach (var alumno in consulta)
                Console.WriteLine(alumno);
        
6. Se tiene una lista lista de objetos de tipo Student, crear la clase Student con las siguientes propiedades: First, Last, id.
           List<Student> students = new List<Student>
            {
            new Student {First="Svetlana", Last="Ferguson", Id=111},
            new Student {First="Claire", Last="Stewart", Id=112},
            new Student {First="Sven", Last="Cameron", Id=113},
            new Student {First="Cesar", Last="Garcia", Id=114},
            new Student {First="Debra", Last="Hamilton", Id=115}
            };
a)  Crear una consulta LinQ e imprimir con el siguiente formato : Mi nombre es .... y mi apellido es ....... ,
   ordenar de forma ascendente por el campos last.

Solución:
a)
            List<Student> students = new List<Student>
            {
            new Student {First="Svetlana", Last="Ferguson", Id=111},
            new Student {First="Claire", Last="Stewart", Id=112},
            new Student {First="Sven", Last="Cameron", Id=113},
            new Student {First="Cesar", Last="Garcia", Id=114},
            new Student {First="Debra", Last="Hamilton", Id=115}
            };

            var consulta = from s in students
                           orderby s.Last ascending
                           select "Mi nombres es " + s.First + " Mi apellido es " + s.Last;

            foreach (var student in consulta)
                Console.WriteLine(student);

jueves, 22 de septiembre de 2022

Habilitar pestañas para el Explorador de archivos en Windows 11 compilación 22621.521


Habilitar pestañas para el Explorador de archivos en Windows 11 compilación 22621.521
=================================================================

Descargar ViveTool V0.3.1
https://github.com/thebookisclosed/ViVe/releases

Descomprimir carpeta y copiar los archivos en C:\Windows\System32
y ejecutar cmd como administrador
$> cd C:\FOLDER\PATH\ViveTool-v0.3.1

Ejecutar los siguientes comandos:
$> vivetool /enable /id:37634385
$> vivetool /enable /id:39145991
$> vivetool /enable /id:36354489

Finalmente Reinicie el equipo

miércoles, 21 de septiembre de 2022

Ejercicios Arreglos y Colecciones C#


Ejercicios Colecciones y Arreglos C#
-----------------------------------------------
1. Crear un programa que permita registrar la cantidad de estudiantes de un colegio. 
Por cada estudiante se ingresará sus nombres completos y 3 notas (nota 1, nota 2 y nota 3). calcular e imprimir lo siguiente:
El promedio de notas de cada alumno
Número de alumnos aprobados y reprobados.
Porcentaje de alumnos aprobados y reprobados.
Número de alumnos cuyo promedio es mayor o igual a 18.

Solucion:
static void Main(string[] args)
        {
            Console.Write("Ingrese la cantidad de alumnos: ");
            int cantidad = Convert.ToInt32(Console.ReadLine());

            string[] nombres = new string[cantidad];
            int[] notas1 = new int[cantidad];
            int[] notas2 = new int[cantidad];
            int[] notas3 = new int[cantidad];
            int[] sumaTotal = new int[cantidad];
            double[] promedio = new double[cantidad];
            int nAprobados = 0;
            int nReprobados = 0;
            int nPromedioMayor = 0;

            for (int i = 0; i < cantidad; i++)
            {
                Console.Write("Ingrese nombre: ");
                nombres[i] = Console.ReadLine();

                Console.Write("Ingrese nota 1: ");
                notas1[i] = Convert.ToInt32(Console.ReadLine());

                Console.Write("Ingrese nota 2: ");
                notas2[i] = Convert.ToInt32(Console.ReadLine());

                Console.Write("Ingrese nota 3: ");
                notas3[i] = Convert.ToInt32(Console.ReadLine());

                sumaTotal[i] = notas1[i] + notas2[i] + notas3[i];
            }


            for (int i = 0; i < cantidad; i++)
            {
                Console.WriteLine(nombres[i]);
                Console.WriteLine(notas1[i]);
                Console.WriteLine(notas2[i]);
                Console.WriteLine(notas3[i]);

                promedio[i] = sumaTotal[i] / 3;
                Console.WriteLine(promedio[i]);

                if (promedio[i] > 10)
                {
                    nAprobados++;
                }
                else
                {
                    nReprobados++;
                }

                if (promedio[i] >= 18)
                {
                    nPromedioMayor++;
                }
            }

            double porcA = (nAprobados * 100) / cantidad;
            double porcR = (nReprobados * 100) / cantidad;

            Console.WriteLine(nAprobados);
            Console.WriteLine(nReprobados);
            Console.WriteLine(nPromedioMayor);
            Console.WriteLine(porcA + "%");
            Console.WriteLine(porcR + "%");
        }

2. Construir un programa que registre los usuarios y permita hacer las siguientes acciones;
     Agregue Código de usuario, Nombres, Apellidos y Numero de cuenta 
     Elimine un usuario por Código o Número de cuenta.
     Modifique un usuario por Nombres y Apellidos
     Busque un usuario por Código o por la Cuenta de usuario
     Liste todos los usuarios.

Solución:
public class Program
    {
        static int indice = 0;
        static datosUsuario[] arrUsuarios = new datosUsuario[200];
        static void Main(string[] args)
        {
int opcion = 0;
            do
            {
                Console.WriteLine("\n----- Menu -----");
                Console.WriteLine("[1] INSERTAR");
                Console.WriteLine("[2] BUSCAR");
                Console.WriteLine("[3] ACTUALIZAR");
                Console.WriteLine("[4] ELIMINAR");
                Console.WriteLine("[5] LISTAR");
                Console.WriteLine("[6] SALIR");

                Console.Write("Ingresar una opcion: ");
                opcion = Convert.ToInt32(Console.ReadLine());

                switch (opcion)
                {
                    case 1:
                        insertar();
                        break;
                    case 2:
                        buscar();
                        break;
                    case 3:
                        actualizar();
                        break;
                    case 4:
                        eliminar();
                        break;
                    case 5:
                        listar();
                        break;
                    case 6:
                        break;
                }
            } while (opcion != 6);

        }

        private static void Insertar()
        {
            Console.Write("\nIngrese la cantidad de usuarios a registrar: ");
            int cantidad = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < cantidad; i++)
            {
                Console.WriteLine("\nUSUARIO " + (i + 1));
                Console.Write("Ingrese Codigo de usuario: ");
                arrUsuarios[indice].codigo = Console.ReadLine().Trim();

                Console.Write("Ingrese Nombres: ");
                arrUsuarios[indice].nombres = Console.ReadLine().Trim();

                Console.Write("Ingrese Apellidos: ");
                arrUsuarios[indice].apellidos = Console.ReadLine().Trim();

                Console.Write("Ingrese Numero de cuenta: ");
                arrUsuarios[indice].nroCuenta = Console.ReadLine().Trim();
                indice++;
            }
        }


        private static void Buscar()
        {
            Console.Write("Ingrese el codigo de usuario o el numero de la cuenta a buscar: ");
            string c = Console.ReadLine().Trim().ToUpper();

            for (int i = 0; i < indice; i++)
            {
                if (arrUsuarios[i].codigo.ToUpper().Equals(c) || arrUsuarios[i].nroCuenta.ToUpper().Equals(c))
                {
                    Console.WriteLine(arrUsuarios[i].codigo.ToUpper());
                    Console.WriteLine(arrUsuarios[i].nombres.ToUpper());
                    Console.WriteLine(arrUsuarios[i].apellidos.ToUpper());
                    Console.WriteLine(arrUsuarios[i].nroCuenta.ToUpper());
                    return;
                }
            }
            Console.WriteLine("No se encontró");
        }

  
        private static void Actualizar()
        {
            Console.Write("Ingrese el codigo de usuario o el numero de la cuenta para la modificacion: ");
            string c = Console.ReadLine().Trim().ToUpper();

            for (int i = 0; i < indice; i++)
            {
                if (arrUsuarios[i].codigo.ToUpper().Equals(c) || arrUsuarios[i].nroCuenta.ToUpper().Equals(c))
                {
                    Console.Write("Ingrese el nuevo nombre a modificar: ");
                    string nuevoNombres = Console.ReadLine().Trim().ToUpper();

                    Console.Write("Ingrese el nuevo apellido a modificar: ");
                    string nuevoApellidos = Console.ReadLine().Trim().ToUpper();

                    arrUsuarios[i].nombres = nuevoNombres;
                    arrUsuarios[i].apellidos = nuevoApellidos;

                    Console.WriteLine(arrUsuarios[i].codigo.ToUpper());
                    Console.WriteLine(arrUsuarios[i].nombres.ToUpper());
                    Console.WriteLine(arrUsuarios[i].apellidos.ToUpper());
                    Console.WriteLine(arrUsuarios[i].nroCuenta.ToUpper());
                    return;
                }
            }
            Console.WriteLine("No se encontró");
        }

        private static void Eliminar()
        {
            int pos = -1;
            Console.Write("Ingrese el codigo de usuario o el numero de la cuenta para la eliminacion: ");
            string c = Console.ReadLine().Trim().ToUpper();

            for (int i = 0; i < indice; i++)
            {
                if (arrUsuarios[i].codigo.ToUpper().Equals(c) || arrUsuarios[i].nroCuenta.ToUpper().Equals(c))
                {
                    pos = i;
                    break;
                }
            }

            if (pos != -1)
            {
                for (int j = pos; j < indice - 1; j++)
                {
                    arrUsuarios[j] = arrUsuarios[j + 1];
                }
                Console.WriteLine("Se elimino correctamente");
                indice--;
            }
            else
            {
                Console.WriteLine("No se encontró");
            }
        }

        private static void Listar()
        {
            for (int i = 0; i < indice; i++)
            {
                Console.WriteLine("\nCODIGO USUARIO:\t\t" + arrUsuarios[i].codigo.ToUpper());
                Console.WriteLine("NOMBRES:\t\t" + arrUsuarios[i].nombres.ToUpper());
                Console.WriteLine("APELLIDOS:\t\t" + arrUsuarios[i].apellidos.ToUpper());
                Console.WriteLine("NUMERO DE CUENTA:\t" + arrUsuarios[i].nroCuenta.ToUpper());
            }
        }

        //Estructura de Datos 
        public struct datosUsuario
        {
            public string codigo;
            public string nombres;
            public string apellidos;
            public string nroCuenta;
        }
    }


3. Construir un programa que registre los alumnos y permita hacer las siguientes acciones;
     Agregue un alumno por apellido 
     Elimine un alumno por apellido
     Modifique un alumno por apellido
     Ordene los alumnos por apellido y los liste
     Busque un alumno por apellido y muestre su posicion

Solucion:
static void Main(string[] args)
        {
            List<string> apellidos = new List<string>();
            int opcion = 0;
            string apellido = "";
            int indice = 0;

            do
            {
                Console.WriteLine("[1] AGREGAR");
                Console.WriteLine("[2] ELIMINAR");
                Console.WriteLine("[3] BUSCAR");
                Console.WriteLine("[4] MODIFICAR");
                Console.WriteLine("[5] ORDENAR");
                Console.WriteLine("[6] MOSTRAR");
                Console.WriteLine("[7] SALIR");

                Console.Write("Ingresar opcion: ");
                opcion = Convert.ToInt32(Console.ReadLine());

                switch (opcion)
                {
                    case 1:
                        Console.WriteLine("Ingrese el apellido");
                        apellido = Console.ReadLine();
                        apellidos.Add(apellido);
                        break;
                    case 2:
                        Console.WriteLine("Ingrese el apellido a eliminar");
                        apellido = Console.ReadLine();
                        indice = apellidos.IndexOf(apellido);
                        if (indice != -1)
                        {
                            apellidos.RemoveAt(indice);
                            Console.WriteLine("Se elimino correctamente");
                        }
                        else
                        {
                            Console.WriteLine("No se encontro");
                        }
                        break;
                    case 3:
                        Console.WriteLine("Ingrese el apellido a buscar");
                        apellido = Console.ReadLine();
                        indice = apellidos.IndexOf(apellido);
                        if (indice != -1)
                        {
                            Console.WriteLine("Se encuentra en la posicion: " + indice);
                        }
                        else
                        {
                            Console.WriteLine("No se encontro");
                        }
                        break;
                    case 4:
                        Console.WriteLine("Ingrese el apellido a modificar");
                        apellido = Console.ReadLine();
                        indice = apellidos.IndexOf(apellido);
                        if (indice != -1)
                        {
                            Console.Write("Ingrese el nuevo apellido: ");
                            apellido = Console.ReadLine();
                            apellidos.RemoveAt(indice);
                            apellidos.Insert(indice, apellido);
                        }
                        else
                        {
                            Console.WriteLine("No se encontro");
                        }
                        break;
                    case 5:
                        Console.Write("Ordenar en orden ascendente o descendente ");
                        string orden = Console.ReadLine();
                        if (orden.ToUpper().Equals("ASCENDENTE"))
                        {
                            apellidos.Sort();
                        }
                        else
                        {
                            apellidos.Reverse();
                        }
                        break;
                    case 6:
                        foreach (var ap in apellidos)
                        {
                            Console.WriteLine(ap);
                        }
                        break;
                    case 7:
                        break;
                }
            } while (opcion != 7);
        }

4. Debe realizar un programa que permita crear una Agenda de Contactos, donde
se pueda almacenar la siguiente información:
El Nombre y Apellidos del Contacto.
Teléfono móvil
Dirección de correo electrónico

El programa debe realizar las siguientes acciones:
[1] Insertar nuevo contacto
[2] Buscar contacto
[3] Modificar datos
[4] Eliminar contacto
[5] Listar Contactos
[6] Salir


Solución:

public class Contacto
    {
        public string Nombre { get; set; }
        public string Apellidos { get; set; }
        public string Telefono { get; set; }
        public string Email { get; set; }

        public Contacto(string nombre, string apellidos, string telefono, string email)
        {
            Nombre = nombre;
            Apellidos = apellidos;
            Telefono = telefono;
            Email = email;
        }
    }


public class Agenda
    {
        List<Contacto> contacts;

        public Agenda()
        {
            contacts = new List<Contacto>();
        }

        public void Agregar(Contacto c)
        {
            contacts.Add(c);
        }

        public void Eliminar(Contacto c)
        {
            contacts.Remove(c);
        }

        public Contacto Buscar(string nombre)
        {
            foreach (Contacto contact in contacts)
            {
                if (contact.Nombre.ToUpper().Equals(nombre.ToUpper()))
                {
                    return contact;
                }
            }
            return null;
        }

        public void Listar()
        {
            foreach (Contacto contact in contacts)
            {
                Console.WriteLine(contact.Nombre);
                Console.WriteLine(contact.Apellidos);
                Console.WriteLine(contact.Telefono);
                Console.WriteLine(contact.Email);
            }
        }
    }


internal class Program
    {
        static void Main(string[] args)
        {
            int opcion = 0;
            string nombre, apellidos, celular, email;
            Agenda a = new Agenda();

            do
            {
                Console.WriteLine("Menu Agenda");
                Console.WriteLine("[1] Insertar nuevo contacto");
                Console.WriteLine("[2] Buscar contacto");
                Console.WriteLine("[3] Modificar datos");
                Console.WriteLine("[4] Eliminar contacto");
                Console.WriteLine("[5] Listar Contactos");
                Console.WriteLine("[6] Salir");

                Console.Write("Ingrese opcion <1-6>: ");
                opcion = Convert.ToInt32(Console.ReadLine());
                switch (opcion)
                {
                    case 1:
                        Console.Write("Ingrese el nombre de contacto: ");
                        nombre = Console.ReadLine();
                        Console.Write("Ingrese los apellidos de contacto: ");
                        apellidos = Console.ReadLine();
                        Console.Write("Ingrese el numero de celular: ");
                        celular = Console.ReadLine();
                        Console.Write("Ingrese el correo: ");
                        email = Console.ReadLine();

                        Contacto c = new Contacto(nombre, apellidos, celular, email);
                        a.Agregar(c);
                        break;
                    case 2:
                        Console.Write("Ingrese el contacto a buscar: ");
                        nombre = Console.ReadLine();
                        Contacto x = a.Buscar(nombre);
                        if (x != null)
                        {
                            Console.WriteLine(x.Nombre);
                            Console.WriteLine(x.Apellidos);
                            Console.WriteLine(x.Telefono);
                            Console.WriteLine(x.Email);
                        }
                        else
                        {
                            Console.WriteLine("No existe el nombre de contacto");
                        }
                        break;
                    case 3:
                        Console.Write("Ingrese el contacto a modificar: ");
                        nombre = Console.ReadLine();
                        Contacto z = a.Buscar(nombre);
                        if (z != null)
                        {
                            Console.Write("Ingrese el nuevo nombre: ");
                            string name = Console.ReadLine();
                            z.Nombre = name;
                            Console.Write("Ingrese el nuevo apellido: ");
                            string ap = Console.ReadLine();
                            z.Apellidos = ap;
                            Console.Write("Ingrese el nuevo numero de celular: ");
                            string cel = Console.ReadLine();
                            z.Telefono = cel;
                            Console.Write("Ingrese el nuevo correo: ");
                            string correo = Console.ReadLine();
                            z.Email = correo;
                        }
                        else
                        {
                            Console.WriteLine("No existe el nombre de contacto");
                        }
                        break;
                    case 4:
                        Console.Write("Ingrese el contacto a eliminar: ");
                        nombre = Console.ReadLine();
                        Contacto y = a.Buscar(nombre);
                        if (y != null)
                        {
                            a.Eliminar(y);
                            Console.WriteLine("Eliminado");
                        }
                        else
                        {
                            Console.WriteLine("No existe el nombre de contacto");
                        }
                        break;
                    case 5:
                        a.Listar();
                        break;
                    case 6:
                        break;
                }
            } while (opcion != 6);
        }
    }








Instalar Powershell 7

Instalar Powershell Version 7 -------------------------------------- $> winget search powershell $> winget install Microsoft.Powershe...