Logo Studenta

Bloque de código - Wikipedia, la enciclopedia libre

¡Este material tiene más páginas!

Vista previa del material en texto

Bloque de código
El bloque de código es un usuario o
sección de código con una o más
declaraciones y sentencias. Un lenguaje
de programación que permite bloques,
incluyendo bloques anidados dentro de
otros bloques es llamado un lenguaje de
programación estructurado por bloques.
Ideas de la estructura del bloque se
desarrollaron en la década de los años
1950, durante el desarrollo de los primeros
https://es.m.wikipedia.org/wiki/Wikipedia:Portada
autocodes y fueron formalizados en los
informes de Algol 58 y Algol 60. Algol 58
introdujo la noción de la "sentencia
compuesta", que estaba relacionada
únicamente con control de flujo.[1] El
posterior informe revisado que describe la
sintaxis y la semántica de Algol 60
introdujo la noción de un bloque,
consistiendo en "una secuencia de
sentencias encerrada entre begin y end..."
en la que "cada declaración aparece en un
bloque de esta manera y es válida solo
para ese bloque".[2] 
La función de los bloques de
programación es permitir que grupos
https://es.m.wikipedia.org/w/index.php?title=Autocode&action=edit&redlink=1
https://es.m.wikipedia.org/w/index.php?title=Algol_58&action=edit&redlink=1
https://es.m.wikipedia.org/wiki/Algol_60
https://es.m.wikipedia.org/w/index.php?title=Control_de_flujo&action=edit&redlink=1
sentencias sean tratados como si fueran
una sola sentencia, y restringir el ámbito
léxico 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ósitos en otras partes de
un programa.
La noción de bloques es introducida por
diferentes sintaxis en diferentes lenguajes,
pero hay dos grandes familias: la familia
del ALGOL en que los bloques están
delimitados por las palabras clave begin y
end, y la familia de C en la que los bloques
están delimitados por llaves { y }. Algunas
https://es.m.wikipedia.org/wiki/ALGOL
otras técnicas utilizadas son el uso de
sangría, y s-expression con una palabra
clave sintáctica como lambda o let (como
en la familia del Lisp).
En un lenguaje de programación
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.
Algunos lenguajes que soportan bloques
con declaraciones de variables no
https://es.m.wikipedia.org/wiki/S-expression
https://es.m.wikipedia.org/wiki/Lisp
https://es.m.wikipedia.org/w/index.php?title=Lenguaje_de_programaci%C3%B3n_estructurado&action=edit&redlink=1
https://es.m.wikipedia.org/wiki/%C3%81mbito_(programaci%C3%B3n)
soportan completamente todas las
declaraciones; por ejemplo muchos
lenguajes derivados de C no permitan la
definición de una función 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ólo
sentencias compuestas permitiendo una
secuencia de declaraciones agrupadas en
if, while, repeat y otras sentencias de
control.
Con la aparición de miniprocesadores más
potentes, la programación planificada
Origen
https://es.m.wikipedia.org/wiki/Algol
https://es.m.wikipedia.org/wiki/Pascal_(lenguaje_de_programaci%C3%B3n)
pierde sus fundamentos en favor de la
programación de sistemas dirigidos por
datos. Esto marca el final del uso de la
programación monolítica gobernada por
Assembler, C, Pascal y fundamentalmente
COBOL. Con la liberación de su Clipper
versión 5.0, (en 1990) Nantucket
proporciona un nuevo tipo de datos al cual
llamó CodeBlock. Este nace de la
necesidad de suprimir el uso de
macroinstrucciones o
macrosubstituciones. Estas
macroinstrucciones o
macrosubstituciones también se
abreviaron para pasar a llamarse
simplemente "macros". En la actualidad
existen otros lenguajes de programación
que encontraron útiles la definición y
conceptos subyacentes en el término
CodeBlock.
 bBloqueDeCodigo:= { | 
<ListaDeParametros,...> | 
Código Clipper Ejecutable }
Sea un arreglo con datos, el recorrido
iterativo del mismo se produce con la
instrucción AEVAL(), la cual posee la
sintaxis:
Sintaxis
Uso
 AEval( <aArreglo>, 
<bBloqueDeCodigo>, 
[<nInicio>], [<nCantidad>], 
[<lAsignar>] ) --> aArreglo 
<aArreglo>
 <aArreglo> es un arreglo 
cuyos elementos se pasan al 
bloque de código. 
<bBloqueDeCodigo>
Parámetros
 <bBloqueDeCodigo> es un 
bloque de código que se 
ejecuta para cada elemento 
del arreglo. 
<nInicio>
 <nInicio> es un valor 
numérico especificando el 
primer elemento del arreglo 
<aArreglo> para elcual el 
bloque de código se 
ejecutará. El valor 
predeterminado es 1.
<nCantidad>
 <nCantidad> es un valor 
numérico indicando el 
número de elementos pasados 
al bloque de código 
comenzando desde la 
posición <nInicio>. Si 
falta <nCantidad>, se 
pasarán al bloque de código 
secuencialmente todos los 
elementos desde <nInicio> 
hasta el último del 
<aArreglo>. 
<lAsignar>
 La expresión lógica 
<lAsignar> determina cuando 
se permitirá una asignación 
dentro del bloque de 
código. Si <lAsignar> es 
Verdadero (.T.), el 
elemento del arreglo se 
pasa por referencia. Si se 
realiza una asignación en 
el bloque de código, esta 
se reflejará en el 
correspondiente elemento 
del arreglo. 
Sea una porción de código ejecutable
agrupado en una rutina llamada
"Procedimiento()".
 PROCEDURE Procedimiento()
 LOCAL nEleccion
 LOCAL aAcciones = {;
 { || 
Altas() },;
 { || 
Bajas() },;
 { || 
Modificaciones() },;
 { || 
nEleccion:= 0 };
 }
 nEleccion:= -1
 WHILE nEleccion <> 0 
 @ 10, 10 PROMPT 
"Altas" 
 @ 11, 10 PROMPT 
"Bajas" 
 @ 12, 10 PROMPT 
"Modificaciones"
 @ 13, 10 PROMPT 
"Salir" 
 MENU TO nEleccion
 IF nEleccion > 0
 EVAL( 
aAcciones[nEleccion] ) 
 ENDIF
 ENDDO
 RETURN 
En el ejemplo dado, el ciclo
WHILE...ENDDO será cerrado mientras
el usuario no realice elección alguna.
Si el usuario presiona la tecla ESC,
nElección será asignado con un 0 y el
ciclo se romperá.
Cuando el usuario elija alguno de los
elementos del menú entonces nEleccion
será distinto de cero pero tendrá un
valor entre 1 y 4.
En ese caso será evaluada
positivamente la comparación nEleccion
> 0 y será evaluado el bloque de código
almacenado en el arreglo aAcciones.
Préstese especial atención al último
elemento de aAcciones, el cual implica
una asignación en tiempo de ejecución.
Esa asignación produce la ruptura del
ciclo.
 Eval( <bBloqueDeCodigo>, 
[<ListaDeExpresiones,...>]) 
--> xUltimoValor
Uso
<bBloqueDeCodigo>
 <bBloqueDeCodigo> es un 
bloque de código que se 
ejecutará. 
<ListaDeExpresiones,...>
 <ListaDeExpresiones,...> 
es una lista de expresiones 
cuyos valores serán pasados 
al Bloque de Código como 
parámetros.
Parámetros
Los Bloques de Código son el intento de
substituto de las macroinstrucciones de
Clipper. Las macros tienen fundamento de
existencia en la necesidad de crear
variables dinámicamente, construir
expresiones regulares y ejecutarlas en
tiempo de ejecución.
Esa posibilidad, sobreexplotada, ocasiona
una gran carga en los mantenimientos de
los sistemas desarrollados con estas
macros debido a que ocultan las fallas en
Beneficios
Consecuencias
https://es.m.wikipedia.org/wiki/Clipper_(lenguaje_de_programaci%C3%B3n)
tiempo de desarrollo y detonan en tiempo
de ejecución, en el ambiente del usuario
final. Generalmente las macros son
preferidas para el desarrollo de
aplicaciones con escasa o nula
planificación.
1. Perlis, A.J.; Samelson, K. (1958).
«Preliminary report: international
algebraic language». Communications
of the ACM 1 (12): 8-22.
doi:10.1145/377924.594925 (https://d
x.doi.org/10.1145%2F377924.59492
5) .
Referencias
https://es.m.wikipedia.org/wiki/Digital_object_identifierhttps://dx.doi.org/10.1145%2F377924.594925
2. Backus, J. W.; Bauer, F. L.; Green, J.;
Katz, C.; McCarthy, J.; Perlis, A. J.;
Rutishauser, H.; Samelson, K.;
Vauquois, B.; Wegstein, J. H.; van
Wijngaarden, A.; Woodger, M. (mayo
de 1960). Naur, Peter, ed. Report on
the Algorithmic Language ALGOL 60
(http://www.masswerk.at/algol60/rep
ort.htm) . Copenhagen. ISSN 0001-
0782 (https://portal.issn.org/resource/
issn/0001-0782) .
doi:10.1145/367236.367262 (https://d
x.doi.org/10.1145%2F367236.36726
2) . Consultado el 27 de octubre de
2009.
http://www.masswerk.at/algol60/report.htm
https://es.m.wikipedia.org/wiki/ISSN
https://portal.issn.org/resource/issn/0001-0782
https://es.m.wikipedia.org/wiki/Digital_object_identifier
https://dx.doi.org/10.1145%2F367236.367262
Definición de CodeBlocks (https://web.a
rchive.org/web/20070904104859/htt
p://faqclipper.8m.com/codeblocks.ht
m)
Categorías de CodeBlocks (https://web.
archive.org/web/20070801214826/htt
p://www.itk.ru/clip-doc.en/categcodeblo
ck.html)
 Datos: Q1327579
Obtenido de
«https://es.wikipedia.org/w/index.php?
Enlaces externos
https://web.archive.org/web/20070904104859/http://faqclipper.8m.com/codeblocks.htm
https://web.archive.org/web/20070801214826/http://www.itk.ru/clip-doc.en/categcodeblock.html
https://es.m.wikipedia.org/wiki/Wikidata
https://www.wikidata.org/wiki/Q1327579
https://es.wikipedia.org/w/index.php?title=Bloque_de_c%C3%B3digo&oldid=148638778
Esta página se editó por última vez el 16 ene 2023
a las 15:36. •
El contenido está disponible bajo la licencia CC
BY-SA 4.0 , salvo que se indique lo contrario.
title=Bloque_de_código&oldid=148638778»
https://creativecommons.org/licenses/by-sa/4.0/deed.es
https://es.wikipedia.org/w/index.php?title=Bloque_de_c%C3%B3digo&oldid=148638778

Continuar navegando

Contenido elegido para ti

261 pag.
Fundamentos_de_programacion_C_Java

Escola Santa Afra

User badge image

Jose Francisco Freire

96 pag.
34 pag.
FortranTutorial

SIN SIGLA

User badge image

nicogomez1214587

261 pag.
Fundamentos de Programación Sistemas

Jose Maria Arguedas

User badge image

FREDY PO

Otros materiales