Sunteți pe pagina 1din 60

UNIVERSIDAD SAN PEDRO FACULTAD DE INGENIERIA

ESCUELA DE INGENIERA CIVIL

TESIS II
PROYECTO DE INVESTIGACIN
SISTEMATIZACIN DE LOS PROCESOS DE CLCULO PARA EL DISEO DE ZAPATAS AISLADAS

DOCENTE ALUMNO ASESOR

: : :

Ing. WALTER MAGUIA DEPAZ BAILON LUCIO YONEL ING. EMILIO PEREZ ARROYO

Huaraz, 22 de octubre de 2013

DEDICATORIA

A Dios Gestor del Conocimiento y Sabidura, A mi madre, por el amor y apoyo que me brinda en la educacin. A mis hermanas por su apoyo y comprensin que me demuestran constantemente.

AGRADECIMIENTO Al Ing. Emilio Prez Arroyo, culminacin del presente estudio. Al ing. Clemente Osorio, por su apoyo incondicional. A los docentes de la facultad, que me brindaron conocimiento para la vida profesional y Diaria. por su apoyo y asesoramiento en la

I.

PLANTEAMIENTO DE LA INVESTIGACIN ...................................................... 1 1.1. PLANTEAMIENTO DEL PROBLEMA ......................................................................... 1 1.1.1. CARACTERIZACIN DEL PROBLEMA............................................................ 1 1.1.2. ENUNCIADO DEL PROBLEMA .......................................................................... 2 1.1.3. JUSTIFICACIN Y VIABILIDAD ......................................................................... 2 1.2. OBJETIVOS ...................................................................................................................... 2 1.2.1. OBJETIVO GENERAL .......................................................................................... 2 1.2.2. OBJETIVOS ESPECFICOS ................................................................................ 2

II. 2.1. 2.1.1. 2.1.2. 2.1.3. 2.1.4. 2.2. 2.2.1. 2.2.2. 2.2.3. 2.2.4. 2.2.5. 2.2.6. III. 3.1. 3.2. IV. 4.8. 4.8.1. 4.8.2. 4.8.3. V.

MARCO TERICO ................................................................................................. 3 ANTECEDENTES ............................................................................................................ 3 SOFTWARE SAP2000 ............................................................................................... 3 SOFTWARE ETABS .................................................................................................. 5 Tesis Diseo de un edificio de concreto armado de cinco niveles .......... 6 Archivos Excel conteniendo el formato de diseo de zapatas aisladas ... 7 BASES TERICAS DE LA INVESTIGACIN ............................................................ 7 Cimentacin: ............................................................................................................... 7 Capacidad portante: ................................................................................................. 7 Tipos principales de suelos.................................................................................... 8 Tipos de cimentacin: .............................................................................................. 8 Cimentaciones intermedias .................................................................................. 10 Las cimentaciones profundas son las siguientes: ......................................... 11 HIPTESIS............................................................................................................ 12 HIPTESIS GENERAL: ............................................................................................... 12 HIPTESIS ESPECFICA: ........................................................................................... 12 METODOLOGA ................................................................................................... 13 FUNDAMENTOS DE PROGRAMACIN .................................................................. 23 Lenguajes de programacin ................................................................................. 23 Tipos de programacin .......................................................................................... 27 Programacin en PYTHON .................................................................................... 29 REFERENCIAS BIBLIOGRFICAS ................................................................... 54 ANEXO 1

- 1-

PROYECTO DE INVESTIGACIN SISTEMATIZACIN DE LOS PROCESOS DE CLCULO PARA EL DISEO DE ZAPATAS AISLADAS I. PLANTEAMIENTO DE LA INVESTIGACIN 1.1. PLANTEAMIENTO DEL PROBLEMA 1.1.1. CARACTERIZACIN DEL PROBLEMA El requerimiento de la optimizacin del tiempo para la ejecucin de una determinada tarea es una ventaja que debera de aprovecharse. Las rutinas desarrolladas para el diseo de una zapata es susceptible a cometer errores de clculo, y que adems requieren de tiempo para llevarlos a cabo. Considerando los dos puntos anteriores, nos vemos en la necesidad de aplicar los conocimientos informticos para el desarrollo de un aplicativo informtico que nos ayude realizar ptimamente el correcto diseo de las zapatas combinadas de concreto armado. Debemos considerar que para el diseo de zapatas y en general las cimentaciones son elementos estructurales que sirven para equilibrar las cargas producidas por la construccin con la reaccin del terreno, por lo cual es indispensable, antes de efectuar el clculo de cualquier cimentacin, conocer

perfectamente el tipo de terreno sobre el que se va a trabajar, cul es la capacidad de carga del mismo, as como su humedad, densidad, etctera, llegando en algunos casos a tener la necesidad de requerir de estudios especializados sobre mecnica de suelos para determinar el tipo de cimentacin ms conveniente para cada caso.

- 1-

Es importante saber que este tipo de zapatas son utilizadas en terrenos de mediana a alta resistencia, as como tener en cuenta que son poco recomendables para ser aplicadas en terrenos compresibles cuando se deben transmitir cargas considerables, ya que pueden tener problemas de asentamientos diferenciales del terreno. 1.1.2. ENUNCIADO DEL PROBLEMA El proceso de calculo para el diseo de zapatas aisladas son procesos repetitivos que conllevan generalmente a invertir mucho tiempo y cometer errores? 1.1.3. JUSTIFICACIN Y VIABILIDAD El presente proyecto de investigacin cobra importancia porque contribuir a mejorar y optimizar el proceso de clculo empleado en el diseo de zapatas aisladas. La presente investigacin es viable, por cuanto los procesos de clculo son repetitivos y los cuales deberan programarse en algn lenguaje de programacin. 1.2. OBJETIVOS 1.2.1. OBJETIVO GENERAL Facilitar el clculo y diseo de zapatas aisladas de concreto reforzados usando un aplicativo informtico desarrollado en el lenguaje de programacin PYTHON. 1.2.2. OBJETIVOS ESPECFICOS Desarrollar un aplicativo informtico para efectuar el diseo ptimo y eficiente de zapatas. Mostrar una alternativa de proceso de diseo de zapatas aisladas de concreto. - 2-

II.

MARCO TERICO 2.1. ANTECEDENTES 2.1.1. SOFTWARE SAP20001 La mayora de los ingenieros conocen o han odo sobre SAP2000, el software lder en ingeniera estructural. Se pueden analizar cualquier tipo de estructuras con este programa, e incluso disear elemento por elemento de manera precisa con los reglamentos ms conocidos (ACI En EU, RCDF en Mxico, EUROCODIGO en Europa) El nombre SAP ha sido sinnimo de mtodos analticos-de-punta desde su introduccin hace ms de 30 aos. SAP2000 sigue en la misma tradicin con una interfaz de usuario muy sofisticadas, intuitiva y verstil impulsada por las herramientas de motor y diseo un anlisis sin precedentes para ingenieros de trabajo sobre transporte, industrial, obras pblicas, deportes y otras instalaciones. De su objeto 3D basado grfica de entorno a la amplia variedad de anlisis y diseo opciones completamente integrada a travs de una interfaz de usuario potente, de modelado SAP2000 ha demostrado para ser el propsito general ms integrado, productivo y prctico programa estructural en el mercado de hoy. Esta interfaz intuitiva permite crear modelos estructurales intuitivamente y rpidamente sin demoras larga curva de aprendizaje. Ahora usted puede aprovechar el poder de SAP2000 para todas las tareas de anlisis y diseo, incluyendo pequeos problemas cotidianos. Modelos complejos pueden ser generados y entrelazados con poderosas plantillas integradas en la interfaz.

www.sap2000.com

- 3-

Las tcnicas de analtica avanzada permiten paso a paso grande deformaciones Analysis, mltiples P-Delta, Eigen y Ritz analisis, anlisis de cable, tensin o compresin slo anlisis, anlisis pandeo, Blast Analysis, Fast Nonlinear anlisis para

amortiguadores, Isolators de base y plasticidad de soporte, mtodos de energa para el Control Drift y Glomeruloesclerosis de construccin de anlisis. Diseadores de puente pueden utilizar plantillas de puente de SAP2000 de generar modelos de puente, automatizada puente Live carga anlisis y diseo, aislamiento de base de puente, anlisis de secuencias de construccin de puente, grandes deformaciones Cable Supported puente anlisis y anlisis de Pushover. SAP2000 es para todos! SAP2000 es para cada proyecto! De un anlisis simple pequeo marco estticas 2D a un gran complejo 3D no lineal dinmico anlisis, SAP2000 es la respuesta a todas las necesidades anlisis y diseo estructurales. SAMUEL A. MORA QUIONES (2008) El PAVADOQ HEXMACH: Experiencias con adoquines en el Per. Las

experiencias realizadas en zonas de la Costa, Sierra y Selva peruana, con excelentes resultados, nos permite plantear el USO del Pavimento Adoquinado Hexagonal Machihembrado

(PAVADOQ HEX MACH) en los Sistemas Viales (Caminos rurales, urbanos, interurbanos, plataforma de ferrocarriles, puertos y aeropuertos), Tcnica por ser una interesante alternativa de

solucin

(Estructuralmente

resistente),

Econmica

(Menor costo) y fundamentalmente Social (Generador de empleo masivo).

- 4-

2.1.2. SOFTWARE ETABS2 En los ltimos 30 aos, ETABS ha sido reconocido como el estndar internacional para el Diseo y Anlisis de Edificios y tiene entre sus logros el diseo de la mayora de estructuras alrededor del mundo. El software es tambin internacionalmente usado como una herramienta educativa y de investigacin en centenares de instituciones. Actualmente, la nueva versin del ETABS est totalmente integrada, realiza anlisis basado en objetos, disea, optimiza y Dibuja. Con este programa se redefinen los estndares de integracin, tecnologa numrica y productividad, estableciendo la lnea de desarrollo para los prximos 25 aos. Posee una poderosa interface grafica basada en objetos que la hace verstil e intuitiva, potenciada por nuevas tcnicas numricas que permite a los ingenieros crear diseos completos, elaborando planos y cuantificando materiales para la construccin con acero en pocas horas, sin estar limitado por el tamao del elemento y satisfaciendo los requerimientos de estabilidad, rigidez y deformacin. Los nuevos y sofisticados mtodos de anlisis del ETABS resuelven muchos aspectos del diseo de edificios en los cuales los Ingenieros Estructurales se han esforzado por dcadas, tales como: Clculo del Diagrama de Esfuerzo Cortante en Losas y envolvente de fuerzas, Modelacin de Estructuras de

Estacionamiento, Rampas rectas y curvas, Modelacin de deformacin en zonas de juntas, Efectos de secuencia de carga durante el proceso constructivo. El modelo integrado puede incluir Prtico resistentes a momentos, brazos rgidos, sistemas reticulados, prticos con secciones reducidas de vigas, placas
2

http://www.morrisoningenieros.com/etabs.htm

- 5-

laterales, losas rgidas y flexibles, Techos inclinados, Rampas y estructuras de parqueo, mezanines, edificios con torres mltiples y sistemas de diafragmas conectados con sistemas complejos de pisos, compuestos o de acero y mucho ms, ahora esta al alcance de sus manos. ETABS es la solucin, si usted est diseando un prtico simple en 2D o est realizando el anlisis dinmico de un complejo rascacielos que utiliza amortiguadores de naturaleza no lineal para el control de la deformacin de entrepisos. 2.1.3. Tesis Diseo de un edificio de concreto armado de

cinco niveles3 En la pgina 48 de la tesis en mencin, el autor realiza un ejemplo de diseo de zapata aislada, siguiendo los pasos de: Calculo de las dimensiones de la cimentacin (B, L) Calculo de esfuerzo actuante sobre la cimentacin () Calculo del Esfuerzo actuante mximo amplificado Verificacin de las Dimensiones de Cimentacin por Corte Verificacin de las Dimensiones de Cimentacin por

Punzonamiento Calculo del Cortante Resistente (Punzonamiento) Calculo del Cortante ultimo actuante (Punzonamiento) Calculo del Momento ltimo actuante

NANCY SUSANA TAN NOZAWA, de la facultad de ciencias e ingeniera de la universidad Catlica del Per.

- 6-

2.1.4.

Archivos Excel4 conteniendo el formato de diseo

de zapatas aisladas Finalmente en el internet podemos encontrar pginas en las cuales profesionales tuvieron a bien colgar los archivos en Excel que calcula justamente las zapatas aisladas, entre las que se muestran son HC_rev_0.xls,

MEMORIA_CALCULO_ESTACION_DE_TRANSFERENCIA_Revi sor_Estructural.xls 2.2. BASES TERICAS DE LA INVESTIGACIN 2.2.1. Cimentacin: Se denomina cimentacin al conjunto de elementos estructurales cuya misin es transmitir las cargas de la edificacin o elementos apoyados a este al suelo distribuyndolas de forma que no superen su presin admisible ni produzcan cargas zonales. Debido a que la resistencia del suelo es, generalmente, menor que la de los pilares o muros que soportar, el rea de contacto entre el suelo y la cimentacin ser proporcionalmente ms grande que los elementos soportados 2.2.2. Capacidad portante: En cimentaciones se denomina capacidad portante a la capacidad del terreno para soportar las cargas aplicadas sobre l. Tcnicamente la capacidad portante es la mxima presin media de contacto entre la cimentacin y el terreno tal que no se

https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&ved= 0CEIQFjAE&url=http%3A%2F%2Fwww.ingenieriamecanicayformacion.net%2Fformacion %2Ffo11071%2Fdocumentacion%2FHC_rev_0.xls&ei=1PabUZ3ZLZLF4AOYk4GYCw&usg=AF QjCNEiU3oIYbvScU8t1mlH5tlJn7M3FA&bvm=bv.46751780,d.dmg https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=9&cad=rja&ved= 0CFkQFjAI&url=http%3A%2F%2Fwww.eseia.cl%2Farchivos%2FMEMORIA_CALCULO_ESTACION_DE_TRANSFERENCIA_Re visor_Estructural.xls&ei=1PabUZ3ZLZLF4AOYk4GYCw&usg=AFQjCNFi9GcT3rBGg74_ Dd4qTlOMl1ivrA&bvm=bv.46751780,d.dmg

- 7-

produzcan un fallo por cortante del suelo o un asentamiento diferencial excesivo. Por tanto la capacidad portante admisible debe estar basada en uno de los siguientes criterios funcionales: Si la funcin del terreno de cimentacin es soportar una determinada tensin independientemente de la deformacin, la capacidad portante se denominar carga de hundimiento. Si lo que se busca es un equilibrio entre la tensin aplicada al terreno y la deformacin sufrida por ste, deber calcularse la capacidad portante a partir de criterios de asiento admisible. De manera anloga, la expresin capacidad portante se utiliza en las dems ramas de la ingeniera para referir a la capacidad de una estructura para soportar las cargas aplicadas sobre la misma. 2.2.3. Tipos principales de suelos. Los trminos principales que usan los ingenieros civiles para describir suelos son: grava, arena, limo y arcilla. La mayor parte de los suelos naturales se componen por la mezcla de dos o ms de estos elementos, y pueden contener por aadidura material orgnico parcial o completamente descompuesto. 2.2.4. Tipos de cimentacin: Cimientos de piedra: Los cimientos de piedra son los apoyos de una construccin. Sirven para cargar el peso de toda una vivienda, repartindolo uniformemente en el terreno sobre el que se encuentra construido. La cimentacin es necesaria en cualquier construccin aunque en el caso de que esta se haga por partes. Cimientos de mampostera: En zonas donde la piedra es abundante suele aprovecharse esta como material de

cimentacin. Para grandes construcciones es necesario efectuar

- 8-

en un laboratorio de ensayo pruebas sobre la resistencia de la piedra de que se dispone. Tratndose de construcciones sencillas, en la mayora de casos resulta suficiente efectuar la prueba golpeando simplemente la piedra con una maceta y observando el ruido que se produce. Si este es hueco y sordo, la piedra es blanda, mientras que si es aguda y metlico, la piedra es dura. Cimentaciones profundas: este tipo de cimentacin se utiliza cuando se tienen circunstancias especiales: -Una construccin determinada extensa en el rea de austentar. -Una obra con una carga demasiada grande no pudiendo utilizar ningn sistema de cimentacin especial. -Que terreno al ocupar no tenga resistencia o caractersticas necesarias para soportar construcciones muy extensas o pesadas. Cimentaciones superficiales: Son las ya antes mencionadas como la mampostera la de zapatas aisladas tambin la zapata corrida la de concreto ciclopeo y la losa de cimentacin. Son aquellas que se apoyan en las capas superficiales o poco profundas del suelo, por tener ste suficiente capacidad de carga o por tratarse de construcciones de importancia secundaria y relativamente livianas. Las cimentaciones superficiales reparten la fuerza que transmite la estructura a travs de sus elementos de apoyo sobre una superficie de terreno suficientemente grande para admitir esas cargas. Se consideran cimentaciones superficiales cuando tienen entre 0.50 m y 3 m de profundidad, y cuando la capacidad de carga del suelo permite apoyar el edificio en forma directa sin provocar asentamientos excesivos que puedan afectar la funcionalidad de la estructura. Clasificacin de cimentaciones superficiales:

- 9-

Zapatas aisladas Zapatas corridas Losas de cimentacin Zapatas aisladas.Las zapatas aisladas son elementos

estructurales, generalmente cuadrados o rectangulares y ms raramente circulares, que se construyen bajo las columnas con el objeto de transmitir la carga de stas al terreno en una mayor rea, para lograr una presin adecuada. Generalmente son construidas de concreto reforzado. En ocasiones las zapatas aisladas soportan ms de una columna, en este caso se dice que son zapatas combinadas. Zapatas corridas.- las zapatas corridas son elementos anlogos a las zapatas aisladas, en las cuales la longitud supera por mucho a su ancho. Se utilizan para soportar varias columnas o un muro y pueden ser de concreto reforzados o de mampostera, en el caso de cimentos que transmiten cargas no muy grandes. La zapata corrida se usa, en el caso en que el suelo ofrezca una resistencia baja, que obligue al empleo de mayores reas de reparticin o en el caso en que deban transmitirse al suelo grandes cargas. Losas de cimentacin.- Cuando la resistencia del terreno sea muy baja o las cargas muy altas, las dimensiones de zapatas serian demasiado grandes. En este caso es necesario colocar una losa de cimentacin de concreto reforzado que puede llegar a ocupar toda la superficie construida. 2.2.5. Cimentaciones intermedias Son aqullas cimentaciones en las que se busca reducir el incremento total de carga que se aplica al subsuelo, realizando excavaciones en el terreno y haciendo uso de un cajn de cimentacin que se desplanta a cierta profundidad. Este tipo de

- 10 -

cimentacin es adecuada en suelos de mediana y alta compresibilidad, y baja capacidad de carga. Este tipo de cimentaciones se clasifican en: Parcialmente compensadas Sobre compensadas 2.2.6. Las cimentaciones profundas son las siguientes: Por sustitucin: bsicamente esta cimentacin es material extra excavacin en el terreno y en el proporcional de la construccin se debe conocer el tipo de estado coincidencial el peso volumtrico de cada una de las capas que se construyen en el terreno a excavar, para que el peso sea perfecto, se deben nivelar con el de la construccin perfectamente conocida. Por flotacin: esta clase de cimentacin se basa con el principio de Arqumedes que dice que todo cuerpo sumergido en el liquido experimenta un empuje vertical ascendente igual al peso del volumen del liquido desalojado. Por pilotacin: se tienen tres formas de pilotes: -Pilotes trabajando con apoyos directos. -Pilotes que trabajas mediante friccin

- 11 -

III.

HIPTESIS 3.1. HIPTESIS GENERAL: El uso de programas mejora el anlisis y diseo de las zapatas aisladas 3.2. HIPTESIS ESPECFICA: El uso de aplicativos informticos mejora y optimiza el tiempo de clculo de las dimensiones de las zapatas aisladas

- 12 -

IV.

METODOLOGA 4.1. TIPO Y NIVEL DE LA INVESTIGACIN El presente estudio se enmarc dentro de los siguientes tipos de investigacin: Descriptiva, De Campo y Bibliogrfica de nivel explicativo 4.2. DISEO DE LA INVESTIGACIN Diseo de investigacin: El diseo de la investigacin es experimental o de laboratorio. 4.3. POBLACIN Y MUESTRA 4.3.1. POBLACIN Expedientes y estudios en la cual incluya un anlisis de zapatas aisladas. 4.3.2. MUESTRA Estudios y expedientes elaborados por algunos de los ingenieros que dictan en la universidad San Pedro con sede en Huaraz 4.4. DEFINICIN Y OPERACIONALIZACIN DE LAS VARIABLES 4.4.1. VARIABLES: Variable Independiente Esfuerzo del suelo Solicitaciones de cargas de viento, sismo

Variable Dependiente

- 13 -

Recubrimiento mnimo Fuerzas cortantes por punzonamiento Cargas axiales 4.5. PROCEDIMIENTOS Se emplearn los diferentes procedimientos, tcnicas en el anlisis y diseo de zapata. Las cules sern plasmadas en un lenguaje de programacin, a partir desde la creacin del algoritmo que permitir tener xito para la creacin del programa el cual nos permita calcular y dimensionar cualquier tipo de zapata. 4.6. TCNICAS E INSTRUMENTOS Determinacin del esfuerzo del suelo. Se realizara un estudio de mecnica de suelo. Anlisis Documental. Se comparara los resultados iniciales con los ejercicios tipo de libros, para comprobar y determinar la efectividad del programa elaborado. Entrevistas. Se realizaran entrevistas especializadas a los ingenieros ms renombrados de la universidad San Pedro Huaraz de la carrera profesional de ingeniera civil. Con el cual se determinara el tiempo que se demora un profesional para realizar un dimensionamiento de la zapara. Observaciones. Se emplear la observacin participante directa, con la finalidad de comprobar las hiptesis planteadas en el desarrollo de las ciencias experimentales.

- 14 -

4.7. PLAN DE ANLISIS Para el diseo de zapatas aisladas se deben tomar en cuenta los siguientes puntos: a) Los esfuerzos en el suelo no deben sobrepasar los esfuerzos admisibles b) Cuando las combinaciones de carga incluyan el efecto de solicitaciones accidentales como sismos o vientos, los esfuerzos admisibles pueden incrementarse en un 33.3 % 1.33 c) El recubrimiento mnimo para el acero cuando la zapata este en contacto directo con el terreno es de 7.5 cm, y 5.0 cm cuando se tenga una plantilla de cimentacin. =+7.5 =+5 d) Las zapatas debern disearse para resistir fuerzas cortantes en cada direccin independientemente, tomando las secciones crticas a una distancia (peralte efectivo) desde la cara de la columna, el dado o el elemento vertical que transmite la carga e) Las zapatas debern disearse para resistir fuerzas cortantes de punzonamiento o penetracin, tomando como seccin critica aquella que se ubica a una distancia /2 (medio peralte efectivo) alrededor del elemento vertical de carga (columna, dado, muro, etc.). f) La seccin crtica de flexin en una direccin se ubicar en las caras de los elementos verticales de carga.

- 15 -

g) En cimentaciones de muros de mampostera, la seccin crtica a la flexin se considera ubicada a la mitad, entre el eje medio y el pao del muro. En zapatas reforzadas en una direccin y en zapatas

rectangulares reforzadas en dos direcciones, el refuerzo debe distribuirse uniformemente a travs del ancho total de la zapata. Zapatas aisladas sujetas a carga axial Pera el diseo de zapatas aisladas sujetas a carga axial se recomienda aplicar el siguiente procedimiento: 1.- Clculo de la descarga total de la cimentacin = + { }

2.- Dimensionamiento de la zapata = / 3.- Clculo de la presin de contacto = / 4.- Clculo de la presin neta ltima = / ; = () 5.- Clculo del peralte necesario para resistir el cortante como viga ancha = (1)/2

donde: = Factor de resistencia = 0.8

- 16 -

6.- Clculo del peralte necesario para resistir el cortante por penetracin Se obtiene resolviendo la siguiente ecuacin cuadrtica: +4 2+ [( +2 )(1+2) ]+ 1 =0

De los peraltes obtenidos en los pasos 5 y 6 se toma el mayor, y se calcula el espesor total como: = +

Comprobacin de que el peso real no exceda al peso propio supuesto = = = 1

=[( )(1 2)] donde:

=+++ El peso real no debe exceder al peso supuesto en un 10% 7.- Diseo por flexin [ ]

- 17 -

Una vez obtenida el rea de acero necesario se elige el dimetro de varillas que se van a utilizar y se calcula la separacin a la que se van a colocar: =(100 o)/ Acero por temperatura Cuando el espesor () de la zapata sea mayor que 30 cm se recomienda colocar acero por temperatura en el lecho superior. La cantidad de acero por temperatura se calcula con la siguiente expresin:

Si no excede de 15 cm, el refuerzo puede colocarse en una sola capa. Si es mayor de 15 cm, el refuerzo se colocar en dos capas prximas a las caras del elemento. Zapatas aisladas sujetas a carga axial y momento En zapatas en las que adems de carga axial existen momentos en una o dos direcciones la distribucin de presiones no es uniforme, lo que hace complicado obtener una presin neta ltima con la cual podamos disear la zapata. Sin embargo, empleando la teora de Meyerhof y haciendo algunas consideraciones se ha desarrollado un mtodo simplificado que resulta sencillo y muy prctico. El mtodo consta de los siguientes pasos: 1.- Clculo de la descarga total de la cimentacin

- 18 -

En este caso adems de la descarga de la superestructura y el peso propio de la zapata se tiene un momento, el cual hay que transformar en una carga equivalente. En condiciones de la descarga de la superestructura = / En condiciones de la carga que transmite el momento = ( Igualando los esfuerzos: /= / ; = /S Es decir = () Por lo tanto el momento (M) se transforma en carga equivalente Pequiv. equiv = 1.5 Para determinar la descarga total se toman en cuenta tres condiciones. Cargas estticas o permanentes (CM + CV) = E + + equiv donde: S = 0.25 e ; )/

equiv = 1.5 ( EX + EY)

- 19 -

Cargas estticas ms cargas por sismo en X (CM + CV + SISMO X) = E + SX + 0.3SY + S + EQUIV S = 0.2 (E + SX + 0.3 SY) Pequiv= 1.5( EX + EY + SX + 0.3 SY)

Cargas estticas ms cargas por sismo en Y ( CM + CV + SISMO Y) Pt = E +0.3 SX + SY + S + EQUIV S = 0.2 (E + 0.3SX + SY) Pequiv= 1.5( EX + EY + 0.3 SX + SY)

2.- Dimensionamiento de la zapata =/ 3.- Clculo de las presiones de contacto = 2 ; = 2 = + ; = + = +

4.- Clculo de la presin neta ltima ;

= ; = () - 20 -

5.- Clculo del peralte necesario para resistir el cortante como viga ancha = ( )/( +) =()/2; =()/2 = 0.5 ( )1/2

6.- Clculo del peralte necesario para resistir el cortante por penetracin Debido a la accin del momento se complica obtener una expresin general para calcular este peralte, sin embargo existe una propuesta emprica que ha mostrado muy buenos resultados. Dicha propuesta consiste en resolver la misma ecuacin cuadrtica obtenida para zapatas sujetas a carga axial.
+ 4 2 + [( + 2 )( + )] + =0 Y una vez obtenido el peralte modificarlo de la siguiente forma: Peralte = d + 5 cm Peralte = d + 10 cm Peralte = d + 10 cm Peralte = d + 15 cm
CM + CV + CA

Para verificar que el peralte obtenido es adecuado se revisa la resistencia al corte segn el reglamento, con la siguiente expresin: Vcr =

= 0.8 para CM + CV y 0.7 para CM + CV + CA

- 21 -

= / Si no hay transmisin de momento = + momento en X = + momento en Y = + + Si hay Si solo hay transmisin de Si solo hay transmisin de

transmisin de momentos en X y Y Para revisar si hay transmisin de momentos Si >0.2 Hay transmisin de momento en X

>0.2 Hay transmisin de momento en Y = =(+)(+) ; =2[(+)+ (+)] ab=(+ )/2 ; cd=( + )/2

Espesor total = + Comprobacin de que el peso propio no supere al peso supuesto

- 22 -

7.- Diseo por flexin [ ]

, = ;

Acero por temperatura 4.8. FUNDAMENTOS DE PROGRAMACIN El diseo de aplicaciones ha cambiado drsticamente en los ltimos aos y consecuentemente los estilos de programacin. De una programacin secuencial se pasa a una programacin modular, para llegar a una programacin estructurada con muy buenos resultados. A partir de la programacin estructurada los esfuerzos se centraron en potenciar la modularidad y la reutilizacin del cdigo, lo que condujo a la programacin orientada a objetos que se complementa con una programacin basada en componentes software, pero que los estilos hayan cambiado, no significa que el ltimo elimine a los anteriores; al contrario, se apoya en los anteriores. 4.8.1. Lenguajes de programacin El desarrollo de las capacidades de Hardware ha experimentado un auge desmesurado en los ltimos aos, pero el

aprovechamiento de estas posibilidades no es ptimo si no se dispone del software adecuado. Con este fin se han diseado diversos lenguajes de programacin, unos de propsito general, es decir, para todo tipo de aplicaciones, y otros de aplicacin particular en algunos de los campos del mbito informtico. Un lenguaje de programacin es una notacin para escribir programas, a travs de los cuales podemos comunicarnos con el

- 23 -

hardware y dar as las rdenes adecuadas para la realizacin de un determinado proceso. Un lenguaje est definido por una gramtica o conjunto de reglas que se aplican a un alfabeto constituido por el conjunto de smbolos utilizados. Los distintos niveles de programacin existentes nos permiten acceder al hardware, de tal forma que segn utilicemos un nivel u otro, as tendremos que utilizar un determinado lenguaje ligado a sus correspondientes traductores. Una primera clasificacin, atendiendo a su proximidad al lenguaje de la mquina o al lenguaje de las personas (lenguaje natural), establece los tres siguientes grupos: Lenguajes de bajo nivel Lenguajes intermedios Lenguajes de alto nivel Lenguajes de bajo nivel: Son los lenguajes ms bsicos. Los lenguajes de bajo nivel o lenguajes mquina consisten en hileras de nmeros y son definidos por el diseo del hardware. En otras palabras, el lenguaje mquina para una computadora Macintosh no es el mismo que para el de una PC. Una computadora comprende slo su lenguaje mquina original, los comandos de su equipo de instruccin. Estos comandos le dan instrucciones a la computadora para realizar operaciones elementales: cargar, almacenar, aadir y sustraer. Esencialmente, el cdigo mquina consiste por completo de los 0 y 1 del sistema numrico binario. Lenguajes intermedios: En estos lenguajes los programadores trabajan en editores de texto, que son simples procesadores de palabras, para crear archivos fuente. Los archivos fuente contienen instrucciones para que la computadora las ejecute, pero tales archivos deben primero traducirse al lenguaje mquina. Los

- 24 -

investigadores

crearon

programas

traductores

llamados

ensambladores para realizar la conversin. Los lenguajes y secretos, pero leer un cdigo ensamblador es mucho ms rpido que trabajar con el lenguaje mquina. Los programadores rara vez escriben programas de tamao significativo en un lenguaje ensamblador. En su lugar, se usan lenguajes ensambladores para afinar partes importantes de los programas escritos en un lenguaje de nivel superior. Lenguajes de alto nivel: fueron desarrollados para hacer ms fcil la programacin. Estos lenguajes son llamados de alto nivel porque su sintaxis es ms cercana al lenguaje humano que al cdigo del lenguaje mquina o ensamblador. Usan palabras familiares en lugar de comunicar en el detallado embrollo de los dgitos que comprenden las instrucciones de la mquina. Para expresar las operaciones de la computadora estos lenguajes usan operadores, como los smbolos de ms o menos, que son los componentes familiares de las matemticas. Como resultado, leer, escribir y comprender programas de cmputo es ms fcil con un programa de alto nivel, a pesar de que las instrucciones todava deban ser traducidas al lenguaje mquina antes de que la computadora pueda comprenderlas y llevarlas a cabo. Los comandos escritos en cualquier lenguaje ensamblador o de alto nivel deben ser traducidos de nuevo a cdigo mquina antes de que la computadora pueda ejecutar los comandos. Estos programas traductores se denominan compiladores. Los archivos de programas compilados se vuelven ejecutables. Los lenguajes de programacin son discutidos algunas veces en trminos de generaciones, a pesar de que estas categoras son arbitrarias de alguna manera. Se considera que cada generacin sucesiva contiene lenguajes que son ms fciles de usar y ms poderosos que la generacin previa. Los lenguajes mquina son

- 25 -

considerados de la primera generacin, y los ensambladores de la segunda generacin. Lenguajes de la tercera generacin Los lenguajes de la tercera generacin tienen la capacidad de soportar programacin estructurada, lo cual significa que

proporcionan estructuras explcitas para ramas y ciclos. Adems, debido a que son los primeros lenguajes que usan fraseo similar al ingls, compartir el desarrollo entre los programadores es ms fcil. Los lenguajes de la tercera generacin incluyen: FORTRAN COBOL BASIC PASCAL C C++ JAVA Lenguajes de la cuarta generacin Los lenguajes de cuarta generacin son principalmente lenguajes de programacin para propsitos especiales, que son ms fciles de usar que los de la tercera generacin. Con los lenguajes de la cuarta generacin los programadores pueden crear aplicaciones rpidamente. Como parte del proceso de desarrollo, los programadores pueden utilizar los lenguajes de la cuarta generacin para desarrollar prototipos de una aplicacin

rpidamente. Los prototipos dan a los equipos y clientes una idea de cmo se vera y funcionara la aplicacin antes de que el cdigo est terminado. Como resultado, cada uno de los involucrados en el desarrollo de la aplicacin puede proporcionar retroalimentacin sobre aspectos estructurales y de diseo al principio del proceso.

- 26 -

Con una sola declaracin en un lenguaje de la cuarta generacin se logra mucho ms de lo que era posible con una declaracin similar en un lenguaje de generacin anterior. A cambio de esta capacidad de trabajar ms rpido, los programadores han demostrado disposicin para sacrificar parte de la flexibilidad disponible con los lenguajes anteriores. Muchos lenguajes de la cuarta generacin tienen capacidad para bases de datos. Estos programas incluyen formas y cuadros de dialogo para introducir informacin en las bases de datos. Entre los principales lenguajes de la cuarta generacin se tienen: Visual Basic Lenguajes de macros especficos para una aplicacin Ambientes de auditoria Lenguajes de la quinta generacin La quinta generacin de los lenguajes de cmputo incluye inteligencia artificial y sistemas expertos. Estos sistemas tienen por objeto pensar y anticipar las necesidades de los usuarios, en lugar de slo ejecutar un conjunto de rdenes. A pesar de que los sistemas de inteligencia artificial se estn volviendo ms difciles de desarrollar de lo que se esperaba originalmente, los expertos afirman que los sistemas, al igual que las redes nerviosas pronto sern capaces de tomar hechos y luego usar el conjunto de datos para formular una respuesta apropiada, exactamente como hacemos los humanos. 4.8.2. Tipos de programacin Existen dos tipos de programacin:

- 27 -

Programacin modular.- Es uno de los mtodos de diseo ms flexible y potente para mejorar la productividad de un programa. En programacin modular el programa se divide en mdulos (partes independientes), cada una de las cuales ejecuta una nica actividad o tarea y se codifican independientemente de otros mdulos. Programacin estructurada.- La programacin estructurada significa escribir un programa de acuerdo a las siguientes reglas: El programa tiene un diseo modular Los mdulos son diseados de modo descendente Cada mdulo se codifica utilizando las tres estructuras de control bsicas: secuencia, seleccin y repeticin Esta tcnica aumenta considerablemente la productividad del programa reduciendo considerablemente el tiempo requerido para escribir, verificar, depurar y mantener los programas. La programacin estructurada utiliza un nmero limitado de

estructuras de control que minimizan la complejidad de los programas y por consiguiente reducen los errores; hace los programas ms fciles de escribir, verificar, leer y mantener. La programacin estructurada es el conjunto de tcnicas que incorporan: Recursos abstractos Diseo descendente (top- down) Estructuras bsicas

- 28 -

4.8.3. Programacin en PYTHON ****ENTRADILLA: En la serie de cuatro artculos que aqu comenzamos describiremos el lenguaje de programacin Python. Para ilustrar sus virtudes desarrollaremos un juego de tres en raya, que segn transcurra esta serie ir hacindose cada vez ms sofisticado. Pasar de ser un simple juego con interfaz en modo texto, a tener una interfaz grfica, y de ste a ser una aplicacin web que accede a una base de datos. ****LADILLO: Introduccin En este primer artculo nos dedicaremos a introducir la sintaxis de Python y a iniciarnos en la programacin orientada a objetos a travs de Python. En un segundo artculo hablaremos de las facilidades provistas por Python para la programacin de interfaces grficas y la serializacin de datos a ficheros. En la tercera entrega explicaremos las bondades de Python para la programacin de aplicaciones web con acceso a bases de datos. Finalmente, concluiremos la serie en una cuarta entrega hablando de la programacin de XML en Python y describiendo sus primos hermanos Jython e IronPython. Python, el otro lenguaje de programacin libre que empieza con P y que no es ni Perl ni PHP, fue creado por Guido van Rossum (http://www.python.org/~guido/) en 1991. Dio este nombre al lenguaje inspirado por el popular grupo cmico britnico Monty Python. Guido cre Python durante unas vacaciones de navidad en las que (al parecer) se estaba aburriendo. ****SUBLADILLO: Hola Mundo en Python Como con cualquier otro lenguaje de programacin, comencemos el aprendizaje de Python con el ms simple de los ejemplos: ****CDIGO: print "Hola Mundo" # "Hola Mundo"

- 29 -

En este primer extracto de cdigo ya podemos observar la simplicidad de Python. Probablemente este es el ejemplo del programa hola mundo ms sencillo que jams has visto. La sentencia print imprime una cadena de caracteres a consola. Las cadenas de caracteres en Python se pueden denotar bien entre comillas dobles o comillas simples, por ejemplo 'Hola mundo'. Ntese que los comentarios de lnea se indican con el smbolo #, mientras que los bloques de cdigo pueden comentarse entre """ y """. ****LADILLO: Caractersticas de Python Tras ver el primer extracto de cdigo en Python , enumeremos sus principales caractersticas: Sintaxis elegante, minimalista y densa: En Python todo aquello innecesario no hay que escribirlo (;, {, }, \n). Adems como veremos pocas lneas de cdigo revierten en mucha

funcionalidad. Moderno: Soporta objetos y estructuras de datos de alto nivel tales como cadenas de caracteres (strings), listas y diccionarios. Multi-paradigma: En vez de forzar a los programadores a adoptar un paradigma de programacin nico, Python permite el uso de programacin orientada a objetos, programacin estructurada o procedural e incluso programacin funcional. Organizado y extendible: Dispone de mltiples formas de organizar cdigo tales como funciones, clases, mdulos, y paquetes. Si hay reas que son lentas se pueden reemplazar por plugins en C o C++, siguiendo la API para extender o empotrar Python en una aplicacin. Interpretado: No es necesario declarar constantes y variables antes de utilizarlas y no requiere paso de compilacin/linkage. La - 30 -

primera vez que se ejecuta un script de Python se compila y genera bytecode que es luego interpretado. Python es dinmico, encuentra errores de uso de tipos de datos en tiempo de ejecucin y usa un recolector de basura para la gestin de memoria. Multiplataforma: Python genera cdigo interoperable, que se puede ejecutar en mltiples plataformas (ms an que Java). Adems, es posible embeber Python dentro de una JVM, como veremos en la cuarta entrega de esta serie. Open source: Razn por la cual la librera de mdulos de Python (http://docs.python.org/lib/lib.html) contiene un sinfn de mdulos de utilidad y sigue creciendo continuamente. De propsito general: Puedes programar en Python toda aplicacin y de cualquier tipo que puedes hacer con C# o Java. ****SUBLADILLO: Peculiaridades sintcticas Python presenta unas diferencias sintcticas notables con respecto a otros lenguajes de programacin. Usa tabulacin (o espaciado) para mostrar una estructura de bloques. Se tabula una vez para indicar el comienzo de bloque y se des-tabula para indicar el final del bloque. Adems, Python no usa el smbolo ; para indicar el final de una sentencia sino simplemente un retorno de carro. El cuadro C/Java vs. Python compara un extracto de cdigo en C/Java con otro de cdigo en Python. Obsrvese que las peculiaridades sintcticas de Python traen consigo una reduccin de los caracteres utilizados y lneas de cdigo. Adems, como efecto lateral, estas peculiaridades sintcticas obligan a diferentes programadores a escribir el cdigo del mismo modo. No hace falta definir manuales de referencia de programacin, para asegurarte que todos los programadores que intervienen en un proyecto utilizan las mismas convenciones. Como nota positiva,

- 31 -

comentar que la mayora de las palabras claves utilizadas por Python coinciden con las usadas en C o Java. ****TABLA:C/Java vs Python Cdigo en C/Java if (x) { if (y) { f1(); } f2(); } Cdigo en Python if x: if y: f1() f2()

****SUBLADILLO: Dominios de aplicacin de Python Todo ingeniero de software, como buen artesano, debera dominar varios lenguajes de programacin. Es inviable concebir que con un solo lenguaje de programacin podemos llevar a cabo todo tipo de desarrollos. Hay aplicaciones o parte de ellas que se adecuarn ms a las caractersticas de un lenguaje de programacin que otro. En este apartado vamos a resaltar las situaciones en las cuales deberamos considerar el uso de Python y en cuales otras lo deberamos desdear. Python, al ser un lenguaje de scripting e interpretado no es adecuado para la programacin de bajo nivel o de sistemas. Por ejemplo, la programacin de drivers y kernels, dado que Python al ser de demasiado alto nivel, no tiene control directo sobre memoria y otras reas de bajo nivel. Tampoco es adecuado para aplicaciones que requieren una alta capacidad de computo, tal es el caso de sistemas de procesamiento de imgenes. Pare este tipo de aplicaciones el viejo C o C++, o como no el cdigo ensamblador, nunca podrn ser superados.

- 32 -

Python es ideal, sin embargo, como lenguaje "pegamento" para combinar varios componentes juntos, para llevar a cabo prototipos de sistemas, para la elaboracin de aplicaciones cliente web o con interfaz grfica, el desarrollo de sistemas distribuidos o la programacin de tareas cientficas, en las que hay que simular y prototipar rpidamente. Python ha sido utilizado para desarrollar muchos grandes proyectos de software como el servidor de aplicaciones Zope, el sistema de comparticin de ficheros Mnet o parte de la implementacin de Google. Actualmente, Python es uno de los tres lenguajes de programacin que se usan en la framework de desarrollo de servidores de aplicaciones libres LAMP (Linux Apache MySQL y Python, Perl o PHP).

****LADILLO: Programando en Python Una vez conocidas las caractersticas de Python es momento de empezar a usarlo. Para ello habremos de descargar una versin del mismo (actualmente 2.3.3) de la seccin downloads del portal de Python (http://www.python.org), mostrado en la Figura 1. La instalacin para Windows es tan sencilla como hacer doble clic en el ejecutable bajado. Para Linux, podremos usar los rpms disponibles en (http://www.python.org/2.3.3/rpms.html). El

comando que te permitir su instalacin ser algo similar a: rpm iv python2.3-2.3.3-pydotorg.i386.rpm

****SUBLADILLO: Modos de programacin Python se puede usar de dos modos diferentes: interactivamente o en modo script. Para arrancar Python en modo interactivo todo lo que se necesita es ejecutar en una consola de comandos (cmd en Windows o xterm en Linux) el intrprete de Python, esto es, el

- 33 -

ejecutable python. Una vez arrancado el intrprete podrs introducir cualquier sentencia en Python. La figura 2 muestra dos sesiones interactivas de Python. En la primera se ha codificado el ejemplo hola mundo mostrado con anterioridad. Para salir del intrprete se ha pulsado Ctrl-Z. Para realizar lo mismo en UNIX deberamos haber pulsado Ctrl-D. Alternativamente, se podran haber usado las dos sentencias mostradas en la segunda sesin interactiva de la figura 2. La primera importa el mdulo sys (ms detalles luego) y la segunda ejecuta el mtodo exit()de ese mdulo, que hace que el hilo de ejecucin del programa finalice.

Para utilizar Python en modo script, se guardan las sentencias del programa en un fichero y luego se ejecuta el mismo escribiendo python <nombre-fichero.py>. Por ejemplo, en UNIX podramos hacer lo siguiente para crear el fichero holamundo.py y luego ejecutarlo: $ cat > holamundo.py #!/usr/bin/env python print "Hello World" Ctrl^D $ python holamundo.py Hello World Ntese que la sentencia #!/usr/bin/env python se usara en entornos UNIX para indicar al sistema que el interprete Python se debera utilizar para ejecutar un fichero que tenga atributos de ejecucin. En Windows es ignorada.

- 34 -

****SUBLADILLO: Sentencias y bloques Para realizar un programa til es necesario agrupar grupos de sentencias en unidades lgicas o bloques. Recuerda que en Python las sentencias se delimitan por el salto de lnea y los bloques se indican por tabulacin que sigue a una sentencia acabada en :. Por ejemplo, el siguiente bloque de cdigo contiene la comparacin de una variable con un valor que imprime diferentes mensajes segn el resultado de su evaluacin. # bloque.py name = "Diego1" # asignacin de valor a variable if name == "Diego": print "Aupa Diego" else: print "Quin eres?" print "No eres Diego!" La ejecucin del programa anterior mediante el comando python bloque.py generara la siguiente salida: Quin eres? No eres Diego! ****SUBLADILLO:Identificadores Los identificadores sirven para nombrar variables, funciones y mdulos. Deben empezar con un carcter no numrico y contener letras, nmeros y _. Python es sensible al uso de maysculas y minsculas en identificadores. Las siguientes son palabras reservadas y no se pueden utilizar como identificadores: and, elif, global, or, assert, else, if, len, pass, break, except, import, print, class, exec, in, raise, continue, finally, is, return, def, for, lambda, try, del, from, not, while. Existen unos cuantos identificadores especiales con prefijo __ para variables y funciones corresponden a smbolos implcitamente definidos: que

- 35 -

__name__ nombre de funcin __doc__ documentacin sobre una funcin __init__() constructor de una clase __del__() destructor de una clase ****SUBLADILLO:Variables y Tipos de datos Para declarar una variable en Python solamente es necesario darle un nombre y asignarle un valor. La variable es del tipo del valor asignado. Por defecto las variables son locales y accesibles solamente dentro del bloque de cdigo donde han sido declaradas, para acceder a variables globales, es necesario preceder el nombre de la variable con el identificador global. Si no se quiere asignar ningn valor a una variable, se le puede asignar el valor None, equivalente a null en Java. Numricos Python define los siguientes tipos numricos: integer, long integer, floating-point, y complex. Sobre los valores numricos se pueden aplicar los mismos operadores que en Java o C++, esto es, +, -, *, / y % (resto). Su uso se ilustra en los siguientes comandos escritos en modo interactivo: >>> x = 4 >>> int (x) # convierte x a entero 4 >>> long(x) # convirtelo a long 4L >>> float(x) # a float 4.0 >>> complex (4, .2) (4+0.2j)

- 36 -

Strings Python soporta las cadenas de caracteres que son delimitadas por un par de ' o ". Dos strings juntos separados por un espacio se unen, y los separados por comas aparecen separados por un espacio. >>> print "Hola" "Iigo" # imprime HolaIigo >>> print "Hola", "Iigo" # imprime Hola Iigo Se utilizan los mismos cdigos de escape que en C y Java. Por ejemplo, para imprimir una nueva lnea utilizaramos print '\n'. Las cadenas de caracteres cuyos caracteres especiales no queremos que sean interpretados se indican con el prefijo r de raw. Las cadenas de caracteres son objetos en Python a los cuales se les pueden aplicar algunas de las funciones predefinidas por Python, como len, que devuelve el nmero de elementos en una secuencia o los mtodos que define tales como upper para convertir a maysculas y find para encontrar un sub-cadenas en una cadena, entre otros muchos. Para ms informacin tanto sobre la clase String como cualquier otro clase o mdulo de Python es recomendable revisar la documentacin de la librera estndar de Python (http://docs.python.org/lib/lib.html), cuya tabla de contenidos se muestra en la figura 3. A continuacin mostramos algunas sentencias que hacen uso de strings. >>> len(La vida es mucho mejor con Python.) >>> 34 >>> La vida es mucho mejor con Python..upper() LA VIDA ES MUCHO MEJOR CON PYTHON >>> "La vida es mucho mejor con Python".find("Python") 27

- 37 -

>>> "La vida es mucho mejor con Python".find(Perl) -1 >>> La vida es mucho mejor con Python.replace(Python, Jython) La vida es mucho mejor con Jython El carcter % representa al operador de formateo de cadenas, que se usa de una manera muy similar a los formateadores en C para la sentencia printf, tales como d para decimal, f para float o, x para hexadecimal. >>> provincia = lava >>> "La capital de %s es %s" % (provincia, "Vitoria-Gasteiz") La capital de lava es Vitoria-Gasteiz Bolanos Las constantes booleanas definidas por Python son True y False. El resultado de una condicin siempre devuelve uno de esos dos valores. Listas Una lista representa una secuencia dinmica que puede crecer, y est indexada por un entero que comienza con el valor 0. Python define el operador : u operador de rodajas que permite indicar dando el ndice inicial y final fragmentos de una lista o string (lista de caracteres) a recuperar. Una lista es una clase definida por Python y por tanto tiene mtodos para aadir (add) o insertar (insert) valores. Para borrar un elemento se utiliza la funcin predefinida del. >>> meses = ["Enero", "Febrero"] >>> print meses[0]

- 38 -

Enero >>> meses.append("Marzo") >>> print meses[1:2] ['Febrero'] >>> del meses[0] >>> meses ['Febrero', 'Marzo']

Tuplas Las tuplas son como las listas, pero no se pueden modificar. Son convenientes cuando queremos devolver varios valores como resultado de invocar a una funcin. Se definen con el operador ( , por ejemplo: (1,2) Diccionarios Los diccionarios son arrays asociativos o mapas, indexados por una clave en vez de un ndice numrico. La clave puede ser cualquier objeto Python, aunque normalmente es una tupla. Como se trata de una clase define una serie de mtodos que podemos invocar tales como has_key. El operador in se utiliza para comprobar si un elemento forma parte de una secuencia. >>> mydict = {"altura" : "media", "habilidad" : "intermedia"} >>> print mydict {'altura': 'media', 'habilidad': 'intermedia'} >>> print mydict["habilidad"] intermedia >>>if mydict.has_key('altura'): >>> print 'Nodo encontrado' Nodo encontrado >>> if 'altura' in mydict: >>> print 'Nodo encontrado' Nodo encontrado ****SUBLADILLO:Control de flujo

- 39 -

Condicionales La sentencia if se utiliza para la definicin de condiciones y puede ir seguida de varias partes elif y una else. En Python los operadores bolanos definidos son: or, and y not. Los operadores relacionales definidos son ==, >, < y =. q=4 h=5 d=3 if q < h: print "primer test pasado" elif d<h: print "segundo test pasado" else: print "tercer test pasado" >>> python condicional.py primer test pasado Bucles Para la definicin de bucles podemos usar el operador for o while. for se utiliza principalmente para iterar sobre los miembros de una secuencia: listas, tuplas o diccionarios. for se utiliza a menudo con la funcin predefinida range, que crea una secuencia descrita por ([start,] end [,step]), donde los campos start y step son opcionales. start es 0 y step es 1 por defecto. >>> for x in range(1,5): >>> print x

>>> 1 2 3 4 La sentencia while es otra sentencia de repeticin. Se utiliza para ejecutar un bloque de cdigo hasta que una condicin sea falsa. La sentencia break se utiliza a menudo dentro de un bucle while y sirve para salir del bucle. >>> reply = 'repite' >>> while reply == 'repite':

- 40 -

... print 'Hola' ... reply = raw_input('Introduce "repite" para hacerlo de nuevo: ') ... Hola Introduce "repite" para hacerlo de nuevo: adis >>>

****SUBLADILLO:Funciones Una funcin se declara usando la palabra clave def, seguida del nombre de la funcin y entre parntesis una lista de argumentos. Los argumentos si corresponden a tipos numricos, bolanos o strings se pasan por valor y si corresponden a secuencias por referencia. A una funcin se le pueden asignar parmetros por defecto, preasignado un valor a cada parmetro de una funcin. Por ejemplo: def myfunc(a,b=2): sum = a + b return sum print myfunc(2) # devuelve el valor 4 A una funcin se le puede pasar un nmero variable de argumentos (argumento con prefijo *) y argumentos basados en palabras clave no predefinidas (argumento con prefijo **): def testArgLists_1(*args, **kwargs): print args:, args print kwargs:, kwargs testArgLists_1(aaa, bbb, arg1=ccc, arg2=ddd) que visualizara:

- 41 -

args: (aaa, bbb) kwargs: {arg1: ccc, arg2: ddd}

****SUBLADILLO:Clases Las clases en Python son creadas usando la sentencia class. Una clase contiene una coleccin de mtodos. Cada mtodo contiene como primer parmetro (self) que hace referencia a la instancia de la clase, es equivalente al this de C++ o Java. Python soporta mltiple herencia de clases. Existe un soporte limitado para variables privadas, usando una tcnica llamada name mangling. Todo identificador de la forma __spam reemplazado por _classname__spam. Sin es textualmente embargo, el

identificador todava podra ser accedido por cdigo que usa la instancia de la clase mediante _classname__spam. El listado 1 muestra un simple ejemplo de herencia.

****LISTADO 1: Un simple ejemplo de herencia # clasesherencia.py class Basic: def __init__(self, name): self.__name = name def show(self): print Basic -- name: %s % self.__name class Special(Basic): # entre parntesis la clase base def __init__(self, name, edible):

- 42 -

Basic.__init__(self, name) self.__upper = name.upper() self.__edible = edible def show(self): Basic.show(self) print Special -- upper name: %s. % self.__upper, if self.__edible: print "Its edible." else: print "Its not edible." def edible(self): return self.__edible obj1 = Basic(Manzana) obj1.show() print = * 30 obj2 = Special(Naranja, 1) obj2.show() print obj2._Basic__name print obj2.__upper # lanzar una excepcin

****SUBLADILLO:Excepciones Cada vez que un error ocurre se lanza una excepcin, visualizndose un extracto de la pila del sistema. La ejecucin de la ltima sentencia del ejemplo anterior producira: Traceback (most recent call last): File "clasesherencia.py", line 28, in ? print obj2.__upper AttributeError: Special instance has no attribute __upper

Para capturar una excepcin se usa except y para lanzar una excepcin se usa raise. Se pueden crear excepciones

personalizadas creando una nueva clase que derive de la clase RuntimeError definida por Python. El siguiente fragmento ilustra el uso de excepciones. # excepcion.py try: fh=open("new.txt", "r")

- 43 -

except IOError, e: print e $ python excepcion.py [Errno 2] No such file or directory: new.txt

****SUBLADILLO:Mdulos Las libreras de mtodos y clases se agrupan en Python en mdulos. Un mdulo es una coleccin de mtodos o clases en un fichero que acaba en .py. El nombre del fichero determina el nombre del mdulo en la mayora de los casos. Para usar un mdulo se usa la sentencia import <nombre-modulo> que hace que un mdulo y su contenido sean disponibles para su uso. Alternativamente se puede usar la sentencia from <nombremodule> import <elementos a importar separados por comas o * para todo el contenido>. Por ejemplo, un mdulo se podra definir como: # modulo.py def one(a): print "in one" def two (c): print "in two" Este modulo se usara como sigue. Ntese la diferencia que existe entre el uso de la clusula import y la from: >>> import modulo >>> modulo.one(2) in one >>> from modulo import * >>> one(2) in one >>>

Un conjunto de mdulos puede agruparse como una unidad representada por un paquete. Referimos al lector a la Python Library Referente para encontrar ms detalles sobre cmo crear un paquete. - 44 -

****LADILLO:Desarrollando tu primera aplicacin Para poner en prctica la sintaxis del lenguaje Python vamos a desarrollar una simple implementacin del juego de tres en raya. Aparte de permitirnos jugar contra la mquina, este juego requiere que el jugador se autentifique antes de jugar y adems guarda estadsticas en memoria sobre las partidas ganadas, perdidas o empatadas por cada jugador. Por el momento la mquina usa un algoritmo sencillsimo para la eleccin de la casilla a tachar por la mquina, la elige de manera aleatoria. En prximas entregas de esta serie discutiremos algoritmos mejores inteligencia artificial. El listado 2 muestra basados en la clase

RegistroJugadores que es utilizada para mantener las estadsticas de las partidas de los jugadores. ****LISTADO 2: La clase RegistroJugadores # imports para toda la aplicacin import os import sys import random from types import *

class RegistroJugadores: def __init__(self): self.__jugadores = {'solop':'solop'} self.__estadisticas = {'solop':[0, 0, 0]} # jugador -> [ganados, empatados, perdidos]

def registrarJugador(self, jugador, clave): if len(trim(jugador)) == 0 or len(trim(clave)) == 0:

- 45 -

raise "Los campos jugador y clave no pueden estar vacios" if self.__jugadores.has_key(jugador): raise "Jugador " + jugador + " ya ha sido registrado!" self.__jugadores[jugador] = clave self.__estadisticas[jugador] = [0, 0, 0]

def login(self, jugador, clave): if not self.__jugadores.has_key(jugador): raise "Jugador " + jugador + " no registrado!"

if not self.__jugadores[jugador] == clave: raise "Clave de jugador " + jugador + " es invalida" return True

def registrarVictoria(self, userName): self.__estadisticas[userName][0] += 1

def registrarEmpate(self, userName): self.__estadisticas[userName][1] += 1

def registrarPerdida(self, userName): self.__estadisticas[userName][2] += 1

def getEstadisticas(self, userName): return self.__estadisticas[userName]

- 46 -

El constructor de RegistroJugadores define dos atributos privados de tipo diccionario que guardan los jugadores registrados (self.__jugadores) y las estadsticas de las partidas

(self.__estadisticas). Se carga un solo jugador con nombre de usuario 'solop' y contrasea 'solop', e inicializamos las

estadsticas para el jugador 'solop', con la lista [0.0,0] que indica que el usuario no ha ganado, ni empatado, ni perdido ningn juego todava. La clase RegistroJugadores define el mtodo registarJugador que permita registrar los detalles de login de un nuevo jugador. Si ya existe un usuario con el nombre de usuario pasado, se lanza una excepcin y si no se crea una nueva entrada en el atributo self.__jugadores. El mtodo login permite la autenticacin de un usuario, y en caso de proveerse un nombre de usuario o clave errneas se lanza una excepcin. Por su parte, los mtodos registrarVictoria, registrarEmpate y registrarPerdida sirven para modificar el atributo self.__estadisticas con los resultados de las partidas de cada jugador. Finalmente el mtodo getEstadisticas devuelve una lista con los resultados obtenidos por un jugador.

****LISTADO 3: Constructor de la clase JuegoTresEnRaya class JuegoTresEnRaya: def __init__(self, registro, userName, password): self.__registro = registro try: self.__registro.login(userName, password) except Exception, e: print 'Problemas realizando login: ', e.message() sys.exit(0) # Constantes de la clase # combinaciones ganadoras en 3 en raya self.__combiGanadoras = [ [0,1,2], [3,4,5], [6,7,8], [0,3,6], [1,4,7], [2,5,8], [0,4,8], [2,4,6] ] self.__marcaJugador = 'o' self.__marcaMaquina = 'x'

- 47 -

# miembros de la clase self.__userName = userName # recordamos username de jugador self.__casillasMarcadas = 0 self.__casillero = [[None, None, None], [None, None, None], [None, None, None]] random.seed() # inicilizar semilla numeros random ****LISTADO 4: Mtodos de ayuda de la clase JuegoTresEnRaya def __elegirMarcaMaquina(self): # elije cual de las casillas no seleccionadas hay que marcar casillaMarcarIndex = random.randint(0, 8self.__casillasMarcadas) casillaNoneExaminada = 0 for i in range(3): for j in range(3): if not self.__casillero[i][j] and casillaNoneExaminada == casillaMarcarIndex: return (i, j) elif not self.__casillero[i][j]: casillaNoneExaminada += 1

def __verTablero(self): #clear_screen() print '\n\nEstado actual de la partida:\n' print "-"*13 # imprime 13 veces for i in range(3): fila = "| " for j in range(3): if self.__casillero[i][j] == None: fila += ('_' + " | ") else: fila += (self.__casillero[i][j] + " | ") print fila print "-"*13 print '\n'

def __hayGanador(self): for i in range(len(self.__combiGanadoras)): a = self.__combiGanadoras[i][0] b = self.__combiGanadoras[i][1] c = self.__combiGanadoras[i][2]

- 48 -

if self.__casillero[a/3][a%3] and self.__casillero[b/3][b%3] and self.__casillero[c/3][c%3]: if self.__casillero[a/3][a%3] == self.__casillero[b/3][b%3] == self.__casillero[c/3][c%3]: # marcar las casillas de la combinacion ganadora en mayusculas self.__casillero[a/3][a%3] = self.__casillero[b/3][b%3] = self.__casillero[c/3][c%3] = self.__casillero[c/3][c%3].upper() return True return False ****LISTADO 5: Mtodo jugar de la clase JuegoTresEnRaya def jugar(self): while self.__casillasMarcadas < 9: # mientras el usuario no introduce las coordenadas de una casilla no seleccionada while True: casillaCoords = () # declara una variable de tipo tupla vacia while True: try: s = raw_input("Escribe la casilla que quieres marcar entre (1, 1) y (3, 3), e.j. (2,1): ") casillaCoords = eval(s) # interpreta la entrada como una tupla if not type(casillaCoords) is TupleType: print 'ERROR: Introduce las coordenadas en el formato (x, y), donde x e y estan en el rango [1-3]' continue break except: print 'ERROR: Introduce las coordenadas en el formato (x, y), donde x e y estan en el rango [1-3]' x = casillaCoords[0] - 1 y = casillaCoords[1] - 1 if x > 2 or y > 2 or x < 0 or y < 0: print "ERROR: Indica indices de fila y columna entre 1 y 3" if self.__casillero[x][y] == None: self.__casillero[x][y] = self.__marcaJugador self.__casillasMarcadas += 1 break else: print 'ERROR: Casilla ya marcada' if self.__hayGanador(): self.__verTablero()

- 49 -

self.__registro.registrarVictoria(self.__userName) print 'RESULTADO: El usuario ha ganado' return if self.__casillasMarcadas == 9: self.__verTablero() break casillaIndex = self.__elegirMarcaMaquina() self.__casillero[casillaIndex[0]][casillaIndex[1]] self.__marcaMaquina self.__casillasMarcadas += 1 if self.__hayGanador(): self.__verTablero() self.__registro.registrarPerdida(self.__userName) print 'RESULTADO: La maquina ha ganado' return self.__verTablero() self.__registro.registrarEmpate(self.__userName) print 'RESULTADO: Ha habido empate' self.__registro.registrarEmpate(self.__userName) print 'RESULTADO: Ha habido empate'

El listado 3 muestra la implementacin del constructor de la clase JuegoTresEnRaya, que define la lgica principal de la aplicacin. El constructor de esta clase recibe como parmetros una referencia al registro de jugadores, el nombre de usuario y la clave del jugador que quiere competir con la mquina. El constructor en primer lugar guarda la referencia al registro en la variable privada self.__registro y valida que los datos de autentificacin del jugador son correctos. A continuacin, declara las constantes self.__combiGanadoras con las combinaciones ganadoras del juego, self.__marcaJugador con el carcter 'o' que indica la marca de un jugador y self.__marcaMaquina con el valor 'x' que denota las casillas marcadas por la mquina. Finalmente, el contructor declara las variables self.__userName donde memoriza el identificador del jugador, self.__casillasMarcadas

- 50 -

donde cuenta cuantas casillas estn marcadas hasta el momento y el array bidimensional self.__casillero que recoge los valores marcados en cada casilla, inicialmente ninguno. El listado 4 muestra los siguientes mtodos de ayuda definidos por la clase JuegoTresEnRaya: __elegirMarcaMaquina,

__verTablero y __hayGanador. El mtodo __elegirMarcaMaquina hace uso del mdulo random para elegir de manera aleatoria una de las casillas no marcadas. El mdulo __verTablero visualiza en modo texto el tablero. Finalmente, el mtodo __hayGanador determina si alguna de las combinaciones ganadoras ha sido alcanzada. El listado 5 muestra el nico mtodo pblico jugar() que define toda la lgica del juego de tres en raya entre un usuario y la mquina. Asume que el usuario siempre comienza. La partida no concluye hasta que se ha encontrado una combinacin ganadora o se han tachado las nueve casillas del tablero. Mientras el usuario no introduce los datos de una casilla correctamente el mtodo itera sobre un bucle. Para recoger la entrada del usuario se utiliza la funcin raw_string(<mensaje>). Adems dado que se pretende que la entrada tenga el formato (x, y), se evala si los datos introducidos corresponden a una tupla, mediante la funcin eval que convierte un string al tipo de datos representado. Adems se valida si el valor interpretado corresponde a una tupla haciendo uso del mtodo type del mdulo types y del operador is que permite la comparacin entre un valor y su tipo: if not type(casillaCoords) is TupleType. Adems en cada iteracin se comprueba que el valor de la celda introducida est dentro del rango de valores validos y adems no haya sido ya marcado. Despus de que el usuario introduzca una casilla vlida se evala si ha ganado invocando el mtodo __hayGanador. Si es as se registra la victoria del usuario invocando

self.__registro.registrarVictoria(self.__userName). Si todava no se - 51 -

han marcado las nueve casillas del tablero se pasa el turno a la mquina, eligindose la casilla a marcar mediante la llamada al mtodo privado __elegirMarcaMaquina. A continuacin, se comprueba si tras marcar la ltima casilla la mquina ha ganado la partida y si es as se registra que el usuario la ha perdido. Cuando las casillas marcadas sean nueve y no ha habido ningn ganador se registrar el hecho de que el juego ha acabado en empate.

****LISTADO 6: El bloque main if __name__ == '__main__': registro = RegistroJugadores() juego = JuegoTresEnRaya(registro, sys.argv[1], sys.argv[2]) juego.jugar() while True: s = raw_input("Quieres jugar otra vez? (s) o (n): ") if s.strip().lower() == 's': juego = JuegoTresEnRaya(registro, 'solop', 'solop') juego.jugar() else: print 'Gracias por jugar al tres en raya!' print 'Estadsticas de juego de solop: victorias (' + str(registro.getEstadisticas('solop')[0]) +\ ') empates (' + str(registro.getEstadisticas('solop')[1]) + \ ') derrotas (' + str(registro.getEstadisticas('solop')[2]) + ')' break

El listado 6 muestra el bloque de entrada del programa. Todo bloque que comience con if __name__ == '__main__':, es

equivalente a un bloque main en C o Java. El bloque main, en primer lugar, obtiene una referencia al registro. En futuras entregas recuperaremos ese registro bien de un fichero o de una base de datos. Por el momento, esto se consigue invocando al constructor de RegistroJugadores que mantiene un diccionario en - 52 -

memoria con los jugadores registrados y otro con las estadsticas de juego de los mismos. En segundo lugar, el bloque main crea una instancia de la clase JuegoTresEnRaya, pasando como referencia el registro obtenido y el nombre y contrasea del jugador. Estos dos ltimos valores son recuperados a partir de los parmetros pasados en la invocacin del programa, mediante la sentencia sys.argv[x], donde x indica el orden del parmetro, apuntando el ndice 0 al nombre del script. A continuacin, se permite que el usuario inicie una partida llamando al mtodo jugar() de la instancia de JuegoTresEnRaya. Al finalizar esta partida se pregunta al usuario si quiere seguir jugando y se repite este proceso hasta que el usuario no responda s. Finalmente, antes de terminar el programa se muestran las estadsticas de resultados de los enfrentamientos entre la mquina y el usuario indicado. La figura 4 muestra una sesin del juego de tres en raya. ****LADILLO: Conclusin Este artculo ha mostrado la sintaxis del lenguaje Python y ha ilustrado su uso a travs de la elaboracin de un simple juego de tres en raya. A travs de la elaboracin de este pequeo programa hemos podido comprobar la simplicidad de Python y sus capacidades para elaborar de manera rpida cualquier tarea de programacin que tengamos en mente. En la siguiente entrega de esta serie veremos como proporcionar una interfaz grfica a este juego y cmo mantener el registro de jugadores y sus estadsticas en varios ficheros. ****FIG1.TIF: Pgina web Python.org ****FIG2.TIF: Sesiones interactivas en Python. ****FIG3.TIF: Documentacin de la Librera de Python. ****FIG4.TIF: Sesin de Juego del Tres en Raya

- 53 -

V.

REFERENCIAS BIBLIOGRFICAS ICG (Instituto de Construccin y Gerencia).

1. Publicaciones

PAVIMENTOS. 3ra.Edicin 2009. Lima Per. Pgs. 185 195. 2. ORTA, Pedro Andrs. Pavimentacin con Adocretos, una tecnologa amistosa con el medio ambiente. Tecnologa y Construccin. [online]. dic. 2009, vol.25, no.3 [citado 12 Agosto 2010], p.47-58. Disponible en la World Wide Web: <http://www2.scielo.org.ve/scielo.php?script=sci_arttext&pid=S079896012009000300004&lng=es&nrm=iso>. ISSN 0798-9601. 3. ICPA (Instituto Cemento Portland). Construccin de Pavimentos de

Adoqun de Hormign. Lima Peru 2009. 4. Reglamento Nacional de Edificaciones. Norma CE.010. Pavimentos Urbanos. Lima Per 2010. Pg. 38 5. Reglamento Nacional de Edificaciones. Norma CE.010. Pavimentos Urbanos. Lima Per 2010. 6. German Vivar Romero. Diseo y Construccin de Pavimentos. CIP. Segunda Edicin Setiembre 2005. Lima Per. 7. Caballos, Sierra Javier, Curso de programacin, Mxico D.F., Editorial Alfa Omega, 2a edicin. 8. Jonanes, Aguilar Luis. Algoritmos, estructuras y objetos, Editorial McGraw Hill. 9. Jurez, Badillo, Rico Rodrguez. Teora y aplicaciones de la mecnica de suelos, tomo II. Mxico D.F., Editorial limusa, 1995 10. Plazola, Cisneros, Plazola Anguiano.Normas y tcnicas de

construccin, volumen 1, Editorial Limusa, 3 edicin, Mxico D.F.

- 54 -

11. Distrito Federal, Tomo I No.103-BIS, dcima cuarta poca, Mxico 2004
12.

Navarro Caballero Enrique Omar, Manual De Apuntes Anlisis Y Diseo Estructural De Casas Habitacin

- 55 -

VI.

ANEXO

Anexo 01: CRONOGRAMA DE ACTIVIDADES FECHA DE INICIO: Abril 2013 FECHA DE TRMINO: Julio del 2013. ACTIVIDADES Revisin Bibliogrfica Bsqueda y adquisicin de bibliografa Elaboracin del Proyecto Antecedentes y formulacin del Problema Elaboracin del instrumento Captacin de datos Entrevista Procesamiento y Anlisis Presentacin del Borrador del Proyecto Procesamiento de los datos Anlisis e interpretacin Discusin de los resultados Revisin general de los. Resultados Preparacin del informe final Publicacin Presentacin y sustentacin del informe final SEMANAS / 2013
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

- 1-

S-ar putea să vă placă și