[Programación] El rincón del programador – Preguntas, chat e información. |
![]() ![]() « Sénateur » 1442523120000
| 0 | ||
Los bucles, o ciclos repetitivos, funcionan de casi la misma manera en todos los lenguajes. Lo voy a explicar usando la sintaxis de C, porque de Java ni papa conozco. For for (i = 0; i < n; i++){ } La función For itera (repite) un segmento de código una cantidad de veces determinada por un rango. Para hacerlo más fácil, se podría decir que repite el código desde y hasta que. ¿A qué me refiero con desde que y hasta que? A esto: for (i = 0; i < 5; i++){ printf("ola"); } En este ejemplo el bucle for va a iterar el código desde la variable i, que empieza en 0, hasta que i sea menor a 5. i++ significa que la variable i en cada iteración del bucle va a autoincrementar su valor en 1 (en la primera vuelta, i va a valer 0, en la segunda, i va a valer 1). While while(patata == batata){ } While repite y ejecuta el código en su interior mientras que (el mismo nombre de la función te dice cómo funciona) se cumpla la condición del mismo. No hay mucha vuelta, es solo eso. Por ejemplo: while(patata == batata){ printf("xau"); } Suponiendo que patata y batata son dos variables enteras (int), acá estaríamos comparando si patata es igual que batata (si valen lo mismo). En el caso de que valgan lo mismo, se va a ejecutar el código del interior del while hasta que la condición deje de cumplirse (y esto hay que tener cuidado, ¡sino se producen muchos bucles infinitos!). Do while do { } while(patata == batata); Do while es parecido a While, pero la diferencia está en que primero ejecuta una vez el código de su interior y luego se fija si se cumple la condición del while. Por ejemplo: do { printf("xq te vas"); } while(patata == batata); Acá lo que va a pasar es lo siguiente: se va a mostrar por pantalla "xq te vas", y luego se va a comprobar si la condición se cumple o no. En caso de que se cumpla, se va a iterar el código hasta que deje de cumplirse. Break Break básicamente corta el ciclo repetitivo. Si tuvieras un break dentro de un ciclo repetitivo for, al ejecutarse el código y al llegar a este break se dejaría de ejecutar el código restante que hay dentro del for y pasaría a ejecutar lo que resta del programa. Por ejemplo: for (i = 0; i < 10; i++){ if (i == 3) { printf("meh"); break; } printf("ola"); } printf("xau"); En este ejemplo, cuando la variable i llegue al valor de 3, se cortaría el for y se mostaría por pantalla "meh" y "xau". No alcanzarían a cumplirse las 10 iteraciones del for. Qué complicado es explicar esto, no sé si lo hice bien, pero espero que al menos te haya servido de algo. |
![]() ![]() « Citoyen » 1442523840000
| 0 | ||
Obemice a dit : ¡Genial! muchísimas gracias por la explicación, complementando con lo que me explicó Alemoide en el juego pude resolver todo esto. Sin duda que es interesante cómo funciona, ahora sólo toca testear cosillas. Gracias otra vez, y sí, se te entendió bien. |
![]() ![]() « Citoyen » 1442524560000
| 0 | ||
La verdad, me interesa mucho la programación, es una carrera muy interesante. Buenísimo hilo! |
![]() ![]() « Citoyen » 1445824680000
| 0 | ||
A ver si alguien puede darme una mano en C... Necesito hacer un programa en donde se ingresen 20 carácteres y se muestren la cantidad de vocales que tenga lo que se haya ingresado. Algo así: #include <stdio.h> int main(){ char texto[21]; int a, e, i, o, u; printf ("Ingrese 20 caracteres: "); scanf ("%c", texto); /*Leer cada caracter ingresado, y si es una vocal sumarle +1 a la vocal que corresponda*/ printf ("\nLetras A: %d\nLetras E: %d\nLetras I: %d\nLetras O: %d\nLetras U: %d", a, e, i, o, u); return 0; } Ingrese 20 caracteres: aaaaaeeeeeiiiiiooodd_ Letras A: 5 Letras E: 5 Letras I: 5 Letras O: 3 Letras U: 0 Creo que debería usar for para contar cada carácter, pero ¿cómo lo hago? |
![]() ![]() « Sénateur » 1445825340000
| 0 | ||
Recorrés carácter por carácter y vas comparando de uno en uno, ya sea con un IF o con un Switch Case. Con un Switch Case sería algo como: for (i = 0; i < 21; i++) { switch(texto[*i]) { case 'a': a+=1; break; case 'b': b+=1; break; /*Lo mismo para los demás, la lógica no cambia*/ } Usando IF's: for (i = 0; i < 21; i++) { if (texto[*i] == 'a') a+=1; if (texto[*i] == 'b') b+=1; } !!!!! El * en texto[*i] NO va en el código. Lo pongo acá porque sino el foro lo detecta como si quisiera poner cursiva. La forma correcta sería sin el asterisco. |
![]() « Citoyen » 1445826540000
| 0 | ||
¿Qué diferencia hay entre HTML, HTML5 y CSS? ¿Qué diferencia hay entre HTTP y HTTPS y para qué sirven? ¿HTML sólo es para programar en páginas web? ¿Qué lenguajes de programación pueden usarse para hacer un programa y cuál es la diferencia entre ellos? ¿Se pueden combinar lenguajes de programación? |
![]() ![]() « Sénateur » 1445828220000
| 0 | ||
Wow, despacio. ¿Qué diferencia hay entre HTML, HTML5 y CSS? HTML es un lenguaje que se usa para definir la estructura de una página web. Sólo la estructura. CSS es un lenguaje que se usa para la presentación de una página web. Para hacerlo más simple todavía, HTML es como hacer los bocetos de un dibujo en lápiz. CSS es pintarlo y decorarlo, agregarle un fondo, etc. Y HTML5 es la versión 5 de HTML, la cual tiene varias mejoras y cosas nuevas. ¿Qué diferencia hay entre HTTP y HTTPS y para qué sirven? No sé cómo explicar el protocolo HTTP, así que: Kiwipedia - La enciclopedia de Kiwis a dit : Una petición puede ser, por ejemplo, pedir una página web. Al ingresar a www.google.com tu navegador, mediante HTTP (y usando el método GET) le pide al servidor de Google que busque el index.html (la página principal) de esa URL. El servidor responde a esa petición y como resultado ves el buscador que tanto usamos. HTTPS es lo mismo que HTTP solo que encriptado, por lo que da más seguridad. ¿HTML sólo es para programar en páginas web? HTML NO es un lenguaje de programación. Por lo que "programar" está mal usado. Y, básicamente, sí. No podés crear una aplicación de Windows usando HTML. Se pueden crear juegos de navegador y otras cosas más usando HTML y JavaScript en conjunto, por ejemplo, pero HTML solo da la estructura de la página, de todo lo demás se encarga JavaScript. ¿Qué lenguajes de programación pueden usarse para hacer un programa y cuál es la diferencia entre ellos? De todos los cientos de lenguajes que hay, la mayoría de ellos sirven para hacer un programa. C, C++, C#, Java, Python, Assembler, Pascal, etc, etc. Podés hacer un programa con cualquiera de esos, el tema es que depende de qué tipo de programa quieras hacer. Tené en cuenta que "programa" tiene una definición diferente a la que posiblemente (¿o quizás no?) estés acostumbrado. ¿La diferencia? La sintaxis, el nivel del lenguaje (hay lenguajes de Alto nivel, intermedio, de Bajo nivel, etc, mientras más bajo sea el nivel, más contacto con el Hardware puede tener el lenguaje), las capacidades del mismo (por ejemplo, que pueda ser usado con Objetos o no), y no se me ocurren otras cosas. La lógica para programar es la misma en todos los lenguajes. Una vez que aprendés a programar en cualquier lenguaje, como por ejemplo C o C++, ya vas a poder programar en cualquier otro. La sintaxis cambia, sí, pero eso se aprende fácilmente. ¿Se pueden combinar lenguajes de programación? Es una pregunta interesante. Hasta donde sé, el lenguaje C acepta código Assembler dentro de un programa, y lo compila sin problemas. Esa sería una combinación entre dos lenguajes. Con otros lenguajes no tengo idea, pero quizás sea posible, dependiendo del lenguaje. Dernière modification le 1445828640000 |
![]() ![]() « Citoyen » 1445829240000
| 0 | ||
Muchas gracias Obemice, ya lo pude hacer (y le agregué || al if para que en la condición se incluyan las mayúsculas también). Aunque hay algo que sigo sin entender sobre la función for. for (i = 0; i < n; i++) Sé que el bucle va a iterar desde que i valga cero hasta que llegue a n, pero no entiendo por qué se pone que i sea "menor" que n, ¿es una condición para que el bucle se repita hasta que i deje de ser menor que n, o lo estoy entendiendo mal? |
![]() ![]() « Sénateur » 1445829840000
| 0 | ||
Sí, el for se va a repetir mientras que i sea menor que n. Cuando se repita n cantidad de veces, e intente iterar una vez más, no va a poder, porque la condición dice que i tiene que ser menor a. Es bastante simple, ya te vas a ir acostumbrando. |
0 | ||
¿Cuál es la diferencia entre C, C# y Objective C? ¿Qué se puede hacer en C++ que no se pueda hacer en C/C#/Objective C y vice versa? ¿A qué se refiere la palabra "objeto" en programación orientada a objetos? ¿Qué es considerado un objeto y qué no lo es? ¿Qué tipo de programas se pueden hacer con los distintos lenguajes de programación? (Juegos, navegadores, calculadoras, editores de texto, etc?) Dernière modification le 1445832480000 |
![]() ![]() « Sénateur » 1445852700000
| 0 | ||
Bogkitty a dit : C es un lenguaje bastante poderoso que ofrece la posibilidad de trabajar tanto en bajo nivel como en alto nivel. Se puede hacer todo tipo de cosas en C, menos orientarlo a objetos ya que no se puede. Objective C es una modificación de C la cual permite usar el paradigma orientado a objetos. También tiene un par de cambios en la sintaxis. Es lo que usa Apple actualmente para su software, así que a menos que trabajes en la compañía de la manzana dudo que sirva aprender este lenguaje. C# sería como la evolución de C++. Es un lenguaje de alto nivel, puramente orientado a objetos, que no tiene tanta capacidad de trabajar en bajo nivel como C. Tiene una sintaxis y es en cierta forma similar a Java, ya que Microsoft lo diseñó para competir con el mismo. C# es hermoso y es muy lindo trabajar con él, pero la ventaja y a su vez desventaja es que simplifica mucho las cosas, y si uno se acostumbra a esto le puede costar después usar otro lenguaje no tan simple. Uhm, todo depende. C++ es la evolución de C y admite objetos (está muy centrado en objetos, tiene muchas herramientas para trabajar con ellos) y todo eso. Pero a su vez pierde ciertas características de bajo nivel que tiene C. Y bueno eso, podés usar el POO, cosa que en C no, también en C++ podés usar strings... No sé, hay varias cosas que en uno podés hacer y en otro no. Después leo el apunte que tengo de POO y te contesto que es un objeto. ¿Todo tipo de programa? Con C podés hacer desde sistemas operativos, hasta juegos o programas de Windows, o incluso cosas con Arduino, o trabajar con procesos en Linux. No hay una limitación en cuanto a eso. Incluso con JavaScript podés hacer aplicaciones de navegador y después con nw.js convertirlas en un ejecutable de Windows. La programación es un mundo de posibilidades en el que podés hacer lo que quieras. |
![]() ![]() « Censeur » 1445886300000
| 0 | ||
¿Qué diferencia hay entre Java y Javascript? |
![]() ![]() « Sénateur » 1445890320000
| 0 | ||
Java y JavaScript son dos lenguajes totalmente separados que poco y nada tienen de relación, a salvo de un nombre similar. JavaScript se usa en el ámbito de desarrollo de páginas Web. Java es un lenguaje de alto nivel, multiplataforna, orientado a objetos, con el que se pueden hacer miles de cosas, tales como aplicaciones, juegos (¡Hola Minecraft!), y demás. |
![]() ![]() « Citoyen » 1445896260000
| 0 | ||
Bogkitty a dit : Me es casi imposible hablarte de objetos cuando hay otros "metodos" en sí para determinar a uno (por ejemplo las clases, referencias, etc). Intentaré hacerlo lo más breve y mejor que pueda. Un objeto es como un tipo de cosa, por ejemplo una manzana. Nosotros podemos crear los tipos de objetos que queramos, nosotros decidimos qué queremos que tenga ese objeto; por así decirlo, puedes tener un árbol y en el árbol podemos tener manzanas. Básicamente en los lenguajes OO (y corregirme si estoy mal) todo se considera un objeto (apartando búcles, keywords, condicionales, etc) y tu estas trabajando con tal objeto para luego empezar a trabajar con otro y así sucesivamente. Una referencia es como el tipo de objeto y el nombre con el que lo vamos a utilizar, la referencia es como decir: Tengo un peluche y se llama Teddy; donde peluche es el objeto y Teddy es la referencia. Imagina que tienes una televisión (un objeto) y un control remoto (la referencia). El tiempo que mantengas esta referencia, tendrás una conexión al televisor, pero cuando alguien dice, "cambia el canal" o "bájale el volumen", lo que estás manipulando es la refencia que en sí modifica el objeto. Si quieres moverte por todo el cuarto y seguir teniendo el control del televisor, te llevas contigo el control (la referencia) contigo, no la televisión. Además, el control remoto puede mantenerse por si sólo, sin la televisión. Que tu tengas una referencia no significa que tengas que tener un objeto conectado a el. En caso de que quieras una palabra o una oración, creas una referencia de un String. a dit : Pero aquí sólo has creado la referencia, no el objeto en sí. Si decides enviar un mensaje por parte de la referencia "potatoe", tendrás un error porque no hay nada conectado con "potatoe". Una buena práctica es siempre inicializar una referencia cuando la creas: a dit : (no sé si funcionará así en otros lenguajes ya que, no me he dado el tiempo de buscarlo, en caso de que no funcione sería algo como): a dit : Eso sería todo básicamente, espero que me haya dado a entender bien. Dernière modification le 1445896320000 |
![]() ![]() « Sénateur » 1445898000000
| 0 | ||
Este es un extracto del apunte que me dieron a mí al momento de aprender POO. Siempre que tengo dudas sobre qué carajo era un objeto o para qué me sirve usar esta paradigma (no le tengo mucho afecto), lo leo y me resuelve todas las dudas. Introducción al paradigma de programación orientada a objetos Revisión 2.1 Parte 1 teórica - Conceptos básicos, paradigma, definiciones. El paradigma orientado a objetos permite simplificar un sistema construyendo subsistemas más pequeños que trabajen en conjunto. Cada subsistema contiene su propia información y tiene la capacidad de procesar y manipular esa información. Los subsistemas que plantemos son en realidad objetos. Estos objetos interactúan aportando sus funcionalidades e información, logrando un trabajo en conjunto que genera el funcionamiento completo del sistema. Para interactuar entre sí utilizan mensajes. Cuando se aplica el paradigma orientado a objetos, no solo se logra disminuir la complejidad del sistema en su totalidad, sino que además se mejora la mantenibilidad (cambios futuros) y el control del código del programa. Esto es gracias a que cada objeto tiene responsabilidades limitadas, con lo cual el código puede ser manipulado (modificado) con un bajo impacto en el resto del programa (cambiar una parte del código no afecta el funcionamiento general del sistema). Para lograr crear los objetos se necesita una clase. Esta clase tiene la definición general que luego será aplicada a la hora de crear un nuevo objeto. Básicamente en una clase se definen los atributos, métodos y constructores. Los atributos son los datos que el objeto podrá contener. Los métodos las responsabilidades que podrá resolver, en otras palabras son las funciones que puede ejecutar el objeto. Los constructores son los encargados de crear realmente el objeto tomando el diseño planteado en la clase. Aclarando las ideas, si nos encontramos con un sistema que involucra a la información de los empleados de un comercio, podemos decir que cada uno de los empleados es un objeto, por ejemplo “Juan Pablo Martinez, DNI 12.345.345, Nacido el 10/02/1980” y “Carla Montero, DNI 15.444.555, Nacida el 25/07/1984” son 2 objetos diferentes pero con la estructura determinada de un “Empleado”. Cuando se determinan las estructuras básicas, se generan las clases. De este ejemplo podríamos decir que cualquiera de los dos objetos podría lograr informar cual es la edad del empleado. El código que lo resuelve es el mismo (Calcula la edad entre la fecha de nacimiento y la fecha actual) y lo que varía son los datos que utiliza (Ambas fechas de nacimiento son diferentes). Entonces nos encontramos con que el código creado para calcular la edad será generado una sola vez y luego será aplicado para cualquier cantidad de objetos que el sistema contenga. En este caso para los 2 objetos que nombramos pero podrían ser muchos objetos creados con la clase “Empleado”. Esto permite reutilizar el código creado. El principio llamado “encapsulamiento” indica que los atributos solo son accesibles dentro de la misma clase, por lo que es necesario construir una interfaz que le brinde la posibilidad de compartir la información que contiene la clase con otras clases. Una interfaz se crea con métodos públicos, esto quiere decir que los métodos públicos son accesibles para otras clases. Estos métodos, pueden ser simplemente para asignarle valor a los atributos (Ej. “poner nombre”), para conocer el valor de un atributo (Ej. “dar nombre”), o métodos que realizan otra funcionalidad (Ej. “Calcular edad”). No todos los métodos son parte de la interfaz, existen métodos que solo son accesibles desde el interior de la clase, llamados privados. Cuando hablamos de una “clase” en realidad estamos hablando de la definición que permite crear objetos. Podríamos decir que la clase un molde para crear objetos. Un objeto se crea al instanciar una clase. Cuando se crea una instancia de una clase, realmente se crea un objeto en la memoria que tiene los métodos definidos en la clase y la capacidad de almacenar la información que se definieron en la clase como atributos. Para simplificar la idea podríamos decir que una vez que se crea la instancia de la clase tenemos el objeto, pero ese objeto tiene sus atributos sin valor. Luego de crear el objeto es hora de colocarle valores a los atributos del mismo. Como el encapsulamiento no permite manipular directamente esos atributos, es hora de utilizar la interfaz creada en la clase para colocar valores en los atributos del objeto. Como ya vimos el constructor es el encargado de crear el objeto a partir de la clase. Podemos definir más de un constructor por cada clase. Básicamente se utilizan constructores que crean objetos vacíos (sin datos) o constructores que crean el objeto con los datos que son pasados mediante parámetros. Podríamos decir que se puede crear un objeto con valores definidos a la hora de crear la instancia o podríamos crear objetos sin datos y luego utilizar la interfaz (sus métodos públicos) para colocar valores en sus atributos. Resumen: Una clase define los atributos, los métodos y los constructores de dicha clase. Los métodos pueden ser privados (solo son accesibles dentro de la clase) o públicos (accesibles para otras clases). Los métodos públicos establecen la interfaz de la clase. Cuando se realiza una instancia de una clase se crea un objeto. El objeto tiene los métodos y los atributos que se definieron en la clase, pero a diferencia de esta, el objeto existe en memoria, puede guardar valores en esos atributos. Los objetos se relacionan entre si enviando mensajes, utilizando los métodos públicos que tiene cada objeto. El encapsulamiento no permite que los atributos sean accesibles desde fuera del objeto que los contiene. Para lograr manipular esta información se utiliza la interfaz del objeto. Quizás no sea tan fácil de entender, pero está muy bien explicado. |
0 | ||
Obemice a dit : Siempre tuve la misma duda, javascript entra en lenguaje? O scripting? |
![]() ![]() « Sénateur » 1457475660000
| 0 | ||
Según Wikipedia está definido como un lenguaje de programación. |
0 | ||
Obemice a dit : Se nota que crecio bastante entonces. |
![]() ![]() « Sénateur » 1464032580000
| 0 | ||
Cuando te piden ser imaginativo en SQL y no tenés ni idea de qué hacer para que la consulta sea "imaginativa" Nota: a partir del siguiente punto SEA IMAGINATIVO en la creación de las vistas ya que de lo originales que sean dependerá parte de la nota m) Realizar dos vistas que utilicen al menos tres tablas relacionadas y al menos la cláusula NOT EXISTS ![]() |
![]() ![]() « Citoyen » 1469421120000
| 0 | ||
Hace un rato Yuir estaba compartiendo por el chat un problema que tenía con su generación de imágenes con JS. El problema básicamente era que estaba intentando linkear un sitio web como si de una imagen se tratase lo que provocara que sólo se viera la imagen cuando ingresabas al sitio y no cuando intentabas colocarla en el foro o en algún otro lugar. Después de indagar un poco, parece que estaba intentando sacar de un array una imagen aleatoria y colocarla en el sitio web para que así cada vez que se refrescara la página apareciera una imagen random, el problema estaba ahí, estaba enviando un sitio web entero en lugar del código que compone la imagen. Probando y probando me di cuenta que no encontré una manera 'handy' para retornar sólo la imagen en JS. Y así fue como llegué a un ejemplo que está en el manual de php. a dit : Al final, me di cuenta que era eso, si no envías el content-type header que es una imagen, el bbcode de la imagen no te la aceptará porque estará pensando que es un sitio web y no sólo una imagen, es muy importante que sólo envíes la imagen y no todo el sitio (evita espacios en blanco como nuevas líneas, te ahorrará unos dolores de cabeza). Para finalizar un quote de @Obemice: Obemice a dit : Espero que a alguien le sea de utilidad si quiere crear herramientas como las que hizo Minstens (LoL stats, loadformice, etc) y/o la web de las nuevas insignias del foro (aunque esta sea diferente porque agarra div's y esas cosas del foro supongo). |