b'\n_START_ARTICLE_\nBloque de c\xc3\xb3digo\n_START_PARAGRAPH_\nEl bloque de c\xc3\xb3digo es una secci\xc3\xb3n de c\xc3\xb3digo con una o m\xc3\xa1s declaraciones y sentencias. Un lenguaje de programaci\xc3\xb3n que permite bloques, incluyendo bloques anidados dentro de otros bloques es llamado un lenguaje de programaci\xc3\xb3n estructurado por bloques._NEWLINE_Ideas de la estructura del bloque se desarrollaron en la d\xc3\xa9cada de los a\xc3\xb1os 1950, durante el desarrollo de los primeros autocodes y fueron formalizados en los informes de Algol 58 y Algol 60. Algol 58 introdujo la noci\xc3\xb3n de la "sentencia compuesta", que estaba relacionada \xc3\xbanicamente con control de flujo.\xe2\x80\x8b El posterior informe revisado que describe la sintaxis y la sem\xc3\xa1ntica de Algol 60 introdujo la noci\xc3\xb3n de un bloque, consistiendo en "una secuencia de sentencias encerrada entre begin y end..." en la que "cada declaraci\xc3\xb3n aparece en un bloque de esta manera y es v\xc3\xa1lida solo para ese bloque".\xe2\x80\x8b_NEWLINE_La funci\xc3\xb3n de los bloques de programaci\xc3\xb3n es permitir que grupos sentencias sean tratados como si fueran una sola sentencia, y restringir el \xc3\xa1mbito l\xc3\xa9xico de las variables, los procedimientos y funciones declaradas en un bloque para que no entre en conflicto con variables con el mismo nombre utilizadas para diferentes prop\xc3\xb3sitos en otras partes de un programa._NEWLINE_La noci\xc3\xb3n de bloques es introducida por diferentes sintaxis en diferentes lenguajes, pero hay dos grandes familias: la familia del ALGOL en que los bloques est\xc3\xa1n delimitados por las palabras clave begin y end, y la familia de C en la que los bloques est\xc3\xa1n delimitados por llaves { y }. Algunas otras t\xc3\xa9cnicas utilizadas son el uso de indentaci\xc3\xb3n, y s-expression con una palabra clave sint\xc3\xa1ctica como lambda o let (como en la familia del Lisp)._NEWLINE_En un lenguaje de programaci\xc3\xb3n estructurado en bloque, los nombres de las variables y otros objetos, como los procedimientos que son declarados en bloques externos son visibles dentro de otros bloques internos, a menos que sean sombreado por un objeto del mismo nombre._NEWLINE_Algunos lenguajes que soportan bloques con declaraciones de variables no soportan completamente todas las declaraciones; por ejemplo muchos lenguajes derivados de C no permitan la definici\xc3\xb3n de una funci\xc3\xb3n dentro de un bloque. Y a diferencia de su antecesor Algol, Pascal no soporta el uso de bloques con sus propias declaraciones dentro del begin y end de un bloque existente, s\xc3\xb3lo sentencias compuestas permitiendo una secuencia de declaraciones agrupadas en if, while, repeat y otras sentencias de control.\n_START_SECTION_\nOrigen\n_START_PARAGRAPH_\nCon la aparici\xc3\xb3n de miniprocesadores m\xc3\xa1s potentes, la programaci\xc3\xb3n planificada pierde sus fundamentos en favor de la programaci\xc3\xb3n de sistemas dirigidos por datos. Esto marca el final del uso de la programaci\xc3\xb3n monol\xc3\xadtica gobernada por Assembler, C, Pascal y fundamentalmente COBOL. _NEWLINE_Con la liberaci\xc3\xb3n de su Clipper versi\xc3\xb3n 5.0, (en 1990) Nantucket proporciona un nuevo tipo de datos al cual llam\xc3\xb3 CodeBlock._NEWLINE_Este nace de la necesidad de suprimir el uso de macroinstrucciones o macrosubstituciones._NEWLINE_Estas macroinstrucciones o macrosubstituciones tambi\xc3\xa9n se abreviaron para pasar a llamarse simplemente "macros"._NEWLINE_En la actualidad existen otros lenguajes de programaci\xc3\xb3n que encontraron \xc3\xbatiles la definici\xc3\xb3n y conceptos subyacentes en el t\xc3\xa9rmino CodeBlock.\n_START_SECTION_\nSintaxis\n_START_PARAGRAPH_\nbBloqueDeCodigo:= { | <ListaDeParametros,...> | C\xc3\xb3digo Clipper Ejecutable }\n_START_SECTION_\nUso\n_START_PARAGRAPH_\nSea un arreglo con datos, el recorrido iterativo del mismo se produce con la instrucci\xc3\xb3n AEVAL(), la cual posee la sintaxis:_NEWLINE_ AEval( <aArreglo>, <bBloqueDeCodigo>, [<nInicio>], [<nCantidad>], [<lAsignar>] ) --> aArreglo\n_START_SECTION_\nUso\n_START_PARAGRAPH_\nEval( <bBloqueDeCodigo>, [<ListaDeExpresiones,...>]) --> xUltimoValor\n_START_SECTION_\nPar\xc3\xa1metros\n_START_PARAGRAPH_\n<bBloqueDeCodigo>_NEWLINE_  <bBloqueDeCodigo> es un bloque de c\xc3\xb3digo que se ejecutar\xc3\xa1. _NEWLINE_<ListaDeExpresiones,...>_NEWLINE_  <ListaDeExpresiones,...> es una lista de expresiones cuyos valores ser\xc3\xa1n pasados al Bloque de C\xc3\xb3digo como par\xc3\xa1metros.\n_START_SECTION_\nBeneficios\n_START_PARAGRAPH_\nLos Bloques de C\xc3\xb3digo son el intento de substituto de las macroinstrucciones de Clipper._NEWLINE_Las macros tienen fundamento de existencia en la necesidad de crear variables din\xc3\xa1micamente, construir expresiones regulares y ejecutarlas en tiempo de ejecuci\xc3\xb3n.\n_START_SECTION_\nConsecuencias\n_START_PARAGRAPH_\nEsa posibilidad, sobreexplotada, ocasiona una gran carga en los mantenimientos de los sistemas desarrollados con estas macros debido a que ocultan las fallas en tiempo de desarrollo y detonan en tiempo de ejecuci\xc3\xb3n, en el ambiente del usuario final._NEWLINE_Generalmente las macros son preferidas para el desarrollo de aplicaciones con escasa o nula planificaci\xc3\xb3n.'