Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Apuntes Prog Estruct 1a Parte
Apuntes Prog Estruct 1a Parte
Datos vs Info ??
Proceso de informacin en una computadora.
Ingeniera de SW La produccin de un programa se puede definir en diferentes etapas: ________________________________________________ Anlisis Diseo Pruebas antenimiento !"iclo de vida del #$% ________________________________________________ !Principios bsicos en los &ue se sustenta la 'ng. de #$% HW "omponentes f(sicos &ue constituyen la computadora) *unto con los dispositivos &ue realizan las tareas de entrada+salida. !'nput+,utput% !-+#) '+,%. Programa "on*unto de instrucciones &ue .acen funcionar a la computadora. SW "on*unto de programas escritos para una computadora. SW vs HW ?? Programador Persona &ue escribe programas. Organizacin fsica de una computadora ! odelo /on 0eumann !sin memoria e1terna%%.
Memoria central !"M# Almacena informacin de 2 tipos !'nstrucciones de un prog. o datos de un prog.% $it acrnimo de binary digit. -l bit es la unidad m(nima de informacin empleada en informtica) en cual&uier dispositivo digital) o en la teor(a de la informacin. $%te octeto de bits. &$ 3)425 bytes !234% M$ 3)425 1 3)425 bytes !224% 6b) 7b) Pb) 8
Mem !"M vs "u'iliar !"M s rpida) ms cara) datos voltiles. "u'iliar Los datos se tienen &ue transferir a 9A
(engua)e de programacin #irven para escribir programas &ue permitan la comunicacin usuario+m&uina. (engua)e m*+uina 4434 4444 4444 3443 (engua)e $a)o nivel -nsamblador !nemot:cnicos o nemnicos%. ADD) #;<) (engua)e alto nivel #imilares a lengua*es .umanos. Proceso de compilacin
,raductores !compiladores e int:rpretes% "onvierten instrucciones escritas en lengua*es de programacin en instrucciones escritas en lengua*e m&uina !3)4%. !esolucin de pro$lemas con computadora -s una fase creativa 3% Anlisis del problema 2% Diseo del algoritmo >% "odificacin 5% "ompilacin y e*ecucin ?% /erificacin @%Depuracin A% Documentacin 3 y 2 "onducen a un diseo detallado escrito en forma de algoritmo. > #e implementa el algoritmo en un cdigo escrito en un lengua*e de programacin) refle*ando las ideas desarrolladas en las fases de anlisis y diseo. 5 7raduce y e*ecuta el programa. ? y @ -l programador busca errores de las etapas anteriores y los elimina !entre ms tiempo de gasta en 3 y 2) menos se gasta en @%. "lgoritmo #e deriva de la traduccin al lat(n de la palabra rabe AlB.CDaErFzmi) nombre de un matemtico y astrnomo rabe &ue escribi un tratado sobre manipulacin de nGmeros y ecuaciones en el #. 'H. :todo para resolver un problema mediante una serie de pasos precisos) definidos y finitos. Preciso !indicar el orden de realizacin de cada paso% Definido !si se sigue 2 veces) obtiene el mismo resultado% Iinito !tiene un finJ un K determinado de pasos% :todos algor(tmicos !se pueden e1presar por frmulas) diags. de flu*o y pseudocdigos% vs m:todos .eur(sticos !*uicio o interpretacin%
"n*lisis del pro$lema "lara identificacin donde se contemple e1actamente lo &ue debe .acer el programa y el resultado o solucin deseada. LM;- .ace el programaN !L&u: entradas se re&uierenN !tipo y cantidad%% Dise-o del algoritmo L", , .ace el prog. la tarea solcitada%N :todos ms eficaces Odivide y vencersP Divide and con&uer. ;n problema comple*o se subdivide en subproblemas. Dividir subproblemas en otros de nivel ms ba*o. Qasta &ue se pueda implementar en la computadora. Diseo descendente !7opEDoDn% o modular.
9efinamiento sucesivo !stepDise%. Proceso de romper el problema en cada etapa y e1presar cada paso en forma ms detallada. "ada subproblema es resuelto mediante un mdulo !subprograma% &ue tiene un solo punto de entrada y uno de salida. ;n programa bien diseado consta de un programa principal !el mdulo de nivel R alto% &ue llama a subprogramas !mdulos de nivel R ba*o% &ue a su vez pueden llamar otros subprogramas. Los prog. estructurados de esta forma se dice &ue tienen un diseo modular. -l m:todo de romper el programa en mdulos ms pe&ueos se llama programacin modular. Los mdulos pueden ser planeados) codificados) comprobados y depurados independientemente !incluso por diferentes programadores% y a continuacin combinarlos entre s(. :. Dise-o del alg. Proceso &ue convierte los resultados del anlisis del problema en un diseo modular con refinamiento sucesivos &ue permitan una posterior traduccin a un lengua*e. Herramientas de programacin Pseudocdigo y Diag. de flu*o !floDc.art%. Diag. de /lu)o 9epresentacin grfica de un algoritmo. Los s(mbolos .an sido normalizados por el 'nstituto 0orteamericano de 0ormalizacin !A0#'%.
3% Debe tener un inicio y un fin. 2% Las l(neas de direccin del flu*o deben ser rectas !.orEvert%. >% 7odas las l(neas deben estar conectadas !a un s(mbolo &ue e1prese lectura) proceso) decisin) impresin) cone1in o fin de programa. 5% "onstruirse de arriba aba*o e iz&uierda a derec.a. ?% 0otacin utilizada independiente del lengua*e de prog. @% Al realizar una tarea comple*a es conveniente poner comentarios &ue e1presen o ayuden a entender lo &ue .ayamos .ec.o. A% #i la construccin re&uiriera ms de 3 .o*a) usar conectores adecuados y enumerar pginas. S% 0o puede llegar ms de 3 l(nea a un solo s(mbolo determinado. Codificacin de un programa -scritura en un lengua*e de programacin de la representacin del algoritmo desarrollado en las etapas precedentes. Dado &ue el diseo del alg. es independiente del lengua*e de prog. utilizado para su implementacin) el cdigo puede ser escrito con igual facilidad en un lengua*e u otro. Para realizar la conversin del alg. en programa se deben sustituir las palabras reservadas en espaol por sus .omnimos en ingl:s y las operaciones+instrucciones indicadas en lengua*e natural e1presarlos en el lengua*e de prog. correspondiente. Documentacin 'nterna y e1terna ! anual t:cnico y de usuario%. Programacin estructurada !sin goEto% Los t:rminos prog. modular) descendente y estructurada se introdu*eron en la 2T. mitad de los @4Us y a menudo sus t:rminos se utilizan como sinnimos aun&ue no significan lo mismo. #ignifica escribir un programa de acuerdo a las sig. reglas: -l prog. tiene un diseo modular. Los mdulos son diseados de modo descendente !topEdoDn%. "ada mdulo se codifica utilizando las > estructuras de control bsicas !secuencia) seleccin y repeticin%. 0structuras de control :todos de especificar el orden en &ue las instrucciones de un alg. se e*ecutarn. -l orden de e*ecucin de las sentencias !lengua*e% o instrucciones determinan el flu*o de control.
,eorema de la programacin estructurada1 -n mayo de 3V@@) <W.m y Xacopini demostraron &ue un Oprograma propioP puede ser escrito utilizando solamente > tipos de estructuras de control. Programa propio #i cumple las sig. caracter(sticas: Posee un solo punto de entrada y uno de salida o fin para control del programa. -1isten caminos desde la entrada .asta la salida &ue se pueden seguir y &ue pasan por todas partes del programa. 7odas las instrucciones son e*ecutables !cdigo muerto% y no e1isten lazos o bucles infinitos !sin fin%. 3erificacin % depuracin de un programa 3erificacin Proceso de e*ecucin del programa con una amplia variedad de datos de entrada !datos de test o prueba%) &ue determinan si el programa tiene errores !ObugsP%. #e debe desarrollar una amplia gama de datos de test /alores normales de entrada /alores e1tremos de entrada &ue comprueben los l(mites del programa /alores de entrada &ue comprueben aspectos especiales del programa. Depuracin Proceso de encontrar los errores del programa y corregir o eliminar dic.os errores. ,ipos de errores !al e*ecutar un programa% De compilacin. Por un uso incorrecto de las reglas del lengua*e de programacin y suelen ser errores de sinta1is. #i e1iste un error de sinta1is) la computadora no puede comprender la instruccin) no obtendr el programa ob*eto y el compilador imprimir una lista de todos los errores encontrados durante la compilacin. De e)ecucin #e producen por instrucciones &ue la computadora puede comprender pero no e*ecutar. -*em. Divisin por cero y ra(ces cuadradas de Ks negativos. -n estos casos se detiene la e*ecucin del programa y se imprime un mensa*e de error. (gicos #e producen en la lgica del programa y la fuente del error suele ser el diseo del algoritmo. -stos son los ms dif(ciles de detectar ya &ue el programa puede funcionar y no produce errores de compilacin ni de e*ecucin y slo puede advertir el error por la obtencin de resultados incorrectos. 0ntorno de programacin -s un programa &ue contiene) adems del compilador !lengua*e de programacin%) utilidades y .erramientas. -stos elementos estn integrados) de modo &ue pueden llamarse fcilmente a cual&uiera de los mdulos) durante el proceso de programacin) desde cual&uier otro. ;n editor Proporciona el medio de introducir el te1to y s(mbolos para crear el cdigo fuente. ;n int:rprete o compilador "onvierte el cdigo fuente en instrucciones &ue la computadora puede comprender y e*ecutar. ;n verificador de errores en tiempo de e*ecucin 9econoce errores no detectados en tiempo de compilacin. ;n depurador Ayuda a analizar y corregir errores de sinta1is) estructura o lgicos. ;na utilidad de referencias cruzadas "rea tablas de variables) nGmeros de l(nea u otros s(mbolos. ID0 0ntorno de desarrollo integrado#
Paralelamente) en 3VS4 surge "RR de la mano de <*arne #troustrup !tambi:n de Laboratorios <ell de A7Z7%. Disea este lengua*e con el ob*etivo de aadir a " nuevas caracter(sticas: clases y funciones virtuales !de #' ;LA@A%) tipos gen:ricos y e1presiones !de ADA%) la posibilidad de declarar variables en cual&uier punto del programa !de AL6,L@S%) y sobre todo) un aut:ntico motor de ob*etos con .erencia mGltiple &ue permite combinar la programacin imperativa de " con la programacin orientada a ob*etos. -stas nuevas caracter(sticas mantienen siempre la esencia del lengua*e ": otorgan el control absoluto de la aplicacin al programador) consiguiendo una velocidad muy superior a la ofrecida por otros lengua*es.-l siguiente .ec.o fundamental en la evolucin de "RR es sin duda la incorporacin de la librer(a #7L aos ms tarde) obra de Ale1ander #tepanov y AdreD Yoening. -sta librer(a de clases con contenedores y algoritmos gen:ricos proporciona a "RR una potencia Gnica entre los lengua*es de alto nivel. Debido al :1ito del lengua*e) en 3VV4 se reGnen las organizaciones A0#' e '#, para definir un estndar &ue formalice el lengua*e. -l proceso culmina en 3VVS con la aprobacin del A0#' "RR. /* "Hola mundo" escrito en C!! */ #include <iostream> void main() { std""cout << "Hola mundo";
La Gltima variante &ue .a surgido de " es el moderno "K. -n el ao 2444) icrosoft presenta su plataforma .0-7 *unto con un nuevo lengua*e) "K !diseado por Anders Qe*lsberg%) &ue servir de lengua*e principal de la plataforma. "K es un .(brido de "RR y Xava &ue fusiona) principalmente) la capacidad de combinar operadores propia del primero !no incorpora la .erencia mGltiple% con la plena orientacin a ob*etos del segundo. La orientacin a ob*etos es tal &ue el propio programa est encapsulado en una clase.Actualmente "K se encuentra entre los 34 lengua*es ms utilizados. A pesar de su corta .istoria) .a recibido la aprobacin del estndar de dos organizaciones: en el 2443 se aprueba el -" A y en el 244> el '#,. /* "Hola mundo" escrito en C# */ class Hola#undo {
4i$lioteca est*ndar de C Los programas " consisten en mdulos o piezas &ue se denominan funciones. Podemos programar todas las funciones &ue necesitemos para formar un programa ") pero la mayor parte de los programadores de " aprovec.an una gran recopilacin de funciones e1istentes) &ue se conocen como la <iblioteca estndar de ". Documento estndar de A0#' ". ,ipos de datos Los datos &ue procesa una computadora se clasifican en simples y estructurados. Datos simples ,cupan slo una casilla de mem. !e*em. enteros) reales) caracteres) etc.%. Datos estructurados "on un nombre se .ace referencia a un grupo de casillas de memoria. !e*em. Arreglos) cadena de caracteres) registros) etc.% Identificadores Los datos ya sean simples o estructurados) se deben almacenar en casillas o celdas de memoria para utilizarlos posteriormente. A estas casillas o celdas se les asigna un nombre para reconocerlas. #e forma por medio de letras) d(gitos y el carcter de subrayado !_%. #iempre .ay &ue comenzar con una letra. -l lengua*e de programacin " es Ocase sensitiveP. !Diferencia mayus de minus%. 'dentificadores ms comunes !> caracteres%) identificadores largos !A caracteres%. 0o puede ser una palabra reservada. Constantes #on datos &ue no cambian durante la e*ecucin del programa. Para nombrarlas utilizamos identificadores Puede .aber constantes de todos los tipos de datos !entero) real) carcter) cadena de caracteres) etc.%. #e deben definir antes de comenzar el programa principal. -1isten > formas de definir constantes: 1) const int nu1 = 20; const float re1 = 2.18; const char ca1 = f; 2) #define nu1 20 #define re1 2.18 #define ca1 f 3) Utilizando el mtodo enumerado enum). enum !"a0# "a1# "a2# "a3$; %& define ' constantes enteras &% es similar a realizar lo si(uiente const int "a0 = 0; const int "a1 = 1; const int "a2 = 2; const int "a3 = 3; 3aria$les #on ob*etos &ue pueden cambiar su valor durante la e*ecucin de un programa. Para nombrarlas utilizamos identificadores. Pueden e1istir variables de todos los tipos de datos Por lo general se declaran en el programa principal y en las funciones. Deben ser representativos de la funcin &ue cumplen en el programa. void main!void% [ int va3) va2J float re3) re2J c.ar ca3) ca2J \ "ada variable tiene un nombre) un tipo) un tamao y un valor.
Operacin "signacin ;na vez &ue se declaran las variables) :stas reciben un valor a trav:s de una asignacin. -sta operacin es destructiva !si la variable ten(a un valor) :ste se destruye al asignar el nuevo valor%. variable ] e1presin o valorJ int va3) va2J int va3 ] 34) va2 ] 3?J va3 ] 34J va2 ] va3 R 3?J
Operadores aritm8ticos 0os permiten realizar operaciones entre operandos: nGmeros) constantes o vars. #uma R ultiplicacin ^ dulo _ !slo entre enteros y devuelve residuo% #ubstraccin E Divisin + Operadores aritm8ticos simplificados R R] 1 R] ?J 1 ] 1 R ?J E ] 1 E] >J 1 ] 1 ` >J ^ ^] 1 ^] 2J 1 ] 1 ^ 2J + +] 1 +] @J 1 ] 1 + @J _ _] 1 _] 32J 1 ] 1 _ 32J Operadores de incremento % decremento !RR% !EE% #implifican y clarifican la escritura de los progs. #e pueden utilizar antes o despu:s de la variable !post o pre%. 1 ] AJ 1]A y ] 1 RRJ y]A 1]S 1 ] AJ 1]A y ] RR1J y]S 1]S 1 ] @J 1]@ y ] 1EEJ y]@ 1]? 1 ] @J 1]@ y ] EE1J y]? 1]? 0'presiones lgicas -n .onor al matemtico 6eorge <oole !en " se simulan%. 3 /erdadero) 4 Ialso. Operadores relacionales Para comparar dos operandos !nGmeros) caracteres) cadenas de caracteres) constantes o variables%. ,perador ,peracin -*emplos 9esultados relacional ]] 'gual a res ] a.U ] ] apUJ res ] 4 b] Diferente de res ] aaU b] abUJ res ] 3 c enor &ue res ] A c 3?J res ] 3 d ayor &ue res ] 22 d 33J res ] 3 c] enor o igual &ue res ] 3? c] 2J res ] 4 d] ayor o igual &ue res ] >? d] 24J res ] 3 falso es menor a verdadero e*em. res ] !A d S% d !V d @%J +^ 4 d 3 !falso% 4 ^+ Operadores lgicos "on*uncin !ZZ%) disyuncin !ee% y negacin !b% ,perador ,peracin -*emplos 9esultados lgico
b ZZ ee
1 ] !b!A d 3?%%J ++ !b4% y ] !b4% 1 ] !>? d 24% ZZ !24 c] 2>%J y ] 4 ZZ 3J 1 ] !>? d 24% ee !24 c] 3S%J y ] 4 ee 3J
Operador coma -ncadena diferentes e1presiones. Prioridad de operadores Aritm:ticos) relacionales y lgicos. #e evalGan de iz&uierda a derec.a. ,peradores Xerar&u(a ! % ++operador asociativo !mayor% b) RR) EE ^) +) _ R) E ] ]) b]) c) d) c]) d] ZZ) ee R]) E]) ^]) +]) _] ) !menor% Pala$ras reservadas en lengua)e C Auto do <reaB double "ase else ".ar enum "onst e1tern "ontinue float Default for ,ipos de datos simples en C 7ipo Descripcin int -nteros float 9eales long -nteros de largo alcance double 9eales de doble precisin c.ar "arcter goto 'f int long register return s.ort signed sizeof static struct sDitc. typedef union unsigned void volatile D.ile
9ango E>2)A@S a R>2)A@A >.5 H 34E>S a >.5 H 34>S E2U35A)5S>)@5S a 2U35A)5S>)@5A 3.A H 34E>4S a 3.A H 34>4S #(mbolos del abecedario) nGmeros o s(mbolos especiales) &ue van encerrados entre comillas
+^ ++ O [ \ J
^+ O
"omentario !blo&ues% "omentario !l(nea% "adena de te1to o caracteres 'nicia cuerpo de funcin 7ermina cuerpo de funcin 7erminador de enunciado
Car*cter de escape 9# Secuencia de escape simple Caracteres de control# fn Permite pasar una nueva l(nea
ft fv ff fa fU fP ff fN fb fr
Permite tabular .orizontalmente Permite tabular verticalmente 'ndica avance de fila 'ndica sonido de alerta -scribe apstrofe -scribe comillas -scribe diagonal invertida -scribe N <# !<acBscape% 9etorno de carro.
/ormato de escritura de las varia$les _u -scribe enteros sin signo de 2 bytes !unsigned int% _d _i -scribe enteros de 2 bytes !int% _ld _li 'mprime enteros de largo alcance !long% _f -scribe reales de 5 bytes !float% _lf -scribe reales de doble precisin) S bytes !double% _e 'mprime en forma e1ponencial _g 'mprime en _f o _e en funcin del tamao del nGmero _c -scribe un carcter de un byte !c.ar% _s -scribe una cadena de caracteres) &ue termina con af4U _. s.ort _p puntero Modificadores al sm$olo : Iormato -1plicacin _?d -scribe un entero utilizando un campo de ? d(gitos. La *ustificacin predeterminada es a la derec.a _E@d -scribe enteros utilizando un campo de seis d(gitos. La *ustificacin es a la iz&uierda. _5.2f -scribe un real utilizando un campo de 5 d(gitos) dos de ellos sern utilizados para los decimales. _E?.2f -scribe un real utilizando un campo de ? d(gitos) dos de ellos sern utilizados para los decimales. La *ustificacin es a la iz&uierda. La instruccin de lectura scanf necesita del mismo formato de variables &ue la instruccin printf) la Gnica diferencia radica en &ue al utilizar la instruccin de lectura se debe escribir el smbolo de direccin & antes de cada variable. /unciones de la $i$lioteca mat2.2 Iuncin -1plicacin sin!1% #eno de 1 asin!1% Arco seno de 1 cos!1% "oseno de 1 acos!1% Arco coseno de 1 tan!1% 7angente de 1 atan!1% Arco tangente de 1 e1p!1% Iuncin e1ponencial e1. -leva e !2.A3S2S3% a la potencia de 1 fabs!1% Devuelve valor absoluto de 1 fmod!13)12% ,btiene el resto de 13 entre 12) con el mismo signo &ue 13 log!1% Logaritmo natural de 1) in!1%) 1d4 log34!1% Logaritmo base 34 de 1) log34!1%) 1d4 poD!1) y% Potencia 1y) 1d4) yd]4 s&rt!1% ,btiene la ra(z cuadrada de 1) 1d]4 Instrucciones $rea; % continue Alteran el control del flu*o.
$rea; cuando se e*ecuta en una estructura D.ile) for) do+D.ile o sDitc.) provoca la salida inmediata de la estructuraJ la e*ecucin del programa continGa en la primera instruccin &ue est: despu:s de la estructura. 6eneralmente se usa para salir antes de tiempo de un ciclo y para saltarse el resto de una estructura sDitc.. continue al e*ecutarse en una estructura D.ile) for o do+D.ile) salta las instrucciones restantes del cuerpo de dic.a estructura y continGa con la siguiente iteracin del ciclo.