Saltar al contenido principal
LibreTexts Español

3.3: Un primer modelo de computadora

  • Page ID
    52818
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    A continuación se presentan dos líneas de código informático que forman un programa que modela la colonia bacteriana ya que se duplica cada hora. Si no has visto antes código de cómputos, no te asustes por esto; vamos a repasarlo cuidadosamente a continuación.

    N=1; t=0;

    mientras que (t<=5*24) {print (N); N=N*2; t=t+1;}

    El programa anterior está escrito en un lenguaje de programación genérico, podría ejecutarse como el lenguaje de programación R, como el lenguaje AWK, o, con ajustes menores como el lenguaje C, Java, o varios otros. Este código en particular es esencialmente idéntico en muchos idiomas.

    La primera “declaración” es N=1. Eso instruye a la computadora para establecer el número de bacterias, N, igual a 1. Un punto y coma (;) termina la sentencia y la separa de las declaraciones posteriores. La siguiente declaración es t=0. Eso instruye a la computadora para establecer el tiempo t en 0. Una bacteria en el tiempo cero forma las “condiciones iniciales”, y una vez que la computadora ha terminado esa línea, se dice que el programa está “inicializado”.

    La segunda línea del programa está más involucrada, pero se puede entender en dos partes. La primera parte de la izquierda, mientras que (t<=5*24), instruye a la computadora a repetir un conjunto de código durante 5 días simulados de 24 horas cada uno. La segunda parte es el código a repetir, dentro de llaves a la derecha, {...} .

    Considerando la primera parte, while es una “palabra clave” que instruye a la computadora a repetir algo hasta que la “condición” entre paréntesis ya no sea cierta. En este caso, dentro de los paréntesis se encuentra t<=5*24, que a su vez consta de tres partes, t, <= y 5*24. La primera parte, t, representa el tiempo, que acaba de inicializarse a cero en la línea de código anterior. La segunda parte, <=, es el símbolo de “menor o igual a”. Seis de esos símbolos de “comparación” son posibles, ==, <, <=, >, >=, y! =, que representa comparación para igual, menor que, menor o igual, mayor que, mayor que o igual, y no igual, respectivamente. En la tercera parte, el asterisco (*) es un símbolo de multiplicación, por lo que 5*24 significa “cinco por veinticuatro”, una forma de representar el número 120, o el número de horas de lunes a viernes, la cantidad de tiempo que el cultivo bacteriano hipotético debe reproducirse.

    La codificación por computadora es un negocio exigente, donde pequeñas variaciones pueden hacer grandes diferencias. La computadora es el intérprete literal definitivo. Un ejemplo de esto acaba de pasar por alto en el párrafo anterior. En la codificación, un solo signo igual, =, significa “cambiar algo para ser igual”, mientras que dos signos iguales consecutivos, ==, significa “comparar para ver si dos cosas son iguales”.

    Si estás acostumbrado a la codificación, ya estarás familiarizado con tales sutilezas; si todo esto es nuevo para ti, es algo a lo que acostumbrarte. Diversas imprimaciones en la web pueden ayudar, pero no te desanimes si al principio parece difícil; la codificación por computadora resulta ser una de las cosas más fáciles de saltar pero una de las áreas más difíciles de todo el esfuerzo humano para acertar exactamente. El tiempo y la paciencia ayudarán.

    Volviendo al código, la frase while (t<=5*24) significa, en este caso, repetir algo siempre y cuando el tiempo, t, sea menor o igual a 120 horas, 5 veces 24. Y que algo a repetir aparece dentro de llaves a la derecha, {...} . (Por cierto, muchos lenguajes de programación utilizan tres símbolos principales para agrupar la información, llamados llaves, {}, corchetes, [] y paréntesis, (). Se utilizan para varios tipos de agrupaciones, pero desafortunadamente su uso no es consistente en todos los idiomas.)

    La primera declaración dentro de las llaves es print (N). (Refiérase al programa de dos líneas.) “Imprimir” es un término que queda de los días en que las computadoras se comunicarían en gran medida imprimiendo en papel. Ahora el término solo significa “mostrar”. El enunciado significa así “mostrar el número de individuos en la población, N, en este momento. “Eso se fijó en 1 en la línea anterior, por lo que cuando la computadora ejecute print (N) por primera vez, mostrará el número 1, normalmente en su pantalla.

    La siguiente declaración, N=N*2, se lee “N es igual a N por dos”. Es similar en forma al enunciado de la primera línea, N=1, que inició las cosas con una sola bacteria. La parte 'N=' es la misma. Le dice a la computadora que el número de bacterias, N, está a punto de cambiar. (Por supuesto, la computadora no tiene idea de qué trata el programa, que estás ejecutando un programa sobre bacterias). A lo que N cambiará es inmediatamente a la derecha del signo igual, N*2. El asterisco (*) significa multiplicar. Entonces esta afirmación le dice así a la computadora que duplique el valor de N. Eso es lo que hace cada hora la hipotética población bacteriana, por lo que esta afirmación modela esa duplicación.

    La tercera declaración en la línea, t=t+1, se lee “t es igual a t más uno”. Es similar en forma a la sentencia de la primera línea, t=0, que inició las cosas con un tiempo de reloj de cero. Es decir, en este ejemplo de dejar crecer bacterias para una semana laboral de cinco días, estamos tomando la medianoche del lunes por la mañana para ser hora cero. Cinco días después, a la medianoche del viernes por la noche, eso se convierte en la hora 120 (5 días veces 24 horas al día equivale a 120 horas). Entonces, de manera similar, t= le dice a la computadora que el tiempo t es sobre el cambio. Seguir el signo igual es a lo que debería cambiar, t+1, o uno más de lo que es en este momento, lo que avanza el tiempo en una hora. Este es un modelo de tiempo discreto, por lo que se aproxima al sistema real modelando solo momentos específicos.

    Esas tres declaraciones se ejecutan en orden, de izquierda a derecha, primero mostrando el número de bacterias, luego modelando la duplicación de la población bacteriana, y luego avanzando a la siguiente hora. Por cierto, se le puede haber ocurrido que las dos últimas declaraciones podrían escribirse en cualquier orden, o incluso ejecutarse al mismo tiempo —son independientes, por lo que el ordenamiento no importaría.

    Después de ejecutar las tres declaraciones, su pantalla contendrá el número 1, N será 2 y t será 1. La computadora examina a continuación el código dentro de los paréntesis asociados con la palabra clave mientras que para ver si las tres declaraciones dentro de las llaves deben ejecutarse de nuevo. Esa condición especifica que mientras el tiempo t sea menor o igual a 120, se deberán repetir las tres declaraciones. En este punto, t es igual a 1, que sin duda es menor a 120. Por lo tanto se volverán a ejecutar las tres declaraciones.

    Esto se llama “loop”, y ahora la computadora comenzará la segunda vez alrededor del bucle, ejecutando las tres declaraciones nuevamente como corrieron antes, pero ahora con valores alterados de N y t. Primero mostrará N, que ahora es igual a 2, por lo que mostrará 2. Entonces volverá a duplicar N, cambiándolo de 2 bacterias a 4, y aumentará el tiempo t en 1, de la hora 1 a la hora 2.

    Así se repite el proceso. Al examinar la condición dentro de los paréntesis, la computadora encuentra que 2 es menor o igual a 120, y así las tres declaraciones dentro de llaves se ejecutan de nuevo. Esto continúa y continúa hasta que t es mayor que 120, momento en el que se termina el bucle. Al final, t será 121 y N será cualquier número que se haya alcanzado por el proceso de duplicación.

    Este código ilustra dos aspectos fundamentales de la codificación por computadora: “prueba de condición” y “bucle”. En programas más grandes, los bucles se “anidan” dentro de otros bucles y las pruebas de condición se anidan correspondientemente. Pero este programa de dos líneas, con la primera línea inicializándose y la segunda línea ejecutando un bucle, es suficiente para nuestro primer modelo. Pronto verás que este no es un modelo trivial, sino uno que demuestra una ley inviolable de la biología, que Darwin puso directamente en uso en la creación de su teoría de la evolución.


    This page titled 3.3: Un primer modelo de computadora is shared under a CC BY-NC 4.0 license and was authored, remixed, and/or curated by Clarence Lehman, Shelby Loberg, & Adam Clark (University of Minnesota Libraries Publishing) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.