Selecciona el Idioma

Mostrando entradas con la etiqueta cálculo. Mostrar todas las entradas
Mostrando entradas con la etiqueta cálculo. Mostrar todas las entradas

sábado, 15 de octubre de 2016

Concurso DESY Repara 2016




Buenos días,

Como cada año, organizo al menos un sorteo para premiar a mis clientes.

El año pasado el nombre del ganador/a se obtuvo mediante un programa que cree en Lenguaje C.

Este año, a parte de que hay más de un/a ganador/a, el sorteo lo he creado mediante Lenguaje SQL, con ayuda del programa PHPMyAdmin.

A través  de sentencias SQL.

Os dejo el vídeo del año pasado para refrescar un poco la memoria:

Concurso Desy Repara 2015 

En este lo que hice fue ejecutar procedimiento con 3 variables en Lenguaje C.

Y mostrar el resultado del aleatorio con la función Rand() a partir de un Switch (En caso de).

Y un bucle para que recorre un único número  premiado al azar entre el 1 y el 10.

Finalmente ordeno escribir el número que ha salido de forma aleatoria y lo introducimos obteniendo así al ganador/a que le corresponde ese número en el listado del  Switch(En  caso de).




Y aquí el de este año:

Concurso Desy Repara 2016

Este año he realizado el programa en lenguaje SQL:

creo una bbdd nueva a través de PHPmyAdmin ( se puede hacer en consola o Workbench entre otros...).

A esa bbdd le creo una tabla con los campos: ID(Autonumerico) que será el campo clave primaria, y los campos Nombre y Apellidos que serán tipo VARCHAR(texto).

A partir de esta tabla añado tantos registros como clientes dispongo con un INSERT INTO.

Y finalmente creo la consulta que me dará el nombre de los ganadores/as de este año.







Felicidades a l@ ganadores/as.

Y al resto más suerte , el año que viene.





Espero que os sirva de ayuda,

para más info suscribete a Desy Repara




domingo, 29 de noviembre de 2015

Smartwatch

Los Smartwatch o también conocidos como: relojes inteligentes.
Son unos dispositivos de última generación, que utilizan entre otras , la tecnología bluetooth para sincronizar datos de un smartphone al reloj.

Ese es su principal cometido, pero tienen muchas más opciones .



La gran mayoría porta un sistema operativo Android.
Pueden incluir características como: acelerómetro, termómetro, barómetro, brújula, cronógrafo, equipo de buceo, calculadora, teléfono móvil, gps, altavoz, agenda, reloj,etc.
Puede utilizar auricular bluetooth,manos libres, micro, módem u otros dispositivos externos.

Durante la década de 1980, casio, empezó a comercializar una línea de relojes  ordenadores,
además de sus famosos relojes  calculadora.

En 2012, Sony lanzó su primer reloj inteligente  ofreciendo funciones mejoradas de control remoto.

Samsung se ha sumado al carro de los Smartwatch.

Y la famosa marca Apple, presenta su propia línea de Applewatch.


Pero todo no podía ser bonito ... Algunos rumores nos indican que en especial los apple watch producen quemazones, debido a las altas temperaturas que por razones de la batería de carga portan estos relojes.

Además si deseamos utilizarlo sincronizando la información del  smartphone al smartwatch, debemos tenerlos ambos a una distancia NO SUPERIOR  a 10 metros para que sea efectivo (y debe ser un modelo compatible con nuestro teléfono).

Las nuevas tecnologías mejoran la tecnología de generaciones atrás, pero los usuarios debemos tener en cuenta  el uso que le damos.

En estos aspectos, yo personalmente, sigo prefiriendo algo más clásico, cómo los relojes analógicos que únicamente marcan la hora con sus respectivas agujas y en algunos casos además nos informan del día en el que vivimos. 


Me resultan más elegantes y eficaces, para la función que debe desempeñar un reloj.

Pero es cierto, en algunos casos, ya sea por necesidades laborales o personales.
Los smartwatch pueden facilitarnos el día a día con sus aplicaciones.






Espero que os sirva de ayuda,

para más info suscribete a Desy Repara





jueves, 27 de febrero de 2014

Manual Programación C

Los lenguajes de programación podemos dividirlos en :Lenguajes de Alto Nivel y Lenguajes de Bajo Nivel.
Los de bajo nivel, son más cercanos al ordenador.Eso hace que sean más difíciles de aprender.El ordenador sólo entiende 0 y 1. También conocidos como :Datos binarios
Antes de poner en práctica los lenguajes de alto nivel es conveniente:
  • Crear Algoritmo en Pseudocódigo
Es como realizar un boceto del programa, antes de ponerse a picar código, eso facilita el trabajo, especialmente si estamos empezando a programar y desconocemos todo el lenguaje.
El Lenguaje C, se puede crear desde varios programas (Dev-c++,Eclipse,Gedit...),ha de estar bien tabulado y seguir una estructura:
  • Bibliotecas (#include ...)
  • Variables
  • Funciones y Procedimientos
  • Bucles o Condicionales
  • Terminar con un: system("PAUSE");

Existen diferentes tipos de datos (numéricos,carácteres,cadenas...) para definirlos en las variables se hace:
  • int numero; (si es de tipo entero)
  • float numero; (si es tipo real)
  • double numero; (si es real muy largo)
  • char c; (si es tipo carácter)
  • chat c [10]; (si es tipo cadena de 10 carácteres)
  • int c [10]; (si es un array de 10 numeros enteros)

A la hora de guardar los datos de estas variables lo haremos con:
  • scanf("%d",&numero); (si es de tipo entero)
  • scanf("%f", &numero); (si es tipo real)
  • scanf("%lf", &numero); (si es real muy largo)
  • scanf("%c", &c); (si es tipo carácter)
  • scanf("%s", c); (si es tipo cadena de 10 carácteres)
  • scanf("%d",&c); (si es un array de 10 numeros enteros)

Para printarlo por pantalla sería por ejemplo:
printf("resultado=%d\n",n);
En el caso de un entero de variable tipo entero con nombre n, el \n lo que hace es un salto de linea.
La Asignación de valores a una variable se hace así:
nombrevariable=560;
Mientras que si se tratara de un condicional sería así:
if (nombrevariable==560){
Argumentos
};
El programa debe crearse dentro del main() o, tener funciones y/o procedimientos que serán llamados a través del main().
Podemos insertar comentarios con // ( si el comentario ocupa solo una linea).
/* comentarios*/ (si ocupa más de una linea).
Para incrementar o decrementar el valor de una variable, por ejemplo si la usamos como variable contador se puede hacer de varias formas:
  • a++; o a=a+1;
  • a--; o a=a-1;

Para ver exactamente lo que ocupa una variable se hace con sizeof:
Para convertir una variable float (por ejemplo) en una int (por ejemplo):
En los condicionales (if), podemos usar carácteres como: <,>,<=,>=,!=,==
Que significan: menor, mayor,menor o igual, mayor o igual , diferente de,igual a .
Los if pueden ser anidados, NO son bucles, solo se harán una vez a menos que se encuentren dentro de bucles como:while , do-while
Los condicionales if-else , si no hacen el primer condicional harán el siguiente.En los condicionales también se pueden añadir Operadores Lógicos (&&, ||, !)
Que && es para que se cumplan las dos condiciones , || para que se cumpla una u otra y ! para que no se cumpla ninguna.
Normalmente, además del Pseudocodigo se suelen hacer Diagramas de Flujo para representar un programa en C o cualquier otro Lenguaje .
Otro elemento es el switch (variable) significa Encasode (variable).
Hace diferentes casos (respuestas) dependiendo del valor de una variable introducida. NO es un bucle y por tanto solo se hará una vez, a menos que este dentro de una estructura repetitiva, como hemos dicho antes.
Las Estructuras Repetitivasson While y Do-While. Significan Mientras... y Repetir-Mientras... Son bucles y dentro de ellos se añade el código a ejecutar tantas veces como sea necesario.
Ahora un ejemplo de Repetir-Mientras...:
Después tenemos los For, que también son bucles. por ejemplo:
  • for (i=0;i<=10;i++)
  • significa : para (i=0;mientras i<=10;hacer i++)
Esto repite un proceso que va a ir dentro del bucle tantas veces como vale i
También existen for anidados para matrices o ordenar arrays, es su uso más convencional, pero también se necesitan para crear pequeños dibujos a partir de arrays bidimensionales o tridimensionales.
Con un break; podemos terminar los bucles o condicionales.Se usan también en los Switch para pasar al siguiente case.
Mientras que los continue; sirven para forzar pasar a la siguiente acción en los condicionales .
Algunos Códigos Útiles:
putchar ('A'); Formas sencillas de poner un solo carácter por pantalla.
putchar (x) Formas sencillas de poner un solo carácter por pantalla (si utilizamos una variable).
letra=getchar(); Almacena un valor introducido, en la memoria.
gets(texto); Para escribir un texto por pantalla sin parar en el primer espacio.
puts(texto); Para escribir un texto por pantalla sin parar en el primer espacio.
strcpy (destino,origen);Asigna a una cadena el valor de otra (copiar)
strcat (destino,origen);Añade una cadena al final de otra
strcmp (cad1,cad2);Compara cadenas
sscanf ("%s",cadena) Parecido al scanf pero los datos no se leen desde el teclado sino desde una cadena de texto
struct - Son las Estructuras , se crean fuera del main(), y después son en el donde se crea los registros necesarios.
Funciones y Procedimientos:
Son pequeños programas fuera del main () que después serán llamados por este para ejecutar los datos. Las funciones retornan un solo valor , mientras que los procedimientos no retornan nada.
Las funciones pueden ser de tipo (int,double,float,char...) (su retorno tendrá que ser de este mismo tipo). Mientras que los procedimientos siempre serán de tipo Void. Ambos pueden contener parámetros.
Las variables que estos contienen se denominan locales, estas solo podrán ser usadas por el prodecimiento o función que las contenga. Pero también existen las variables globales, se declaran fuera del main() y fuera de cualquier función o procedimiento. Estas variables, si podrán ser usadas en cualquier momento del programa.
Para interrumpir un programa en cualquier momento podemos ejercer las órdenes:
  • exit(0);
  • return(0);
exit80) necesita la biblioteca #include para ejecutarse. Ambos funcionarán si no ha habido ningún error.
Para Debugar o Depurar el programa DEV-c++ incluye una herramienta de muy fácil uso, que nos alertará de los errores que hay que corregir para que el programa funcione bien. Solo hemos de poner un punto de interrupción y después compilar y Debugar.
Para cambiar los colores del printf es necesaria la funcion : SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),9)
donde el último numero (9) corresponde a un color. Por ejemplo para verlo tenéis que hacer algo así:
#include <#stdlib.h>
#include <#stdio.h>
#include <#time.h>
#include <#Windows.h> 



int functotal(int min, int max){
 min=0;
max=5;
int total=0;
int res;

printf("Total de compras  en dolares:? \n");
scanf("%d",&total);
if (total <100 0:="" 10="" 1:="" 20="" 2:="" 30="" 3:="" 4:="" 50="" :="" amarilla:="" aplicable="" azul="" blanca:="" bola="" break="" case="" de="" descuento="" dolares="" else="" etstdhandle="" hay="" int="" lo="" main="" n="" num1="" num2="" o="" oooooh="" otra="" pre="" printf="" promocion="" res="" return="" roja:="" sera="" setconsoletextattribute="" siento="" srand="" switch="" system="" time="" total="functotal(num1,num2);" verde:="" vez="">

Y se verá algo así :

Os dejo este videotutorial aquí. Es un ejemplo para obtener un resultado aleatorio, en este caso. El ganador para un concurso.






Espero que os sirva de ayuda,

para más info suscribete a Desy Repara

miércoles, 12 de junio de 2013

Administración de BBDD (WORKBENCH)


Este pequeño cuestionario de pruebas esta especialmente pensado para MySQL Workbench, pero también puede ser usado con comandos similares en PostgreSQL y/o PhpMyAdmin

1.Desde un usuario con privilegios(root) . Haz que el usuario us2 solo se pueda conectar desde la máquina en la que estas y a la base de datos bdprova. También, solo podrá utilizar las ordenes: SELECT, INSERT i LOCK TABLES:
Desde root, vamos a la pestaña de users & privileges, y clicamos en el usuario usu2.
Vamos a schema privileges y a add entry , le ponemos los datos que requiere: el host Localhost ,en Schema (bdprova) y los Privilegios se ponen desde la pestaña inferior. En Object rights marcamos: SELECT e INSERT. Y en Other Rights: LOCK TABLES.
2.Qué privilegios tiene SecurityAdmin? Qué privilegios se activan al escoger esta opción?
Se activan los privilegios “CREATE USER, GRANT OPTION, RELOAD y SHOW DATABASES".
3.Qué diferencias hay entre DBManager y BackupAdmin?
DBManager tiene todo tipos de derechos para ejercer sobre la administración en todas las bases de datos. BackupAdmin por otro lado, solo tiene el mínimo de derechos para hacer un backup (copia de seguridad) de cualquier base de datos.
En la siguiente imagen veréis la pantalla para establecer los permisos deseados al usuario seleccionado.Si los permisos no están establecidos solo podrá hacer uso de las bases de datos


Como veis en la imagen de a bajo lo hemos configuradop ara que podamos conectar desde cualquier host y a cualquier base de datos.


5. Haz el usuario/a “a3@%” con los privilegios que necesite y limita el número de consultes a 2 por hora. Después conecta con este usuario y prueba a hacer 3 consultas seguidas.
Con un límite de 2 consultas por hora ,cuando hacemos la tercera consulta en menos de una hora , nos dice que hemos sobrepasado el límite de consultes.
6.¿Como se actualizan las tablas de privilegios?
Con el comando, mediante terminal: Flush_privileges .
7.Cuál o cuales privilegios son necesarios para cambiar la contraseña de los usuarios/as? Pon de nueva contraseña del usuario3 “usuario3usuario3” utilitzando mysqladmin y la orden SET. Escribe las ordenes .
El privilegio será: Grant options ,cuando se hace en el usuario que queremos que dé privilegios.

SET PASSWORD

mysql> UPDATE mysql.user SET Password=PASSWORD('usuario3usuario3')
    -> WHERE User='usuario3';
mysql> FLUSH PRIVILEGES;

8.Es posible guardar la contraseña de administrador en el archivo de configuración? Dónde?
Es posible modificando el archivo: my.cnf: sudo nano /etc/myslq/my.cnf de Ubuntu.
En windows modificaríamos el my.ini que esta en el directorio de la instalación.
Hay que añadir estas lineas en el apartado cliente:
[client]
user = nombredeusuario
password = passworddeusuario
port = 3306
host = localhost

9.Desde administrador revoca todos los permisos para el usuario3 (que se quede solo con USAGE).
REVOKE ALL PRIVILEGES ON *.* FROM 'usuario3'@'%'; GRANT USAGE ON *.* TO 'usuario3'@'%';
10.Escribe la orden para mostrar los permisos de usuario3.
SHOW GRANTS FOR usuario3;
ROLLBACK / COMMIT
Al hacer una consulta o transacción en MySQL, se suele empezar con un BEGIN, y acabar con un COMMIT para guardar las ordenes o ROLLBACK para deshacer y no guardar.
11.Como se comprueba si autocommit esta activado? Desactivalo.
Para desactivar el autocommit hemos de hacer :
SET AUTOCOMMIT= 0;
Pero eso se suele hacer cuando usamos tables transicionales, es decir con motor de almacenamiento InnoDB o BDB.
MyISAM, el que estamos utilitzando en esta tabla, es un motor no transicional.
O Sino hacer uso del comando START TRANSACTION + comandos a ejecutar. En este caso no se ejecutará el autocommit, pero solo en la primera acción.
12.Si quieres hacer una transacción con autocommit activado, pero no lo quieres desactivar, como la haces?
Con el comando START TRANSACTION. En vez de BEGIN. I después , añadimos el resto de comandos+ COMMIT para finalizar y que se ejecute o ROLLBACK para que no se ejecute.
13.Cuál es la orden para cambiar una tabla MyIsam a InnoDB?
ALTER TABLE nombretabla ENGINE=InnoDB;
14.Diseña una transacción que ejecutarás desde la línea de ordenes.
Ponemos el Autocommit a 0: SET AUTOCOMMIT =0;
Después ejecutamos la transacción:
BEGIN;
SELECT * FROM Molinero_myisam WHERE ASIGNATURA ='BDD';
COMMIT;

15.Crear una vista a partir de una tabla ya creada.

USE dbuoc;
CREATE VIEW clients_moli AS SELECT nom_cli, nif,telefon FROM clients;



16.Haz un SELECT donde se vean todos los registros de la tabla virtual.
SELECT * FROM clients_moli;
17.Modifica la vista para incluir o excluir algún campo más.

USE dbuoc;

ALTER VIEW clients_moli AS SELECT  codi_cli,nom_cli, nif, telefon, ciutat FROM clients;

18.borra la vista DROP VIEW clients_moli;
CREAR DISPARADOR (TRIGGER):
crear disparador que se ejecute al insertar un empleado y que actualice el presupuesto sumándolo al sueldo del nuevo empleado.
DROP TRIGGER  Dbuoc IF EXIST ;
DELIMITER |

CREATE TRIGGER  Dbuoc  BEFORE INSERT ON departamentos
FOR EACH ROW
BEGIN
     
   SET  new.empleado= (SELECT sueldo FROM empleats);

   UPDATE  presupuesto SET new.presupuesto= (SELECT sueldo + presupuesto  FROM empleados,departamentos )
  
END ;
 |


DELIMITER ;

SELECT * FROM departamentos;

añadir nuevo empleado en la tabla empleados: INSERT INTO empleados VALUES ('18','desiree', 'moli','3000','DIR','Barcelona','1');


20.Hacer un disparador que se ejecute al borrar un empleado y que actualice el presupuesto del departamento restando el sueldo.
DROP TRIGGER IF EXISTS   Dbuoc2 ;
DELIMITER
|
CREATE TRIGGER  Dbuoc2
BEFORE DELETE ON empleados  
FOR EACH ROW
 UPDATE departamentos SET  presupuesto=presupuesto -  old.sueldo WHERE  old.nom_dpt=departamentos.nom_dpt AND old.ciudad_dpt=departamentos.
ciudad_dpt;
|
DELIMITER

SELECT * FROM departamentos;



21.Escribe un procedimiento que es llame proc_apellido, donde apellido es tu apellido, que muestre de todos los clientes de la ciudad que le pones como un parametro, su nombre, su DNI y su núm. de teléfono. Hazlo utilizando parámetros siempre que se pueda. Si no hay ningún cliente, ha de mostrar: “En aquesta trista ciutat no hi ha cap client...encara!”. Ejecuta el procedimiento para la ciudad de Girona.

DROP PROCEDURE IF EXISTS PROC_MOLI;
DELIMITER |
create procedure PROC_MOLI (IN ciudad VARCHAR(50))
Begin
  IF (SELECT nom_cli FROM clientes WHERE  ciudad=ciudad) IS NULL THEN
     SELECT CONCAT ('EN LA CIUDAD', ciudad, 'NO HAY CLIENTES') AS ciudad;
   ELSE
     SELECT nom_cli,nif,telefon FROM clientes WHERE  ciudad=ciudad;
  END IF;
END;
|
DELIMITER

CALL PROC_MOLI (@w);

22.Escribe una función que se llame “func_apellido”, donde apellido es tu apellido, que devuelva la fecha de inicio del proyecto del empleado que cobra más. Utiliza la función MAX y las variables que necesites.

DROP FUNCTION IF EXISTS FUNC_MOLI;
  DELIMITER |

CREATE FUNCTION  func_moli ( )   RETURNS  DATE
-RETURN  (SELECT data_inici FROM proyectos INNER JOIN empleados ON
proyectos.codi_proj=empleados.num_proj WHERE  codi_empl=(SELECT codi_empl
FROM empleados WHERE sueldo= (SELECT max(sueldo) FROM empleados)));
|
DELIMITER
SELECT FUNC_MOLI();

  

Para más info suscribete a Desy Repara

viernes, 16 de diciembre de 2011

RESISTENCIAS

se sabe por que color se empieza a calcular la resistencia, ya que el primer color será el más cercano a un extremo de la resistencia.
¿cómo se calculan?


la primera y segunda cifra forman un sólo número ( marrón + verde) (1+5 = 15)

después el número obtenido se multiplica por el valor del color MULTIPLICADOR (azul) 0 ( 1.000.000 x 15= 15.000.000 ohms)
y el final resultado se le añade el valor de la tolerancia

ej: 15.000.000 +- 5 (si es oro)