FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola y bienvenido a clubdelphi
Para empezar a responderte habría que saber cuáles son tus conocimientos de programación, porque lo que necesitas es manejarte un poco con el lenguaje, tener unas ideas de matemáticas, un poco de deducción lógica y ganas, muchas ganas de ponerte con ello Por los foros y por nuestro ftp encontrarás montones de tutoriales, ayudas, ejemplos, programas (incuso calculadoras), libros, enlaces... montones de gigas de información para poder aprender. También te recomiendo, antes de seguir, que leas nuestras normas básicas. De nuevo, bienvenido |
#2
|
||||
|
||||
Bienvenido al ClubDelphi
Yo creo que lo mejor es ir poco a poco y que vayas realizando de una tarea a la vez. Por ejemplo, podrias ir tomando una a una las de la lista que hiciste, e ir resolviendolas. Si te trabas en algun momento, no dudes en consultar. Tampoco me parece mal que hagas una especie de "diario" si quieres en el mismo foro de como lo vas resolviendo. De esa manera el resto puede ir viendo el codigo y comentando Vas a necesitar, mas que nada, conocer el framework de componentes con el que vas a trabajar. En Delphi tenes dos, uno se llama Vcl y esta basado en la API de Windows, por lo tanto, solamente corre en Win32 y Win64. Por otra parte, tenes Firemonkey (FMX) el cual es multiplataforma, y puede correr en Win32, Win64, iOS, OSX y Android. Por mucho esfuerzo que hayan hecho, algunas cosas son "similares" entre los dos framework, pero la verdad es que hay grandes diferencias. Una vez que te decidas por un framework, es cuestion de ir conociendo los componentes y los controles, saber que puedes hacer con ellos basicamente. Firemonkey es mas nuevo, por lo que esta en las versiones mas recientes de Delphi (creo que desde Delphi XE2, pero aca solo corria en Windows y OSX, y le han ido agregando plataformas en las sucesivas versiones) mientras que la Vcl esta desde el dia 1. Sobre la Vcl vas a encontrar muchisima informacion en los foros, en la web, y sobre todo, mas gente que conoce el framework. Ademas, es indiscutiblemente muchisimo mas maduro que FMX, al que todavia le falta pulir algunas cosas |
#3
|
|||
|
|||
Gracias
Primero que nada gracias por las respuestas y la bienvenida.
@Casimiro Notevi Imaginé que podría ser una posible consulta de uds, qué conocimientos tengo, de primera no los puse por dos motivos, uno, para que no quedara más largo de lo que ya estaba quedando mi mensaje (no soy bueno sintetizando, tiendo a escribir mucho), y dos, mi pregunta buscaba una respuesta del estilo de: "Necesitas conocer tipos de variables (diferenciar integer de string, por ejemplo), estructuras de control y manejo de arrays, teniendo claros esos conceptos es suficiente" ...o por ejemplo... "Necesitas conocer tipos de variables, estructuras de control, arrays, matríces, punteros, listas, árboles, cola, pila, manejo de eventos, bla, bla, bla" Esas respuestas que puse como ejemplo se podrían dar independientemente de cuáles sean mis conocimientos, ¿se entiende a lo que voy?. Pero es lógico tu planteo, ya mismo te cuento que tengo los conocimientos del primer ejemplo de respuestas, jeje. Sé lo que es una variable, conozco los tipos básicos (integer, real, char, string, boolean), sé utilizar las estructuras de control (quizás incursione en malas prácticas al usarlas pero les doy un uso que resuelve mis problemas, je), sé manejar un array acotado y tengo idea de los eventos. Hasta ahí llega mi sabiduría, como les dije, novato elevado a la N. Pff, leí las normas, el punto 4 me crucifica, de tres palabras de ejemplo para NO utilizar, usé dos. Lo que no estoy viendo es si es posible corregir el título, si se puede no encontré cómo. @[AgustinOrtu] Si, es lo que estoy haciendo, de hecho lo único que empecé a programar es el botón +, y ahora mismo estoy viendo cómo resolver la cuestión de que cada vez que presione el botón + me guarde el número ingresado en el array (array que por el momento lo tengo acotado a diez lugares ya que no sé cómo manejar "arrays dinámicos", por ahora mi calculadora solo te permite operar con hasta diez números distintos ) y que el próximo ingresado lo guarde en la siguiente posición, y así sucesivamente hasta que se presione el botón =. Ahí recién se opera con todos los números almacenados. Suena simple pero no me estoy dando cuenta como hacerlo. A esto agregar que no sé tampoco como hacer para que luego de clickear el botón + automáticamente retome el foco en la caja de texto y lo próximo que escriba sobreescriba el anterior número. En principio no veo de qué modo iterar, un for no puedo porque no sé cuántos números va a utilizar el usuario, puede hacer 4 + 4 como puede hacer 4 + 5 + 4 + 7 + 7 + 9. Y si hago un repeat no me doy cuenta como controlarlo para que se ejecute entre click y click del botón + hasta que se presione el =, la primera vez que empecé a escribir el código se me "rompía" el array porque el repeat ejecutaba todo el código en el momento que apretaba el más y la condición de término nunca llegaba, después me di cuenta la burrada que había hecho y ahora estoy viendo como encararlo. Gracias nuevamente, sigo un poco más y les comento mis avances. |
#4
|
||||
|
||||
Si vas a usar un arreglo, vas a tener que en algun lado mantener un indice, osea el lugar "actual", por decirlo de alguna manera, para saber cual fue la ultima posicion en la que guardaste el ultimo numero.
El arreglo dinamico es muy similar al estatico, la unica diferencia es que debes inicializarlo, y obviamente el compilador no puede ayudarte si "te vas de rango", mientras que el estatico no te va a permitir (a menos, no por defecto) utilizar posiciones fuera del rango permitido. Asi usas un arreglo dinamico:
|
#5
|
||||
|
||||
Cita:
Realmente no se puede contestar lo que necesitas saber porque puedes hacer la calculadora de muchas formas distintas, esto es como el MacGuiver, según con lo que cuentes te las apañas Que quieres hacerlo con arrays, lo haces con arrays, que quieres hacerlo solo con variables, pues solo con variables, etc. Claro, siempre hay métodos mejores, pero eso lo hace la experiencia y haber visto códigos de otros. |
#6
|
||||
|
||||
Hola Juampi,
Con esto puedes avanzar un poco. Esto al principio Y esto en los eventos correspondientes.
Un Saludo. p.d.: Sólo funciona con enteros y al final tienes que poner un = para que lo sume todo, ya lo modificas como quieras.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber. |
#7
|
|||
|
|||
Baby steps lo mio xD
@[AgustinOrtu]
Estuve hablando con un amigo y al parecer el array dinámico no era lo que yo creía que era, y tampoco me permitiría tener "infinitos" números, que para eso pensara en punteros. Voy a tener que leer un poco sobre eso, tanto sobre arrays dinámicos como sobre punteros. @Casimiro Notevi ¿Es posible hacer la calculadora de Windows solo con variables?, de ser así, sé menos programación de lo que creía que sabía. ¿Cómo manejas solamente con variables que el usuario ingrese todos los números que se le plazca?. Repito la consigna por las dudas, mi idea no es hacer una calculadora cualquiera, es hacerla como la de Windows, que el usuario me puede ingresar n + n como me puede ingresar n + n + n - n -n + n / n * n + n... + n. Sinceramente no sé cómo guardar todos esos valores utilizando solo variables, no digo que no sea posible, sencillamente no me doy cuenta. @olbeup Hay varias líneas de ese código que no sé leer, no las termino de entender, pero veré si lo copio y ejecutándolo y probando logro entenderlo al completo. Saludos y gracias, les aviso cuando logre algo como la gente, jeje. |
#8
|
||||
|
||||
Con un arreglo dinamico podes tener tantos numeros como memoria tengas disponible (ok no es del todo precisa esa afirmacion, es un poco exagerado, pero podemos verlo de esa manera)
Si te fijas en como estan implementadas las estructuras que contienen datos (el ejemplo mas facil son las listas) veras que usan un arreglo dinamico, el cual van haciendo crecer a medida que hace falta meter mas elementos. Para eso estas clases van llevando la cuenta de cuantos elementos hay, cual es el tamaño actual del arreglo, realizan el "ensanchamiento" cuando es necesario, etc. Obviamente esto tiene un coste, porque los arreglos tratan de posiciones contiguas de memoria: si yo primero digo que hay un arreglo con 10 posiciones, se reserva en memoria 10 posiciones contiguas; si ahora quiero tener 15, necesito 15 posiciones. Si en donde estaba parado tengo para sumar las 5 posiciones, genial; pero si no, tengo que buscar una porcion de memroia en donde me entre un arreglo de 15 y despues moverlo. Todo esto se maneja de memoria automatica incluso si queres operar a un nivel "tan bajo" como es el de los arreglos dinamicos. Uno simplemente lo redimensiona, con el mismo codigo que mostre arriba, llamando a System.SetLength(variableArreglo, tamanoDeseado) y Delphi/Lazarus se encarga del resto. Si queres poder usar el arreglo dinamico, quiza requiera un poco mas de trabajo, aunque como aprendizaje esta buenisimo. Si queres usar algo ya hecho, en tu caso lo mas ideal seria una lista. No es estoy muy al dia con el tema de las clases en Lazarus, pero si realmente trata de ser lo mas Delphi-compatible posible, supongo que habra una clase TList en la unidad Classes.pas. Ejemplos y documentacion de esta clase hay por doquier. El problema que tiene esta clase es que el tipo de los elementos que guarda son punteros, porque permite guardar cualquier cosa. Va a implicar que aprendas a usar casting, lo cual a esta altura me parece demasiado Tambien podes considerar utilizar la version generica, TList<T>. Esta soluciona el problema del tipo que comentaba en el parrafo anterior. En pocas palabras, es lo mismo que la TList, pero esta permite solamente tener elementos del tipo que le indica el programador, esto lo hace mas seguro y comodo de usar ya que te olvidas del tema de punteros. Pero de nuevo, creo que te voy a marear demasiado con tanta informacion |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Opinión sobre la estabilidad actual de Lazarus/Free Pascal | Toni | Lazarus, FreePascal, Kylix, etc. | 34 | 06-02-2016 01:04:45 |
Soy desarrollador de Delphi ¿Que necesito saber para usar Lazarus? | Godzuki | Linux | 7 | 23-02-2012 23:54:34 |
Lazarus, Nemesis Pascal | rmendoza83 | Varios | 1 | 08-01-2009 17:41:08 |
Indy soporta Free Pascal/Lazarus | Delfino | Noticias | 6 | 15-01-2006 10:55:55 |
Free Pascal y Lazarus | Magician^ | Noticias | 7 | 31-03-2004 19:12:04 |
|