Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo:
Aplica los conceptos básicos de la programación para el diseño de programas básicos.
Competencia:
Desarrolla la capacidad de pensamiento lógico algorítmico para la solución de problemas de contexto a través de la
lógica de programación de computadora.
Introducción:
C# (pronunciado "Ci sharp" en inglés) es un lenguaje de programación moderno, basado en objetos y con seguridad de
características, que permite a los desarrolladores crear muchos tipos de aplicaciones seguras y sólidas que se ejecutan
en el ecosistema de .NET. C# tiene sus raíces en la familia de lenguajes C, y a los programadores de C, C++, Java y
JavaScript les resultará familiar inmediatamente. Este paseo proporciona información general de los principales
componentes del lenguaje en C# 8 y versiones anteriores. Si quiere explorar el lenguaje a través de ejemplos
interactivos, pruebe los tutoriales de introducción a C#., visite https://docs.microsoft.com/es-es/dotnet/csharp/tour-
of-csharp/tutorials/
C# resalta el control de versiones para asegurarse de que los programas y las bibliotecas pueden evolucionar con el
tiempo de manera compatible. Los aspectos del diseño de C# afectados directamente por las consideraciones de
versionamiento incluyen los modificadores virtual y override independientes, las reglas para la resolución de
sobrecargas de métodos y la compatibilidad para declaraciones explícitas de miembros de interfaz.
Arquitectura de .NET
Los programas de C# se ejecutan en .NET, un sistema de ejecución virtual denominado Common Language Runtime
(CLR) y un conjunto de bibliotecas de clases. CLR es la implementación de Microsoft del estándar internacional Common
Language Infrastructure (CLI). CLI es la base para crear entornos de ejecución y desarrollo en los que los lenguajes y las
bibliotecas funcionan juntos sin problemas.
El código fuente escrito en C# se compila en un lenguaje intermedio (IL) que guarda conformidad con la especificación
de CLI. El código y los recursos de IL, como los mapas de bits y las cadenas, se almacenan en un ensamblado,
normalmente con una extensión .dll. Un ensamblado contiene un manifiesto que proporciona información sobre los
tipos, la versión y la referencia cultural.
Cuando se ejecuta el programa C#, el ensamblado se carga en CLR. CLR realiza la compilación Just-In-Time (JIT) para
convertir el código IL en instrucciones de máquina nativas. Además, CLR proporciona otros servicios relacionados con
la recolección de elementos no utilizados, el control de excepciones y la administración de recursos. El código que se
ejecuta en el CLR se conoce a veces como "código administrado", a diferencia del "código no administrado", que se
compila en un lenguaje nativo de la máquina destinado a un sistema específico.
La interoperabilidad entre lenguajes es una característica principal de .NET. El código IL generado por el compilador de
C# se ajusta a la especificación de tipo común (CTS). El código IL generado desde C# puede interactuar con el código
generado a partir de las versiones de .NET de F# , Visual Basic, C++ o cualquiera de los más de 20 lenguajes compatibles
con CTS. Un solo ensamblado puede contener varios módulos escritos en diferentes lenguajes .NET y los tipos se pueden
hacer referencia mutuamente igual que si estuvieran escritos en el mismo lenguaje.
Además de los servicios en tiempo de ejecución, .NET también incluye amplias bibliotecas, que admiten muchas cargas
de trabajo diferentes. Se organizan en espacios de nombres que proporcionan una gran variedad de funciones útiles
para todo, desde la entrada y salida de archivos, la manipulación de cadenas y el análisis de XML hasta los marcos de
aplicaciones web y los controles de Windows Forms. En una aplicación de C# típica se usa la biblioteca de clases de .NET
de forma extensa para controlar tareas comunes de infraestructura.
Para obtener más información sobre .NET, vea Introducción a .NET,visite el sitio https://docs.microsoft.com/es-
es/dotnet/core/introduction
La Unidad dos que a continuación mencionamos trata la teoría de los fundamentos de programación.
Recordemos:
2.1. Metodología para la solución de problemas. 2.2. Metodología para el diseño de software: Top down, Bottom up,
modular y programación estructurada. 2.3. Elementos y reglas de los lenguajes algorítmicos. 2.3.1. Diagramas de flujo.
2.3.2. Pseudocódigo. 2.4. Implementación de algoritmos. 2.4.1. Secuenciales. 2.4.2. Selectivos. 2.4.3. Repetitivos. 2.5.
Pruebas y depuración
Vayamos a lo físico.
Al instalar el software: Cualquier versión (La que se muestra es 2015, más adelante está la 2022).
Localice el icono o acceso a Visual Studio o C Sharp ya sea en la barra de inicio, de herramientas o acceso directo
De clic en él y espere
Dar tiempo al tiempo a que cargue los componentes, a veces es lento la primera vez, así que no desespere. Depende
en cierta medida de la Arquitectura de su computadora o dispositivo.
Vamos a detenernos a observar dicha pantalla ya que es demasiado importante reconocer sus elementos.
Cerciórese que este instalado el C#, que la Aplicación sea para Windows Form Visual C Sharp, Cambiar el Nombre de la
Aplicación de WindowsFormsApplication3 sea el que Nosotros nombremos para llevar un mejor control.
Recomendamos realizar una Carpeta en un lugar accesible y de facil reordatorio para evitar périda de tiempo.
Ya que tengamos enfocada la Carpeta, donde se almacenará la solución demos clic en Seleccionar carpeta.
Cuando cree una aplicación o un sitio web en Visual Studio, debe comenzar con un proyecto, tal y como lo estamos
realizando. En un sentido lógico, un proyecto contiene todos los archivos que se compilan en un archivo ejecutable,
biblioteca o sitio web. Estos archivos pueden incluir código fuente, iconos, imágenes, archivos de datos, etc. Un proyecto
también contiene la configuración del compilador y otros archivos de configuración que podrían ser necesarios en diversos
servicios o componentes con los que el programa se comunica.
La primera casilla verificada realiza esta tarea. Si desea saber mas consulte el siguiente Link.
https://docs.microsoft.com/es-es/visualstudio/ide/solutions-and-projects-in-visual-studio?view=vs-2019
Git es un sistema de control de versiones distribuido que permite a los equipos trabajar en los mismos documentos de
forma simultánea. Esto significa que hay un único servidor que contiene todos los archivos, pero que cada vez que se
extrae un repositorio de este origen central, la totalidad del repositorio se clona localmente en el equipo del usuario.
Hay muchos hosts remotos que permiten trabajar con Git para el control de versiones, aunque el más común de estos es
GitHub. Existe una serie de pasos para su configuración donde se usa un host de GitHub, pero puede usar cualquier host
de Git para el control de versiones en Visual Studio incluso para Mac.
Si quiere usar GitHub, asegúrese de haber creado y configurado una cuenta antes de trabajar con Git.
Si desea llevar el proyecto con control, de versiones, que incluyen modificaciones, mejoras, actualizaciones, etc. Entonces
le recomendamos configure este tipo de servidor que puede ser local o remoto. Hoy en día se utiliza la nube para
almacenamiento ya que puede compartir la información del proyecto sin atentar contra la información sensible de nuestra
computadora o servidores propios. Es necesario mencionar que Git Hub es mucho mas que un almacén de código fuente.
Git es un software de control de versiones distribuido diseñado por Linus Torvalds (Creador de Linux) como solución a los
problemas de control de versiones que se encontraban los desarrolladores del kernel de Linux. Plataformas como Github
son sistemas web para control de código fuente que utilizan Git como sistema de versionado subyacente y son compatibles
con sus protocolos. Es decir, aunque parezca una obviedad, es necesario aclarar que todos los repositorios de Github
utilizan Git pero no todos los repositorios Git están en Github.
Este control de versiones, que muchos usuarios aportan, se llevaba a cabo en plataforma como Codeplex y SourceForge
que todavía esta esta en uso: Recuerdan del sitio http://pseint.sourceforge.net/?page=descargas.php
Para descargar la herramienta de asistencia para programadores en sus primeras etapas como un pseudolenguiaje
complementado con un editor de diagramas de flujo que utilizamos en la segunda unidad del programa.
Al iniciar con nuestra primera práctica recomendamos no activar la casilla de GitHub y demos Aceptar
Una vez realizada la tarea de crear los directorios aparece la siguiente interfaz IDE Integrated Development Environment
que será nuestra área de trabajo en el resto del curso.
Es necesario apoyarse en el Capítulo dos, página siete, del Libro C# para Estudiantes que hemos puesto a su disposición
para una mejor compresión del tema y desarrollo del conocimiento.
Los componentes principales de esta Interfaz aparecen en la pagina diez del Capitulo dos del libro de C # que mostramos
a continuación.
La motivación a aprender algo nuevo te lleva a intentarlo, los hábitos de estudio a sostenerlo.
La ventana siguiente da opciones para desarrollar programas de computadora en el entorno de Windows, de forma
grafica y de consola. En nuestro caso es de forma gráfica, en esta ventana de ayuda no aparece C, en esta ventana de
ayuda no aparece C#. Escriba C# aquí y de next.
Los pasos subsecuentes son los mismos vistos en páginas anteriores, lo único que cambia son las ventas de ayuda.
+
ab
Para efectos de nuestra práctica el botón será grande, pero podemos reducirlo como lo haremos más adelante simple y
sencillamente seleccionándolo y volviendo a posicionar en cualquier parte del lienzo.
Una vez seleccionado el Botón 1 (ya que es el primero y se ira aumentando conforme se vayan insertando).
Podemos realizar su cambio de nombre solo dando clic en Texto y escribiendo Cerrar
Hasta este momento hemos trabajado en tiempo de diseño, realicemos el tiempo de ejecución (como se verá)
Como puede observar aparece una nueva forma, que es la misma que aparece en tiempo de diseño
En la parte superior también podemos ver este indicador. Es el compilador en modo de ejecución o depuración.
Si pasamos el puntero del mouse se puede advertir un cambio en el color del Botón Cerrar.
Ese atributo se debe a las propiedades y evento del botón vistos en la pagina trece y quince del tema Los controles en
tiempo de diseño y Los eventos y el control Button del libro en mención anterior.
Si damos clic al botón Cerrar solo habrá un cambio en su color (si tiene las propiedades).
Hasta este momento no tiene ninguna tarea asignada el Botón Cerrar, para ello tendremos que volver al modo de diseño
y programarle una o indicar que debe de hacer.
Para volver al diseño tendremos que cerrar la aplicación con solo en dar clic en la barra de la forma que contiene el
Botón Cerrar.
o detener la depuración
Importante
Si desea volver al tiempo de diseño y no ha cerrado la aplicación el mensaje de error será algo como esto.
En esta pantalla aparece una nueva pestaña, la Forma cs es el código fuente o code source, las instrucciones a dar para
que el Botón Cerrar las cumpla. Para ello habrá que ¡Hablarle en su lenguaje!, en su Lenguaje de Programación que es C
Sharp.
Es necesario codificar las instrucciones dentro de la línea 22, ya que ahí reside el cuerpo del botón 1 que hemos
denominado Cerrar.
Para que el botón cierre es necesario darle la instrucción en su lenguaje, en este caso una Palabra Reservada del
Lenguaje de Programación de C# o Palabra Clave. En este caso la palabra clave es Close Tal y como lo indica editor de
código que es sensible a la escritura, en cierto modo ayuda a ir identificando el componente a utilizar.
Las palabras clave son identificadores reservados predefinidos que tienen significados especiales para el compilador. No
se pueden utilizar como identificadores en su programa a menos que se incluyan @como prefijo. Por ejemplo, @ifes un
identificador válido, pero if no porque if es una palabra clave.
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/
https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/builtin-types/struct
Logramos dar clic al Botón Cerrar y cierra la forma regresando al modo de diseño.
12
Cambie el nombre a la Form1 por Botón Cerrar, también puede cambiar el lugar, tamaño,
fuente del botón, el fondo de la forma etc.
Introducción:
Un dato es una representación simbólica (numérica, alfabética, algorítmica, espacial, etc.) de un atributo o variable
cuantitativa o cualitativa. Los datos describen hechos empíricos, sucesos y entidades.
Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones
se le pueden aplicar y cómo es representado internamente por el computador. Todos los valores que aparecen en un
programa tienen un tipo. Los tipos de datos más simples son:
Números enteros: Nos sirve para representar números enteros.
Números reales: Nos sirve para representar números reales.
Cadenas de caracteres: Nos permite trabaja con cadenas de caracteres.
Valores lógicos: Nos permite trabajar con valores lógicos.
Los tipos de datos numéricos no enteros son Decimal (punto fijo de 128 bits), un tipo de datos único (punto flotante de
32 bits) y un tipo de datos Double (punto flotante de 64 bits).
Los tipos de datos estructurados o tipos compuestos son agrupaciones de otros tipos de datos. Los tipos de datos
estructurados más comunes son: vectores y matrices (array), cadenas de caracteres (string), registros y uniones.
Una variable en programación es una unidad de datos que puede cambiar de valor. Es la forma más simple de
almacenamiento, representando una zona de memoria donde se almacena un elemento de datos.
En programación orientada a objetos, una variable de instancia o miembro de dato es una variable que se relaciona con
una única instancia de una clase. Cada vez que se crea un objeto, el sistema crea una copia de todas las variables que
están vinculadas con dicha clase, haciéndolas propias de esa instancia.
Las variables tienen dos intenciones importantes, que son que el programador puede elegir los nombres de ellas,
proporcionando así la programación como también que pueda escribir rutinas, módulos, programas o funciones que
trabajen con cualquier valor en ellas. Nunca se deben nombrar estas variables, con el nombre de un tipo de dato del
lenguaje a programar.
En ciencias, especialmente en física, se denomina constante a aquella magnitud cuyo valor no varía en el tiempo. En
matemáticas, una constante es un valor fijo, aunque a veces no determinado. En programación, las constantes, una vez
declaradas mantienen su valor durante toda la ejecución del programa de forma local, en un método o de forma global,
en todo el programa. En cambio, las variables pueden cambiar su valor tantas veces como deseen. Además de cambiar
su valor, las variables también pueden cambiar de tamaño en tiempo de ejecución (punteros o apuntadores).
los identificadores sirven para asemejar (usar o nombrar) todo lo que el programador necesite, entre esto, las variables,
funciones, clases y objetos. Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios
en blanco. Los nombres de variables (lo que se conoce como "identificadores") pueden estar formados por letras,
números o el símbolo de subrayado (_) y deben comenzar por letra o subrayado. No deben tener espacios intermedios.
Un identificador es el nombre que se asigna a un tipo (clase, interfaz, struct, delegado o enumeración), miembro,
variable o espacio de nombres. Los identificadores válidos deben seguir estas reglas:
Convenciones de nomenclatura.
Además de las reglas, hay una serie de convenciones de nomenclatura de los identificadores que se usa en las API. de
NET. Por convención, los programas de C# usan PascalCase para nombres de tipo, espacios de nombres y todos los
miembros públicos. Además, son comunes las convenciones siguientes:
https://docs.microsoft.com/es-es/dotnet/csharp/programming-guide/inside-a-program/identifier-names
C# es un lenguaje fuertemente tipado. Todas las variables y constantes tienen un tipo, al igual que todas las expresiones
que se evalúan como un valor. Cada declaración del método especifica un nombre, un número de parámetros, un tipo
y una naturaleza (valor, referencia o salida) para cada parámetro de entrada y para el valor devuelto. La biblioteca de
clases .NET define un conjunto de tipos numéricos integrados, así como tipos más complejos que representan una
amplia variedad de construcciones lógicas, como el sistema de archivos, conexiones de red, colecciones y matrices de
objetos, y fechas. Los programas de C# típicos usan tipos de la biblioteca de clases, así como tipos definidos por el
usuario que modelan los conceptos que son específicos del dominio del problema del programa.
Nota
Los desarrolladores de C y C++ deben tener en cuenta que, en C#, bool no se puede convertir en
int.
No olvide la rúbrica de
evaluación.
Almacenamiento en Memoria.
Para poder entender el Software hay que tratar de comprender el Hardware.
Realice un Mapa Conceptual del Almacenamiento de un Volumen Lógico en la Computadora.
13
Utilice de referencia el siguiente sitio:
https://www.ibm.com/docs/es/aix/7.2?topic=management-logical-volume-storage
Un dispositivo de almacenamiento es un hardware que se utiliza principalmente para almacenar datos. Cada computadora
de escritorio, computadora portátil, tablet y smartphone tendrán algún tipo de dispositivo de almacenamiento en su
interior y también puedes obtener unidades de almacenamiento externo independientes que se pueden utilizar en varios
dispositivos.
El almacenamiento es necesario no solo para guardar archivos, sino también para ejecutar tareas y aplicaciones. Cualquier
archivo que crees o guardes en la computadora se guarda en el dispositivo de almacenamiento, al igual que cualquier
aplicación que utilices, así como el sistema operativo en el que se ejecuta la computadora.
A medida que la tecnología ha avanzado con el tiempo, los dispositivos de almacenamiento de datos también han
evolucionado de manera importante. Hoy en día, los dispositivos de almacenamiento tienen muchas formas y tamaños, y
hay algunos tipos diferentes de dispositivos de almacenamiento que se adaptan a diferentes dispositivos y funciones.
Algunos dispositivos de almacenamiento de computadoras pueden retener información de manera permanente, mientras
que otros solo pueden retener información de manera temporal. Cada computadora tiene tanto almacenamiento primario
como secundario, donde el almacenamiento primario actúa como memoria de corto plazo de la computadora y el
secundario, como memoria de largo plazo de la computadora.
La computadora trabaja con cuatro tipos de memorias diferentes, que sirven para realizar diversas funciones. Estas son la
memoria RAM, la memoria ROM, la memoria SRAM o Caché y la memoria Virtual o de Swap.
La más importante es la denominada memoria RAM (Random Access Memory), ya que nuestra computadora no podría
funcionar sin su existencia.
En la RAM se guarda distinto tipo de información, desde los procesos temporales como modificaciones de archivos, hasta
las instrucciones que posibilitan la ejecución de las aplicaciones que tenemos instaladas en nuestra PC.
Por tal motivo, es utilizada constantemente por el microprocesador, que accede a ella para buscar o guardar
temporalmente información referente a los procesos que se realizan en la computadora.
Dentro de las memorias RAM existen distintos tipos de tecnologías que se diferencian principalmente por su velocidad de
acceso y su forma física. Entre ellas encontramos las DRAM, SDRAM, RDRAM, entre otras.
Las denominadas DRAM (Dynamyc Random Acces Memory) han sido utilizadas en las computadoras desde los primeros
años de la década de los 80's, y aún en la actualidad continúan utilizándose. Se trata de uno de los tipos de memorias más
económicas, aunque su mayor desventaja está relacionada con la velocidad de proceso, ya que es una de las más lentas,
lo que ha llevado a los fabricantes a modificar su tecnología para ofrecer un producto mejor.
En cuanto al tipo de tecnología SDRAM, derivada de la primera, comenzó a comercializarse a finales de la década de los
90's, y gracias a este tipo de memoria se lograron agilizar notablemente los procesos, ya que puede funcionar a la misma
velocidad que la motherboard a la que se encuentra incorporada.
Por su parte, la tecnología RDRAM es una de las más costosas debido a su complejidad de fabricación, y sólo se utilizan en
procesadores grandes, tales como los Pentium IV y superiores.
Otra de las diferencias entre las distintas memorias RAM se halla en el tipo de módulo del que se trate, que pueden ser
SIMM (Single in line Memory Module), DIMM (Double Memory Module) y RIMM (Rambus in line Memory Module),
dependiendo de la cantidad de pines que contenga y del tamaño físico del módulo.
Hoy en día el almacenamiento se puede dar en la nube publica, privada o hibrida, en nubes gratis alcanzan los 1,024 Gb o
un Tera.
El almacenamiento en la nube es un servicio que permite almacenar datos transfiriéndolos a través de Internet o de otra
red a un sistema de almacenamiento externo que mantiene un tercero. Hay cientos de sistemas de almacenamiento en la
nube diferentes que abarcan desde almacenamiento personal, que guarda o mantiene copias de seguridad de correo
electrónico, fotos, vídeos y otros archivos personales de un usuario, hasta almacenamiento empresarial, que permite a las
empresas utilizar almacenamiento en la nube como solución comercial de copia de seguridad remota donde la compañía
puede transferir y almacenar de forma segura archivos de datos o compartirlos entre ubicaciones.
Los sistemas de almacenamiento suelen ser escalables para adaptarse a las necesidades de almacenamiento de datos de
una persona o una organización, accesibles desde cualquier lugar e independientes de aplicaciones para ofrecer
accesibilidad desde cualquier dispositivo. Las empresas disponen de tres modelos principales para elegir: un servicio de
almacenamiento en nube pública, adecuado para datos no estructurados; un servicio de almacenamiento en nube privada,
que puede estar protegido detrás de un firewall de la compañía para tener más control sobre los datos; y un servicio de
almacenamiento en nube híbrida, que combina servicios de almacenamiento en nube pública y privada para ofrecer una
mayor flexibilidad.
dropbox.com
Resumiendo.
Memoria
El término memoria se refiere al componente dentro de su computadora que le permite acceder a los datos que están
almacenados en su computadora a corto plazo. Usted puede reconocer este componente como DRAM, o memoria de
acceso aleatorio dinámico. Su computadora realiza muchas operaciones accediendo a los datos almacenados en su
memoria a corto plazo. Algunos ejemplos de estas operaciones incluyen editar un documento, cargar aplicaciones, y
navegar por internet. La velocidad y rendimiento de su sistema dependen de la cantidad de memoria que esté instalada
en su computadora. Si usted tiene un escritorio y un archivador, el escritorio representa la memoria de su computador.
Los elementos que necesitará a la mano se guardan en su escritorio para un acceso fácil. Sin embargo, no se puede
almacenar mucho en un escritorio, debido a las restricciones de tamaño.
Almacenamiento
Mientras la memoria se refiere a la ubicación de los datos a corto plazo, el almacenamiento es el componente de su
computadora que le permite almacenar y acceder a datos a largo plazo. Usualmente, el almacenamiento se da en forma
de una unidad de estado sólido o un disco duro. El almacenamiento le permite acceder y almacenar sus aplicaciones,
sistema operativo y archivos por un tiempo indefinido. Mientras que el escritorio representa la memoria de la
computadora, el archivador representa el almacenamiento de su computadora. Los elementos que se deben guardar, pero
no necesariamente acceder, se guardan en el archivador. Debido al tamaño del archivador muchas cosas se pueden
guardar.
Una diferencia importante entre memoria y almacenamiento es que la primera se borra cuando se apaga la computadora.
Por otro lado, el almacenamiento permanece intacto no importa cuántas veces se apague la computadora. Por lo tanto,
en la analogía del escritorio y el archivador, cualquier archivo que quede en su escritorio cuando salga de la oficina se
botará. Todo lo que esté en su archivador se mantendrá igual.
Existen cuatro especificadores de almacenamiento. Estos especificadores de almacenamiento, cuando se usan, deben
preceder a la declaración del tipo de dato de la variable. Estos especificadores de almacenamiento son:
El especificador auto se usa para declarar que una variable local existe solamente mientras estemos dentro de la subrutina
o bloque de programa donde se declara, pero, dado que por defecto toda variable local es auto, no suele usarse.
El especificador extern se usa en el desarrollo de programas compuestos por varios módulos. El modificador extern se usa
sobre las variables globales del módulo, de forma que, si una variable global se declara como extern, el compilador no
crea un almacenamiento para ella en memoria, sino que, tan solo tiene en cuenta que dicha variable ya ha sido declarada
en otro modulo del programa y es del tipo de dato que se indica.
El especificador static actúa según el alcance de la variable:
• Para variables locales, el especificador static indica que dicha variable local debe almacenarse de forma permanente en
memoria, tal y como si fuera una variable global, pero su alcance será el que correspondería a una variable local
declarada en la subrutina o bloque. El principal efecto que provoca la declaración como static de una variable local es el
hecho de que la variable conserva su valor entre llamadas a la función.
• Para variables globales, el especificador static indica que dicha variable global es local al módulo del programa donde se
declara, y, por tanto, no será conocida por ningún otro módulo del programa.
Las constantes se refieren a los valores fijos que el programa no puede alterar. Algunos ejemplos de constantes de C# son:
Existen, además, algunos tipos de constantes, distintos a los anteriores, que es necesario resaltar de forma particular.
Estos tipos de constantes son las constantes hexadecimales y octales, las constantes de cadena, y las constantes de barra
invertida.
Las constantes hexadecimales y octales son constantes enteras, pero definidas en base 16 (constantes hexadecimales) o
en base 8 (constantes octales). Las constantes de tipo hexadecimal comienzan por los caracteres 0x seguidas del número
deseado. Las constantes de tipo octal comienzan por un cero (0). Por ejemplo, son constantes hexadecimales 0x34 (52
decimal), 0xFFFF (65535 decimal); y constantes octales 011 (9 decimal), 0173 (123 decimal).
Las constantes de cadena son conjuntos de caracteres que se encierran entre comillas dobles. Por ejemplo, son constantes
de cadena “Esto es una constante de cadena”, “Estos son unos apuntes de C”, etc. Las constantes de caracteres de barra
invertida se usan para introducir caracteres que es imposible introducir por el teclado (tales como retorno de carro, etc.).
Estas constantes son proporcionadas por C para que sea posible introducir dichas
caracteres como constantes en los programas en los cuales sea necesario. Estas
constantes de caracteres de barra invertida son:
Código Significado
\b Retroceso
\f Alimentación de hoja
\n Nueva línea
\r Retorno de carro
\t Tabulador horizontal
\” Doble comilla
\’ Simple comilla
\0 Nulo
\\ Barra invertida
\v Tabulador vertical
\a Alerta
\o Constante octal
\x Constante
El uso de las constantes de barra invertida es igual que el de cualquier otro carácter, así, si ch es una variable de tipo char,
podemos hacer: ch=‘\t’, o ch=‘\x20’ (carácter espacio), etc., de igual forma que realizaríamos con cualquier otra constante
de carácter. Además, las constantes de barra invertida pueden usarse en el interior de constantes de cadena como un
carácter más, por ello, podemos poner escribir la constante de cadena: "Esto es una línea\n".
Proposición de Asignación.
El operador de asignación = asigna el valor de su operando de la derecha a una variable, una propiedad o un elemento de
indizador proporcionado por el operando de la izquierda. El resultado de una expresión de asignación es el valor asignado
al operando izquierdo. El tipo del operando de la derecha debe ser el mismo que el del operando de la izquierda o debe
poder convertirse implícitamente en él.
Se evalúa como
Asignación compuesta
Para un operador binario op, una expresión de asignación compuesta con el formato
es equivalente a
La asignación compuesta es compatible con operadores aritméticos, lógicos booleanos y de desplazamiento y lógicos bit
a bit.
A partir de C# 8.0, puede usar el operador de asignación de uso combinado de NULL ??= para asignar el valor de su
operando derecho al operando izquierdo solo si el operando izquierdo se evalúa como null. Para obtener más información,
consulte Operadores ?? y ??.
Un tipo definido por el usuario no puede sobrecargar el operador de asignación. Sin embargo, un tipo definido por el
usuario puede definir una conversión implícita a otro tipo. De este modo, el valor de un tipo definido por el usuario puede
asignarse a una variable, una propiedad o un elemento de indizador de otro tipo. Para obtener más información, vea
Operadores de conversión definidos por el usuario. Un tipo definido por el usuario no puede sobrecargar de forma explícita
un operador de asignación compuesta. Pero si un tipo definido por el usuario sobrecarga un operador binario op, el
operador op=, si existe, también se sobrecarga de forma implícita.
AMPLIACION.
Operadores de asignación.
Los operadores de asignación asignan un nuevo valor a una variable, una propiedad, un evento o un elemento de
indexador.
El operando izquierdo de una asignación debe ser una expresión clasificada como una variable, un acceso de propiedad,
un acceso de indexador o un acceso de evento.
El = operador se denomina operador de asignación simple. Asigna el valor del operando derecho a la variable, propiedad
o elemento de indexador proporcionado por el operando izquierdo. Es posible que el operando izquierdo del operador de
asignación simple no sea un acceso a eventos (excepto como se describe en eventos similares a los de campo). El operador
de asignación simple se describe en asignación simple.
Los operadores de asignación distintos del = operador se denominan operadores de asignación compuesta. Estos
operadores realizan la operación indicada en los dos operandos y, a continuación, asignan el valor resultante a la variable,
la propiedad o el elemento indexador proporcionado por el operando izquierdo. Los operadores de asignación compuesta
se describen en asignación compuesta.
Los += -= operadores y con una expresión de acceso a eventos como operando izquierdo se denominan operadores de
asignación de eventos. Ningún otro operador de asignación es válido con un acceso de evento como operando izquierdo.
Los operadores de asignación de eventos se describen en asignación de eventos.
Los operadores de asignación son asociativos a la derecha, lo que significa que las operaciones se agrupan de derecha a
izquierda. Por ejemplo, una expresión con el formato a = b = c se evalúa como a = (b = c) .
Asignación simple.
Si el operando izquierdo de una asignación simple tiene el formato E.P o E[Ei] donde E tiene el tipo en tiempo de
compilación dynamic , la asignación está enlazada dinámicamente (enlace dinámico). En este caso, el tipo en tiempo de
compilación de la expresión de asignación es dynamic , y la resolución que se describe a continuación se realizará en
tiempo de ejecución en función del tipo en tiempo de ejecución de E .
En una asignación simple, el operando derecho debe ser una expresión que se pueda convertir implícitamente al tipo del
operando izquierdo. La operación asigna el valor del operando derecho a la variable, la propiedad o el elemento indexador
proporcionado por el operando izquierdo.
El resultado de una expresión de asignación simple es el valor asignado al operando izquierdo. El resultado tiene el mismo
tipo que el operando izquierdo y siempre se clasifica como un valor.
Si el operando izquierdo es una propiedad o un indexador, la propiedad o el indexador deben tener un set descriptor de
acceso. Si no es así, se produce un error en tiempo de enlace.
El procesamiento en tiempo de ejecución de una asignación simple del formulario x = y consta de los siguientes pasos:
Si x se clasifica como una variable:
y se evalúa y, si es necesario, se convierte al tipo de x mediante una conversión implícita (conversiones implícitas).
Si la variable proporcionada por x es un elemento de matriz de un reference_type, se realiza una comprobación en tiempo
de ejecución para asegurarse de que el valor calculado para y es compatible con la instancia de la matriz de que x es un
elemento. La comprobación se realiza correctamente si y es null , o si existe una conversión de referencia implícita
(conversiones de referencia implícita) del tipo real de la instancia a la que se hace referencia en y el tipo de elemento real
de la instancia de la matriz que contiene x . De lo contrario, se produce una excepción
System.ArrayTypeMismatchException.
La expresión de instancia (si x no es static ) y la lista de argumentos (si x es un acceso de indexador) asociadas a x se
evalúan, y los resultados se usan en la set invocación del descriptor de acceso subsiguiente.
y se evalúa y, si es necesario, se convierte al tipo de x mediante una conversión implícita (conversiones implícitas).
El set descriptor de acceso de x se invoca con el valor calculado para y como su value argumento. Las reglas de covarianza
de matriz (covarianza de matriz) permiten que un valor de un tipo de matriz A[] sea una referencia a una instancia de un
tipo de matriz B[] , siempre que exista una conversión de referencia implícita de B a A .
Debido a estas reglas, la asignación a un elemento de matriz de un reference_type requiere una comprobación en tiempo
de ejecución para asegurarse de que el valor que se está asignando es compatible con la instancia de la matriz. En el
ejemplo
Cuando una propiedad o un indizador declarado en una struct_type es el destino de una asignación, la expresión de
instancia asociada con el acceso a la propiedad o indizador debe estar clasificada como una variable. Si la expresión de
instancia se clasifica como un valor, se produce un error en tiempo de enlace. Debido al acceso a miembros, la misma
regla también se aplica a los campos.
Rúbrica.
14 Realice un resumen de la Asignación compuesta en C#. Puede apoyarse en el siguiente sitio si desea.
https://docs.microsoft.com/es-es/dotnet/csharp/language-reference/language-specification/expressions#assignment-
operators
MTRO. RAMON ROBLES MARQUES INGENIERIA EN SISTEMAS COMPUTACIONALES.
Instituto Tecnológico de Nogales
Operadores
Las expresiones se construyen a partir de los operadores*operandos _ y. Los operadores de una expresión indican qué
operaciones se aplican a los operandos. Ejemplos de operadores incluyen +, -, _, / y new. Algunos ejemplos de operandos
son literales, campos, variables locales y expresiones.
Operadores unarios. Los operadores unarios toman un operando y usan la notación de prefijo (como --x ) o la notación de
postfijo (como x++ ).
Operadores binarios. Los operadores binarios toman dos operandos y todos usan la notación infija (como x + y ).
Operador ternario. Solo un operador ternario, ?: , existe; toma tres operandos y usa la notación de infijo ( c ? x : y ).
El orden de evaluación de los operadores de una expresión viene determinado por la precedencia _ and _ asociativity de
los operadores (precedencia y asociatividad del operador).
Los operandos de una expresión se evalúan de izquierda a derecha. Por ejemplo, en F(i) + G(i++) * H(i) , se llama al método
con F el valor anterior de i , a continuación, se llama al método G con el valor anterior de i , y, por último, H se llama al
método con el nuevo valor de i . Esto es independiente de la prioridad de operador y no está relacionada con ella.
Cuando una expresión contiene varios operadores, el *precedencia _ de los operadores controla el orden en el que se
evalúan los operadores individuales. Por ejemplo, la expresión x + y _ z se evalúa como x + (y * z) porque el operador *
tiene mayor precedencia que el operador binario +.
La precedencia de un operador se establece mediante la definición de su producción gramatical asociada. Por ejemplo, un
additive_expression se compone de una secuencia de multiplicative_expression s separadas + por - operadores or, lo que
permite que los operadores + y tengan - menor prioridad que los * / operadores, y % .
En la tabla siguiente se resumen todos los operadores en orden de prioridad, de mayor a menor:
Cuando un operando se encuentra entre dos operadores con la misma precedencia, la asociatividad de los operadores
controla el orden en que se realizan las operaciones:
Excepto en el caso de los operadores de asignación y el operador de uso combinado de NULL, todos los operadores binarios
son asociativos a la izquierda, lo que significa que las operaciones se realizan de izquierda a derecha. Por ejemplo, x + y +
z se evalúa como (x + y) + z.
Los operadores de asignación, el operador de uso combinado de NULL y el operador condicional ( ?: ) son asociativos a la
derecha, lo que significa que las operaciones se realizan de derecha a izquierda. Por ejemplo, x = y = z se evalúa como x =
(y = z).
Prioridad de operadores
En una expresión con varios operadores, los operadores con mayor prioridad se evalúan antes que los operadores con
menor prioridad. En el ejemplo siguiente, la multiplicación se realiza primero porque tiene mayor prioridad que la suma:
Cuando los operadores tienen la misma prioridad, su asociatividad determina el orden en el que se realizan las
operaciones:
Los operadores asociativos a la izquierda se evalúan, por orden, de izquierda a derecha. A excepción de los operadores de
asignación y el operador de integración nula, todos los operadores binarios son asociativos a la izquierda. Por ejemplo, a
+ b - c se evalúa como (a + b) - c.
Los operadores asociativos a la derecha se evalúan, por orden, de derecha a izquierda. Los operadores de asignación, el
operador de integración nula y el operador condicional ? : son asociativos a la derecha. Por ejemplo, x = y = z se evalúa
como x = (y = z).
Use paréntesis, para cambiar el orden de evaluación impuesto por la asociatividad de los operadores:
Evaluación de operandos.
Independientemente de la prioridad y la asociatividad de los operadores, los operandos de una expresión se evalúan de
izquierda a derecha. En los siguientes ejemplos, se muestra el orden en el que se evalúan los operadores y los operandos:
EVALUACIÓN DE OPERANDOS
Normalmente, se evalúan todos los operandos de un operador. Sin embargo, algunos operadores evalúan los operandos
de forma condicional. Esto significa que el valor del operando situado más a la izquierda de este tipo de operador define
si se deben evaluar otros operandos, o bien qué operandos deben evaluarse. Estos operadores son los operadores lógicos
condicionales AND (&&) y OR (||), los operadores de integración nula ?? y ??=, los operadores condicionales nulos ?. y ?[],
así como el operador condicional ?:. Para más información, consulte la descripción de cada operador en las tablas que
anteceden a este texto.
Expresiones.
Una expresión es una secuencia de operadores y operandos. En este capítulo se define la sintaxis, el orden de evaluación
de los operandos y operadores y el significado de las expresiones.
Clasificaciones de expresiones.
Un tipo. Una expresión con esta clasificación solo puede aparecer como el lado izquierdo de un member_access (acceso a
miembros) o como un operando para el as operador (el operador as), el is operador (operador is) o el typeof operador (el
operador typeof). En cualquier otro contexto, una expresión clasificada como un tipo genera un error en tiempo de
compilación.
Un grupo de métodos, que es un conjunto de métodos sobrecargados que resultan de una búsqueda de miembros
(búsqueda de miembros). Un grupo de métodos puede tener una expresión de instancia asociada y una lista de
argumentos de tipo asociada. Cuando se invoca un método de instancia, el resultado de evaluar la expresión de instancia
se convierte en la instancia representada por this (este acceso). Se permite un grupo de métodos en un
invocation_expression (expresiones de invocación), un delegate_creation_expression (expresiones de creación de
delegado) y como el lado izquierdo de un operador is y se puede convertir implícitamente en un tipo de delegado
compatible (conversiones de grupo de métodos). En cualquier otro contexto, una expresión clasificada como grupo de
métodos produce un error en tiempo de compilación.
Un literal null. Una expresión con esta clasificación se puede convertir implícitamente a un tipo de referencia o a un tipo
que acepta valores NULL.
Una función anónima. Una expresión con esta clasificación se puede convertir implícitamente en un tipo de delegado
compatible o un tipo de árbol de expresión.
Un acceso de propiedad. Cada acceso de propiedad tiene un tipo asociado, es decir, el tipo de la propiedad. Además, un
acceso de propiedad puede tener una expresión de instancia asociada. Cuando se invoca un descriptor get set de acceso
(el bloque o) de una propiedad de instancia, el resultado de evaluar la expresión de instancia se convierte en la instancia
representada por this (este acceso).
Un acceso de evento. Cada acceso a eventos tiene un tipo asociado, es decir, el tipo del evento. Además, un acceso a
eventos puede tener una expresión de instancia asociada. Un acceso a eventos puede aparecer como el operando
izquierdo de += los -= operadores y (asignación de eventos). En cualquier otro contexto, una expresión clasificada como
acceso de evento produce un error en tiempo de compilación.
de instancia se convierte en la instancia representada por this (este acceso) y el resultado de evaluar la lista de argumentos
se convierte en la lista de parámetros de la invocación.
Nada. Esto sucede cuando la expresión es una invocación de un método con un tipo de valor devuelto de void . Una
expresión clasificada como Nothing solo es válida en el contexto de una statement_expression (instrucciones de
expresión).
El resultado final de una expresión nunca es un espacio de nombres, tipo, grupo de métodos o acceso a eventos. En su
lugar, como se indicó anteriormente, estas categorías de expresiones son construcciones intermedias que solo se permiten
en determinados contextos.
Un acceso de propiedad o de indexador siempre se reclasifica como un valor realizando una invocación del descriptor de
acceso get o del descriptor de acceso set. El descriptor de acceso concreto viene determinado por el contexto de la
propiedad o el acceso del indexador: Si el acceso es el destino de una asignación, se invoca al descriptor de acceso set
para asignar un nuevo valor (asignación simple). De lo contrario, el descriptor de acceso get se invoca para obtener el
valor actual (valores de las expresiones).
En última instancia, la mayoría de las construcciones que implican una expresión requieren que la expresión denote un
valor. En tales casos, si la expresión real denota un espacio de nombres, un tipo, un grupo de métodos o nada, se produce
un error en tiempo de compilación. Sin embargo, si la expresión denota un acceso de propiedad, un acceso a indexador o
una variable, el valor de la propiedad, el indexador o la variable se sustituyen implícitamente:
El valor de una variable es simplemente el valor almacenado actualmente en la ubicación de almacenamiento identificada
por la variable. Una variable se debe considerar definitivamente asignada (asignación definitiva) antes de que se pueda
obtener su valor o, de lo contrario, se producirá un error en tiempo de compilación.
El valor de una expresión de acceso de propiedad se obtiene invocando el descriptor de acceso get de la propiedad. Si la
propiedad no tiene un descriptor de acceso get, se produce un error en tiempo de compilación. De lo contrario, se realiza
una invocación de miembro de función (comprobación en tiempo de compilación de la resolución dinámica de sobrecarga)
y el resultado de la invocación se convierte en el valor de la expresión de acceso de propiedad.
El valor de una expresión de acceso de indexador se obtiene al invocar el descriptor de acceso get del indexador. Si el
indizador no tiene ningún descriptor de acceso get, se produce un error en tiempo de compilación. De lo contrario, se
realiza una invocación de un miembro de función (comprobación en tiempo de compilación de la resolución dinámica de
sobrecarga) con la lista de argumentos asociada a la expresión de acceso del indizador y el resultado de la invocación se
convierte en el valor de la expresión de acceso del indexador.
16 ELABORACION DE PROGRAMAS.
En una forma (Formas) agregar los botones Forma2, Forma3, Forma4 y Forma5 y Salir.
Insertar una etiqueta del cuadro de herramientas con La Leyenda Ejercicios de Formas: Llamar a Forma2, Forma3,
Forma4 y Forma5.
INTERPRETACION
private void indica que el método, trozo de código, solo puede tener acceso dentro de la misma clase, en este caso solo
de las Formas.
Form2 es el nombre de la forma2, asignado creando una nueva instancia (new) para la Forma2 que devolverá un valor.
Para agregar una forma mas vaya a Proyecto y de clic a la primera opción.
Sugerencia, puede anexar un Botón Cerrar, como ya se ha visto, en la Forma 2 y salir de ahí y regresar a la forma Formas
o dar clic en cerrar. Recuerde que puede modificar el tamaño de la Forma.
RECUERDE QUE ES EN TODAS Y CADA UNA DE LAS FORMAS DE LAS PRACTICAS Y TRABAJOS REALIZADOS.
17
En la Forma 2 agregar un checkBox1 con etiqueta Salir, un botón regresar y un radioButton1 con etiqueta de ir a la
forma1
NOMBRE________________________________________________________________________
✓ Sustituya los correos de su servidor por los integrantes de su equipo, para ello puede hacer la forma más grande.
✓ Componenetes:
✓ 6
✓ 6
✓ 3
✓ 2
A esta forma agregue la operación de potencia base 2 o el cuadrado del número calculado.
Mas pistas.
No es necesario programar las cajas de texto, solo los botones Calcular, Limpiar y Salir.
textBox3.Text = suma.ToString();
textBox4.Text = resta.ToString();
textBox5.Text = mult.ToString();
textBox6.Text = div.ToString();
}
Suerte.
INGENIERÍA INDUSTRIAL
Rubricas
Definieron los conceptos Los alumnos definieron los Los alumnos definieron de Los alumnos No definieron
conceptos adquiridos, no manera parcial los de ninguna manera los
tuvieron problema alguno conceptos adquiridos, conceptos adquiridos, No
para definir y comprender tuvieron indecisiones y mostraron comprensión y
los conceptos. mostraron inseguridad, los conceptos No se
pero no mayor problema afirmaron de ninguna
para definir y comprender forma.
los conceptos.
Desarrollo de la práctica Los alumnos desarrollaron Los alumnos desarrollaron Los alumnos no
de manera muy precisa la de manera parcial la desarrollaron la práctica,
práctica, no tuvieron práctica, mostraron mostraron inseguridad y
problema alguno para inseguridad y tuvieron tuvieron demasiados
desarrollar los pasos que problema para desarrollar problemas para desarrollar
involucran la práctica. los pasos que involucran la los pasos que involucran la
práctica. práctica.
Trabajo colaborativo Los alumnos mostraron un Los alumnos mostraron un Los alumnos mostraron un
trabajo colaborativo trabajo colaborativo trabajo colaborativo
excelente, se desarrollaron bueno, se desarrollaron en pésimo, se desarrollaron en
en completa armonía armonía parcial durante el completa desarmonía
durante el desarrollo de la desarrollo de la práctica. durante el desarrollo de la
práctica. práctica.
Tiempo de entrega Los alumnos entregaron en Los alumnos entregaron de Los alumnos No entregaron
tiempo y forma el trabajo forma parcial y no en ni de forma parcial y ni en
de la práctica. No tiempo y forma el trabajo tiempo y forma el trabajo
mostraron ningún retraso de la práctica. Mostraron de la práctica. No
durante el proceso. leves retrasos durante el mostraron interés en
proceso de entrega el entregará el desarrollo de
desarrollo de la práctica. la práctica.
Disciplina Los alumnos mostraron un Los alumnos mostraron Los alumnos no mostraron
completo respeto y falta de respeto y disciplina un completo respeto y la
disciplina a sus a sus compañeros y disciplina a sus
compañeros y docente. La docente. La actitud compañeros y docente no
actitud mostrada fue mostrada durante el fue la conducente. La
excelente durante el proceso de la práctica no actitud mostrada durante
proceso de la práctica. fue adecuada ya que el proceso de la práctica
tuvieron contratiempos. dejo mucho que desear.
Fueron expulsados del
aula.
Alumno(s):
Instrucciones para el llenado: En esta lista de cotejo se señalarán a criterio del evaluador la calidad en la entrega del p
la calidad en la entrega del producto evaluado, señalando en la columna correspondiente y anotando las observaciones
que correspondan.
RESUMEN
Excelente
Contenidos
Regular
Bueno
Malo
Valor 1 .85 .7 .6 Observaciones
1.- Presentación
7.- Ortografía
8.- Redacción
Puntuación
Calificación
INGENIERIA INDUSTRIAL
Alumno(s):
Nombre del
evaluador
Firma del
evaluador
Observaciones