stringtranslate.com

Punto de entrada

Ejemplo de la función principal, en C#.
Cómo se vería en el código fuente de C# . Las diferentes piezas están etiquetadas como referencia.Main()

En programación de computadoras , un punto de entrada es el lugar en un programa donde comienza la ejecución de un programa y donde el programa tiene acceso a los argumentos de la línea de comando . [1]

Para iniciar la ejecución de un programa , el cargador o sistema operativo pasa el control a su punto de entrada. (Durante el arranque , el sistema operativo en sí es el programa). Esto marca la transición del tiempo de carga (y el tiempo de enlace dinámico , si está presente) al tiempo de ejecución .

Para algunos sistemas operativos y lenguajes de programación , el punto de entrada está en una biblioteca de tiempo de ejecución , un conjunto de funciones de soporte para el lenguaje. El código de la biblioteca inicializa el programa y luego pasa el control al programa propiamente dicho. En otros casos, el programa puede inicializar la biblioteca en tiempo de ejecución. [2]

En sistemas simples, la ejecución comienza en la primera declaración, lo cual es común en lenguajes interpretados , formatos ejecutables simples y cargadores de arranque . En otros casos, el punto de entrada está en alguna otra dirección de memoria conocida que puede ser una dirección absoluta o relativa ( desplazamiento ).

Alternativamente, la ejecución de un programa puede comenzar en un punto con nombre, ya sea con un nombre convencional definido por el lenguaje de programación o sistema operativo o con un nombre especificado por la persona que llama. En muchos lenguajes de la familia C , esta es una función llamada main; como resultado, el punto de entrada a menudo se conoce como función principal . [3]

En lenguajes JVM , como Java , el punto de entrada es un método estático llamado main; En lenguajes CLI como C#, el punto de entrada es un método estático llamado Main. [4]

Uso

Los puntos de entrada se aplican tanto al código fuente como a los archivos ejecutables . Sin embargo, en el desarrollo diario de software , los programadores especifican los puntos de entrada sólo en el código fuente, lo que los hace mucho más conocidos. Los puntos de entrada en archivos ejecutables dependen de la interfaz binaria de la aplicación (ABI) del sistema operativo real y son generados por el compilador o vinculador (si no los fija la ABI). Otros archivos de objetos vinculados también pueden tener puntos de entrada, que el vinculador utiliza más adelante al generar puntos de entrada de un archivo ejecutable.

Los puntos de entrada son capaces de transmitir argumentos de comando, variables u otra información como una variable local utilizada por el Main()método. De esta manera, se pueden establecer opciones específicas durante la ejecución del programa y luego ser interpretadas por el programa. Muchos programas utilizan esto como una forma alternativa de configurar diferentes ajustes o realizar una variedad determinada de acciones utilizando un solo programa.

Contemporáneo

En la mayoría de los lenguajes de programación y sistemas operativos más populares de la actualidad, un programa de computadora generalmente solo tiene un único punto de entrada .

En los programas C , C++ , D , Zig , Rust y Kotlin , esta es una función llamada main; en Java es un método estático llamado main(aunque la clase debe especificarse en el momento de la invocación) y en C# es un método estático llamado Main. [5] [6]

En muchos de los principales sistemas operativos, el formato ejecutable estándar tiene un único punto de entrada. En el formato ejecutable y vinculable (ELF), utilizado en Unix y sistemas similares a Unix como Linux , el punto de entrada se especifica en el e_entrycampo del encabezado ELF. En la Colección de compiladores GNU (gcc), el punto de entrada utilizado por el vinculador es el _startsímbolo. De manera similar, en el formato Portable Executable , utilizado en Microsoft Windows , el punto de entrada se especifica mediante el AddressOfEntryPointcampo, que se hereda de COFF . En archivos COM , el punto de entrada está en el desplazamiento fijo de 0100h.

Una excepción al paradigma del punto de entrada único es Android . Las aplicaciones de Android no tienen un único punto de entrada: no hay ninguna mainfunción especial. En cambio, tienen componentes esenciales (actividades y servicios) que el sistema puede cargar y ejecutar según sea necesario. [7]

Una técnica que se utiliza ocasionalmente es el binario gordo , que consta de varios ejecutables para diferentes objetivos empaquetados en un solo archivo. Por lo general, esto se implementa mediante un único punto de entrada general, que es compatible con todos los objetivos y se ramifica al punto de entrada específico del objetivo. Las técnicas alternativas incluyen almacenar ejecutables separados en bifurcaciones separadas , cada una con su propio punto de entrada, que luego es seleccionado por el sistema operativo.

Histórico

Históricamente, y en algunos sistemas heredados contemporáneos , como VMS y OS/400 , los programas informáticos tienen multitud de puntos de entrada , cada uno de los cuales corresponde a las diferentes funcionalidades del programa. La forma habitual de indicar puntos de entrada, tal como se utilizan en todo el sistema en VMS y en programas PL/I y MACRO , es añadirlos al final del nombre de la imagen ejecutable, delimitada por un signo de dólar ($), por ejemplo directory.exe$make.

La computadora Apple I también usó esto hasta cierto punto. Por ejemplo, un punto de entrada alternativo en el BASIC de Apple I mantendría útil el programa BASIC cuando se presionara accidentalmente el botón de reinicio. [ se necesita aclaración ]

Punto de salida

En general, los programas pueden salir en cualquier momento regresando al sistema operativo o fallando . Los programas en lenguajes interpretados devuelven el control al intérprete, pero los programas en lenguajes compilados deben regresar al sistema operativo; de lo contrario, el procesador simplemente continuará ejecutándose más allá del final del programa, lo que dará como resultado un comportamiento indefinido .

Normalmente, no hay un único punto de salida especificado en un programa. Sin embargo, en otros casos, los tiempos de ejecución garantizan que los programas siempre terminen de forma estructurada a través de un único punto de salida, lo cual está garantizado a menos que el tiempo de ejecución falle; esto permite que se ejecute código de limpieza, como atexitcontroladores. Esto se puede hacer solicitando que los programas finalicen regresando de la función principal, llamando a una función de salida específica o detectando excepciones o señales del sistema operativo en tiempo de ejecución.

Lenguajes de programación

En muchos lenguajes de programación, la mainfunción es donde un programa inicia su ejecución. Permite una organización de alto nivel de la funcionalidad del programa y normalmente tiene acceso a los argumentos de comando proporcionados al programa cuando se ejecutó.

La función principal es generalmente la primera función escrita por el programador que se ejecuta cuando se inicia un programa y se invoca directamente desde la inicialización específica del sistema contenida en el entorno de ejecución ( crt0 o equivalente). Sin embargo, algunos lenguajes pueden ejecutar funciones escritas por el usuario antes de las ejecuciones principales, como los constructores de objetos globales de C++ .

En otros lenguajes, en particular muchos lenguajes interpretados , la ejecución comienza en la primera declaración del programa.

A continuación se incluye una lista no exhaustiva de lenguajes de programación, que describe su forma de definir el punto de entrada principal:

APL

En APL , cuando se carga un espacio de trabajo, el contenido de la variable "quad LX" (expresión latente) se interpreta como una expresión APL y se ejecuta.

C y C++

En C y C++ , el prototipo de función principal se parece a uno de los siguientes:

int principal ( nulo ); int principal ();  int principal ( int argc , char ** argv ); int principal ( int argc , char * argv []); int principal ( int argc , char ** argv , char ** env );              // más específicamente en C // NO según el estándar ISO C 5.1.2.2.1 // PERO en programación integrada dependiendo del µC, esta forma también se usa void main ( void );  

La función principal parece un punto de entrada para los programadores de aplicaciones (el punto de entrada de la aplicación o el punto de entrada principal). La programación del sistema revela más información sobre el programa y especifica el punto de entrada en otro lugar (en el procedimiento de inicialización o en el vector de interrupción de reinicio para programas independientes).

Los parámetros argc , recuento de argumentos y vector de argumentosargv , [ 8] proporcionan respectivamente el número y los valores de los argumentos de la línea de comandos del programa . Los nombres de y pueden ser cualquier identificador válido en C, pero es una convención común utilizar estos nombres. En C++, los nombres deben tomarse literalmente y se debe omitir el "vacío" en la lista de parámetros, si se desea una conformidad estricta. [9] Los estándares C y C++ también permiten otros formatos dependientes de la plataforma, excepto que en C++ el tipo de retorno siempre debe ser ; [10] por ejemplo, Unix (aunque no POSIX.1 ) y Windows tienen un tercer argumento que proporciona el entorno del programa , al que de otro modo se puede acceder a través de :argcargvintgetenvstdlib.h

int principal ( int argc , char ** argv , char ** envp );      

Los sistemas operativos basados ​​en Darwin , como macOS , tienen un cuarto parámetro que contiene información arbitraria proporcionada por el sistema operativo, como la ruta al binario en ejecución: [11]

int principal ( int argc , char ** argv , char ** envp , char ** apple );        

El valor devuelto por la función principal se convierte en el estado de salida del proceso, aunque el estándar C sólo atribuye un significado específico a dos valores: EXIT_SUCCESS(tradicionalmente 0) y EXIT_FAILURE. El significado de otros posibles valores de retorno está definido por la implementación. En caso de que el programador no defina un valor de retorno, el compilador inserta un valor implícito return 0;al final de la función; main()este comportamiento es requerido por el estándar C++.

Se garantiza que argcno es negativo y que argv[argc]es un puntero nulo . Por convención, los argumentos de la línea de comandos especificados por argce argvincluyen el nombre del programa como primer elemento si argces mayor que 0; Si un usuario escribe un comando de " rm file", el shell inicializará el rmproceso con argc = 2y argv = {"rm", "file", NULL}. Como argv[0]es el nombre con el que aparecen los procesos en ps, topetc., algunos programas, como demonios o aquellos que se ejecutan dentro de un intérprete o máquina virtual (donde argv[0]estaría el nombre del ejecutable del host), pueden optar por alterar su argv para dar una apariencia más clara. descriptivo argv[0], generalmente mediante la execllamada al sistema.

La main()función es especial; normalmente cada programa C y C++ debe definirlo exactamente una vez.

Si se declara, main()deberá declararse como si tuviera vinculación externa; no se puede declarar statico inline.

En C++, main()debe estar en el espacio de nombres global (es decir ::main), no se puede sobrecargar y no puede ser una función miembro , aunque el nombre no está reservado de otro modo y puede usarse para funciones miembro, clases, enumeraciones o funciones no miembro en otros espacios de nombres. En C++ (a diferencia de C) main()no se puede llamar de forma recursiva y no se puede tomar su dirección.

C#

Al ejecutar un programa escrito en C# , CLR busca un método estático marcado con la .entrypointdirectiva IL, que no toma argumentos o toma un solo argumento de tipo string[], y tiene un tipo de retorno de voido int, y lo ejecuta. [12]

vacío estático principal (); static void Principal ( cadena [] args ); estático int principal (); static int Principal ( cadena [] args );          

Los argumentos de la línea de comandos se pasan en args, de forma similar a cómo se hace en Java. Para las versiones que Main()devuelven un número entero, similar a C y C++, se devuelve al entorno como estado de salida del proceso.

Desde C#7.1 hay cuatro firmas más posibles del punto de entrada, que permiten la ejecución asincrónica en el Main()Método. [13]

Tarea asíncrona estática principal () Tarea asíncrona estática < int > Principal () Tarea asíncrona estática Principal ( cadena []) Tarea asíncrona estática < int > Principal ( cadena [])            

Los tipos Tasky Task<int>son equivalentes asincrónicos de voidy int. asynces necesario para permitir el uso de asincronía (la awaitpalabra clave) dentro del método.

Limpio

Clean es un lenguaje de programación funcional basado en la reescritura de gráficos. El nodo inicial tiene nombre Starty es de tipo *World -> *Worldsi cambia de mundo o de algún tipo fijo si el programa solo imprime el resultado después de reducir Start .

Inicio :: * Mundo -> * Mundo Inicio mundo = startIO ...        

O incluso más simple

Inicio :: String Inicio = "¡Hola mundo!"    

Uno le dice al compilador qué opción usar para generar el archivo ejecutable.

ceceo común

ANSI Common Lisp no define una función principal; en cambio, el código se lee y evalúa de arriba a abajo en un archivo fuente. Sin embargo, el siguiente código emulará una función principal.

( defun hola-main () ( formato t "¡Hola mundo! ~%" ))     ( hola-principal )

D

En D , el prototipo de función de la función principal se parece a uno de los siguientes:

vacío principal (); void main ( cadena [] args ); int principal (); int principal ( cadena [] argumentos );      

Los argumentos de la línea de comandos se pasan en args, de forma similar a como se hace en C# o Java. Para las versiones que main()devuelven un número entero, similar a C y C++, se devuelve al entorno como estado de salida del proceso.

Dardo

Dart es un lenguaje de programación de propósito general que se utiliza a menudo para crear aplicaciones web y móviles. Como muchos otros lenguajes de programación, Dart tiene un punto de entrada que sirve como punto de partida para un programa Dart. El punto de entrada es la primera función que se ejecuta cuando se ejecuta un programa. En Dart, el punto de entrada suele ser una función denominada main. Cuando se ejecuta un programa Dart, el tiempo de ejecución de Dart busca una función denominada mainy la ejecuta. Cualquier código Dart que deba ejecutarse cuando se inicia el programa debe incluirse en la mainfunción. Aquí hay un ejemplo de una mainfunción simple en Dart:

void main () { print ( "¡Hola mundo!" ); }   

En este ejemplo, la mainfunción simplemente imprime el texto Hello, world!en la consola cuando se ejecuta el programa. Este código se ejecutará automáticamente cuando se ejecute el programa Dart.

Es importante tener en cuenta que si bien la mainfunción es el punto de entrada predeterminado para un programa Dart, es posible especificar un punto de entrada diferente si es necesario. Esto se puede hacer usando la @pragma("vm:entry-point")anotación en Dart. Sin embargo, en la mayoría de los casos, la mainfunción es el punto de entrada que se debe utilizar para los programas Dart.

FORTRAN

FORTRAN no tiene una subrutina o función principal. En su lugar, se puede utilizar una PROGRAMdeclaración como primera línea para especificar que una unidad de programa es un programa principal, como se muestra a continuación. La PROGRAMdeclaración no se puede utilizar para llamadas recursivas. [14]

 PROGRAMA HOLA IMPRIMIR * , "¡Cint!" FIN DEL PROGRAMA HOLA    

Algunas versiones de Fortran, como las de IBM System/360 y mainframes sucesores, no admiten la declaración PROGRAM. Muchos compiladores de otros fabricantes de software permitirán compilar un programa fortran sin una declaración PROGRAM. En estos casos, cualquier módulo que tenga una declaración sin comentario donde no se produzca ninguna declaración SUBRUTINA, FUNCIÓN o BLOQUE DE DATOS, se considera el programa principal.

MOSQUITO

Al utilizar GNAT , no es necesario que el programador escriba una función denominada main; un archivo fuente que contiene un único subprograma se puede compilar en un ejecutable. Sin embargo, la carpeta creará un paquete ada_mainque contendrá y exportará una función principal de estilo C.

Ir

En el lenguaje de programación Go , la ejecución del programa comienza con la mainfunción delpackage main

paquete principal importar "fmt" func principal () { fmt . Println ( "¡Hola, mundo!" ) }   

No hay forma de acceder a argumentos o códigos de retorno fuera de la biblioteca estándar en Go. Se puede acceder a ellos a través de os.Argsy os.Exitrespectivamente, los cuales están incluidos en el "os"paquete.

Haskell

Un programa Haskellmain debe contener un nombre vinculado a un valor de tipo IO t, para algún tipo t; [15] que suele ser IO (). IOes una mónada que organiza los efectos secundarios en términos de código puramente funcional . [16] El mainvalor representa el cálculo de los efectos secundarios realizado por el programa. El resultado del cálculo representado por mainse descarta; por eso mainsuele tener tipo IO (), que indica que el tipo del resultado del cálculo es (), el tipo de unidad , que no contiene información.

principal :: IO () principal = putStrLn "¡Hola mundo!"      

Los argumentos de la línea de comando no se proporcionan a main; deben recuperarse mediante otra acción IO, como System.Environment.getArgs.

Java

Los programas Java comienzan a ejecutarse en el método principal de una clase, [17] [18] [19] [20] que tiene uno de los siguientes encabezados de método :

público estático vacío principal ( String [] args ) público estático vacío principal ( String ... args ) público estático vacío principal ( String args [] ) vacío principal ()             

Los argumentos de la línea de comandos se pasan en formato args. Como en C y C++, el nombre " main()" es especial. Los métodos principales de Java no devuelven un valor directamente, pero se puede pasar uno utilizando el System.exit()método.

A diferencia de C, el nombre del programa no está incluido en args, porque es el nombre de la clase que contiene el método principal, por lo que ya es conocido. Además, a diferencia de C, no es necesario incluir el número de argumentos, ya que las matrices en Java tienen un campo que realiza un seguimiento de cuántos elementos hay.

La función principal debe estar incluida dentro de una clase. Esto se debe a que en Java todo debe estar contenido dentro de una clase. Por ejemplo, un programa Hola mundo en Java puede verse así:

clase pública HolaMundo { public static void main ( String [] args ) { System . afuera . println ( "¡Hola mundo!" ); } }           

Para ejecutar este programa, se debe llamar java HelloWorldal directorio donde existe el archivo de clase HelloWorld.class compilado . Alternativamente, los archivos JAR ejecutables utilizan un archivo de manifiesto para especificar el punto de entrada de una manera independiente del sistema de archivos desde la perspectiva del usuario.

LOGO

En FMSLogo , los procedimientos cuando se cargan no se ejecutan. Para ejecutarlos es necesario utilizar este código:

pronombrar ... ; Comandos de inicio (como imprimir [Bienvenido])fin
hacer "inicio [procname]

La variable startupse utiliza para la lista de acciones de inicio, pero la convención es que llama a un procedimiento que ejecuta las acciones. Ese procedimiento puede tener cualquier nombre.

OCaml

OCaml no tiene ninguna mainfunción. Los programas se evalúan de arriba a abajo.

Los argumentos de la línea de comandos están disponibles en una matriz denominada Sys.argvy el estado de salida es 0 de forma predeterminada.

Ejemplo:

print_endline  "Hola mundo"

Pascal

En Pascal , el procedimiento principal es el único bloque sin nombre del programa. Debido a que los programas Pascal definen procedimientos y funciones en un orden ascendente más riguroso que los programas C, C++ o Java, el procedimiento principal suele ser el último bloque del programa. Pascal no tiene un significado especial para el nombre " main" ni ningún nombre similar.

programa Hola ( Salida ) ; comenzar a escribir ( '¡Hola, mundo!' ) ; fin .  

Los argumentos de la línea de comandos se cuentan ParamCounty son accesibles como cadenas por ParamStr(n), con n entre 0 y ParamCount.

Las versiones de Pascal que admiten unidades o módulos también pueden contener un bloque sin nombre en cada una, que se utiliza para inicializar el módulo. Estos bloques se ejecutan antes de que se llame al punto de entrada principal del programa.

perla

En Perl , no existe una función principal. Las declaraciones se ejecutan de arriba a abajo, aunque las declaraciones de un BEGINbloque se ejecutan antes que las declaraciones normales.

Los argumentos de la línea de comandos están disponibles en la matriz especial @ARGV. A diferencia de C, @ARGVno contiene el nombre del programa, que es $0.

PHP

PHP no tiene una función "principal". A partir de la primera línea de un script PHP, cualquier código que no esté encapsulado por un encabezado de función se ejecuta tan pronto como se ve.

Lucio

En Pike la sintaxis es similar a la de C y C++. La ejecución comienza a las main. La argcvariable " " mantiene el número de argumentos pasados ​​al programa. La argvvariable " " contiene el valor asociado con los argumentos pasados ​​al programa.

Ejemplo:

 int principal ( int argc , matriz ( cadena ) argv )    

Pitón

Los programas Python se evalúan de arriba a abajo, como es habitual en los lenguajes de scripting: el punto de entrada es el comienzo del código fuente. Dado que las definiciones deben preceder al uso, los programas generalmente se estructuran con definiciones en la parte superior y el código a ejecutar en la parte inferior (sin sangría), similar al código para un compilador de un solo paso , como en Pascal.

Alternativamente, un programa se puede estructurar con una mainfunción explícita que contiene el código que se ejecutará cuando un programa se ejecuta directamente, pero que también se puede invocar importando el programa como un módulo y llamando a la función. Esto se puede hacer con el siguiente modismo, que se basa en que la variable interna __name__se establece __main__cuando se ejecuta un programa, pero no cuando se importa como un módulo (en cuyo caso se establece en el nombre del módulo); existen muchas variantes de esta estructura: [21] [22] [23]

 sistema de importacióndef  principal ( argv ):  n  =  int ( argv [ 1 ])  imprimir ( n  +  1 )si  __nombre__  ==  '__main__' :  sys . salir ( principal ( sys . argv ))

En este modismo, la llamada al punto de entrada nombrado maines explícita, y la interacción con el sistema operativo (recibir los argumentos, llamar a la salida del sistema) se realiza explícitamente mediante llamadas a la biblioteca, que en última instancia son manejadas por el tiempo de ejecución de Python. Esto contrasta con C, donde el tiempo de ejecución los realiza implícitamente , según una convención.

QB64

El lenguaje QB64 no tiene función principal, el código que no está dentro de una función o subrutina se ejecuta primero, de arriba a abajo:

imprimir "¡Hola mundo! a=" ; a = getInteger ( 1.8 d ): imprime un     
función getInteger ( n como doble ) getInteger = int ( n ) fin de la función       

Los argumentos de la línea de comando (si los hay) se pueden leer usando la función COMMAND$ :

línea de comando compartida tenue como línea de comando de cadena = COMMAND$      
'Se pueden leer varios argumentos de línea de comando separados por espacios usando COMMAND$(n) commandline1 = COMMAND$ ( 2 )  

Rubí

En Ruby , no existe una función principal distinta. En cambio, el código escrito fuera de cualquier class .. endalcance module .. endse ejecuta en el contexto de un " main" objeto especial. Se puede acceder a este objeto usando self:

irb(principal):001:0> self => principal

Tiene las siguientes propiedades:

irb(principal):002:0> self . clase => Objeto irb(principal):003:0> self . clase . ancestros => [Objeto, Núcleo, Objeto Básico]

Los métodos definidos fuera del alcance classo modulese definen como métodos privados del " main" objeto. Dado que la clase de " main" es Object, dichos métodos se convierten en métodos privados de casi todos los objetos:

irb(principal):004:0> def foo irb(principal):005:1> 42 irb(principal):006:1> fin => nil irb(principal):007:0> foo => 42 irb(principal :008:0> []. foo NoMethodError: método privado `foo' llamado para []:Array from (irb):8 from /usr/bin/irb:12:in `<main>' irb(main):009:0> false . foo NoMethodError: método privado `foo' llamado para false:FalseClass from (irb):9 from /usr/bin/irb:12:in `<main>'  

El número y los valores de los argumentos de la línea de comandos se pueden determinar utilizando la ARGVmatriz constante:

$ irb  /dev/tty  foo  barratty(principal):001:0> ARGV ARGV => ["foo", "bar"] tty(principal):002:0> ARGV.tamaño ARGV.tamaño => 2

El primer elemento de ARGV, ARGV[0]contiene el primer argumento de la línea de comandos, no el nombre del programa ejecutado, como en C. El nombre del programa está disponible usando $0o $PROGRAM_NAME. [24]

De manera similar a Python, se podría usar:

if __FILE__ == $PROGRAM_NAME # Ponga el código "principal" aquí    

ejecutar algún código solo si su archivo se especificó en la rubyinvocación.

Óxido

En Rust, el punto de entrada de un programa es una función llamada main. Normalmente, esta función se encuentra en un archivo llamado main.rso lib.rs.

// En `main.rs` fn  main () { println! ( "¡Hola Mundo!" ); }  

Además, a partir de Rust 1.26.0, la función principal puede devolver un Result: [25]

fn  main ()  -> Resultado < (), std :: io :: Error > { println! ( "¡Hola Mundo!" );    Ok (()) // Devuelve un tipo `Resultado` de valor `Ok` con el contenido `()`, es decir, una tupla vacía. } 

Rápido

Cuando se ejecuta en Xcode Playground, [26] Swift se comporta como un lenguaje de programación, ejecutando declaraciones de arriba a abajo; Se permite el código de nivel superior.

// HolaMundo.patio de juegoslet  hola  =  "hola" let  mundo  =  "mundo"let  holaMundo  =  hola  +  " "  +  mundoimprimir ( holaMundo )  // hola mundo

Las aplicaciones basadas en Cocoa y Cocoa Touch escritas en Swift generalmente se inicializan con los atributos @NSApplicationMainy @UIApplicationMain, respectivamente. Esos atributos son equivalentes en su propósito al main.marchivo en proyectos Objective-C : declaran implícitamente la mainfunción que llama a UIApplicationMain(_:_:_:_:)[27] que crea una instancia de UIApplication. [28] El siguiente código es la forma predeterminada de inicializar una aplicación iOS basada en Cocoa Touch y declarar su delegado de aplicación.

// AppDelegate.swiftimportar  UIKit@UIApplicationMain clase  AppDelegate :  UIResponder ,  UIApplicationDelegate  {   ventana var :  UIWindow ?   aplicación func ( _  aplicación :  UIApplication ,  didFinishLaunchingWithOptions  launchOptions :  [ UIApplication . LaunchOptionsKey :  ¿Alguna ]?)  ->  Bool  {  retorno  verdadero  } }

Visual Básico

En Visual Basic , cuando un proyecto no contiene formularios, el objeto de inicio puede ser el Main()procedimiento. La Command$función se puede utilizar opcionalmente para acceder a la parte del argumento de la línea de comando utilizada para iniciar el programa:

Subprincipal ( ) Depuración . Imprimir "¡Hola mundo!" MsgBox "Los argumentos, si los hay, son:" & Comando $ End Sub        

Xojo

En Xojo , hay dos tipos de proyectos diferentes, cada uno con un punto de entrada principal diferente. Las aplicaciones de escritorio (GUI) comienzan con el App.Openevento del Applicationobjeto del proyecto. Las aplicaciones de consola comienzan con el App.Runevento del ConsoleApplicationobjeto del proyecto. En ambos casos, la función principal se genera automáticamente y no se puede eliminar del proyecto.

Ver también

Referencias

  1. ^ "En Computación, ¿qué es un punto de entrada? (con imagen)". sabioGEEK . Archivado desde el original el 5 de agosto de 2020 . Consultado el 22 de enero de 2020 .
  2. ^ Decker, Karsten M.; Rehmann, René M. (1994). Entornos de programación para sistemas distribuidos masivamente paralelos: conferencia de trabajo del Ifip Wg 10.3, 25 al 29 de abril de 1994. Springer Science & Business Media. ISBN 978-3-7643-5090-1.
  3. ^ "Método principal en C#". Geeks para Geeks . 2018-11-30. Archivado desde el original el 31 de julio de 2020 . Consultado el 22 de enero de 2020 .
  4. ^ Wagner, Bill (1 de agosto de 2017). "Main()/Puntos de entrada (Guía de programación de C#) - Microsoft Developer Network". docs.microsoft.com . Archivado desde el original el 11 de noviembre de 2020 . Consultado el 3 de diciembre de 2018 .
  5. ^ "La función principal ()". ibm.com . IBM . Archivado desde el original el 10 de septiembre de 2017 . Consultado el 8 de mayo de 2014 .
  6. ^ "Argumentos principales () y de línea de comandos (Guía de programación de C#)". msdn.microsoft.com. Archivado desde el original el 9 de junio de 2014 . Consultado el 8 de mayo de 2014 .
  7. ^ "Fundamentos de aplicación". Desarrollo de Android . linuxtopia.org. Archivado desde el original el 31 de diciembre de 2013 . Consultado el 19 de febrero de 2014 .
  8. ^ argv: el término vectorial en el nombre de esta variable se usa en el sentido tradicional para referirse a cadenas.
  9. ^ "Tipos de parámetros y nombres de principales". Archivado desde el original el 10 de noviembre de 2012 . Consultado el 28 de julio de 2016 .
  10. ^ Sección 3.6.1.2, edición estándar C++ 2011.
  11. ^ "El vector de argumento char *apple". Archivado desde el original el 22 de diciembre de 2015 . Consultado el 12 de mayo de 2014 .
  12. ^ "Aplicaciones de consola en .NET o enseñar viejos trucos a un perro nuevo". msdn.microsoft.com. 2003-06-12. Archivado desde el original el 4 de febrero de 2008 . Consultado el 19 de agosto de 2013 .
  13. ^ "El repositorio oficial para el diseño del lenguaje de programación C#: Dotnet/Csharplang". GitHub . 2019-08-26.
  14. ^ XL FORTRAN para AIX . Referencia idiomática. Tercera edición, 1994. IBM
  15. ^ "El Informe Haskell 98: Módulos". Haskell.org. Archivado desde el original el 19 de agosto de 2013 . Consultado el 19 de agosto de 2013 .
  16. ^ Algunos conceptos erróneos de Haskell: código idiomático, pureza, pereza e IO Archivado el 27 de julio de 2010 en Wayback Machine , en IO monádica de Haskell>
  17. ^ "El entorno del lenguaje Java". Oráculo . Archivado desde el original el 2019-04-20 . Consultado el 14 de marzo de 2020 . Dentro de la clase HelloWorld, declaramos un único método llamado main() que a su vez contiene una única invocación de método para mostrar la cadena "¡Hola mundo!" en la salida estándar. La declaración que imprime "¡Hola mundo!" lo hace invocando el método println del objeto out. El objeto de salida es una variable de clase en la clase Sistema que realiza operaciones de salida en archivos.
  18. ^ Schildt, Herbert (2019). Java: una guía para principiantes . Nueva York: McGraw-Hill Education. pag. 46.ISBN _ 978-1-260-44022-5. OCLC  1061561931. //Un programa JAVA comienza con una llamada a main ().
  19. ^ "¡Hola mundo! - Tutorial interactivo gratuito de Java". Aprende Java . Consultado el 14 de marzo de 2020 . En Java, cada línea de código que realmente se puede ejecutar debe estar dentro de una clase. "public class Main {}" declara una clase llamada Main, que es pública, es decir que cualquier otra clase puede acceder a ella.
  20. ^ "¡Hola mundo! - Tutorial interactivo gratuito de Java". Aprende Java . Consultado el 14 de marzo de 2020 ."public static void main(String[] args) {} " es el punto de entrada de nuestro programa Java. el método principal debe tener esta firma exacta para poder ejecutar nuestro programa.
  21. ^ Guido van Rossum (15 de mayo de 2003). "Funciones principales de Python ()". Archivado desde el original el 11 de julio de 2015 . Consultado el 29 de junio de 2015 , comentarios. {{cite web}}: Enlace externo en |postscript=( ayuda )Mantenimiento CS1: posdata ( enlace )
  22. ^ Codifique como un Pythonista: Idiomatic Python Archivado el 27 de mayo de 2014 en Wayback Machine , en scripts de Python utilizados como módulos
  23. ^ Ned Batchelder (6 de junio de 2003). "Funciones principales de Python ()". Archivado desde el original el 20 de septiembre de 2015 . Consultado el 29 de junio de 2015 .
  24. ^ Programación de Ruby: la guía pragmática del programador, Ruby y su mundo Archivado el 31 de agosto de 2013 en Wayback Machine , en RubyARGV
  25. ^ "Lanzamientos.md". Óxido de GitHub. Archivado desde el original el 15 de mayo de 2015 . Consultado el 15 de febrero de 2019 .
  26. ^ No confundir con Swift Playgrounds Archivado el 8 de julio de 2022 en Wayback Machine , una aplicación para iPad desarrollada por Apple para aprender el lenguaje de programación Swift.
  27. ^ "UIApplicationMain (_:_:_:_:) — UIKit". Documentación para desarrolladores de Apple . Archivado desde el original el 12 de enero de 2019 . Consultado el 12 de enero de 2019 .
  28. ^ "Aplicación UIA: UIKit". Documentación para desarrolladores de Apple . Archivado desde el original el 13 de enero de 2019 . Consultado el 12 de enero de 2019 .

enlaces externos