UNIDAD 3 INTRODUCCION A LA PROGRAMACION DE UN LENGUAJE ESTRUCTURADO. 3.1 INTRODUCCION A LA PROGRAMACION PROGRAMACION DE UN LENGUAJE ESTRUCTURADO. En 1995 Edgeser W. Dijsktra publicó los principios de la programación estructura en su libro “Notas de programación estructurada”, con estas notas como eje, . !oe"m # $. %acopini establecen establecen en 199& un lenguaje de programación programación 'ue ser(a utili)ado como base para la ma#or(a de las plata*ormas de desarrollo 'ue se conocen en nuestros d(as, +enguaje . El concepto bsico de la programación estructurada consiste en la *ormación bsica de te-to de programación enunciados de programación/ 'ue al ser le(do, pueda e-plicar el *uncionamiento *uncionamiento de un programa. 0n programa secuencial debe cumplir con las siguientes siguientes caracter(sticas • • •
•
Debe de ser *cil de leer # de comprender le#endo el propio código. Debe ser *cil de depurar locali)ar errores del programa/. Debe ser *cil de mantener ampliar con nue2as especi*icaciones o modi*icar las #a e-istentes/. 3ermitir el trabajo en e'uipo sobre un mismo programa.
3.2 ESTRUCTURA BASICA DE UN PROGRAMA. +os programas estructurales se deben construir en blo'ues pe'ue4os 'ue sean bien de*inidos en cuanto a su *unción, al ni2el de ser per*ectos en tareas bre2es # concisas. 0na 2e) per*eccionado el programa, se probara su capacidad como módulo atómico, es decir, la 2eri*icación l(nea a l(nea de sentencias del tipo “i6Entonces67a), mientras, etc.”. 0na de las caracter(sticas distinti2as del lenguaje es esta modularidad, debido a 'ue los programas estn constituidos constituidos por *unciones, *unciones, donde la *unción principal es conocida como *unción main principal/. +os programas estructurales deben estar bien organi)ados # de*inidos por los siguientes principios Teorema estructura. Este es de*inido por tres blo'ues bsicos, los cuales son conocidos como • • •
aja de proceso. Decisión binaria. 8ecanismo de repetición.
3rograma. El cual enuncia las acciones a reali)ar para satis*acer una necesidad # debe cumplir con las siguientes caracter(sticas • •
ope del blo'ue con una entrada :nica. +ectura secuencial de arriba "acia abajo
•
ener una salida o resultado.
odas las *unciones contienen instrucciones 'ue se ejecutan cuando el programa "ace una llamada e-plicita a la *unción correspondiente. +as *unciones contienen declaraciones de las 2ariables # de*iniciones de las constantes 'ue se utili)an dentro de ellas. El programa comien)a mediante la ejecución de la primera instrucción de la *unción main, 'ue establece su camino u origen lógico de la ejecución. 3ara ello en el cuerpo de la *unción principal se inclu#en instrucciones #;o llamadas al resto de las *unciones de*inidas en el programa. 3or ejemplo, la estructura general de un programa escrito en 'uedar(a de la siguiente *orma 1. Arc!"os #e ca$ecera %ea#er &!'es(. on arc"i2os 'ue inclu#en la declaración asociación de un tipo de dato/ de las 2ariables, constantes # otras *unciones utili)adas en el programa. <. Dec'arac!o)es *'o$a'es. Declaraciones de 2ariables # constantes 'ue pueden ser utili)adas por todas las *unciones del programa. =. Dec'arac!o)es 'oca'es. Declaraciones de 2ariables # constantes 'ue sólo pueden ser utili)adas dentro de una *unción determinada. >. T!+o &! %'!sta #e +ar,metros(. ?Tipo: Es el tipo de dato del resultado 'ue proporciona la *unción. ?Fi: Es el nombre de la *unción i. ?Lista parámetros Es la lista de parmetro o 2ariables de entrada 'ue utili)a la *unción. onstitu#e la declaración de una o 2arias 2ariables, 'ue *uncionan como 2ariables locales. 5. I)strucc!o)es. @nstrucciones o sentencias 'ue *orman parte de las *unciones. El s(mbolo punto # coma A/ incluido al *inal de una l(nea la identi*ica como una instrucción o sentencia del lenguaje . 3ara 'ue el programa sea *cilmente intangible con2iene escribir cada instrucción en una l(nea. &. T!+o ma!) %'!sta #e +ar,metros(. De*inición de la *unción principal del programa +as "erramientas de desarrollo inclu#en muc"as 2eces bibliotecas libraries/ de *unciones estndar o normali)adas, para 'ue los usuarios no tengan 'ue programarlas. El resultado 'uedar(a de la siguiente *orma - /o'a mu)#o e) Le)*ua*e C 0!)c'u#e st#!o.
Ca$ecera
"o!# ma!)%(
u)c!4) +r!)c!+a'
5 +r!)t&%6/o'a mu)#o6(7 8
I)strucc!o)es
3.3 TIPOS DE DATOS. E-isten dos tipos de datos a utili)ar durante un programa, 2ariables # constantes. +as 2ariables son un tipo de dato cu#o 2alor contenido en Bl puede cambiar a lo largo de un programa, las constantes son los tipos de datos 'ue a lo largo del programa mantienen integro su 2alor contenido. El tipo de 2alor 'ue reside en la 2ariable o constante es una *orma de representar in*ormación para la 'ue se reser2a un espacio de memoria, de acuerdo con sus caracter(sticas. +os datos 'ue procesa una computadora se clasi*ican en simples # estructurados. +a principal caracter(stica de los tipos de datos simples es 'ue ocupan solo una casilla de memoria. Dentro de este grupo de datos se encuentran principalmente los enteros, los reales # los caracteres. +a utili)ación de la memoria depende de la correcta elección del tipo de dato asignado a las 2ariables de un programa, por'ue en algunos casos, no suele disponer de una memoria de datos o programa de ele2ada capacidad. En el lenguaje se de*inen los cinco tipos de datos bsicos
3.9 IDENTIICADORES. +os identi*icadores @Ds/ son s(mbolos lB-icos 'ue nombran entidades. El concepto es anlogo al de Cnombres de procesamiento de la in*ormaciónC. Nombrar las entidades "ace posible re*erirse a las mismas, lo cual es esencial para cual'uier tipo de procesamiento simbólico. En los lenguajes in*ormticos, los identi*icadores son elementos te-tuales tambiBn llamados s(mbolos/ 'ue nombran entidades del lenguaje. lgunas de las de entidades 'ue un identi*icador puede denotar son las 2ariables, las constantes, los tipos de dato, las eti'uetas, las subrutinas procedimientos # *unciones/ # los pa'uetes. En muc"os lenguajes algunas secuencias tienen la *orma lB-ica de un identi*icador pero son conocidos como palabras cla2e o palabras reser2adas/. +o "abitual es 'ue si un identi*icador se corresponde con una palabra cla2e o reser2ada, Bste #a no pueda utili)arse para re*erirse a otro tipo de entidades como 2ariables o constantes en unos pocos lenguajes, como 3+;1, esta distinción no est del todo clara/. +os lenguajes in*ormticos normalmente ponen restricciones en 'uB caracteres pueden aparecer en un identi*icador. 3or ejemplo, en las primeras 2ersiones de # , los identi*icadores estn restringidos para 'ue sean una secuencia de una o ms letras @@, d(gitos numBricos 'ue en ning:n caso deben aparecer como primer carcter/ # barras bajas. +as 2ersiones posteriores de estos lenguajes, as( como otros muc"os ms lenguajes modernos soportan casi todos los caracteres 0nicode en un identi*icador. 0na
restricción com:n es 'ue no est permitido el uso de espacios en blanco ni operadores del lenguaje. En lenguajes de programación compilados, los identi*icadores generalmente son entidades en tiempo de compilación, es decir, en tiempo de ejecución el programa compilado contiene re*erencias a direcciones de memoria # o**sets ms 'ue identi*icadores te-tuales estas direcciones de memoria u o**sets, "an sido asignadas por el compilador a cada identi*icador/. En lenguajes interpretados los identi*icadores estn *recuentemente en tiempo de ejecución, a 2eces incluso como objetos de primera clase 'ue pueden ser manipulados # e2aluados libremente. En +isp, Bstos se llaman símbolos . +os compiladores e intBrpretes normalmente no asignan ning:n signi*icado semntico a un identi*icador basado en la secuencia de caracteres actual. in embargo, "a# e-cepciones. 3or ejemplo •
•
•
En 3erl una 2ariable se indica utili)ando un pre*ijo llamado sigil, 'ue especi*ica aspectos de cómo se interpreta la 2ariable en las e-presiones. En Fub# una 2ariable se considera automticamente como inmutable si su identi*icador empie)a con una letra ma#:scula. En Gortran, la primera letra de una 2ariable indica si por de*ecto es creada como entero o como *lotante.
3.: ALMACENAMIENTO; DIRECCIONAMIENTO < REPRESENTACION DE MEMORIA. A'mace)am!e)to +a computadora posee determinada cantidad de almacenamiento interno denominado memoria principal, memoria F8 o memoria 2oltil. Esta memoria se acti2a al encender la computadora # se desacti2a al apagarla. 3ara 'ue un programa se ejecute, debe cargarse en la memoria principal, as( como los datos necesarios. omo es ms costosa, es un recurso escaso donde sólo se almacenan los datos 'ue se re'uieren de inmediato, # los dems se relegan a los dispositi2os de almacenamiento e-terno, donde la capacidad de almacenamiento es ma#or, pero tambiBn el tiempo de recuperación. 3or otra parte, el costo del almacenamiento e-terno es ms bajo. D!recc!o)am!e)to +a memoria principal de la computadora se di2ide en pe'ue4as unidades de tama4o uni*orme denominadas palabras, 'ue tienen una dirección :nica. ada una de Bstas palabras es capa) de almacenar una unidad de in*ormación como, por ejemplo, resultados numBricos/, # determina el n:mero ms grande # el ms pe'ue4o 'ue puede almacenar. El tama4o de la palabra depende de la computadora, pero siempre se especi*ica en m:ltiplos de H bits. s(, e-isten computadoras con tama4os de palabra de H, 1&, =< # &> bits. ada palabra de la memoria principal tiene una dirección *ija 'ue 2a de cero "asta el
n:mero total de palabras 6 1. +as direcciones de memoria sir2en para identi*icar cada palabra indi2idualmente, de tal manera 'ue pueda accederse al dato contenido en ella. *in de simpli*icar su comprensión, las memorias se consideran como una "ilera de palabras. Re+rese)tac!4) e) memor!a +a representación en memoria de los caracteres no re2iste ma#or complicación, debido a 'ue los códigos utili)ados, como el @@ merican tandard ode *or @n*ormation @nterc"ange/, les asignan 2alores enteros positi2os. En el caso de los datos numBricos "a# 'ue considerar la distinción entre n:meros negati2os # positi2os, # la 'ue "a# entre n:meros de punto *lotante # enteros. +os signos se manejan normalmente mediante el bit ms signi*icati2o de la palabra el situado a la e-trema i)'uierda/, # se le denomina bit de signo. uando el bit de signo almacena un cero, el n:mero se considera positi2oA cuando almacena un uno el n:mero es negati2o. Es por esto 'ue, si el tama4o de la palabra es de m bits, 'uedan m61 bits para representar la magnitud del n:mero almacenado. +os n:meros de punto *lotante se manejan en *ormato logar(tmico, con un n:mero *ijo de bits para la base # otro para la mantisa. El estndar para los n:meros de punto *lotante lo *ija el @EEE. Debido al *ormato logar(tmico, los clculos 'ue se "acen con tipos de punto *lotante no son tan precisos como los 'ue se "acen con tipos enteros. •
ecure Digital D/. Estn basadas en el *ormato 8ultimedia ard 88/. +as tarjetas marcadas como 7 7ig" apacit#/ *uncionan a alta 2elocidad # tienen tasas de trans*erencia de datos mu# altasA algunas cmaras *otogr*icas digitales re'uieren este tipo de tarjetas para poder grabar 2ideo con *luide) o para capturar m:ltiples *otogra*(as en sucesión rpida.
•
tarmedia. ambiBn conocidas como arjeta de Disco Glopp# en Estado ólido/. on duraderas # su apariencia *(sica es similar a la de un dis'uete, pero con el tama4o apro-imado de una estampilla de correo. u *orma impide introducirlas en su ranura en sentido contrario.
•
8emor# tick. arjetas digitales con memoria *las" dise4adas con la compa4(a on#. dems de ser aptas para cmaras digitales de esta marca, las 8emor# tick se pueden utili)ar en una gran 2ariedad de aparatos digitales. Estas tarjetas sir2en para almacenar imgenes, m:sica, datos, te-tos # gr*icos I*recen una alta 2elocidad de acceso # o necesitan ning:n dispositi2o para la reproducción, pues disponen de un adaptador para dis'uetes.
•
8inini D G+7 8E8IFJ. 3or su tama4o tan reducido, este *ormato de tarjeta se utili)a especialmente en telB*onos celulares. ombina gran capacidad de almacenamiento, alta tasa de trans*erencia de datos, con*iabilidad, seguridad # bajo consumo de energ(a. ambiBn se utili)a en reproductores de audio, cmaras digitales por medio de un adaptador/ # asistentes digitales personales 3D/.
•
8icro D FD.
es
Este *ormato de tarjeta solo mide 1K.9mm - 1>.9mm - 1mm # puede almacenar 2rios $! de in*ormación. l igual 'ue el 8@N@ D, m# utili)ando en telB*onos celular.
3.= PROPOSICION DE ASIGNACION. 3roposición de asignación es una letra o una *rase, a la cual, se le puede asignar dos 2alores o bien es 2erdadera, o bien es *alsa, pero no ambas cosas. +a *orma de una proposición de asignación es aLb, donde b es una e-presión permitida, # a es el 2alor donde se dejar el 2alor resultante de e2aluar b. El signo igual, “L“, de aLb tiene el sentido de asignar a la 2ariable a el 2alor 'ue resulte de e2aluar la e-presión permitida b. Es decir, aLb tiene el sentido a b, 'ue no es la misma de*inición usada en matemticas para “L“. +o mismo 'ue en otros lenguajes de programación, en se tienen los operadores aritmBticos ms usuales suma, 6 resta, M multiplicación, ; di2isión # módulo/. El operador de asignación es L, por ejemplo iL>A c"LO#OA @ncremento # decremento 66 unario. +os cuales son ms e*icientes 'ue las respecti2as asignaciones. 3or ejemplo - es ms rpido 'ue -L-1. +os operadores # 66 pueden ser pre*ijos o post*ijos. uando son pre*ijos, el 2alor es calculado antes de 'ue la e-presión sea e2aluada, # cuando es post*ijo el 2alor es calculado despuBs 'ue la e-presión es e2aluada. En el siguiente ejemplo, ) es pre*ijo # 66 es post*ijo int -,#,)A main/ P
x=( ( ++z ) - ( y-- ) ) % 100; }
Que es equivalente a: int x,y,z; main() { z++; x = ( z-y ) % 100; y--; } El operador módulo o residuo/ solamente trabaja con enteros, aun'ue e-iste una *unción para *lotantes 15.1 mod / / de la biblioteca matemtica. El operador di2isión ; es para di2isión entera # *lotantes. 3or lo tanto "a# 'ue tener cuidado. El resultado de - L = ;
3.> OPERADORES; OPERANDOS < E?PRESIONES. +os operadores especi*ican el tipo de clculo 'ue se desea reali)ar con los elementos de una *órmula. 8icroso*t E-cel inclu#e cuatro tipos di*erentes de operadores de clculo aritmBtico, comparación # re*erencia. O+era#ores ar!tm@t!cos 3ara ejecutar las operaciones matemticas bsicas como suma, resta o multiplicación, combinar n:meros # generar resultados numBricos, utilice los siguientes operadores aritmBticos. O+era#ores #e com+arac!4) e pueden comparar dos 2alores con los siguientes operadores. uando se comparan dos 2alores utili)ando estos operadores, el resultado es un 2alor lógico QEFDDEFI o G+I. O+era#ores #e re&ere)c!a ombinan rangos de celdas para los clculos.
OPERANDO En matemticas, un operando es una de las entradas argumentos/ de un operador.
3. PRIORIDAD DE OPERADORES; EALUACION DE E?PRESIONES. Determina el orden en 'ue "abrn de reali)arse las operaciones en una e-presión determinada. 3ara obtener la prioridad se deben conocer las siguientes reglas +as operaciones 'ue estn encerradas entre parBntesis se e2al:an primero. i e-isten di*erentes parBntesis anidados interiores unos a otros/, las e-presiones ms internas se e2al:an primero. En caso de coincidir 2arios operadores de igual prioridad en una e-presión o sub6e-presión encerrada entre parBntesis, el orden de prioridad en este caso es de i)'uierda a derec"a. uando se desea reali)ar una operación con baja prioridad por adelantado, debe agruparse a los operandos in2olucrados. +os parBntesis tienen prioridad sobre el resto de las operaciones. Determina el orden en 'ue "abrn de reali)arse las operaciones en una e-presión determinada. 3ara obtener la prioridad se deben conocer las siguientes reglas +as operaciones 'ue estn encerradas entre parBntesis se e2al:an primero. i e-isten di*erentes parBntesis anidados interiores unos a otros/, las e-presiones ms internas se e2al:an primero. En caso de coincidir 2arios operadores de igual prioridad en una e-presión o sub6 e-presión encerrada entre parBntesis, el orden de prioridad en este caso es de i)'uierda a derec"a. uando se desea reali)ar una operación con baja prioridad por adelantado, debe agruparse a los operandos in2olucrados. continuación se muestra una pe'ue4a tabla donde se ilustra el orden de prioridad
3. ELABORACION DE PROGRAMAS. e puede crear un arc"i2o 'ue contenga el programa completo, como en los ejemplos 'ue se tienen ms adelante. e puede usar cual'uier editor de te-tos ordinario con el 'ue se estB *amiliari)ado. 0n editor disponible en la ma#or(a de los sistemas 0N@R es 2i, # en +inu- se puede usar pico. 3or con2ención el nombre del arc"i2o debe terminar con SS.cOO 3or ejemplo 8i programa 3ro. 3rueba. El contenido del arc"i2o deber obedecer la sinta-is de .
Eecuc!4) #e +ro*rama. El siguiente estado es correr el programa ejecutable. 3ara correr un ejecutable en 0N@R, simplemente se escribe el nombre del arc"i2o 'ue lo contiene, en este caso programa o a.out/. on lo anterior, se ejecuta el programa, mostrando alg:n resultado en la pantalla. En Bste estado, podr(a "aber errores en tiempo de ejecución run6time errors/, tales como di2isión por cero, o bien, podr(an "acerse e2identes al 2er 'ue el programa no produce la salida correcta. i lo anterior sucede, entonces se debe regresar a editar el arc"i2o del programa, recompilarlo, # ejecutarlo nue2amente. in embargo, se da alguna in*ormación bsica para algunos programas de . El preprocesador acepta el código *uente como entrada # es responsable de ? ?
Tuitar los comentarios. @nterpretar las directi2as del preprocesador las cuales inician con U.
3or ejemplo Uinclude 66 inclu#e el contenido del arc"i2o nombrado. Estos son usualmente llamados arc"i2os de cabecera "eader/. 3or ejemplo Uinclude Vmat"." 66 rc"i2o de la biblioteca estndar de matemticas. Uinclude Vstdio." 66 rc"i2o de la biblioteca estndar de Entrada;alida. Ude*ine 66 de*ine un nombre simbólico o constante. ustitución de macros. Ude*ine 8X8RXFFE$+I 1KK Com+!'a#or #e C El compilador de traduce el código *uente en código de ensamblador. El código *uente es recibido del preprocesador. E)sam$'a#or. El ensamblador crea el código *uentei o los arc"i2os objeto. En los sistemas con 0N@R se podrn 2er los arc"i2os con el su*ijo .o.
L!*a#or
i alg:n arc"i2o *uente "ace re*erencia a *unciones de una biblioteca o de *unciones 'ue estn de*inidas en otros arc"i2os *uentes, el +igador combina estas *unciones con main // para crear un arc"i2o ejecutable.
!ibliogra*(a "ttp;;moodle<.unid.edu.m-;dtsXcursosXmdl;lic;@;3E;K1;3EK1X+ectura.pd* . "ttps;;pre)i.com;sK)mrX9dr&pH;=96elaboracion6de6programas; . "ttp;;*undamdeprog6anar'uiaHH.blogspot.m-;56prioridad6de6operadores6 e2aluacin6de."tml . "ttp;;algoritmos#lenguajes.blogspot.m-;6proposicion6de6asignacion; .
@ND@E
=.1 @NFID0@IN + 3FI$F8@IN DE 0N +EN$0%E EF00FDI.
=.< EF00F !@ DE 0N 3FI$F8.
=.= @3I DE DI.
=.> @DEN@G@DIFE.
=.5 +8EN8@ENI, D@FE@IN8@ENI J FE3FEEN@IN DE 8E8IF@.
=.& 3FI3I@@IN DE @$N@IN.
=.Y I3EFDIFE, I3EFNDI J ER3FE@INE.
=.H 3F@IF@DD DE I3EFDIFE, EQ+0@IN DE ER3FE@INE.
=.9 E+!IF@IN DE 3FI$F8.