# Fundamentos de programación con Devkron

<div class="alert alert-success">
<!--<h5>Clase de programación gratuita</h5>

<p>Ayúdanos a evaluar a nuestro capacitador dedicando 1 hora de tu tiempo para aprender los fundamentos de programación en Devkron.</p>
<p>
Tema: Introducción al lenguaje Devkron: Fundamentos de programación en DKL (Devkron Language)<br>
Hora: 30 ene 2025 05:00 p. m. Ciudad de México<br>
Únase a la reunión de Zoom<br>
<a href="https://us02web.zoom.us/j/82687461436?pwd=taLbYwRv0rPbfimLt3Hs0WteIkCgJd.1">
https://us02web.zoom.us/j/82687461436?pwd=taLbYwRv0rPbfimLt3Hs0WteIkCgJd.1
</a>
<br>
ID de reunión: 826 8746 1436
<br>
Código de acceso: 504633
</p>
--></div>
Modalidad: Virtual

Objetivo: El participante conocerá los fundamentos del lenguaje Devkron, al conculuir será capaz de escribir programas útiles que incorporen 
los conceptos aprendidos desarrollando como proyecto final integrador una aplicación Web con acceso a bases de datos. 

Dirigido a: Interesados en aprender a programar con Devkron que cuenten con alguna formación previa en programación.

Duración: 22 horas efectivas

## Contenido

El lenguaje Devkron, o simplemente DKL [DevKron Language] es completamente traducible a XML; capaz de definir datos u otros dialectos; 
con interpretación imperativa y procedural para la generación dinámica de sí mismo y la realización de procesos.

**Sesión 1 (2hrs)**

### Primeros pasos 

* Configurar el entorno de desarrollo
* Ejecutar el primer programa "Hola mundo"

### Lenguaje imperativo

- Variables y tipos de datos
- Expresiones y operadores
- Sentencias de control de flujo (if/switch/break/#include/include/return/do/)
- Ciclos (for/while/repeat)
- Registros de datos (new/using y operadores morsa :=)

**Sesión 2 (2hrs)**

- Funciones definidas por el usuario
    - Funciones 
    - Funciones abiertas
    - Referencias a funciones
- Organización y estructura de programas (namespaces, funciones y alias)

**Sesión 3 (2hrs)**

### Bibliotecas de funciones incluídas

- Funciones incorporadas
- functions.dkh
- serialize.dkh
- webcl.dkh

**Sesión 4 (2hrs)**

### Acceso a bases de datos

- Configurar conexiones
- Funciones básicas (dbr.dkh)
    - Conectarse a una base de datos
    - Obtener datos (consultas)
    - Insertar y actualizar
    - Ejecutar SQL con parámetros
    - Manejar transacciones

**Sesión 5 (2hrs)**

### Desarrollo Web

- La pila de Devkron Applications Server
- El flujo de una solicitud HTTP
- Sintaxis declarativa, imperativa y la conmutación de contextos

**Sesión 6 (2hrs)**

- Configurar como servidor de aplicaciones
- Responder XML y HTML
- Responder texto y JSON
- Responder un archivo

**Sesión 7 (2hrs)**

- Enrutamientos

**Sesiones 8,9,10 y 11 (2hrs cada una = 8horas)**

### Proyecto integrador

Considerando una empresa que requiere implementar un buzón de quejas y sugerencias, surge la necesidad de:

- Crear un sitio Web con un formulario para recibir las quejas o sugerencias
- Crear una aplicación (backoffice) que permita administrar usuarios, consultar las quejas o sugerencias recibidas y marcarlas como atendidas incluyendo un mensaje de respuesta

Se considerarán dos tablas:

mensajes
- nombre varchar(100)
- correo varchar(80)
- telefono varchar(15)
- empresa varchar(100)
- mensaje text
- respuesta text
- atendio string(32)
- queja bool 

usuarios
- id varchar(32)
- pwd varchar(32)
- nombre varchar(100)

Actividades:

1. Diseñar la base de datos
2. Configurar los sitios (admin.localhost, buzon.localhost)
3. Estructurar buzon.localhost
    - Maquetar formulario de quejas y sugerencias
4. Estructurar admin.localhost
    - Programar UsuarioModel
    - Programar UsuarioController
    - Maquetar lista de usuarios
    - Maquetar formulario de usuarios
    - Programar MensajeModel
    - Programar MensajeController
    - Maquetar lista de mensajes
    - Maquetar formulario para atender los mensajes
    - Maquetar login
5. Maquetar página de inicio
6. Programar index.dkl