Calculadora en C# parte 1ª

En el código siguiente esta lo aprendido hasta los operadores:

En otro artículo te dejo los condicionales que es lo que falta para elegir en tipo de operación a realizar.




Operadores relacionales y lógicos.

Los operadores relacionales en C# se utilizan para comparar dos valores.

Aquí tienes una lista de los operadores relacionales más comunes:

  1. ==: Igual a
  2. !=: Distinto de
  3. >: Mayor que
  4. <: Menor que
  5. >=: Mayor o igual que
  6. <=: Menor o igual que

Estos operadores devuelven un valor booleano (true o false) dependiendo de si la comparación es verdadera o falsa.

Aquí tienes unos ejemplos:

Estos operadores son esenciales cuando necesitas tomar decisiones en tu código basadas en comparaciones.

Operadores logicos:

Se utilizan para combinar expresiones booleanas y tomar decisiones más complejas. Aquí tienes una lista de los operadores lógicos más comunes:

  1. && (AND lógico): Devuelve true si ambas expresiones son verdaderas.
  2. || (OR lógico): Devuelve true si al menos una de las expresiones es verdadera.
  3. ! (NOT lógico): Invierte el valor de una expresión booleana. Si es true, la convierte en false y viceversa.

A continuación, algunos ejemplos:

bool a = true;
bool b = false;

bool result1 = (a && b); // false
bool result2 = (a || b); // true
bool result3 = !a; // false
bool result4 = !b; // true

Estos operadores son esenciales cuando necesitas evaluar múltiples condiciones al mismo tiempo.




Operadores

Existen operadores como en otros lenguajes de programación, se reagrupan por su función

De asignación, aritméticos, relacionales y lógicos.

Asignacion:

Se usan para asignar valores a variables el valor de la derecha sera para la variable de la izquierda.

  • tuNombre = » Daniel «;
  • int a=5:

  • tuNombre es la variable
  • » Daniel « valor asignado

Los operadores aritméticos:

Son los símbolos y funciones utilizados para realizar cálculos matemáticos básicos y avanzados. Aquí tienes una lista de los operadores aritméticos más comunes:

  1. Suma (+): Agrega dos números.

    • Ejemplo: 3+2=53 + 2 = 5

  2. Resta (-): Resta un número de otro.

    • Ejemplo: 5−2=35 – 2 = 3

  3. Multiplicación ()*: Multiplica dos números.

    • Ejemplo: 4∗3=124 * 3 = 12

  4. División (/): Divide un número por otro.

    • Ejemplo: 10/2=510 / 2 = 5

  5. Módulo (%): Devuelve el residuo de la división de dos números.

    • Ejemplo: 1010 % 3 = 1

  6. Exponenciación (^) o ()**: Eleva un número a la potencia de otro.

    • Ejemplo: 23=82^3 = 8 o 2∗∗3=82**3 = 8

Los operadores aritméticos son fundamentales en matemáticas y programación, y se usan en una variedad de contextos para resolver problemas y realizar cálculos.

En C#.

Aquí tienes algunos ejemplos básicos:

Suma (+):

  • int a= 4;
  • int b= 5;
  • int resultado = a+b; // Resultado de sumar 4+5

,Resta (-):

  • int a= 4;
  • int b= 5;
  • int resultado = a-b; // Resultado de restar 4-5

Multiplicación (*):

  • int a= 4;
  • int b= 5;
  • int resultado = a*b; // Resultado de multiplicar 4*5

Division (/);

  • int a= 4;
  • int b= 5;
  • int resultado = a/b; // Resultado de dividir 4/5

Modulo (%);

El operador de módulo (%) en C# devuelve el residuo de la división de dos números. Es muy útil cuando necesitas determinar si un número es divisible por otro, o simplemente quieres encontrar el resto de una división.

  • int a= 4;
  • int b= 5;
  • int resultado = a%b; // Resultado del moddulo 4%5

Exponeciacion:

C# no tiene un operador de exponenciación incorporado como en algunos otros lenguajes, puedes usar el método Math.Pow para realizar esta operación.

double baseNum = 2.0;
double exponente = 3.0;
double resultado = Math.Pow(baseNum, exponente); // resultado es 8.0




Tipos de datos básicos C#

Datos básicos en C#:

1. int

  • Descripción: Es un tipo de dato que representa números enteros.
  • Rango: -2,147,483,648 a 2,147,483,647.
  • Ejemplo: int edad = 25;

2. double

  • Descripción: Es un tipo de dato que representa números de punto flotante de doble precisión.
  • Rango: Aproximadamente ±5.0 × 10⁻³²⁴ a ±1.7 × 10³⁰⁸ con una precisión de 15-16 dígitos.
  • Ejemplo: double altura = 1.75;

3. bool

  • Descripción: Es un tipo de dato que representa valores booleanos (verdadero o falso).
  • Valores: true o false.
  • Ejemplo: bool esEstudiante = true;

4. char

  • Descripción: Es un tipo de dato que representa un solo carácter Unicode.
  • Rango: 0 a 65,535 (cada valor es un carácter Unicode).
  • Ejemplo: char letra = 'A';

5. string

  • Descripción: Es un tipo de dato que representa una secuencia de caracteres.
  • Características: Las cadenas de texto en C# son inmutables, lo que significa que no pueden cambiar una vez que se crean.
  • Ejemplo: string saludo = "Hola, mundo!";

En C# existen varios tipos de datos, que se pueden categorizar en dos grandes grupos: tipos de valor y tipos de referencia. Aquí tienes un resumen:

Tipos de Valor

  1. Tipos Primitivos:

    • int: Números enteros (e.g., 1, -2, 42).
    • double: Números de punto flotante de doble precisión (e.g., 3.14, -0.001).
    • bool: Valores booleanos (true o false).
    • char: Un solo carácter (e.g., ‘A’, ‘z’).

  2. Tipos Estructurados:

    • struct: Estructuras que pueden contener múltiples campos de diferentes tipos.
    • enum: Enumeraciones que definen un conjunto de constantes.

Tipos de Referencia

  1. Clases y Objetos:

    • class: Definición de tipos de referencia mediante clases.

  2. Arrays:

    • array[]: Colecciones de elementos del mismo tipo (e.g., int[], string[]).

  3. Strings:

    • string: Secuencias de caracteres.

  4. Tipos Dinámicos:

    • object: Tipo base para todos los tipos en C#.
    • dynamic: Permite trabajar con tipos que pueden cambiar en tiempo de ejecución.

Espero que esta descripción te sea útil.




Introducir datos por el teclado

Para introducir un valor en una variable en C#, puedes utilizar la clase Console para leer la entrada del teclado.

Aquí tienes un ejemplo sencillo:

En este ejemplo:

  1. Console.WriteLine se utiliza para mostrar un mensaje al usuario.
  2. Console.ReadLine lee la entrada del teclado como una cadena (string).
  3. int.TryParse intenta convertir la cadena a un número entero y verifica si la conversión fue exitosa.

Console.ReadLine es un método en C# que se utiliza para leer una línea completa de la entrada del teclado. Esto es especialmente útil para capturar datos ingresados por el usuario.

Aquí tienes un ejemplo simple de cómo usarlo:

En este ejemplo:

  1. Console.WriteLine muestra un mensaje solicitando al usuario que introduzca su nombre.
  2. Console.ReadLine lee la entrada del teclado y la almacena en la variable nombre.
  3. Finalmente, se muestra un saludo personalizado con el nombre ingresado.



Mostrando datos por la pantalla

Write:

Se utiliza para escribir mensajes por la consola de esta manera:

  • Console.Write(Aqui el texto o la variable string);

    • Console Es la clase que pertenece a Write.

Ejemplo de odigo:

En este ejemplo, estamos declarando dos variables (nombre y edad).

Utilizando Console.WriteLine para imprimir estos valores en la pantalla.

Finalmente, Console.ReadLine se usa para pausar la ejecución y que la consola no se cierre inmediatamente después de mostrar los datos.

Console.WriteLine es el método que se utiliza en C# para escribir una línea de texto en la consola. Es muy útil para mostrar mensajes, datos o resultados de operaciones. Aquí tienes otro ejemplo sencillo que muestra cómo usarlo:

En este ejemplo de codigo tambien veras como poner dialogos en las lineas largos y cortos:

  • // dialogos de una sola linea
  • /* dialogos
  • de varias
  • lineas*/



Definición de variables

Son datos que necesitamos guardar para ser utilizados, se almacenan en la memoria de P.C.

Tienen estas características:

  • Nombres:

    • Con lo que se identifican dentro del codigo.
    • Se definen usando letras y números, pero no poniendo números delante del nombre.

  • Tipos:

    • Es el dato para difencialas.

Tenemos estos tipos:

  1. Entero (int): Almacena números enteros
  2. Flotante (float): Almacena números decimales. Para mayor precisión, puedes usar double.
  3. Cadena (string): Almacena texto.
  4. Booleano (bool): Almacena valores verdaderos o falsos.
  5. Carácter (char): Almacena caracteres únicos.
  6. Arreglo: Almacena múltiples valores del mismo tipo.
  7. Objeto: Almacena instancias de clases.

  • Valor:

    • Forma de almacenarlas.

Ejemplo de código:

  • int edad; (Declara una variable entera a edad, siempre termina la línea de código con ‘ ; ‘ )
  • string nombre; (declaración de una variable de caracteres)

En C#, necesitas especificar el tipo de dato que una variable contendrá al declararla.




Entendiendo las Variables en C#

En el mundo de la programación, las variables son el corazón de cualquier lenguaje. En el caso de C#, estas se utilizan para almacenar y manipular datos.

¿Qué son las Variables en C#?
En términos simples, una variable es un contenedor que almacena datos durante la ejecución de un programa. En C#, cada variable tiene un tipo que define qué tipo de datos puede almacenar, como números, texto o valores booleanos.

Declaración de Variables
Para declarar una variable en C#, necesitas especificar su tipo seguido de su nombre. Aquí tienes un ejemplo básico:

  • int edad = 25; // Variable de tipo entera
  • string nombre = » Daniel «; // Variable de tipo cadena
  • bool esProgramador = true; // Variable de tipo booleano

En este caso:

  • int es un número entero.
  • string almacena un texto.
  • bool representa un valor de verdadero o falso.

Tipos de Datos en C#
Algunos de los tipos de datos más comunes en C# incluyen:

  • Enteros (int, long, short): Para números sin decimales.
  • Flotantes (float, double, decimal): Para números con decimales.
  • Cadenas (string): Para texto.
  • Caracteres (char): Un único carácter.
  • Booleanos (bool): Para verdadero o falso.

Por ejemplo:

  • float precio = 19,99;
  • char inicial = ‘ D’;

Variables y Alcance (Scope)
El alcance de una variable define dónde puede ser utilizada dentro de tu programa. En C#, las variables pueden ser:

  • Locales: Declaradas dentro de un método y accesibles solo ahí.
  • Globales (campos): Declaradas dentro de una clase y accesibles por sus métodos.

Constantes y Variables de Solo Lectura

  • const: Para valores que no cambiarán.
  • readonly: Asignadas en la declaración o en el constructor.

Buenas Prácticas

Usa nombres descriptivos para las variables: en lugar de x usa edad o precio.




Envío de correos desde Python

¿Qué es MIME?

MIME (Extensiones Multipropósito de Correo de Internet) es un estándar que permite la transmisión de varios tipos de contenido a través del correo electrónico, más allá del texto simple.

  • Versatilidad: MIME permite incluir texto, imágenes, audio, video y otros tipos de archivos en los mensajes de correo electrónico.
  • Codificación: Especifica métodos para codificar datos no textuales en texto plano para una transmisión segura por Internet.
  • Encabezados: Agrega campos adicionales a los encabezados estándar del correo electrónico para indicar el tipo y la codificación del contenido.

Ejemplo de Código, vemos que es una clase:

import smtplib
import mimetypes
from email.message import EmailMessage
from email.utils import make_msgid
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

Configuración del servidor SMTP

smtp_server = «smtp.gmail.com»
smtp_port = 587
username = «tu_correo@gmail.com»
password = «tu_contraseña»

Creación del mensaje

msg = MIMEMultipart()
msg[‘From’] = username
msg[‘To’] = «destinatario@ejemplo.com»
msg[‘Subject’] = «Asunto del Correo»

Cuerpo del correo

body = «Hola, este es un correo con un archivo adjunto.»
msg.attach(MIMEText(body, ‘plain’))

Adjuntar archivo

filename = «archivo.txt»
attachment = open(filename, «rb»)

mime_base = MIMEBase(‘application’, ‘octet-stream’)
mime_base.set_payload(attachment.read())
encoders.encode_base64(mime_base)
mime_base.add_header(‘Content-Disposition’, f»attachment; filename= {filename}»)

msg.attach(mime_base)

Envío del correo

server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls()
server.login(username, password)
server.send_message(msg)
server.quit()

print(«Correo enviado con éxito.»)

Este código hace lo siguiente:

  1. Configura el servidor SMTP.
  2. Crea un mensaje MIME multipart.
  3. Adjunta un cuerpo de texto al correo.
  4. Adjunta un archivo.
  5. Envía el correo a través del servidor SMTP

De no existir el archivo nos remitirá este error:

attachment = open(filename, «rb»)
FileNotFoundError: [Errno 2] No such file or directory: ‘archivo.txt’




Diagramas de flujo

Los diagramas de flujo son herramientas visuales muy útiles para representar procesos y decisiones! Son perfectos para planificar, documentar o visualizar el flujo de trabajo. Aquí te dejo un ejemplo básico de cómo se podría estructurar un diagrama de flujo para un proceso de toma de decisiones simple:

Introducción a los Diagramas de Flujo

Los diagramas de flujo son representaciones gráficas de procesos y flujos de trabajo. Se utilizan para ilustrar la secuencia de pasos necesarios para completar una tarea o resolver un problema, facilitando la comprensión y el análisis de procesos complejos.

Historia y Origen

El concepto de los diagramas de flujo se originó en la década de 1920 gracias a ingenieros industriales como Frank y Lillian Gilbreth. Fueron popularizados en los años 40 con la publicación del libro «Procedure for Program and System Flow Diagrams» por Herman Goldstine y John von Neumann.

Simbología Básica

Los diagramas de flujo utilizan una serie de símbolos estándar para representar diferentes tipos de acciones o decisiones:

  • Óvalo: Representa el inicio o el fin de un proceso.
  • Rectángulo: Indica una etapa o acción.
  • Rombo: Utilizado para decisiones, mostrando diferentes rutas dependiendo de la respuesta.
  • Flechas: Muestran la dirección del flujo de proceso.

Aplicaciones

  1. Planificación y Mejora de Procesos: Ayudan a identificar cuellos de botella y áreas de mejora.
  2. Documentación de Procedimientos: Proveen una representación clara y detallada de los pasos en un proceso.
  3. Resolución de Problemas: Facilitan el análisis de procesos para encontrar soluciones efectivas.
  4. Educación y Formación: Utilizados como herramientas didácticas en la enseñanza de diversas disciplinas.

Beneficios de Usar Diagramas de Flujo

  • Claridad: Simplifican procesos complejos, haciéndolos más fáciles de entender.
  • Eficiencia: Ayudan a identificar redundancias y optimizar flujos de trabajo.
  • Comunicación: Facilitan la comunicación de procesos entre diferentes partes interesadas.

Cómo Crear un Diagrama de Flujo

  1. Definir el objetivo: Determina el proceso o problema que deseas ilustrar.
  2. Identificar los pasos clave: Desglosa el proceso en sus componentes esenciales.
  3. Elegir los símbolos adecuados: Utiliza la simbología estándar para representar cada paso.
  4. Conectar los elementos: Utiliza flechas para mostrar la secuencia y la dirección del flujo.
  5. Revisar y ajustar: Asegúrate de que el diagrama sea claro y preciso, realizando ajustes si es necesario.

Conclusión

Los diagramas de flujo son herramientas poderosas para la planificación, documentación y mejora de procesos. Su capacidad para simplificar y visualizar procedimientos los convierte en esenciales para la gestión eficiente y efectiva en diversos campos.