├── .gitignore ├── langs ├── PHP │ ├── hello-world │ ├── methods │ ├── for-loop │ ├── arrays │ ├── vector │ ├── data-types │ ├── for-each-loop │ ├── input-output │ └── strings ├── Ruby │ ├── hello-world │ ├── arrays │ ├── for-loop │ ├── for-each-loop │ ├── data-types │ ├── input-output │ ├── treeset │ ├── vector │ └── strings ├── Julia │ ├── hello-world │ ├── arrays │ ├── input-output │ └── vector ├── Python │ ├── hello-world │ ├── arrays │ ├── for-each-loop │ ├── methods │ ├── input-output │ ├── vector │ ├── for-loop │ └── data-types ├── Javascript │ ├── hello-world │ ├── methods │ ├── arrays │ ├── for-loop │ ├── for-each-loop │ ├── vector │ ├── strings │ ├── data-types │ └── input-output ├── TypeScript │ ├── hello-world.ts │ ├── adicion.ts │ ├── concatenacion.ts │ ├── for-loops.ts │ ├── for-each-loop.ts │ ├── arrays.ts │ ├── strings.ts │ ├── vector.ts │ ├── data-types.ts │ └── union-types.ts ├── Kotlin │ ├── hello-world │ ├── methods │ ├── for-loop │ ├── input-output │ ├── data-types │ └── arithmetics ├── C │ ├── hello-world │ ├── methods │ ├── arrays │ ├── for-loop │ └── input-output ├── Go │ ├── hello-world │ ├── arrays │ ├── for-loop │ ├── methods │ ├── input-output │ └── data-types ├── C++ │ ├── methods │ ├── arrays │ ├── hello-world │ ├── for-loop │ ├── input-output │ ├── treeset │ ├── treemap │ ├── vector │ └── data-types ├── C Sharp │ ├── methods │ ├── arrays │ ├── for-loop │ ├── hello-world │ ├── vector │ ├── for-each-loop │ ├── strings │ └── data-types ├── Java │ ├── methods │ ├── hello-world │ ├── arrays │ ├── for-loop │ ├── for-each-loop │ ├── treeset │ ├── input-output │ ├── vector │ ├── treemap │ ├── data-types │ └── strings └── Swift │ ├── hello-world │ └── methods ├── cover.jpg ├── style.css ├── LICENSE ├── README.md ├── contributing.md ├── CODE_OF_CONDUCT.md ├── index.html ├── config.json ├── about.html └── js └── main.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /langs/PHP/hello-world: -------------------------------------------------------------------------------- 1 | echo "Hello world"; -------------------------------------------------------------------------------- /langs/Ruby/hello-world: -------------------------------------------------------------------------------- 1 | puts "Hola Mundo" -------------------------------------------------------------------------------- /langs/Julia/hello-world: -------------------------------------------------------------------------------- 1 | print("hello world") 2 | -------------------------------------------------------------------------------- /langs/Python/hello-world: -------------------------------------------------------------------------------- 1 | print "Hola mundo" 2 | -------------------------------------------------------------------------------- /langs/Javascript/hello-world: -------------------------------------------------------------------------------- 1 | console.log("Hola Mundo"); -------------------------------------------------------------------------------- /langs/TypeScript/hello-world.ts: -------------------------------------------------------------------------------- 1 | console.log("Hola Mundo"); -------------------------------------------------------------------------------- /cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GersonLazaro/aprende-x-si-sabes-y/HEAD/cover.jpg -------------------------------------------------------------------------------- /langs/Kotlin/hello-world: -------------------------------------------------------------------------------- 1 | fun main (args: Array){ 2 | println("¡Hola, mundo!") 3 | } -------------------------------------------------------------------------------- /langs/C/hello-world: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void main() 4 | { 5 | printf("Hola Mundo\n"); 6 | } 7 | -------------------------------------------------------------------------------- /langs/C/methods: -------------------------------------------------------------------------------- 1 | int sumarDos (int numeroUno, int numeroDos) { 2 | return numeroUno + numeroDos; 3 | } 4 | -------------------------------------------------------------------------------- /langs/Go/hello-world: -------------------------------------------------------------------------------- 1 | package main 2 | import "fmt" 3 | func main() { 4 | fmt.Println("Hola Mundo") 5 | } -------------------------------------------------------------------------------- /langs/TypeScript/adicion.ts: -------------------------------------------------------------------------------- 1 | function adicion(num1: number, num2: number): number { 2 | return num1 + num2 3 | } -------------------------------------------------------------------------------- /langs/C++/methods: -------------------------------------------------------------------------------- 1 | int sumarDosNumeros(int primerNumero, int segundoNumero) { 2 | 3 | return primerNumero + segundoNumero; 4 | } -------------------------------------------------------------------------------- /langs/Ruby/arrays: -------------------------------------------------------------------------------- 1 | a = [] # Creación 2 | b = [1,2,3,4,5] # Creación e inicialización 3 | 4 | a[0] = 5 # Acceso y modificación -------------------------------------------------------------------------------- /langs/C Sharp/methods: -------------------------------------------------------------------------------- 1 | public int SumarDosNumeros(int numeroUno, int numeroDos) 2 | { 3 | return numeroUno + numeroDos; 4 | } 5 | -------------------------------------------------------------------------------- /langs/Javascript/methods: -------------------------------------------------------------------------------- 1 | function sumarDosNumeros(primerNumero, segundoNumero) { 2 | 3 | return primerNumero + segundoNumero 4 | } -------------------------------------------------------------------------------- /langs/Kotlin/methods: -------------------------------------------------------------------------------- 1 | fun sumarNumeros(primerNum : Int, segundoNum :Int): Int { 2 | 3 | return primerNum+segundoNum; 4 | 5 | } -------------------------------------------------------------------------------- /langs/PHP/methods: -------------------------------------------------------------------------------- 1 | 2 | using namespace std; 3 | 4 | int main() { 5 | cout << "Hola mundo" << endl; 6 | return 0; 7 | } -------------------------------------------------------------------------------- /langs/Java/hello-world: -------------------------------------------------------------------------------- 1 | public class Main { 2 | public static void main (String[] args) { 3 | System.out.println("Hola Mundo"); 4 | } 5 | } -------------------------------------------------------------------------------- /langs/TypeScript/concatenacion.ts: -------------------------------------------------------------------------------- 1 | function concatenarCadenas(cadena1: string, cadena2: string): string { 2 | return cadena1 + cadena2 3 | } -------------------------------------------------------------------------------- /langs/C/arrays: -------------------------------------------------------------------------------- 1 | int a[100]; // Creación 2 | int b[] = {1,2,3,4,5}; // Creación e inicialización 3 | 4 | a[5] = 34; // Acceso y modificación 5 | -------------------------------------------------------------------------------- /langs/Javascript/arrays: -------------------------------------------------------------------------------- 1 | var a = []; // Creación 2 | var b = [1,2,3,4,5]; // Creación e inicialización 3 | 4 | a[0] = 5; // Acceso y modificación -------------------------------------------------------------------------------- /langs/PHP/for-loop: -------------------------------------------------------------------------------- 1 | { //para cada elemento en la lista 4 | console.log(elemento); // imprime cada elemento 5 | }) -------------------------------------------------------------------------------- /langs/C++/input-output: -------------------------------------------------------------------------------- 1 | int a, b; 2 | string c; 3 | cin >> a; // Lectura de datos 4 | cin >> a >> b; // Lectura múltiple 5 | 6 | //Salida de datos 7 | cout << "Sin salto de linea"; 8 | cout << "Con salto de linea" << endl; -------------------------------------------------------------------------------- /langs/Javascript/for-each-loop: -------------------------------------------------------------------------------- 1 | var a = [1, 2, 3, 4, 5]; // crea una nueva lista 2 | 3 | a.forEach(function(element) { // para cada elemento en la lista 4 | console.log(element); // imprime cada elemento 5 | }); 6 | -------------------------------------------------------------------------------- /langs/Java/for-each-loop: -------------------------------------------------------------------------------- 1 | int[] a = new int[]{1, 2, 3, 4, 5}; // crea una nueva lista 2 | 3 | for (int element : a) { // para cada elemento en la lista 4 | System.out.println(element); // imprime cada elemento 5 | } -------------------------------------------------------------------------------- /langs/Go/arrays: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "fmt" 4 | 5 | func main() { 6 | 7 | var a [100] int // Creación 8 | b := [3] int {1, 2, 3} // Creación con inicialización 9 | 10 | a[5] = 34 // Acceso y modificación 11 | 12 | } -------------------------------------------------------------------------------- /langs/Go/for-loop: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import "fmt" 4 | 5 | func main() { 6 | for i := 0; i < 10; i++ {// ejecuta un bucle 10 veces 7 | fmt.Println("Hola mundo") //ejecuta esta sentencia 10 veces 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /langs/C Sharp/hello-world: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace LearnCSharp 4 | { 5 | class MainClass 6 | { 7 | public static void Main (string[] args) 8 | { 9 | Console.WriteLine ("Hello World!"); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /langs/Ruby/input-output: -------------------------------------------------------------------------------- 1 | puts "Ingrese numero: " 2 | a = gets.chomp.to_i 3 | 4 | 5 | puts "Ingrese string: " 6 | b = gets.chomp.to_s 7 | 8 | # Salida de datos 9 | puts "Sin salto de linea" 10 | puts "Con salto de linea\nOtra linea" 11 | -------------------------------------------------------------------------------- /langs/Kotlin/for-loop: -------------------------------------------------------------------------------- 1 | //En Kotlin, el parametro que se encuentra dentro del "For" 2 | //es llamado rango. En este ejemplo, el rango dicta que se 3 | //imprimiran los valores del 1 al 5. 4 | 5 | for(elemento in 1..5) { 6 | println(elemento) 7 | } -------------------------------------------------------------------------------- /langs/Python/methods: -------------------------------------------------------------------------------- 1 | def sumarDosNumeros(primerNumero, segundoNumero): 2 | 3 | return primerNumero + segundoNumero 4 | 5 | # Recuerda, en Python debes usar la indentación para definir si 6 | # estas o no escribiendo en un bloque de código específico -------------------------------------------------------------------------------- /langs/C++/treeset: -------------------------------------------------------------------------------- 1 | set t; // Declaración 2 | t.insert(32); // Inserción 3 | t.count(32); // Verificar si un elemento existe 4 | t.empty(); // Verificar si el set está vacío 5 | t.erase(25); // Borrar valor 6 | t.clear(); // Borrar todo 7 | t.size(); // Obtener tamaño -------------------------------------------------------------------------------- /langs/Python/input-output: -------------------------------------------------------------------------------- 1 | a = int(raw_input("Ingrese numero: ")) # Lee un entero 2 | b = raw_input("Ingrese string: ") # Lee un string 3 | # En python, siempre se lee toda la línea 4 | 5 | # Salida de datos 6 | print "Sin salto de linea" 7 | print "Con salto de linea\n" 8 | -------------------------------------------------------------------------------- /langs/Kotlin/input-output: -------------------------------------------------------------------------------- 1 | //Entrada de datos 2 | var c: String = readLine() // Recibe un dato a través de la linea de comandos 3 | 4 | //Salida de datos 5 | print("Sin salto de linea e impresion de valor: $c"); 6 | println("Con salto de linea e impresion de valor: $c"); 7 | 8 | -------------------------------------------------------------------------------- /langs/Ruby/treeset: -------------------------------------------------------------------------------- 1 | require 'set' 2 | s = SortedSet.new([]) # Declaración 3 | s.add(32) # Inserción 4 | s.include?(32) # Verificar si un elemento existe 5 | s.empty? # Verificar si el TreeSet está vacío 6 | s.delete(25) # Borrar valor 7 | s.clear # Borrar todo 8 | s.size # Obtener tamaño -------------------------------------------------------------------------------- /langs/Julia/arrays: -------------------------------------------------------------------------------- 1 | # crea array de 100 posiciones de tipo float (no inicializa valores) 2 | a = Array(Float64,100) 3 | 4 | # crea array e inicializa 5 | b = Array(Float64) 6 | b = fill(3.8,100) 7 | 8 | # Acceso y modificacion, los indices sobre arreglos comienzan en 1! 9 | b[3] = 34 10 | -------------------------------------------------------------------------------- /langs/Java/treeset: -------------------------------------------------------------------------------- 1 | TreeSet t = new TreeSet(); // Declaración 2 | t.add(32); // Inserción 3 | t.contains(32); // Verificar si un elemento existe 4 | t.isEmpty(); // Verificar si el TreeSet está vacío 5 | t.remove(25); // Borrar valor 6 | t.clear(); // Borrar todo 7 | t.size(); //Obtener tamaño -------------------------------------------------------------------------------- /langs/Java/input-output: -------------------------------------------------------------------------------- 1 | Scanner sc = new Scanner(System.in); 2 | int a = sc.nextInt(); // Lee un entero 3 | String c = sc.next(); // Lee un string 4 | c = sc.nextLine(); // Lee toda la linea 5 | 6 | //Salida de datos 7 | System.out.print("Sin salto de linea"); 8 | System.out.println("Con salto de linea"); 9 | 10 | -------------------------------------------------------------------------------- /langs/Python/vector: -------------------------------------------------------------------------------- 1 | # Declaración e inicialización 2 | a = [] 3 | # Inserción 4 | a.append(32) 5 | # Obtener valor en un índice dado 6 | a[1] 7 | # Modificar el elemento dado(0) con el valor dado(25) 8 | a[0] = 25 9 | # Borrar valor en un índice dado 10 | del a[1] 11 | # Borrar todo 12 | del a[:] 13 | # Obtener tamaño 14 | len(a) 15 | -------------------------------------------------------------------------------- /langs/Python/for-loop: -------------------------------------------------------------------------------- 1 | #Sintaxis 2 | #for variable in elemento_a_recorrer: 3 | #print(variable) 4 | 5 | # Debemos indicar que queremos recorrer(un rango , lista , tuplas , etc) 6 | 7 | for i in range(1,10): #Imprime los numeros del 1 al 10 8 | print(i) 9 | 10 | for i in "Hola mundo": #Imprime la cadena 11 | print(i) 12 | 13 | -------------------------------------------------------------------------------- /langs/C Sharp/vector: -------------------------------------------------------------------------------- 1 | List a = new List(); 2 | // Agrega 3 | a.Add(32); 4 | // Obtiene el valor segun el indice 5 | a[1]; 6 | // Reemplaza el elemento del indice 0 con el valor dado (25) 7 | a[0] = 25; 8 | // Elimina el valor del indice dado 9 | a.RemoveAt(1); 10 | // Elimina todo 11 | a.Clear(); 12 | // Obtiene el tamaño 13 | a.Count; 14 | -------------------------------------------------------------------------------- /langs/C++/treemap: -------------------------------------------------------------------------------- 1 | map t; //Clave, Valor 2 | t[9] = "Septiembre"; // Insertar un par de clave-valor 3 | t.count(9); // Verificar si la clave existe 4 | t.erase(9); // Eliminar el par de Clave-Valor dada la clave 5 | t.empty(); // Verificar si el mapa tiene elementos 6 | t.clear(); // Limpiar la estructura 7 | t.size(); // Obtener el tamaño del mapa 8 | -------------------------------------------------------------------------------- /langs/C++/vector: -------------------------------------------------------------------------------- 1 | // Declaración 2 | vector a; 3 | // Inserción 4 | a.push_back(32); 5 | // Obtener valor en un índice dado 6 | a[1]; 7 | // Modificar el elemento dado(0) con el valor dado(25) 8 | a[0]=25; 9 | // Borrar valor (recibe un iterador al elemento a borrar) 10 | a.erase(it); 11 | // Borrar todo 12 | a.clear(); 13 | // Obtener tamaño 14 | a.size(); -------------------------------------------------------------------------------- /langs/Go/methods: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | // En Go, un campo es público si su nombre empieza con MAYÚSCULA y es privado 4 | // si su nombre empieza con minúscula 5 | // Si hay más de un parámetro que comparte el mismo tipo de dato, puede ser 6 | // indicado en el último parámetro 7 | 8 | func sumarDosNumeros(x, y int32) int32 { 9 | // No hay punto y comas 10 | return x + y 11 | } -------------------------------------------------------------------------------- /langs/Java/vector: -------------------------------------------------------------------------------- 1 | // Declaración e inicialización 2 | ArrayList a = newArrayList<>(); 3 | // Inserción 4 | a.add(32); 5 | // Obtener valor en un índice dado 6 | a.get(1); 7 | // Modificar el elemento dado(0) con el valor dado(25) 8 | a.set(0,25); 9 | // Borrar valor en un índice dado 10 | a.remove(1); 11 | // Borrar todo 12 | a.clear(); 13 | // Obtener tamaño 14 | a.size(); -------------------------------------------------------------------------------- /langs/Ruby/vector: -------------------------------------------------------------------------------- 1 | # Declaración e inicialización 2 | a = Array.new 3 | # Inserción 4 | a.push(32) 5 | # Obtener valor en un índice dado 6 | a[1] 7 | # Modificar el elemento dado(0) con el valor dado(25) 8 | a[0] = 25 9 | # Borrar valor en un índice dado 10 | a.delete_at(3) # Borra un elemento, iniciando en el indice 3 11 | # Borrar todo 12 | a = [] 13 | # Obtener tamaño 14 | a.length -------------------------------------------------------------------------------- /langs/Julia/input-output: -------------------------------------------------------------------------------- 1 | # imprime texto 2 | print("Ingrese numero:") 3 | # lee un numero 4 | a = parse(Float64,readline()) 5 | 6 | print("Ingrese string: ") 7 | # lee un string 8 | b = readline() 9 | 10 | # salidad de datos 11 | 12 | #salidad con salto de linea 13 | println("el numero que ingreso fue:",a) 14 | 15 | #salidad sin salto de linea 16 | print("el string que ingreso fue:",b) 17 | -------------------------------------------------------------------------------- /langs/PHP/vector: -------------------------------------------------------------------------------- 1 | list = new List(); // Hace una nueva lista 9 | 10 | public static void Main(string[] args) 11 | { 12 | foreach (T item in list) // Para cada item en la lista 13 | { 14 | Console.WriteLine(item); // Muestre cada item 15 | } 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /langs/Java/treemap: -------------------------------------------------------------------------------- 1 | TreeMap t=new TreeMap(); //Clave, Valor 2 | t.put(9, "Septiembre"); //Insertar un par de Clave, Valor 3 | t.containsKey(9); //Verificar si la clave existe dentro del TreeMap 4 | t.remove(9); //Eliminar el par de clave-valor de la estructra dada la clave 5 | t.isEmpty(); //Verificar si el TreeMap tiene elementos 6 | t.clear(); //Limpiar la estructura 7 | t.size(); //Obtener el tamaño de la estructura 8 | -------------------------------------------------------------------------------- /langs/Julia/vector: -------------------------------------------------------------------------------- 1 | # Declaración e inicialización de array de 5 posiciones de tipo float 2 | a = Array{Float64}(5) 3 | 4 | # Agrega el numero 8 al final del array a 5 | push!(a,8) 6 | 7 | # Obtener valor en un índice dado, (el indice empieza en 1!) 8 | a[1] 9 | 10 | # Modificar el elemento en la posicion 1 con el valor 25 11 | a[1] = 25 12 | 13 | # Borra el tercer elemento del array a 14 | deleteat!(a,3) 15 | 16 | # Obtener tamaño 17 | length(a) 18 | -------------------------------------------------------------------------------- /langs/PHP/data-types: -------------------------------------------------------------------------------- 1 | //En PHP el tipo de dato no es definido por el programador, es determinado en tiempo de ejecucion por PHP 2 | //Por esta razon no es necesario determinarlo cuando se declaran las variables 3 | 4 | $a = 50; // Tipo de dato Entero 5 | $b = 50.33 // Tipo de dato de punto flotante o float 6 | $c = true; // Tipo de dato booleano 7 | $d = "Hola" // Tipo de dato String o cadena de caracteres 8 | $e = null // Tipo de dato nulo(null) variable sin valor -------------------------------------------------------------------------------- /langs/C/input-output: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | void main() 4 | { 5 | int a, b; 6 | string c; 7 | scanf("%d",&a); // Asignamos a la variable "a" un número dado por el usuario 8 | scanf("%d%d",&a,&b); // Asignamos a la variable "a" el primer número dado por el usuario y a "b" el segundo número dado por el usuario 9 | 10 | // Output 11 | printf("Imprimimos en pantalla sin saltar de línea"); 12 | printf("Imprimimos en pantalla saltando a la línea \n"); 13 | } 14 | -------------------------------------------------------------------------------- /langs/TypeScript/arrays.ts: -------------------------------------------------------------------------------- 1 | var a = [] //Creación. El tipo de a se convierte en any[] (any acepta cualquier tipo) 2 | var typedA: number[] = [] // Creación con tipos explícitos 3 | 4 | // El tipo de b es number[] 5 | var b = [1, 2, 3, 4, 5] // Creación e inicialización 6 | 7 | 8 | a[0] = 5 // Acceso y modificación 9 | 10 | // Esto está bien, ya que la variable a tiene el tipo any[] 11 | a[1] = 'foo' 12 | 13 | // Esto arroja un error al compilar 14 | typedA[1] = 'foo' -------------------------------------------------------------------------------- /langs/Python/data-types: -------------------------------------------------------------------------------- 1 | 2 | # Numéricos 3 | entero = 2 4 | print(entero,type(entero)) 5 | 6 | flotante = 0.45 7 | print(flotante, type(flotante)) 8 | 9 | complejo = 6 + 1.65j 10 | print(complejo, type(complejo)) 11 | 12 | # Cadenas 13 | cad1 = "Bienvenido a Python" 14 | print(cad1, type(cad1)) 15 | 16 | cad2 = 'Bienvenido a Python' 17 | print(cad2, type(cad2)) 18 | 19 | # Booleanos 20 | x = True 21 | print(x, type(x)) 22 | 23 | y = False 24 | print(y, type(y)) 25 | -------------------------------------------------------------------------------- /langs/PHP/for-each-loop: -------------------------------------------------------------------------------- 1 | $value) { 12 | echo "El valor del arreglo en la posición {$key} es {$value}\n"; 13 | } 14 | -------------------------------------------------------------------------------- /langs/TypeScript/strings.ts: -------------------------------------------------------------------------------- 1 | var str = "Las rosas son rojas"; 2 | var strLen = str.length; // Longitud del string --> 19 3 | var substr = str.substring(14, 19); // "rojas" 4 | var n = str.replace(/a/g, "D"); // Reemplazar "a" globalmente --> "LDs rosDs son rojDs" 5 | var strUpperCase = str.toUpperCase(); // A mayúsculas --> "LAS ROSAS SON ROJAS" 6 | var strLowerCase = str.toLowerCase(); // A minúsculas --> "las rosas son rojas" 7 | var concatStr = str + ", Las violetas azules!"; // --> "Las rosas son rojas, Las violetas azules!" -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | #comparison h3, #comparison h5, #comparison p { 2 | text-align: center; 3 | } 4 | 5 | pre { 6 | background-color: #444; 7 | color: #FFF; 8 | box-shadow: 0 0 10px rgba(0,0,0,.2); 9 | padding: 10px; 10 | border-radius: 6px; 11 | font-size: 13px; 12 | } 13 | 14 | .about-container { 15 | margin-top: 50px; 16 | } 17 | 18 | h1, h2, h3, h4, h5, h6 { 19 | margin-top: 40px; 20 | margin-bottom: 50px; 21 | } 22 | 23 | .for-contributors { 24 | padding: 1.5em; 25 | } 26 | -------------------------------------------------------------------------------- /langs/Javascript/strings: -------------------------------------------------------------------------------- 1 | var str = "Las rosas son rojas"; 2 | var strLen = str.length; // Longitud del string --> 19 3 | var substr = str.substring(14, 19); // "rojas" 4 | var n = str.replace(/a/g, "D"); // Reemplazar "a" globalmente --> "LDs rosDs son rojDs" 5 | var strUpperCase = str.toUpperCase(); // A mayúsculas --> "LAS ROSAS SON ROJAS" 6 | var strLowerCase = str.toLowerCase(); // A minúsculas --> "las rosas son rojas" 7 | var concatStr = str + ", Las violetas azules!"; // --> "Las rosas son rojas, Las violetas azules!" 8 | -------------------------------------------------------------------------------- /langs/Java/data-types: -------------------------------------------------------------------------------- 1 | byte a = 1; // Enteros entre -128 y 127 2 | short b = 128; // Enteros entre -32768 y 32767 3 | int c = 32768; // Enteros entre -2^31 y (2^31)-1 4 | long d = 2147483648l; // Enteros entre -2^63 y (2^63)-1 5 | float e = 3.14f; // Número de coma flotante y precisión simple 6 | double g = 3.14; // Número de coma flotante y precisión doble 7 | boolean h = true; // Valor booleano (true o false) 8 | char i = 'a'; // Caracteres 9 | 10 | // El siguiente elemento NO es primitivo 11 | String j = "Texto"; // Cadena de texto -------------------------------------------------------------------------------- /langs/Swift/methods: -------------------------------------------------------------------------------- 1 | func sumarDosNumeros(_ primerNumero:Double,_ segundoNumero:Double) -> Double? { 2 | guard let result = primerNumero + segundoNumero as? Double else { return nil } 3 | return result 4 | } 5 | 6 | // En Swift, los métodos deben decir que retornan algo 7 | // Los métodos deben retornar el tipo de dato que anuncian 8 | // Un _ antes de un parámetro significa que la función puede se llamada sin nombrar los parámetros si están en orden 9 | // Gracias a esto, esta función puede ser llamada como sumarDosNumeros(12, 14) y el retornará 26 -------------------------------------------------------------------------------- /langs/PHP/input-output: -------------------------------------------------------------------------------- 1 | 19 3 | string substr = str.Substring(14); // "rojas" 4 | string n = str.Replace("a","u"); // Reemplaza "e" globalmente --> "Lus rosus son rojus" 5 | string strUpperCase = str.ToUpperCase(); // Cambia a mayusculas --> "LAS ROSAS SON ROJAS" 6 | string strLowerCase = str.ToLowerCase(); // Cambia a minusculas --> "las rosas son rojas" 7 | string concatStr = str + ", Las violetas son azules!"; // Concatena --> "Las rosas son rojas, Las violetas son azules!" 8 | -------------------------------------------------------------------------------- /langs/TypeScript/vector.ts: -------------------------------------------------------------------------------- 1 | // En TypeScript (y JavaScript también), no hay una estructura explícita de datos vectoriales 2 | // Pero las Array APIs ofrecen una funcionalidad similar 3 | 4 | var a = new Array(); 5 | // Insertar 6 | a.push(32); 7 | // Obten valor en un índice 8 | a[1]; 9 | // Modifica el elemento dado (0) con el valor dado (25) 10 | a[0] = 25; 11 | // Elimina valor en un índice dado 12 | a.splice(3, 1); // Elimina un elemento, comenzando en el índice 3 13 | // Elimina todos 14 | a.splice(0, a.length); 15 | // Obten tamaño 16 | a.length; -------------------------------------------------------------------------------- /langs/Javascript/data-types: -------------------------------------------------------------------------------- 1 | // Al ser dinámicamente tipado, no se requiere 2 | // indicar tipo de dato en las variables 3 | 4 | // Existen 7 tipos de datos: 5 | 6 | // Seis tipos de datos que son primitivos: 7 | var a = 10; // Tipo numérico 8 | var b = true; // Boolean (true o false) 9 | var c = "Texto"; // String 10 | var d = null; // Null 11 | var e = undefined; // Undefined 12 | var simbolo = Symbol(); // Symbol (ECMAScript 6) 13 | 14 | // Y un tipo de dato compuesto: 15 | var persona = {nombre:'John', apellido:'Doe', edad:'30'}; // Object 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /langs/TypeScript/data-types.ts: -------------------------------------------------------------------------------- 1 | // TypeScript tiene tipos estáticos, pero infiere tipos cuando puede 2 | // De esta manera, no siempre es necesario escribir anotaciones de tipo 3 | 4 | var a = 10; // Tipo numérico 5 | var b = true; // Booleano (verdadero o falso) 6 | var c = "Texto"; // Cadena 7 | 8 | // Estos dos no se pueden inferir directamente 9 | // Cualquier tipo anulable puede coincidir con estos, por lo que ambas variables obtienen 'any' como su tipo 10 | var d = null; // Nulo 11 | var e = undefined; // Indefinido 12 | 13 | // Variable numérica que puede tener un valor nulo en algún momento 14 | var numeroAnulable: number | null = null -------------------------------------------------------------------------------- /langs/PHP/strings: -------------------------------------------------------------------------------- 1 | 13 6 | $substr = subsr($str, 14, 5); // "rojas" 7 | $n = str_replace("a", "D",$str); // Reemplaza todas las ocurrencias de "a" --> "LDs rosDs son rojDs" 8 | $strUpperCase = strtoupper($str); // Cambiar a mayúsculas --> "LAS ROSAS SON ROJAS" 9 | $strLowerCase = strtolower($str); // Cambiar a minúsculas --> "las rosas son rojas" 10 | $concatStr = $str . ", las violetas son azules!"; // --> "Las rosas son rojas, las violetas son azules!" 11 | 12 | // PHP usa el caracter punto (.) para unir cadenas de texto 13 | -------------------------------------------------------------------------------- /langs/Kotlin/data-types: -------------------------------------------------------------------------------- 1 | var a: Byte = 2 // Valores entre -128 y 127 2 | var b: Short = 128 // Valores entre -32768 y 32767 3 | var c: Int = 32768 // Valores entre -2,147,483,648 y 2,147,483,647 4 | var d: Long = 123123123123 // Valores entre -9,223,372,036,854,775,808 y 9,223,372,036,854,775,807 5 | var e: Float = 1.15f // Valores con punto decimal 6 | var f: Double = 1.15524212312 // Valores con punto decimal y el doble de precision que los valores "Float" 7 | var g: Boolean = true // Datos booleanos con valores "true" o "false" 8 | var h: Char = 'z' // Dato de tipo caracter 9 | 10 | var i: String = "Hola" // Tipo de dato que se entiende como un Array de "Char" -------------------------------------------------------------------------------- /langs/C++/data-types: -------------------------------------------------------------------------------- 1 | // Los rangos pueden variar según el compilador y arquitectura 2 | 3 | short int = 128; Enteros entre -32768 y 32767 4 | int c = 32768; // Enteros entre -2^31 y (2^31)-1 5 | long int d = 32768; // Enteros entre -2^31 y (2^31)-1 6 | long long int d = 2147483648; // Enteros entre -2^63 y (2^63)-1 7 | float e = 3.14f; // Número de coma flotante y precisión simple 8 | double g = 3.14; // Número de coma flotante y precisión doble 9 | long double = 3.14; // Número de coma flotante y precisión extendida 10 | bool h = true; // Valor booleano (true o false) 11 | char i = 'a'; // Caracteres 12 | 13 | // El siguiente elemento NO es primitivo 14 | string j = "Texto"; // Cadena de texto -------------------------------------------------------------------------------- /langs/Kotlin/arithmetics: -------------------------------------------------------------------------------- 1 | fun main (args: Array){ 2 | 3 | // Los valores puede ser de tipo Int, Float o Double 4 | val numeroUno : Int = 30 5 | val numeroDos : Int = 20 6 | 7 | // Suma de numeros 8 | numeroUno + numeroDos 9 | numeroUno.plus(numeroDos) 10 | 11 | // Resta de numeros 12 | numeroUno - numeroDos 13 | numeroUno.minus(numeroDos) 14 | 15 | // Multiplicacion de numeros 16 | numeroUno * numeroDos 17 | numeroUno.times(numeroDos) 18 | 19 | // Division de numeros 20 | numeroUno / numeroDos 21 | numeroUno.div(numeroDos) 22 | 23 | // Modulo de division de numeros 24 | numeroDos % numeroDos; 25 | numeroUno.rem(numeroDos) 26 | 27 | } -------------------------------------------------------------------------------- /langs/TypeScript/union-types.ts: -------------------------------------------------------------------------------- 1 | // TypeScript también admite tipos de unión. Mira el ejemplo a continuación 2 | function numeroOCadena(n: number) { 3 | if (n % 2 == 0) { 4 | return n 5 | } else { 6 | return n.toString() 7 | } 8 | } 9 | 10 | // La función numberOrString puede devolver un número o una cadena: 11 | var numberoDos = numberOrString(2) 12 | 13 | // Se asume que el tipo de la variable numberoDos es number | string 14 | // Sin embargo, TypeScript observa de manera inteligente la logica del codigo y como se ramifica 15 | // e intentara reducir el tipo mas amplio que puede tener una variable a un tipo mas especifico 16 | if (typeof numberoDos === 'number') { 17 | // dentro de este bloque, numberTwo se puede usar de forma segura como un número 18 | var tres = numberoDos + 1 19 | } else { 20 | // Y aquí, como una cadena 21 | var letraT = numberoDos.substring(0, 1) 22 | } -------------------------------------------------------------------------------- /langs/Ruby/strings: -------------------------------------------------------------------------------- 1 | 2 | cadena="Las rosas son rojas" 3 | puts cadena[0] # Nos devolvera L 4 | puts cadena[6] #Nos devolvera s 5 | puts cadena[-1] === "s" #Nos devuelve true 6 | puts cadena.start_with?("l") #Nos devuelve false, case sensitive 7 | puts cadena === "Las rosas son rojas" #Nos devuelve true 8 | puts cadena.index("son") #localiza la posicion donde se encuentra "son" 9 | puts cadena.length # Nos devuelve la longitud: 19 10 | puts cadena.gsub(/a/, 'e') # Cambia todas las a por e 11 | puts cadena.downcase #Transforma el String a minusculas 12 | puts cadena.upcase #Transforma el String a mayusculas 13 | puts cadena[4..-1] # Nos devuelve "rosas son rojas" 14 | puts cadena.lstrip # Si existe espacio al inicio y final de la cadena , nos la devuelve sin el 15 | puts cadena <=> cadena2 # positivo si cadena>cadena2 , negativo si cadenacadena2 , negativo si cadena 2 | 3 | 4 | 5 | 6 | 7 | 8 | Aprende X si Sabes Y 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 48 |
49 |
50 |

Aprende X si sabes Y!

51 |

Donde X = 52 | 55 | y Y = 56 | 59 |

60 |
61 |

¿Conoces algún lenguaje de programación? ¿Estás aprendiendo uno nuevo? Aprende X lenguaje comparando cada una de sus instrucciones con su equivalente en el lenguaje Y que ya conocias.

62 |

Simplemente elige el lenguaje X que quieres aprender, y el lenguaje Y que ya conoces, y empieza a aprender.

63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |

¿Quieres colaborar en este sitio? Puedes hacer tus aportes en github.

73 |

Realizado por Gerson Lázaro y compartido bajo una licencia CC BY-NC-SA 3.0

74 |
75 |
76 |
77 |
78 | 80 | 82 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "languages": [ 3 | "C++", 4 | "C Sharp", 5 | "Go", 6 | "Java", 7 | "Javascript", 8 | "Julia", 9 | "Kotlin", 10 | "PHP", 11 | "Python", 12 | "Ruby", 13 | "Swift" 14 | ], 15 | "instructions": [{ 16 | "name": "Hola Mundo", 17 | "description": "Ejemplo clásico de programación: Imprimir en pantalla el texto \"Hola Mundo\".", 18 | "filename": "hello-world", 19 | "languages": [ 20 | "C++", 21 | "C Sharp", 22 | "Go", 23 | "Java", 24 | "Javascript", 25 | "Julia", 26 | "Kotlin", 27 | "PHP", 28 | "Python", 29 | "Ruby", 30 | "Swift" 31 | ] 32 | }, 33 | { 34 | "name": "Tipos de datos primitivos", 35 | "description": "Declaración de los principales tipos de datos en cada lenguaje", 36 | "filename": "data-types", 37 | "languages": [ 38 | "C++", 39 | "C Sharp", 40 | "Go", 41 | "Java", 42 | "Javascript", 43 | "Kotlin", 44 | "PHP", 45 | "Python", 46 | "Ruby" 47 | ] 48 | }, 49 | { 50 | "name": "Arreglos", 51 | "description": "Colecciones de datos del mismo tipo", 52 | "filename": "arrays", 53 | "languages": [ 54 | "C", 55 | "C++", 56 | "C Sharp", 57 | "Go", 58 | "Java", 59 | "Javascript", 60 | "PHP", 61 | "Python", 62 | "Julia", 63 | "Ruby" 64 | ] 65 | }, 66 | { 67 | "name": "Entrada y salida", 68 | "description": "Lectura y escritura desde la entrada y hacia la salida estandar", 69 | "filename": "input-output", 70 | "languages": [ 71 | "C++", 72 | "Go", 73 | "Java", 74 | "Javascript", 75 | "Julia", 76 | "Kotlin", 77 | "PHP", 78 | "Python", 79 | "Ruby" 80 | ] 81 | }, 82 | { 83 | "name": "Bucle For", 84 | "description": "Ejecuta un bloque de código un número determinado de veces", 85 | "filename": "for-loop", 86 | "languages": [ 87 | "C", 88 | "C++", 89 | "C Sharp", 90 | "Go", 91 | "Java", 92 | "Javascript", 93 | "Kotlin", 94 | "PHP", 95 | "Python", 96 | "Go", 97 | "Ruby" 98 | ] 99 | }, 100 | { 101 | "name": "Bucle For-Each", 102 | "description": "Itera sobre una colección, ejecutando el bloque una vez por cada item", 103 | "filename": "for-each-loop", 104 | "languages": [ 105 | "C Sharp", 106 | "Javascript", 107 | "Java", 108 | "PHP", 109 | "Python", 110 | "Ruby" 111 | ] 112 | }, 113 | { 114 | "name": "Strings", 115 | "description": "String operations", 116 | "filename": "strings", 117 | "languages": [ 118 | "C Sharp", 119 | "Java", 120 | "Javascript", 121 | "PHP", 122 | "Ruby" 123 | ] 124 | }, 125 | { 126 | "name": "Vectores", 127 | "description": "Estructura de datos para almacenar elementos", 128 | "filename": "vector", 129 | "languages": [ 130 | "C++", 131 | "C Sharp", 132 | "Java", 133 | "Javascript", 134 | "PHP", 135 | "Python", 136 | "Julia", 137 | "Ruby" 138 | ] 139 | }, 140 | { 141 | "name": "Treeset", 142 | "description": "Colección ordenada sin elementos duplicados", 143 | "filename": "treeset", 144 | "languages": [ 145 | "C++", 146 | "Java", 147 | "Ruby" 148 | ] 149 | }, 150 | { 151 | "name": "Treemap", 152 | "description": "Colección ordenada de pares de Clave - Valor sin Claves duplicadas", 153 | "filename": "treemap", 154 | "languages": [ 155 | "C++", 156 | "Java" 157 | ] 158 | }, 159 | { 160 | "name": "Métodos/Funciones", 161 | "description": "Declaración de métodos con parámetros", 162 | "filename": "methods", 163 | "languages": [ 164 | "C", 165 | "C++", 166 | "C Sharp", 167 | "Go", 168 | "Java", 169 | "Javascript", 170 | "Kotlin", 171 | "PHP", 172 | "Python", 173 | "Swift" 174 | ] 175 | }, 176 | { 177 | "name": "Operaciones aritméticas", 178 | "description": "Forma de declarar las operaciones básicas (Suma, Resta, Multiplicacion y Division)", 179 | "filename": "arithmetics", 180 | "languages": [ 181 | "Kotlin" 182 | ] 183 | } 184 | ] 185 | } 186 | -------------------------------------------------------------------------------- /about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Aprende X si Sabes Y 9 | 10 | 11 | 12 | 13 | 14 | 38 |
39 |
40 |
41 |

Aprende X si sabes Y!

42 |

¿Sabes programar pero necesitas (o quieres) aprender un lenguaje diferente? Este sitio es para ti. Simplemente elije el lenguaje que estas aprendiendo, el lenguaje que ya conoces, y listo. En pantalla te saldrán una lista de ejemplos básicos mostrando como se realizan las cosas en el lenguaje que ya conoces, comparado con el lenguaje que estás aprendiendo. Así de simple!

43 |

Por supuesto, todos los lenguajes tienen caracteristicas diferentes, y no es tan simple como traducir un lenguaje a otro (si fuera así, no habria necesidad de tantos lenguajes). Sin embargo en este sitio tratamos de plantear equivalencias entre unos y otros para que facilmente puedas aprender lo básico. Lo demás, corre por tu cuenta.

44 |

¿Quieres colaborar?

45 |

Este es un proyecto abierto. Puedes: Agregar nuevos lenguajes, agregar ejemplos de código que ya esten en otros lenguajes a tu lenguaje favorito, o proponer nuevos ejemplos. Si tienes otras ideas para este sitio, también son bienvenidas. Ve al github de esta página y lee el archivo contributing.md para indicaciones detalladas sobre como colaborar.

46 |

¿Quienes somos?

47 |

Esta es una idea de Gerson Lázaro, desarrollador, estudiante de Ingeniería en Sistemas y aficionado a la programación competitiva.

48 |

Quienes quieran ser colaboradores de este sitio, pueden añadir en este espacio su nombre y url

49 |

Un agradecimiento especial a quienes contribuyen en este sitio, haciendolo crecer:

50 | 60 |

Licencia

61 |

Todo el contenido de este sitio se comparte bajo una licencia Creative Commons CC BY-NC-SA 3.0

62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |

¿Quieres colaborar en este sitio? Puedes hacer tus aportes en github.

70 |

Realizado por Gerson Lázaro y compartido bajo una licencia CC BY-NC-SA 3.0

71 |
72 |
73 |
74 |
75 | 77 | 79 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Aprende X si sabes Y 3 | * @author Gerson Lázaro 4 | * @licence MIT 5 | */ 6 | var config; 7 | var langs = new Array(); 8 | var instructions = new Array(); 9 | 10 | var selectX; 11 | var selectY; 12 | 13 | /** 14 | * Inicializa los menus de selección usados en el sitio 15 | */ 16 | function init () { 17 | selectX = document.getElementById("selectX"); 18 | selectY = document.getElementById("selectY"); 19 | } 20 | 21 | /** 22 | * Carga el archivo de configuración en el sitio 23 | */ 24 | function loadConfig () { 25 | var request = new window.XMLHttpRequest(); 26 | request.open('GET', 'config.json', true); 27 | request.onload = function () { 28 | if (request.status >= 200 && request.status < 400) { 29 | config = JSON.parse(request.responseText); 30 | activateSite(); 31 | } else { 32 | // TODO: Manejar error devuelto por el servidor 33 | } 34 | }; 35 | 36 | request.onerror = function() { 37 | // TODO: Manejar error en la peticion 38 | }; 39 | request.send(); 40 | } 41 | 42 | /** 43 | * Agrega una opción al menú de selección 44 | * @param {*} letter - Letra del menú de selección (X o Y) 45 | * @param {*} value - Valor a añadir al menú 46 | */ 47 | function addSelectOption (letter, value) { 48 | var select = document.getElementById("select" + letter); 49 | var option = document.createElement("option"); 50 | option.text = value; 51 | option.id = value; 52 | select.add(option); 53 | } 54 | 55 | /** 56 | * Carga los lenguajes en el sitio y lo dej activo 57 | */ 58 | function activateSite () { 59 | langs = config.languages; 60 | instructions = config.instructions; 61 | for(var i = 0; i < langs.length; i++) { 62 | addSelectOption('X', langs[i]); 63 | addSelectOption('Y', langs[i]); 64 | } 65 | } 66 | 67 | /** 68 | * Verifica si una instrucción está disponible en los lenguajes actualmente establecidos 69 | * @param {*} languagesAvailable - Lista de lenguajes en los cuales está disponible la instrucción 70 | */ 71 | function instructionFoundInLanguages (languagesAvailable) { 72 | var found = 0; 73 | for(var i = 0; i < languagesAvailable.length; i++) { 74 | if (languagesAvailable[i] === langs[selectX.selectedIndex - 1]) found++; 75 | if (languagesAvailable[i] === langs[selectY.selectedIndex - 1]) found++; 76 | } 77 | if(found == 2) return true; 78 | return false; 79 | } 80 | 81 | /** 82 | * Obtiene un ejemplo de código para insertarlo en la página 83 | * @param {*} filename - Nombre del ejemplo 84 | * @param {*} lang - Lenguaje del ejemplo 85 | * @param {*} node - Objeto DOM en el cual se insertará el elemento 86 | */ 87 | function getExample (filename, lang, node) { 88 | var title = document.createElement("h5"); 89 | var pre = document.createElement("pre"); 90 | var code = document.createElement("code"); 91 | title.textContent = lang; 92 | pre.appendChild(code); 93 | node.appendChild(title); 94 | node.appendChild(pre); 95 | var request = new window.XMLHttpRequest(); 96 | request.open('GET', "langs/" + lang + "/" + filename, true); 97 | 98 | request.onload = function () { 99 | if (request.status >= 200 && request.status < 400) { 100 | // Configuración leída exitosamente 101 | pre.textContent = request.responseText; 102 | hljs.highlightBlock(pre); 103 | } else { 104 | // TODO: Manejar error devuelto por el servidor 105 | } 106 | }; 107 | request.send(); 108 | } 109 | 110 | /** 111 | * Genera una comparación entre dos lenguajes 112 | */ 113 | function generateComparison () { 114 | document.getElementById("comparison").remove(); 115 | var comparison = document.createElement("div"); 116 | comparison.id = "comparison"; 117 | document.getElementById("container").appendChild(comparison); 118 | for(var i = 0; i < instructions.length; i++) { 119 | if(instructionFoundInLanguages(instructions[i].languages)) { 120 | var instruction = document.createElement("div"); 121 | var title = document.createElement("h3"); 122 | title.textContent = instructions[i].name; 123 | var description = document.createElement("p"); 124 | description.textContent = instructions[i].description; 125 | instruction.appendChild(title); 126 | instruction.appendChild(description); 127 | var canvas = document.createElement("div"); 128 | canvas.className = "row"; 129 | var left = document.createElement("div"); 130 | left.className = "col-md-6 code"; 131 | var right = document.createElement("div"); 132 | right.className = "col-md-6 code"; 133 | var hr = document.createElement("hr"); 134 | instruction.appendChild(canvas); 135 | instruction.appendChild(hr); 136 | canvas.appendChild(left); 137 | canvas.appendChild(right); 138 | getExample(instructions[i].filename, langs[selectX.selectedIndex - 1], left); 139 | getExample(instructions[i].filename, langs[selectY.selectedIndex - 1], right); 140 | comparison.appendChild(instruction); 141 | } 142 | } 143 | } 144 | 145 | /** 146 | * Cambia el texto de X y Y por los lenguajes elegidos 147 | * @param {*} letter - Letra del lenguaje a cambiar 148 | */ 149 | function changeText (letter) { 150 | var index = document.getElementById("select" + letter).selectedIndex - 1; 151 | var text = document.getElementById("text" + letter); 152 | if (index < 0) { 153 | text.textContent = letter; 154 | } else { 155 | text.textContent = langs[index]; 156 | } 157 | } 158 | 159 | /** 160 | * Revisa si los dos lenguajes son válidos. 161 | */ 162 | function validateLanguages () { 163 | if(selectX.selectedIndex > 0 && selectY.selectedIndex > 0) generateComparison(); 164 | } 165 | 166 | 167 | // Inicialización y configuración 168 | init(); 169 | loadConfig(); 170 | document.getElementById("selectX").addEventListener("change", function () {changeText('X');validateLanguages();}); 171 | document.getElementById("selectY").addEventListener("change", function () {changeText('Y');validateLanguages();}); 172 | --------------------------------------------------------------------------------