{"id":10314,"date":"2022-03-30T16:26:17","date_gmt":"2022-03-30T16:26:17","guid":{"rendered":"https:\/\/blogs.ugto.mx\/rea\/?p=10314"},"modified":"2022-04-11T01:41:53","modified_gmt":"2022-04-11T01:41:53","slug":"clase-digital-3-lenguajes-de-desarrollo-para-dispositivos-moviles","status":"publish","type":"post","link":"https:\/\/blogs.ugto.mx\/rea\/clase-digital-3-lenguajes-de-desarrollo-para-dispositivos-moviles\/","title":{"rendered":"Clase digital 3. Lenguajes de desarrollo para dispositivos m\u00f3viles"},"content":{"rendered":"\n<div class=\"wp-block-cover\" style=\"min-height:284px;aspect-ratio:unset;\"><span aria-hidden=\"true\" class=\"has-background-dim-40 wp-block-cover__gradient-background has-background-dim\"><\/span><img decoding=\"async\" class=\"wp-block-cover__image-background wp-image-10315\" alt=\"Person Encoding in Laptop\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071.jpg\" style=\"object-position:71% 27%\" data-object-fit=\"cover\" data-object-position=\"71% 27%\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1060\" class=\"wp-block-cover__image-background wp-image-10315\" alt=\"Person Encoding in Laptop\" src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071.jpg\" style=\"object-position:71% 27%\" data-object-fit=\"cover\" data-object-position=\"71% 27%\" srcset=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071.jpg 1600w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071-300x199.jpg 300w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071-1024x678.jpg 1024w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071-768x509.jpg 768w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/574071-1536x1018.jpg 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/noscript><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-base-3-color has-text-color has-large-font-size wp-block-paragraph\">Lenguajes de desarrollo para dispositivos m\u00f3viles<\/p>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"introduccion\">Introducci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Hola!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQu\u00e9 tal?, me da gusto que nos volvamos a encontrar en esta tercera sesi\u00f3n, espero que estes disfrutando esta oportunidad de aprendizaje pues te permitir\u00e1 tener m\u00e1s herramientas para tu \u00e9xito personal y profesional.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En esta sesi\u00f3n descubrir\u00e1s que los lenguajes de desarrollo, son la base de cualquier aplicaci\u00f3n; ya sea de escritorio, web o bien, para dispositivos m\u00f3viles, los lenguajes de programaci\u00f3n son la forma en que se dar\u00e1n las instrucciones al dispositivo para que realice las tareas que necesitamos que haga nuestra aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Existen varios lenguajes de desarrollo, cada uno con una sintaxis y herramienta de desarrollo diferente, no hay uno mejor que otro, todo depender\u00e1 del programador, cu\u00e1l debe de elegir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En nuestro caso, utilizaremos C# como lenguaje de programaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dada la introducci\u00f3n al tema, te invito a comenzar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"desarrollo-del-tema\">Desarrollo del tema<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para dar continuidad al tema te invito a revisar los siguientes materiales:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/1-12.png\" alt=\"\" class=\"wp-image-10318\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"287\" src=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/1-12.png\" alt=\"\" class=\"wp-image-10318\" srcset=\"https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/1-12.png 512w, https:\/\/blogs.ugto.mx\/rea\/wp-content\/uploads\/sites\/71\/2022\/03\/1-12-300x168.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/noscript><\/figure><\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button aligncenter is-style-fill\"><a class=\"wp-block-button__link has-accent-background-color has-background\" href=\"https:\/\/web.microsoftstream.com\/video\/441b72e5-7cdc-4eb9-adcf-d2106736e441\" target=\"_blank\" rel=\"noreferrer noopener\">Clase digital 3 &#8211; Lenguajes de desarrollo<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">C# (pronunciado \u00absi sharp\u00bb en ingl\u00e9s) es un lenguaje de programaci\u00f3n moderno, basado en objetos y con seguridad de tipos. C# permite a los desarrolladores crear muchos tipos de aplicaciones seguras y s\u00f3lidas que se ejecutan en .NET. C# tiene sus ra\u00edces en la familia de lenguajes C, y a los programadores de C, C++, Java y JavaScript les resultar\u00e1 familiar inmediatamente. Este paseo proporciona informaci\u00f3n general de los principales componentes del lenguaje en C#&nbsp;8 y versiones anteriores. Si quieres explorar el lenguaje a trav\u00e9s de ejemplos interactivos, prueba los tutoriales de&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/tour-of-csharp\/tutorials\/\" target=\"_blank\" rel=\"noreferrer noopener\">introducci\u00f3n a C#<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C# es un lenguaje de programaci\u00f3n *<strong>orientado a componentes<\/strong>_, orientado a objetos. C# proporciona construcciones de lenguaje para admitir directamente estos conceptos, por lo que se trata de un lenguaje natural en el crear y usar componentes de software. Desde su origen, C# ha agregado caracter\u00edsticas para admitir nuevas cargas de trabajo y pr\u00e1cticas de dise\u00f1o de software emergentes. En su n\u00facleo, C# es un lenguaje _ *<em>orientado a objetos<\/em>**. Define los tipos y su comportamiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Varias caracter\u00edsticas de C# facilitan la creaci\u00f3n de aplicaciones s\u00f3lidas y duraderas. La&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/standard\/garbage-collection\/\" target=\"_blank\" rel=\"noreferrer noopener\">*<strong>recolecci\u00f3n de elementos no utilizados<\/strong>&nbsp;_<\/a>&nbsp;reclama de forma autom\u00e1tica la memoria ocupada por objetos no utilizados inalcanzables. Los&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/nullable-references\" target=\"_blank\" rel=\"noreferrer noopener\"><em>tipos que aceptan valores NULL<\/em><\/a>&nbsp;ofrecen protecci\u00f3n ante variables que no hacen referencia a objetos asignados. El&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/fundamentals\/exceptions\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>control de excepciones<\/em><\/a>&nbsp;proporciona un enfoque estructurado y extensible para la detecci\u00f3n y recuperaci\u00f3n de errores. Las&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/operators\/lambda-expressions\" target=\"_blank\" rel=\"noreferrer noopener\"><em>expresiones lambda<\/em><\/a>&nbsp;admiten t\u00e9cnicas de programaci\u00f3n funcional. La sintaxis de&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/linq\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Language Integrated Query (LINQ)<\/em><\/a>&nbsp;crea un patr\u00f3n com\u00fan para trabajar con datos de cualquier origen. La compatibilidad del lenguaje con las&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/programming-guide\/concepts\/async\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>operaciones asincr\u00f3nicas<\/em><\/a>&nbsp;proporciona la sintaxis para crear sistemas distribuidos. C# tiene un&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/fundamentals\/types\/\" target=\"_blank\" rel=\"noreferrer noopener\">_ *<em>sistema de tipos unificados<\/em>**<\/a>. Todos los tipos de C#, incluidos los tipos primitivos como&nbsp;int&nbsp;y&nbsp;double, se heredan de un \u00fanico tipo&nbsp;object&nbsp;ra\u00edz. Todos los tipos comparten un conjunto de operaciones comunes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los valores de cualquier tipo se pueden almacenar, transportar y operar de forma coherente. Adem\u00e1s, C# admite tanto&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/reference-types\" target=\"_blank\" rel=\"noreferrer noopener\">tipos de referencia<\/a>&nbsp;definidos por el usuario como&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/value-types\" target=\"_blank\" rel=\"noreferrer noopener\">tipos de valor<\/a>. C# permite la asignaci\u00f3n din\u00e1mica de objetos y el almacenamiento en l\u00ednea de estructuras ligeras. C# admite m\u00e9todos y tipos gen\u00e9ricos, que proporcionan una mayor seguridad de tipos, as\u00ed como un mejor rendimiento. C# tambi\u00e9n proporciona iteradores, gracias a los que los implementadores de clases de colecciones pueden definir comportamientos personalizados para el c\u00f3digo de cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C# resalta el&nbsp;<strong><em>control de versiones<\/em><\/strong>&nbsp;para asegurarse de que los programas y las bibliotecas pueden evolucionar con el tiempo de manera compatible. Los aspectos del dise\u00f1o de C# afectados directamente por las consideraciones de versionamiento incluyen los modificadores&nbsp;virtual&nbsp;y&nbsp;override&nbsp;independientes, las reglas para la resoluci\u00f3n de sobrecargas de m\u00e9todos y la compatibilidad para declaraciones expl\u00edcitas de miembros de interfaz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Arquitectura de .NET<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los programas de C# se ejecutan en .NET, un sistema de ejecuci\u00f3n virtual denominado Common Language Runtime (CLR) y un conjunto de bibliotecas de clases. CLR es la implementaci\u00f3n de Microsoft del est\u00e1ndar internacional Common Language Infrastructure (CLI). CLI es la base para crear entornos de ejecuci\u00f3n y desarrollo en los que los lenguajes y las bibliotecas funcionan juntos sin problemas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo fuente escrito en C# se compila en un&nbsp;<a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/standard\/managed-code\">lenguaje intermedio (IL)<\/a>&nbsp;que guarda conformidad con la especificaci\u00f3n de CLI. El c\u00f3digo y los recursos de IL, como los mapas de bits y las cadenas, se almacenan en un ensamblado, normalmente con una extensi\u00f3n&nbsp;<em>.dll<\/em>. Un ensamblado contiene un manifiesto que proporciona informaci\u00f3n sobre los tipos, la versi\u00f3n y la referencia cultural.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se ejecuta el programa C#, el ensamblado se carga en CLR. CLR realiza la compilaci\u00f3n Just-In-Time (JIT) para convertir el c\u00f3digo IL en instrucciones de m\u00e1quina nativas. Adem\u00e1s, CLR proporciona otros servicios relacionados con la recolecci\u00f3n de elementos no utilizados, el control de excepciones y la administraci\u00f3n de recursos. El c\u00f3digo que se ejecuta en CLR a veces se conoce como \u00abc\u00f3digo administrado\u00bb. El \u00abc\u00f3digo no administrado\u00bb se compila en lenguaje de m\u00e1quina nativo que tiene como destino una plataforma espec\u00edfica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La interoperabilidad entre lenguajes es una caracter\u00edstica principal de .NET. El c\u00f3digo IL generado por el compilador de C# se ajusta a la especificaci\u00f3n de tipo com\u00fan (CTS). El c\u00f3digo IL generado desde C# puede interactuar con el c\u00f3digo generado a partir de las versiones de .NET de F# , Visual&nbsp;Basic y C++. Hay m\u00e1s de otros 20&nbsp;lenguajes compatibles con CTS. Un solo ensamblado puede contener varios m\u00f3dulos escritos en diferentes lenguajes .NET y los tipos se pueden hacer referencia mutuamente igual que si estuvieran escritos en el mismo lenguaje.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s de los servicios en tiempo de ejecuci\u00f3n, .NET tambi\u00e9n incluye amplias bibliotecas, que admiten muchas cargas de trabajo diferentes. Se organizan en espacios de nombres que proporcionan una amplia variedad de funcionalidades \u00fatiles. Las bibliotecas incluyen todo, desde la entrada y salida de archivos, la manipulaci\u00f3n de cadenas y el an\u00e1lisis de XML hasta los marcos de aplicaciones web y los controles de Windows&nbsp;Forms. En una aplicaci\u00f3n de C# t\u00edpica se usa la biblioteca de clases de .NET de forma extensa para controlar tareas comunes de infraestructura.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El programa \u00abHola mundo\u00bb tradicionalmente se usa para presentar un lenguaje de programaci\u00f3n. En este caso, se usa C#:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">using System;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>class Hello<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>{<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&nbsp;&nbsp;&nbsp;&nbsp;static void Main()<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&nbsp;&nbsp;&nbsp;&nbsp;{<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(\u00abHello, World\u00bb);<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&nbsp;&nbsp;&nbsp;&nbsp;}<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>}<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El programa \u00abHola mundo\u00bb empieza con una directiva&nbsp;using&nbsp;que hace referencia al espacio de nombres&nbsp;System. Los espacios de nombres proporcionan un m\u00e9todo jer\u00e1rquico para organizar las bibliotecas y los programas de C#. Los espacios de nombres contienen tipos y otros espacios de nombres; por ejemplo, el espacio de nombres&nbsp;System&nbsp;contiene varios tipos, como la clase&nbsp;Console&nbsp;a la que se hace referencia en el programa, y otros espacios de nombres, como&nbsp;IO&nbsp;y&nbsp;Collections. Una directiva&nbsp;using&nbsp;que hace referencia a un espacio de nombres determinado permite el uso no calificado de los tipos que son miembros de ese espacio de nombres. Debido a la directiva&nbsp;using, puede utilizar el programa&nbsp;Console.WriteLine&nbsp;como abreviatura de&nbsp;System.Console.WriteLine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La clase&nbsp;Hello&nbsp;declarada por el programa \u00abHola mundo\u00bb tiene un miembro \u00fanico, el m\u00e9todo llamado&nbsp;Main. El m\u00e9todo&nbsp;Main&nbsp;se declara con el modificador&nbsp;static. Mientras que los m\u00e9todos de instancia pueden hacer referencia a una instancia de objeto envolvente determinada utilizando la palabra clave&nbsp;this, los m\u00e9todos est\u00e1ticos funcionan sin referencia a un objeto determinado. Por convenci\u00f3n, un m\u00e9todo est\u00e1tico denominado&nbsp;Main&nbsp;sirve como punto de entrada de un programa de C#.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La salida del programa la genera el m\u00e9todo&nbsp;WriteLine&nbsp;de la clase&nbsp;Console&nbsp;en el espacio de nombres&nbsp;System. Esta clase la proporcionan las bibliotecas de clase est\u00e1ndar, a las que, de forma predeterminada, el compilador hace referencia autom\u00e1ticamente.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tipos y variables<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Un&nbsp;<em>tipo<\/em>&nbsp;define la estructura y el comportamiento de los datos en C#. La declaraci\u00f3n de un tipo puede incluir sus miembros, tipo base, interfaces que implementa y operaciones permitidas para ese tipo. Una&nbsp;<em>variable<\/em>&nbsp;es una etiqueta que hace referencia a una instancia de un tipo espec\u00edfico. Hay dos clases de tipos en C#:&nbsp;<em>tipos de valor<\/em>&nbsp;y&nbsp;<em>tipos de referencia<\/em>. Las variables de tipos de valor contienen directamente sus datos. Las variables de tipos de referencia almacenan referencias a los datos, lo que se conoce como objetos. Con los tipos de referencia, es posible que dos variables hagan referencia al mismo objeto y que, por tanto, las operaciones en una variable afecten al objeto al que hace referencia la otra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con los tipos de valor, cada variable tiene su propia copia de los datos y no es posible que las operaciones en una variable afecten a la otra (excepto para las variables de par\u00e1metro&nbsp;ref&nbsp;y&nbsp;out).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un&nbsp;<strong><em>identificador<\/em><\/strong>&nbsp;es un nombre de variable. Un identificador es una secuencia de caracteres Unicode sin ning\u00fan espacio en blanco. Un identificador puede ser una palabra reservada de C# si tiene el prefijo&nbsp;@. El uso de una palabra reservada como identificador puede ser \u00fatil al interactuar con otros lenguajes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los tipos de valor de C# se dividen en&nbsp;<em>tipos simples<\/em>,&nbsp;<em>tipos de enumeraci\u00f3n<\/em>,&nbsp;<em>tipos de estructura<\/em>,&nbsp;<em>tipos de valor que aceptan valores NULL<\/em>&nbsp;y&nbsp;<em>tipos de valor de tupla<\/em>. Los tipos de referencia de C# se dividen en&nbsp;<em>tipos de clase<\/em>,&nbsp;<em>tipos de interfaz<\/em>,&nbsp;<em>tipos de matriz<\/em>&nbsp;y&nbsp;<em>tipos delegados<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En el esquema siguiente se ofrece informaci\u00f3n general del sistema de tipos de C#.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/value-types\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de valor<\/a><\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/value-types#built-in-value-types\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos simples<\/a><\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/integral-numeric-types\" target=\"_blank\" rel=\"noreferrer noopener\">Entero con signo<\/a>:&nbsp;sbyte,&nbsp;short,&nbsp;int,&nbsp;long<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/integral-numeric-types\" target=\"_blank\" rel=\"noreferrer noopener\">Entero sin signo<\/a>:&nbsp;byte,&nbsp;ushort,&nbsp;uint,&nbsp;ulong<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/standard\/base-types\/character-encoding-introduction\" target=\"_blank\" rel=\"noreferrer noopener\">Caracteres Unicode<\/a>:&nbsp;char, que representa una unidad de c\u00f3digo UTF-16<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/floating-point-numeric-types\" target=\"_blank\" rel=\"noreferrer noopener\">Punto flotante binario IEEE<\/a>:&nbsp;float,&nbsp;double<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/floating-point-numeric-types\" target=\"_blank\" rel=\"noreferrer noopener\">Punto flotante decimal de alta precisi\u00f3n<\/a>:&nbsp;decimal<\/li><li>Booleano:&nbsp;bool, que representa valores booleanos, valores que son&nbsp;true&nbsp;o&nbsp;false<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/enum\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de enumeraci\u00f3n<\/a><\/li><li>Tipos definidos por el usuario con el formato&nbsp;enum E {&#8230;}. Un tipo&nbsp;enum&nbsp;es un tipo distinto con constantes con nombre. Cada tipo&nbsp;enum&nbsp;tiene un tipo subyacente, que debe ser uno de los ocho tipos enteros. El conjunto de valores de un tipo&nbsp;enum&nbsp;es igual que el conjunto de valores del tipo subyacente.<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/struct\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de estructura<\/a><\/li><li>Tipos definidos por el usuario con el formato&nbsp;struct S {&#8230;}<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/nullable-value-types\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de valores que aceptan valores NULL<\/a><\/li><li>Extensiones de todos los dem\u00e1s tipos de valor con un valor&nbsp;null<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/value-tuples\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de valor de tupla<\/a><\/li><li>Tipos definidos por el usuario con el formato&nbsp;(T1, T2, &#8230;)<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/keywords\/reference-types\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de referencia<\/a><\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/keywords\/class\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de clase<\/a><\/li><li>Clase base definitiva de todos los dem\u00e1s tipos:&nbsp;object<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/standard\/base-types\/character-encoding-introduction\" target=\"_blank\" rel=\"noreferrer noopener\">Cadenas Unicode<\/a>:&nbsp;string, que representa una secuencia de unidades de c\u00f3digo UTF-16<\/li><li>Tipos definidos por el usuario con el formato&nbsp;class C {&#8230;}<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/keywords\/interface\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de interfaz<\/a><\/li><li>Tipos definidos por el usuario con el formato&nbsp;interface I {&#8230;}<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/programming-guide\/arrays\/\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos de matriz<\/a><\/li><li>Unidimensional, multidimensional y escalonada. Por ejemplo,&nbsp;int[],&nbsp;int[,]&nbsp;y&nbsp;int[][].<\/li><li><a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/builtin-types\/reference-types#the-delegate-type\" target=\"_blank\" rel=\"noreferrer noopener\">Tipos delegados<\/a><\/li><li>Tipos definidos por el usuario con el formato&nbsp;delegate int D(&#8230;)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Los programas de C# utilizan&nbsp;<em>declaraciones de tipos<\/em>&nbsp;para crear nuevos tipos. Una declaraci\u00f3n de tipos especifica el nombre y los miembros del nuevo tipo. Seis de las categor\u00edas de tipos de C# las define el usuario: tipos de clase, tipos de estructura, tipos de interfaz, tipos de enumeraci\u00f3n, tipos de delegado y tipos de valor de tupla. Tambi\u00e9n puede declarar tipos&nbsp;record, bien sean&nbsp;record struct&nbsp;o&nbsp;record class. Los tipos de registro tienen miembros sintetizados por el compilador. Los registros se usan principalmente para almacenar valores, con un comportamiento m\u00ednimo asociado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A tipo&nbsp;class&nbsp;define una estructura de datos que contiene miembros de datos (campos) y miembros de funci\u00f3n (m\u00e9todos, propiedades y otros). Los tipos de clase admiten herencia \u00fanica y polimorfismo, mecanismos por los que las clases derivadas pueden extender y especializar clases base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un tipo&nbsp;struct&nbsp;es similar a un tipo de clase, por el hecho de que representa una estructura con miembros de datos y miembros de funci\u00f3n. Pero a diferencia de las clases, las estructuras son tipos de valor y no suelen requerir la asignaci\u00f3n del mont\u00f3n. Los tipos de estructura no admiten la herencia especificada por el usuario y todos se heredan impl\u00edcitamente del tipo&nbsp;object.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un tipo&nbsp;interface&nbsp;define un contrato como un conjunto con nombre de miembros p\u00fablicos. Un valor&nbsp;class&nbsp;o&nbsp;struct&nbsp;que implementa&nbsp;interface&nbsp;debe proporcionar implementaciones de miembros de la interfaz. Un&nbsp;interface&nbsp;puede heredar de varias interfaces base, y un&nbsp;class&nbsp;o&nbsp;struct&nbsp;pueden implementar varias interfaces.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un tipo&nbsp;delegate&nbsp;representa las referencias a m\u00e9todos con una lista de par\u00e1metros determinada y un tipo de valor devuelto. Los delegados permiten tratar m\u00e9todos como entidades que se puedan asignar a variables y se puedan pasar como par\u00e1metros. Los delegados son an\u00e1logos a los tipos de funci\u00f3n proporcionados por los lenguajes funcionales. Tambi\u00e9n son similares al concepto de punteros de funci\u00f3n de otros lenguajes. A diferencia de los punteros de funci\u00f3n, los delegados est\u00e1n orientados a objetos y tienen seguridad de tipos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los tipos&nbsp;class,&nbsp;struct,&nbsp;interface&nbsp;y&nbsp;delegate&nbsp;admiten par\u00e1metros gen\u00e9ricos, mediante los que se pueden parametrizar con otros tipos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C# admite matrices unidimensionales y multidimensionales de cualquier tipo. A diferencia de los tipos enumerados antes, no es necesario declarar los tipos de matriz antes de usarlos. En su lugar, los tipos de matriz se crean mediante un nombre de tipo entre corchetes. Por ejemplo,&nbsp;int[]&nbsp;es una matriz unidimensional de&nbsp;int,&nbsp;int[,]&nbsp;es una matriz bidimensional de&nbsp;int&nbsp;y&nbsp;int[][]&nbsp;es una matriz unidimensional de las matrices unidimensionales, o la matriz \u00abescalonada\u00bb, de&nbsp;int.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los tipos que aceptan valores NULL no requieren una definici\u00f3n independiente.&nbsp;Para cada tipo&nbsp;T&nbsp;que no acepta valores NULL, existe un tipo&nbsp;T?&nbsp;que acepta valores NULL correspondiente, que puede tener un valor adicional,&nbsp;null.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo,&nbsp;int?&nbsp;es un tipo que puede contener cualquier entero de 32&nbsp;bits o el valor&nbsp;null&nbsp;y&nbsp;string?&nbsp;es un tipo que puede contener cualquier&nbsp;string&nbsp;o el valor&nbsp;null.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El sistema de tipos de C# est\u00e1 unificado, de tal forma que un valor de cualquier tipo puede tratarse como&nbsp;object. Todos los tipos de C# directa o indirectamente se derivan del tipo de clase&nbsp;object, y&nbsp;object&nbsp;es la clase base definitiva de todos los tipos. Los valores de tipos de referencia se tratan como objetos mediante la visualizaci\u00f3n de los valores como tipo&nbsp;object. Los valores de tipos de valor se tratan como objetos mediante la realizaci\u00f3n de&nbsp;<em>operaciones de conversi\u00f3n boxing<\/em>&nbsp;y&nbsp;<em>operaciones de conversi\u00f3n unboxing<\/em>. En el ejemplo siguiente, un valor&nbsp;int&nbsp;se convierte en&nbsp;object&nbsp;y vuelve a&nbsp;int.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>int i = 123;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>object o = i;&nbsp; &nbsp; \/\/ Boxing<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>int j = (int)o;&nbsp; \/\/ Unboxing<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se asigna un valor de un tipo de valor a una referencia&nbsp;object, se asigna un \u00abbox\u00bb para contener el valor. Ese box es una instancia de un tipo de referencia, y es donde se copia el valor. Por el contrario, cuando una referencia&nbsp;object&nbsp;se convierte en un tipo de valor, se comprueba si el elemento&nbsp;object&nbsp;al que se hace referencia es un box del tipo de valor correcto. Si la comprobaci\u00f3n se realiza correctamente, el valor del box se copia en el tipo de valor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El sistema de tipos unificado de C# conlleva efectivamente que los tipos de valor se tratan como referencias&nbsp;object&nbsp;\u00aba petici\u00f3n\u00bb. Debido a la unificaci\u00f3n, las bibliotecas de uso general que utilizan el tipo&nbsp;object&nbsp;pueden usarse con todos los tipos que se derivan de&nbsp;object, como, por ejemplo, los tipos de referencia y los tipos de valor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay varios tipos de&nbsp;<em>variables<\/em>&nbsp;en C#, entre otras, campos, elementos de matriz, variables locales y par\u00e1metros. Las variables representan ubicaciones de almacenamiento. Cada variable tiene un tipo que determina qu\u00e9 valores se pueden almacenar en ella, como se muestra a continuaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tipo de valor distinto a NULL<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un valor de ese tipo exacto.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tipos de valor NULL<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Un valor&nbsp;null&nbsp;o un valor de ese tipo exacto<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">objeto<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una referencia&nbsp;null, una referencia a un objeto de cualquier tipo de referencia o una referencia a un valor de conversi\u00f3n boxing de cualquier tipo de valor.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tipo de clase<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Una referencia&nbsp;null, una referencia a una instancia de ese tipo de clase o una referencia a una instancia de una clase derivada de ese tipo de clase.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tipo de interfaz<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Un referencia&nbsp;null, una referencia a una instancia de un tipo de clase que implementa dicho tipo de interfaz o una referencia a un valor de conversi\u00f3n boxing de un tipo de valor que implementa dicho tipo de interfaz.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tipo de matriz<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Una referencia&nbsp;null, una referencia a una instancia de ese tipo de matriz o una referencia a una instancia de un tipo de matriz compatible.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Tipo delegado<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Una referencia&nbsp;null&nbsp;o una referencia a una instancia de un tipo delegado compatible.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En s\u00edntesis, C# nos permitir\u00e1 desarrollar la funcionalidad de nuestra aplicaci\u00f3n, as\u00ed como la interfaz gr\u00e1fica que vamos a utilizar. C# Es un lenguaje flexible de alto nivel, con el cual a trav\u00e9s de sentencias muy parecidas al lenguaje humano, podemos llevar a cabo la programaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Llegamos al final de la tercera clase. \u00a1Felicidades, est\u00e1s avanzando muy bien! Espero que el tema te haya gustado y despierte tu inter\u00e9s para seguir investigando sobre ello. Recuerda elaborar y mandar la consigna asignada a esta clase, te espero en la cuarta sesi\u00f3n donde aprender\u00e1s un tema relevante para tu formaci\u00f3n acad\u00e9mica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Fuentes de informaci\u00f3n<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><em>C#. Microsoft Docs. <\/em><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/\" target=\"_blank\" rel=\"noreferrer noopener\">C# docs &#8211; get started, tutorials, reference. | Microsoft Docs<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n \u00a1Hola! \u00bfQu\u00e9 tal?, me da gusto que nos volvamos a encontrar en esta tercera sesi\u00f3n, espero que estes disfrutando esta oportunidad de aprendizaje pues te permitir\u00e1 tener m\u00e1s herramientas para tu \u00e9xito personal y profesional.&nbsp; En esta sesi\u00f3n descubrir\u00e1s que los lenguajes de desarrollo, son la base de cualquier aplicaci\u00f3n; ya sea de escritorio, &#8230; <a title=\"Clase digital 3. Lenguajes de desarrollo para dispositivos m\u00f3viles\" class=\"read-more\" href=\"https:\/\/blogs.ugto.mx\/rea\/clase-digital-3-lenguajes-de-desarrollo-para-dispositivos-moviles\/\" aria-label=\"Leer m\u00e1s sobre Clase digital 3. Lenguajes de desarrollo para dispositivos m\u00f3viles\">Leer m\u00e1s<\/a><\/p>\n","protected":false},"author":142,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","footnotes":""},"categories":[349,350],"tags":[41,402,351],"class_list":["post-10314","post","type-post","status-publish","format-standard","hentry","category-licenciatura-en-sistemas-de-informacion-administrativa","category-uda-desarrollo-de-aplicaciones-para-moviles","tag-clase-digital","tag-omar-alejandro-rodriguez-marquez","tag-opt001"],"acf":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/10314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/users\/142"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/comments?post=10314"}],"version-history":[{"count":4,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/10314\/revisions"}],"predecessor-version":[{"id":11824,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/posts\/10314\/revisions\/11824"}],"wp:attachment":[{"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/media?parent=10314"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/categories?post=10314"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ugto.mx\/rea\/wp-json\/wp\/v2\/tags?post=10314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}