4. GUI exercise: Calculator | Everything about Matlab GUIDE

Поделиться
HTML-код
  • Опубликовано: 12 окт 2024

Комментарии • 21

  • @Tutoingeniero
    @Tutoingeniero  3 года назад

    ▶️ Perfecciona tus habilidades en mi nuevo curso de Matlab GUIDE en UDEMY!
    www.udemy.com/course/aprende-a-programar-guis-en-matlab-guide-como-un-dios/learn/lecture/20313705?referralCode=BED79AB516E709B36686#announcements
    ▶️ Curso GRATIS Matlab App Designer
    ruclips.net/p/PLSrGuI5Xqm-6PvfLPV1Z7uo1h2sK7iEYw

  • @axelstylebender
    @axelstylebender 4 года назад +1

    Muy buen aporte bro, una pregunta, si quisiera usar numeros negativos como le haría? es decir, si yo quiero ingresar -7 * 10 (por ejemplo) como le haría?

    • @Tutoingeniero
      @Tutoingeniero  4 года назад +2

      Bueno ahí ya brincas a complejidad de calculadora científica, por eso no me molesté ni en pensarlo en su momento. Necesitarías hacer toda la lógica de los operadores bastante diferente, pues ahora los operadores van a tener que ser caracteres que puedas escribir en la pantalla. La neta no te lo puedo explicar a detalle por aquí porque es un montón de cosas que tendría que deducir ya escribiendo el código, pero en esencia es eso que dije y a parte un montón de líneas de código para que puedas interpretar que los signos concatenen con el texto dentro de la celda que tienen a su derecha y así...

  • @ignaciohendl740
    @ignaciohendl740 4 года назад

    Brutal, excelente video!
    Me he quedado sorprendido con esta forma de programar que utilizas... Quisiera por favor hacerte algunas preguntas para clarificar:
    Entiendo que "handles" es una especie de estructura donde se guarda toda la información de la interfaz, verdad? Pero que sería "hObject"? Hasta donde puedo ver hace referencia al objeto cuyo callback se ejecutó último...
    Una última duda, podrías explicarme un poco más como funciona "guidata" y la sentencia que necesitas para utilizar "guidata" por favor?
    y porque es necesario almacenar allí la información?
    Gracias desde ya!

    • @Tutoingeniero
      @Tutoingeniero  4 года назад +1

      hObject es un atajo para el nombre completo de un componente gráfico en específico que funciona cuando estás dentro del callback del mismo. Por ejemplo si quiero asignar una propiedad a un pushbutton desde otro componente debo referirme a él como handles.pushbutton1, pero si le asigno una propiedad desde el callback del mismo, puedo referirme a él como hObject.
      No es explícitamente necesario almacenar cosas con guidata, hay otra maneras que explico en el video de variables globales, pero me parece la mejor si piensas sobreescribir la estructura handles de la GUI. Casi siempre sólo debes escribir guidata(hObject,handles) y no necesitas profundizar en el porqué, pero ese hObject se referiere a la figura padre que almacena TODA la GUI, o sea handles.figure1 y por eso si actualizas a la estructura padre se actualizan los hijos también, pero si quieres actualizar específicamente algo de un componente puedes poner por ejemplo guidata(handles.pushbutton1,handles). Puedes pensar en el primer argumento como a quién actualizarás y el segundo como lo que vas a actualizarle al primer argumento.

    • @Tutoingeniero
      @Tutoingeniero  4 года назад +1

      Ah y muchas gracias por tu apoyo compañero :33

    • @ignaciohendl740
      @ignaciohendl740 4 года назад

      @@Tutoingeniero Excelente, muchas gracias por tu respuesta. Me ha quedado bastante claro.
      Hace unas semanas empecé a investigar sobre GUI en Matlab porque necesito hacer una un poco compleja. Hasta el momento la tengo bastante avanzada pero recién hace 2 o 3 días empecé a ver tus vídeos y entender mejor el potencial detrás de las posibilidades que ofrece Guide.
      Hasta el momento yo venía usando variables globales y almacenando cosas en los userData pero ahora me doy cuenta que hay formas mucho mejores. Supongo que al final terminará siendo un híbrido jajaja.
      Gracias por tus vídeos, no es fácil encontrar explicaciones tan claras... Los tutoriales de Mathworks son un poco avanzados para mi todavía!

  • @byrongarcia8229
    @byrongarcia8229 4 года назад +1

    excelente video, amigo me ayudaste bastante. gracias¡¡¡¡¡

    • @Tutoingeniero
      @Tutoingeniero  4 года назад +1

      Qué bueno amigo! Sigue pendiente de más tutoriales más increíbles

  • @DanielFlores-tt8fx
    @DanielFlores-tt8fx 4 года назад

    amigo talvez si trabajaste en la claculadora con una imagen ?? creo mencionas touch board

    • @Tutoingeniero
      @Tutoingeniero  4 года назад

      Ya se me había olvidado. Concluí que no valía la pena, pero el tema que iba a usar de ejemplo para hacer eso lo hice en otro video con otro ejemplo más sencillo sobre cómo cambiar y personalizar los punteros en una GUI. Te invito a verlo, ya que la lógica de ese video la puedes usar para eso que dije que iba a hacer con la imagen.

  • @erickrosado680
    @erickrosado680 3 года назад

    Amigo una pregunta , como hago para que presione un numero y se muestre en la pantalla de la computadora ?

    • @Tutoingeniero
      @Tutoingeniero  3 года назад

      Ammm, a qué te refieres con la pantalla de la computadora?

    • @erickrosado680
      @erickrosado680 3 года назад

      @@Tutoingeniero ah nono , la pantalla de la calculadora*** ,siempre que presiono un numero en la simulación , me sale error

    • @Tutoingeniero
      @Tutoingeniero  3 года назад

      Seguramente estás accediendo erróneamente a los contenidos de las celdas de la memoria. Estás usando mi código?

  • @darksix3963
    @darksix3963 4 года назад +1

    Alguien sabe como hacer para poder mostrar el syntax error si se realiza una operacion como por ejemplo 5××5++-4

    • @Tutoingeniero
      @Tutoingeniero  4 года назад

      Bueno, si te fijas cada caractér se guarda en una celda, así que en el callback del botón "=" quizás pudieras poner una condición que explore el vector de celdas donde guardas los números y si encuentras dos operadores iguales seguidos que te imprima ese mensaje. El detalle es que syntax error aparece si pones dos operadores seguidos, si dejas incompleta la operación y demás, así que creo que serían varias condiciones.

    • @darksix3963
      @darksix3963 4 года назад

      @@Tutoingeniero por ejemplo if A==××
      Disp('syntax error')
      Else A~=××
      Disp(A)
      Pero al momento de hacerlo con los operadores me marcaría error porque tengo entendido que los if solo funcionan con números

    • @Tutoingeniero
      @Tutoingeniero  4 года назад

      @@darksix3963 Sí, es cierto. Existe el comando strcmp para eso, te quedaría algo así:
      if strcmp(A,'xx')==1
      else
      end
      Sí me explico?

    • @darksix3963
      @darksix3963 4 года назад

      @@Tutoingeniero
      try
      A=get(handles.Pantalla,'string');
      A=eval(A)
      catch
      end
      if A==0
      set(handles.Pantalla,'string','syntax error')
      else
      set(handles.Pantalla,'string',A);
      end
      Yo tengo mi código así pero necesito que en lugar de poner A==0 me funcione A==** o cualquier otra condición pero que lleve caracteres

    • @Tutoingeniero
      @Tutoingeniero  4 года назад

      Sí viste mi respuesta anterior? El comando strcmp es el que quieres. Ya lo intentaste?