You are on page 1of 138

Semana1

Foro1:

A la luz de lo tratado en los contenidos de la semana y según su opinión, ¿qué herramienta de

programación resulta más adecuada para realizar la descripción ordenada de las distintas

actividades diarias de una persona? ¿Puede ser aplicada dicha herramienta para describir

cualquier situación? ¿Por qué? Fundamente su respuesta.

Buenas noches profesor y compañeros

Respecto de la pregunta planteada en el foro de la semana 1

La herramienta de programación más adecuada para realizar la descripción ordenada de las


distintas actividades diarias de una persona es, el Algoritmo. Puesto que está puede
expresarse línea por línea, en palabras, describiendo acciones o a través del diagrama de
flujo (representación gráfica), que a además contiene una simbología estandarizada, la que
es entendida por todos, teniendo o no los conocimientos.

Esta herramienta fue creada para percibir las necesidades que se presentan en las distintas
situaciones, y es una forma ordenada de sistematizarlos y de consensuar entre quien solicita
y quien desarrolla la tarea determinada. Por lo tanto, se puede representar el proceso desde
la entrada/inicio, hasta su salida/final. Este proceso requiere de tres estructuras básicas:
Secuencial, condicional y repetitiva. Y a su vez requiere de estructuras de control:
Secuenciación, selección y repetición, las que trabajan con distintos flujos dentro de un
mismo programa.

Saludos cordiales.

Por otra parte, la diferencia entre el pseudocódigo y el diagrama de flujo, estaría en que la
primera

es una forma escrita del algoritmo, que representa un término intermedio entre el lenguaje

humano y el código; mientras que el diagrama de flujo es la representación gráfica


mediante

símbolos. La utilización de una u otra dependerá del momento en el proceso de desarrollo y


de las

distintas informaciones que se necesiten registrar para poder garantizar un óptimo


resultado.
Foro 2:

¿Qué problemas podemos encontrar al utilizar el lenguaje natural o los diagramas de flujo
para

describir la secuencia de ejecución de un programa complejo y cómo podemos evitarlos?


¿Cuál es,

según usted, el problema de utilizar programación con saltos para abordar problemas de
tipo

complejo? ¿Por qué? Fundamente su respuesta.

El problema que podríamos encontrar al utilizar el lenguaje natural, es tener imprecisiones


en cuanto a los pasos secuenciados para poder seguir un proceso dado. Podríamos caer en
subjetividades o saltarnos líneas consecutivas dentro de un algoritmo. También sería más
complejo seccionar en partes más pequeñas un problema dado, sobre todo si tenemos por
objetivo categorizar los pasos de un problema en estructuras simples, es decir en:
secuencias, selecciones y repeticiones. .

El problema que se podría tener en un diagrama de flujo, es la lentitud para poder


reproducirlos adecuadamente y lo complejo de su modificación sin tener que alterar el
dibujo del diagrama completo (por ejemplo, cuando se detectan errores, mejorar el
programa o agregar nuevos procesos).

Para evitar problemas en la utilización del lenguaje natural, podemos secuencias las
actividades que necesite desarrollar un proceso dado. Esta secuencia lógica llamada
Algoritmo, permitirá poder traspasar a lenguaje de código un proceso explicado en forma
naturalmente humana. Para llegar a él, se puede desarrollar un paso intermedio llamado
“Pseudocódigo” el cual ayuda a diseñar un programa secuencial, lógicamente ordenado,
vislumbrando los pasos necesarios para resolver un problema, es “intermedio” porque es
una mezcla de lenguaje humano con código puro. De esta manera sería más sencillo poder
ir corrigiendo, agregando nuevos procesos al flujo de un programa y detectar errores en
alguna parte del código.

El problema de utilizar saltos, es que a medida que se va “escalando” dentro de un sistema


más complejo, se hace cada vez más engorroso y difícil poder auditar errores así como
también poder corregir, mejorar o cambiar alguna función desarrollada dentro del código de
algún módulo o sistema. Esto, ya que al variar una parte de todo el código, probablemente
se alteren muchas otras al estar “unidas o consideradas” dentro de una función “ir a”.
También se hace complejo poder entender cómo es el flujo final de las operaciones que
estén implícitamente escritas en cada order “GoTo”.

(volver)

Semana 2

ALGORITMOS PARA LA PROGRAMACIÓN ESTRUCTURADA ................................................................

OBJETIVOS ESPECÍFICOS

........................................................................................................................... 4

● coprender tipos de algoritmos existentes dentro de la programasión estructurada

● usar distintos tipos

● utilizar elementos para representarlos


INTRODUCCIÓN

...................................................................................................................................... 4

● permiten obtener buenos resultados cuando realizamos una acción o resolvemos un

problema

● se sigue una serie de pasos establecidos

● es posible de representarlo de distintas maneras

● pseudocódigo y diagramas de flujo

○ herramientas para visualizar el algoritmo

○ comprueba el funcionamiento

● tipos de datos y operadores que soporta un lenguaje

● doferencias entre constantes y variables

1. FORMAS DE REPRESENTAR UN ALGORITMO .............................................................................. 5

● serie de pasos para un objetivo

● el pseudocódigo y el diagrama de flujo evita impresiciones del lenguaje natural


1.1. DIGRAMAS DE FLUJO ........................................................................................................... 5

● representación grafica de un algoritmo

● muetra flujo lógico

● simbología normada por la ANSI

● se usa en pequeños algoritmos

● simbolos

● principios

○ debe tener inicio y fin

○ lineas rectas

○ lenguaje distinto del código

○ arriba a abajo, iquierda a derecha

○ diagramas extensos, ennumerar bien las páginas saber de donde viene y donde se va.
○ cada símbolo solo puede tenr una linea

1.1.1. DECISIONES EN UN DDF .............................................................................................. 7

● solo se puede elegir si o no

● false o true

1.1.2. CICLOS EN UN DDF ...................................................................................................... 8

● es posible utilizar estructuras de repetición

● se vuelve a algun elemento anterior después de una decisión

1.2. PSEUDOCÓDIGO .................................................................................................................. 8

● mezcla lenguaje natural y codigo

● de manera secuencial

● descri´cion de una programa

● usa palabras que identifican los procesos


● supera los problemas del DDF

○ lentitud

○ dificil modificación

○ permite facil mejoras

○ permite agregar nuevos procesos

● Facilita un lenguaje más cercano al natural

● obliga precición preestablecida

○ palabra clave

○ ejemplo: selección

■ iteración

■ instrucciones adicionales

■ estructuras de control

■ estructura general
■ comienza con la palabra “Proceso” + nombre

■ termina con “FINPROCESO”

■ cada instrucción termina con un punto y como “ ; “

■ la variable usa <- , ejemplo iva 19 sería “iva<-19”

■ valores desde el teclado, la instrucción es “leer”

■ Estructuras de selección

2. ELEMENTOS DE UN LENGUAJE DE PROGRAMACIÓN REPRESENTABLES MEDIANTE ALGORITMOS

..................................................................................................................................... 10

● elementos basicos de todo lenguaje

● se realizanoperaciones con ellos

● conocer los operadores

● diferencias entre variables y constantes


● lenguaje PHP

● porque?

○ simple

○ poderoso, de alto nivel

○ logros concretos para medir avance

● es necesario declarar y asignar variables antes de usarlas

● posee una gran libreria PHP

● PHP se integra con HTML en simple

○ se pueden publicar paginas web

● creado el 94

● modificación del original PERL


2.1. TIPOS DE DATOS ................................................................................................................ 12

● Numeros enteros

○ integer en ingles, no decimales, positvos y negativos

● nros, reales:

○ con decimales + y -

● cadenas de caracteres

○ strings en ingles

○ contineen datos en hilera

○ representa mensajes, nombres, direcciones, productos, se encierra entre comillas

○ ej.: “hola mundo”

● datos boleanos
○ solo puede ser true o false

● se debe indicar que tipo de dato se almacenará

● PHP PUEDE GUARDAR CUALUIER TIPO DE DATO EN UNA VARIABLE.

2.2. CONSTANTES Y VARIABLES ................................................................................................ 12

● constante: dato que no puede cambiar

○ se asigna un nombre

○ Ejemplo, el iva 19%

● variable

○ si puede cambiar

○ pueden arrojar un dato

○ tresaspectos

■ nombre
■ contenido

■ tipo de dato

○ permiten acceder al lenguaje a estructuras de datos y manipular información

○ los nombres deben cumplir reglas:

■ comenzar un una letra con un guión bajo

■ minuscula, mayuscula, digito y caracter especial

■ np tildes ni ñ,

■ conveniente nombre corto, no + de 20 caracteres

2.3. OPERADORES ..................................................................................................................... 13

● elementos del lenguaje

○ toma 1 o + valores y producen otro valor

○ operadores de 1 valore (unarios)


○ operadores 2 valores (binarios) como suma o resta.

● PHP agrupa operadores segun sus funciones

2.3.1. OPERADORES ARITMÉTICOS ..................................................................................... 14

● operaciones matemáticas básicas

2.3.2. OPERADORES DE COMPARACIÓN ............................................................................. 14

● algo trivial pero muy usado en programación


2.3.3. OPERADORES LÓGICOS ............................................................................................. 14

● equivalentes en PHP con aritméticos

● para resultados de expresiones, eje.: estructuras de selección

2.3.4. PRECEDENCIA DE LOS OPERADORES ......................................................................... 15

● los pc no priorizan operaciones, por ello tienen una tabla de precedencia.

● la precedencia e puede forzar con el uso de parentesis

COMENTARIO FINAL ..........................................................................................................................

17

REFERENCIAS ........................................................................................................................................

18
(volver al indice)

Semana 3

Foros

Foro 1

Explique las principales características de la estructura if-else y proporcione 2 ejemplos de la vida

real en los cuales se utilice dicha estructura. No repita los ejemplos planteados por sus

compañeros.

Principales características de la estructura if-else:


● if, significa “si”; a diferencia de “yes” del inglés que significa “afirmación”; “if” tiene que

que ver con “si es que pasa algo”.

● se puede traducir como “de lo contrario”

● puede evaluar si se cumple una sentencia

● puede ejecutar una sentencia si no se cumple una condición.

----

Ejemplo de la vida real 1:Notas menores a 3.9 del colegio. (pseudocódigo)

Si <el promedio de las notas colocadas mensualmente es menor a 3,9>

Entonces

<Enviar email de aviso al alumno y al apoderado>

Sino

<No enviar email>


FinSi

----

Ejemplo de la vida real 2: Asistencia a clases por asignatura

Si <el alumno está presente>

Entonces

<se pone signo check en la lista, se repite para la siguiente hora con posibilidad de modificación y

se suma al conteo de alumnos en clase durante la hora>

Sino

<se pone signo equis en la lista, se resta del total de alumnos en clase durante la hora, se repite

para la siguiente hora con posibilidad de modificación y se envía aviso a inspectoría respecto de la

ausencia>
FinSi

De esta manera, cada vez que una instrucción requiere evaluar una condición para saber si se

cumple o no, se podrá utilizar esta estructura de control. Así, en caso de que se cupla, podrá

ejecutar las instrucciones que estén asignadas a esta condición cumplida; en caso de que no se

cumpla la condición, realizará las otras instrucciones durante la ejecución del flujo del programa.

Cada grupo de instrucciones se les denomina “Ramas” de código.

-------

FORO 2

En su equipo usted hace clic sobre un recurso y aparece una ventana con el siguiente mensaje “El

recurso no ha podido ser accesado, ¿desea reintentar?”. En este caso, ¿qué tipo de bucle se

utilizó? ¿Hubiera sido posible realizar lo mismo con otro bucle? Fundamente su respuesta.

En el caso de que hubiese realizado un click sobre un recurso y hubiese aparecido una ventana con

el mensaje “el recurso no ha podido ser accesado, ¿desea reintentar?”; el bucle utilizado
probablemente hubiese sido el “if else if”.

El algoritmo debe haber sido algo como:

● se muestra una lista de opciones definida (supongamos 3)

● cada una corresponde a las opciones del else-if

● se selecciona una de las opciones

● si la opción definida no permite acceso, mostrar el mensaje “El recurso no ha podido ser

accesado, ¿desea reintentar?”

● luego, volver a la lista de opciones anterior.

Esta acción también se podría haber realizado con el bucle SWITCH, por ejemplo switch case,

indicando por defecto las posibilidades de volver al anterior o simplemente salir de las opciones de

la ventana y volver al inicio.


El algoritmo podría ser algo como:

● se muestra una lista de opciones (supongamos 3)

● luego se evalúa la opción 1

● si no corresponde, se pasa a la siguiente

● se evalúa la opción 2

● si no corresponde, se pasa a la siguiente

● se evalúa la opción 3

● si no corresponde, se pasa a la siguiente

● se continúa con el valor por default, que sería el mensaje “el recurso no ha podido ser

accesado, ¿desea reintentar?”.

--------------------------

Apuntes de Lectura
ESTRUCTURAS DE CONTROL APLICADAS A LA PROGRAMACIÓN ESTRUCTURADA ............................

OBJETIVOS ESPECÍFICOS

........................................................................................................................... 4

● comprender estructuras de control

○ condicionales

○ iteración

● aplicarlas

● utilizarlas para resolver problemas

INTRODUCCIÓN

...................................................................................................................................... 4
● importancia de !controlar el flujo de un programa”

● Manejo de las estructuras de control

● el flujo puede controlarse a través de

○ las estructuras de iteración

■ permiten repetir un bloque de instrucciones

■ una cierta cantidad de veces o

■ hasta que se cumpla una condicion

○ las estructuras condicionantes

■ tambien se llaman de “raificación”

■ evaluan una condición

■ deciden si ejecutar o no una rama de código u otra

1. ESTRUCTURAS DE CONTROL DE ITERACIÓN................................................................................ 5


● cuando es necesario utilizar más de una vez una misma instruccion o serie de instrucciones

se puede ITERAR

● por ejemplo:

○ solicitar el nombre de 300.000 personas.

○ Acá no es necesario escribir la misma cantidad de líneas.

● Semana 3, se verán 3 estructuras de control de ITERACIÖN

○ While (mientras)

○ Do-while (hacer mientras)

○ For (para)

● Iteración o ciclo es lo mismo, también lo son bucle y loop

1.1. WHILE .................................................................................................................................. 5


● este bucle itera “mientras” ocurre algo

● se pueden repetir instrucciones indeterminadas veces

● se escribe especificando una condición y se ejecutará mientras la condición se cumpla.

● Ejemplo utilizando PSelnt en PSEUDOCóDIGO

● en DF

● Ejemplo utilizando una cantidad de datos indeterminada

○ “Ingrese nota alumno, cuando termine de ingresarlos, (presione “S” para salir)”

● Importante:

○ el ciclo while evalúa la condición ANTES de ejecutar el código

○ si no se cumple la condición, nunca se ejecutarán las instrucciones dentro del bucle


○ en el ejemplo, si el usuario entre la letra “S”, no sería necesario ejecutar el código del ciclo.

1.2. DO-WHILE ............................................................................................................................ 7

● significa “HAcer mientras”

● similar al ciclo while

● ambos se usan cuando no se sabe la cantidad de veces que se necesita repetir el ciclo.

● ambos tienen una condición que se debe evaluar para continuar el ciclo

● la diferencia

○ este código se ejecuta al menos una vez

● ejemplo Pseudocódigo

○ con DF


● La diferencia

○ está en el momento en que se evalúa la condición

● todo ciclo puede escribirse con ambos y viceversa

1.3. CICLO FOR ............................................................................................................................ 7

● distinto de los anteriores

● se utiliza cuando se sabe la cantidad de veces que se debe ejecutar e bloque de

instrucciones

● no es intuitivo

● Se utiliza con una cantidad determinada de veces

○ se indica en 3 instrucciones que en conjunto forman la condición del ciclo “for”

○ Las instrucciones necesarias para el ciclo for son:

■ Condición inicial (rojo)

■ Condición de salida (azul)


■ variación de la condición inicial (verde)

○ ejemplo:

■ se necesita ejecutar un ciclo 10 veces

■ 1. se define una variable con un valor inicial (generalmente 0)

■ 2. se especifica la condición (en el ejemplo es que la variable sea <10)

■ 3. se indica un incremental (para que la variable vaya aumentando hasta llegar al valor

indicado 10)

■ traducción de la ejecución

● Pseudocódigo

● DF

2. ESTRUCTURAS DE CONTROL CONDICIONAL ............................................................................... 9

● tarea comun de un algoritmo

● decidir y ejecutar instrucciones

● condicionar el flujo de ejecución de un programa

● la condición permite elegir entre “RAMAS” de instrucciones

○ IF-ELSE

○ IF-ELSEIF-ELSE

○ SWITCH
2.1. IF-ELSE ............................................................................................................................... 10

● if se traduce “SI”

● else se traduce “de lo contrario”

● se usa para bifurcar el flujo de ejecución de un algoritmo

● descripción

○ cuando un programa se ejecuta

○ se evalúa la condición especificada en el IF

○ si la evaluación se cummple, se ejecuta el interior del código

○ si la evaluación no se cumple, se ejecuta lo que está en el código “ELSE”

○ Pseudicódigo

○ DF


○ Ejemplo en código

2.2. IF-ELSEIF-ELSE .................................................................................................................... 11

● estructuralmente es similar a la anterior

● se usa cuando se desean poner más condiciones en un mismo momento del código

● ejemplo “impuetos”

○ si una persona gana <100, se le cobrará 10% de impuestos

○ si gana entre 100 y 200, pagará 35%

○ si gana > 200, pagará 50%

○ Si se escribe con if sería:

■ a medida que se ponen + condiciones, se anidan + líneas y es- práctico.


○ la estructura else-if permite colocarlo de modo natural

■ EN DF se ve de la siguiente forma

2.3. SWITCH .............................................................................................................................. 13

● se comporta similar a las anteriores

● se usa para reevaluar una variable que puede tomar muchos valores

● ejecmplo de codigo

● la sentenicia SWITCH-CASE

○ el programa reconoce el valor de una sentencia “caso1”

■ si se cumple, ejecuta todas sus instrucciones hasta que encuentre un BREAK

○ si el programa reconoce el valor de una sentencia “caso2”

■ si se cumple, ejecuta todas sus instruciones hasta que encuentre un break.

○ si no reconoce ningun valor en la vriable, ejecutará lo que está parcado como “default”

(por defecto)

○ Estructura en Pseudocófico

○ Estructura en DF

● Ejemplo igua utilizando if y switch


COMENTARIO FINAL ..........................................................................................................................

16

● estructuras de control

● mecanismos potentes para desarrolladores

● permite controlar el flujo de un programa

● bifurca eementos

● ejecuta ciertos segmentos del código

● itera ciertos elementos

● diferencia entre switch y el ifelse


○ switch

■ evalua el valor de una variable

■ es mas eficiente generalmente que una serie elseif

○ elseif

■ permite evaluar contra una expresión

■ es más util que evaluar contra un valor.

REFERENCIAS ........................................................................................................................................

17

(volver al índice)

Semana 4

introduccion
● evaluar uso de diferentes estrucutas en un problema

● diagnositoc de caracteristicas estructurales y pontenciales

● identificar ventajas y desventajas

● aplicar diferentes estructuras

● estructuras de datos

○ construcciones lógicaas

○ dentro de un programa

○ tienen ciertas características


○ se debe dominar las estrucutas

○ per,otem reañzar naturalmente labores no triviales de algoritmos

○ facilitan labores

■ como ordenar datos

■ accesarlos eficientemente

○ 3 tipos de estructuras

■ arreglo

■ pilas

■ colas

1. arreglos

■ se manerjan muchos objetos de lmismo tipo en programas computacionales

■ ejemplo:
● banco, maneja cuentas de clientes.

■ pueden ser cientos, miles

■ es imposible declarar una vaiable para cada uno de estos datos

■ la organización de ellos sería algo dificil y mayor

■ para ello se construye una estructura de datos

● almacena y nombra el conjuto de información

■ jemplo: jueces otorgan puntajes a clavadistas en deportes

● son 6 jueces

● cada uno asigna valor fracionario

● a cada participante

● 6 valores que se recolectan

● se manejan de distinta forma

● ordenados de mayor a menor,


● viceversa

● desviación

● promedio

● naturalmente se ordenarían :

● si se escribe un codigo para determinar el mayor puntaje, se utilizaría la estructura de

control y el código sería algo como:

● si fuesen 6 puntajes serían más complejos

● si se solicita un algoritmo que muestra los puntajes ordenados de menor a mayor se

necesita un algoritmo distinto.

● una forma eficiente de realizarlo es con un ciclo

○ este lo puede visitar del puntaje uno al 6. el problema es que un ciclo no puede combinar

6 variables.

● se busca una forma de manejar índices

○ forma de referirnos a puntaje como puntajesub cero, puntaje sub uno y así sucesivamente.
○ ejemplo

○ el ejemplo anterior puede determinar el mayor puntaje entre el grupo.

■ Arreglos

● básicamente es una colección de variables

● dependiendo del lenguaje pueden ser de distinto o igual tipo

○ en PHP puede ser distintos

● Analogía

○ variable como un CD

○ arreglo, sería el porta CD

○ así se pueden tener los discos ordenados en vez de estar repartidos en distintos lugares.

● Forma de arreglos en PHP


● Análisis del ejemplo

○ “puntajes”: nombre de la variable

○ “array”: tipo de datos, en donde se indica que es una colección de elementos.

○ Cada elemento de esta coleccion tiene el nombre $puntajes[0], $puntajes[1],...,

$puntajes[5];

○ El dibujo tradicional de un arreglo es

○ en un arreglo, el primer elemento iempre es cero [0]

○ El índice contenido en los paréntesis cuadrados puede ser una “Variable” o una “expresión

aritmética”.

○ ejemplo de ambas

○ gracias a estas precisiones se pueden imprimir los elementos en las posiciones 3 y 4 del

arreglo;

○ también se pueden escribir loops inteligentes.

○ si se quisiera saber el mayor puntaje de un clavadista,


○ Esta forma de escribir es más sencilla que si se utiliza una serie “if”.

■ su gran ventaja es que puede extenderse a 10 jueces, 30 o 100, mientras que con el “if”

sería más complejo.

○ cuando se plantea el cambio de valor de i en cada iteración

■ se pueden examinar todos los elementos del arreglo

■ permite resolver el problema como el planteado de los jueces del clavadista

○ los arreglos pueden almacenar

■ números, como en el ejemplo anteriro

■ enteros

■ carácteres

■ cadenas de carácteres

■ cualquier objeto que se desee


■ ejemplo:

1.1 arreglos con llaves

● ventaja de “arreglos” en PHP

● se puede utilizar para acceder a un valor

○ ejemplo de un hotel con varios dormitorios

■ se puede acceder a uno indicando su número

○ se puede asignar llaves para acceder amigablemente a ellos

■ a estos arreglos se les denomina “arreglos asociativos”

○ ejemplo:

■ se desea almacenar en un arreglo información de una persona en específico

● nómbre,
● apellido

● edad

● sexo

● día de nacimiento

● mes de nacimiento

● añoo de nacimiento

● ruto

● digito verificador

● numero de teléfono

● direccion

● número de la dirección
● número de departamento.

■ al utilizar arreglos con índices se tendrá algo como lo siguiente:

○ lo anterior crea la siguiente estructura:

○ esta es una estructura válida,

■ pero algunas veces podemos olvida que $persona[5] hace referencia al mes.

■ para tener claridad en ello usamos las llaves en cada campo

■ de forma general de declarar una llave de este estilo es:

■ por ello, en vez de usar $persona[5] para referirse al mes, se utiliza una llave explicativa:

● $persona[‘mes_nasc’]

● al usar este tipo de arreglos, se puede acceder directo al valor de un campo usando su

llave:

● este tipo de arreglos permite:

○ hace más amigable el código

○ mayor facilidad de mantenerlo.

2. Pilas

○ ejemplos:

■ pila de platos al lavar la loza

■ una pila de papeles

■ al colocar baterías a una linterna, se instalan en forma de pila

○ todos tienen en común que el último elemento al entrar es el primero en salir.

■ a este tipo de pila se les llama “LIFO”


● del inglés “último en entrar, primero en salir”; “last in, first out”

○ se usan con frecuencia en computación

○ ejemplo:

■ en un editor de texto:

● todos los comandos quedan en una pila

● cuando se comete un error

● se presiona el botón deshacer

● reversa el último cambio ejecutado

● esto equivale a retirar un elemento de la pila

○ principal característica

■ restringen el acceso a los datos

■ sólo podemos acceder a los datos que están en la cima de la pila

■ si se desea un dato del fondo, debemos extraer todo los datos anteriores sobre él.

○ las pilas

■ soportan operaciones básica para interactar con ellas.

■ ejemplo:

● si se desea agregar un elemento

● existe una operación encargada de ello denominada “push”

● para extraer, se llama “pop”

■ en PHP existe facilidades que permiten trabajar mejor las pilas

● provee de algunos “comandos”

● ejemplo:

○ este código:

■ declara un arreglo sin elementos


■ luego realiza un push de cinco elementos

■ 17 fue ingresado primero, por ello queda al fondo de la pila

■ 12 fue ingresado último, queda al tope de la pila

● si se requiere la operación inversa

○ retirar los elemento de la pila

○ el código sería:

○ esta instrucción retira el primer elemento de la pila

○ en el ejemplo, corresponde al valor 12

○ es posible asignar el valor obtenido de esta forma a una variable declarando en conjunto

con este comando:


3. Colas

● ejemplos:

○ al pagar en el supermercado, uno se debe ubicar en una cola

○ para echar bencina, los autos se colocan en cola

○ en la esquina, en un semáforo en rojo, los autos esperan el verde en una cola.

● en todas las situaciones, en las colas se debe esperar el turno propio.

● se atiende en orden de llegada

● se denominan FIFO, first in first out; primero en entrar, primero en salir.

● esta propiedad “en cola” es útil

○ asegura que los elementos serán procesados en el orden en que fueron insertados en ella.
○ ejemplo:

■ escribir la palabra c,a,b,a,l,l,o.

■ si el equipo procesara en otro orden, la palabra quedaría ilegible.

○ cuando se necesita asegurar el orden de las operaciones, la estructura en cola es la ideal.

● Las colas

○ soportan operaciones básicas

○ para agregar un elemento, la operación se denomina “queue” (encolar en español)

■ siempre se agrega un elemento al final de la cola

○ para quitar un elemento (siempre es el primero de la cola) se llama “dequeue”

(desencolar)

● En PHP

○ eisten algunas facilidades, enmarcadas en algunos “comandos”.

○ ejemplo:

■ en el ejemplo se declara un arreglo sin elementos $cola=array()

■ luego encola cinco elementos

■ 12 fue el primer ingreso

● queda al principio de la cola

■ 17 fue el último ingreso

● “queda al final de la cola

■ si se quiere hacer la operación inversa “dequeue”

■ el código sería:


■ Es posible asignar el valor obtenido de esta forma a una variable, declarando en conjunto

con este comando:

Comentario

● las structuras de datos son parte básica de dominar de un desarrollador

● el manejo de arreglos es algo básico

● arreglo

○ estructura que permite almacenar un conjunto de variables

■ bajo un mismo nombre

■ se pueden accesar según sus índices

■ o también según sus llaves si se han declarado

● colas

○ los elementos ingresados se pueden extraer en el mismo orden en que fueron insertados

○ esta propiedad es fundamental cuando el orden en que se ejecutan o procesan los datos
es importante

● las pilas

○ son parecidas a las colas

○ la diferencia es que el primer elemento ingresado, es el primero en salir

○ son utilizadas para dar estructura a la memoria de un computador o en la forma en que el

CPU del computador accede al registro.

---

Buen día Alumn@s.

Para aclarar una de las dudas comunes al hablar de array y su uso como pilas y colas, les comento:

Pilas y colas son el mismo tipo de datos; es decir, ambos son de tipo Array. Lo que determina si es

una Pila o Cola es su comportamiento, la forma en que inserta un elemento y la forma en que

extrae un elemento.

Pilas: inserta un elemento siempre al principio del array y extrae siempre el elemento que se

encuentre en el principio del array.


Colas: inserta un elemento siempre al final del array (cuando el array está vacío, el elemento

insertado queda al principio) y extrae siempre el elemento que se encuentre en el principio de

array.

Como ven ambos comparten el mismo método de extracción.

Ahora, en Php tenemos varios funciones para insertar y extraer de array: pop, push, shift, unshift.

Y cada uno de estos tiene su propia función, uno sirve para insertar al inicio, otro para insertar al

final, otro para extraer del inicio y otro para extraer del final.

Estos métodos son independientes del uso de pilas y colas. Por lo que ustedes para identificar si es

pila o cola, deben evaluar cuales de estos métodos se está usando y determinar la manera como

inserta y extrae del array, así sabrán si se esta comportando como pila o como cola.

Saludos.

(volver al índice)

SEMANA 5

-------------------------------------

FORO2
Un colega le informa que para acceder a un archivo remoto se necesita un usuario y una

contraseña.

¿Cuál cree usted que es la forma de acceso que su colega está utilizando?

Si un colega tiene la oportunidad de informarme que puede acceder a algun archivo remoto con

usuario y contraseña, probablemente pueda estar utilizando alguna de estas dos posibilidades de

acceso:

Una es FTP:

- requiere la autenticación de usuario y su password o contraseña “por default”.

- para ello, el usuario y contraseña debe ser ingresada en la direccion URL de la siguiente

manera: ‘ftp://user:password@ftp.ejemplo.com/dir/al/archivo’

- en este caso, el colega puede “escribir” solo si tiene los permisos o privilegios para ello y

sólo puede agregar archivos nuevos, no editar existentes.


otra podría ser CURL:

- ya que soporta protocolos FTP

- es ampliamente utilizada debido a la variedad de protocolos que soporta

- entre los específicos que pusiese utilizar el colega estarían:

- FTP uploading

- continuación de transferencias interrumpidas y

- autenticación user-plus-password.

-------------------------------

FUNCIONES Y USO DE ARCHIVOS ........................................................................................................

4
OBJETIVOS ESPECÍFICOS

........................................................................................................................... 4

● nalaizar y utilizar

● funchones php

● aplicar recepción de resultados

● operar datos mediante archivos locales y remotos con PHP

● utilizar permisos

○ para operación con archivos mediante PHP


INTRODUCCIÓN

...................................................................................................................................... 4

● qué son las funciones

● cómo ayudan

● como se aprovechan

● funciones

○ tecnica efectiva

○ estan presentes en todas las aplicaciones actuakles

○ conocer funciones

○ escribir funciones

■ de plantilla

■ propias originales

● a veces se solicita que la entrega sea fácil de manejar

○ si la salida es extensa
○ o se solicita que sea la entrada de otro programa

○ se debe trabajar con archivos

■ para lectura

■ para escritura

○ los archivos pueden ser locales

■ sel mismo equipo

○ o remotos

1. TIPOS DE FUNCIONES EN PHP ..................................................................................................... 5

1.1 INCORPORADAS EN EL LENGUAJE ....................................................................................... 5


● php tiene funciones internas del lenguaje

● “funcion no definida”

○ riezgo de encontrarn en PHP

○ para solucionarlas se necesitan extensiones compiladas específicas de PHP

○ PHP está estandarizado con muchas funciones y consstrucciones

● ejemplos

○ imagecreatetruecolor()

■ exige que PHP haya sid compilado con soporte para GD

● GD, libreria linuxpara trabajar imágenes

○ mysql_connect()

■ sirve para abrir una conexxion a una base de dato

● se necesita que php se haa compilado con soporte para MySQL o que se instale la

extensión correspondiente.

● funciones nucleo
○ son las predefinidas en PHP

○ ejemplo

■ funciones string

■ dunciones de variable

● funciones cargadas

○ pueden ser ejecutadas por comandos

○ ejemplos

■ phpinfo()

■ get_loaded_extensions()

○ y las cargadas por defecto

● para escribir correctamente en PHP

○ comprender
○ interpretar

■ el prototipo de cada función

● sintaxis

● foram de funcionamiento

● resultado que arroja su ejecucion

● argumentos qu toma omo entrada son pasados por parámetro

● etc

○ mayor profundicazión del codigo y funciones en :

■ http://www.php.net/manual/es/funcref.php

(volver al inicio)

Función COUNT

● retorna la cantidad de elementos en un arreglo

● toma como parámetro el arreglo


FUNCIÓN ARRAY_DIFF

● calcula la diferencia entre dos arreglos.

● toma como parámetro dos arreglos

Función ARRAY_SEARCH:

● busca un elemento dentro de un arreglo;

● si lo encuentra, retorna la llave de su posición

● sino, retorna FALSE

● toma como parametros el valor a buscar y el arreglo donde buscarlo

Función ASORT

● ordena un arreglo,
● toma como parametro el arreglo a ordenar

Función ARSORT

● idéntica a la anterior, pero en orden inverso.

Función EXPLODE:

● separa strings que contienen un delimitador

● toma como parámetros el delimitador y el string a separar

● Notese que retorna un arreglo

Función STRTOUPPER:

● toma un string, lo convierte en mayúsculas

● toma como parámetro el string a convertir


1.2 DEFINIDAS POR EL USUARIO ............................................................................................... 7

● en los lenguajes modernos, se puede definir una funcion propia

● cualquier código validament eescrito puede formar parte de una función

● puede incluir otra funciones

● puede incluir definiciones de clses

○ colección de variables y funciones

● las reglas de otros tipos de etiquetas sonn aplicables tambien a los nomrs de las funciones

en php

● el nombre de una función válida debe tener:


○ comenzar por una letra o guión bajo

○ puede estar seguido de cuelqier

■ numero de letras

■ numeros o

■ guiones bajos

● las funciones ophp no necesitan ser definidas antes de su diferenciación a menos que

estencondicionalmente definidas

● las funciones igual que ne las clses en PHP tienen un ámbito global cuando

● tradicionalmente

○ se especifica que se va a realizar una funció indicando en elparéntis la caantidad de

parmántros recibirá

○ ejemplo: definir una funcion que devuelva la multiplicación de dos números


1.3 FORMAS DE PASAR PARÁMETROS ...................................................................................... 8

● debe tenerse claridad en la sintaxis

● debe tenerse claridad en la forma de pasar informacion con la cual debe operar para

cumplir su fin

● esta info que se pasa, se llama parámetro

● se les puede pasar informacion a las funciones a través de una lista de ARGUMENTOS

○ son expresiones separads por comas

● Formas habituales soportadas por PHP para pasarle argumentos a una función son:

○ por valor (por defecto)

○ por referencia
○ por valores de argumentos predeterminados

● POR DEFECTO

○ o sea

■ cuando se pasa una variable a una función, en realidad se pasa el valor de dicha función,

no la variable.

○ al pasarle una variable a una función en PHP, este realiza una copia de ella y utiliza esta

copia

○ em realidad nunca se altera el valor que tenía la variable originalmente

○ anteponiendo el signo “AMPERSAND” (&) al nombre del argumento se logra que

■ este sea siempre pasado por referencia a una función determinada

○ El signo debe ser colocado en la definición de la función Misma

○ asegurar la escritura de tres variables


○ rellenar la última variable si el usuario no la pone

1.4 VOID .................................................................................................................................. 10

● en ciertos lenguajes se debe declarar qué tipo de dato retornan las funciones

● cuando no retornan valores las funciones, se declaran como de tipo VOID (vacío)

● en PHP no se necesita

● cuando está vacío, la instruccion no tiene instrucción de “return” y se tiene el mismo

efecto.
2 RECEPCIÓN DE RESULTADOS ..................................................................................................... 10

2.1 CARACTERÍSTICAS FUNDAMENTALES ............................................................................... 10

● función, caja negra que entra un dato, se procesa y devueklve un valor

2.2 CONTEXTO DE USO ............................................................................................................ 11

● una función arroja un valor

● para capturar ese valor se asigna una variable

○ el codigo anterior se almacena en la variable “&resultado”

○ también se puede imprimir el resultado de la operación

● algunas funcinones no retornan valores,

○ solo son operaciones importantes para el algoritmo


○ se les denominan “procedimientos”

■ funciones que retornan “null” o “void”

3 ARCHIVOS LOCALES Y REMOTOS............................................................................................... 11

Características

● archivo local, un archivo que esta en el mismo servidor en donde ocurre PHP

● PHP por lo general es un lenguaje que ejecuta en forma remota

● si se quiere trabajar un archivo del equipo local en un servidor web, hay que asegurar que

este pose al capacidad de subir archivos

● para trabajar con archivos, PHP debe poder acceder con permisos a ellos

○ permisos de:
■ lectura

■ escritura

○ si es en una maquina windows

■ probablemente tenga todos los permisos

○ en linux o mac

■ se debe verificar que usuario tenga los privilegios necesarios

Contexto de Uso

● para abir un archivo se usa la funcion (en php) fopen

○ fopen acepta dos parámetros

■ nombre del archivo

■ modo en que se abrira el arhivo

■ lista de modos:

4 PERMISOS PARA ACCEDER ARCHIVOS ...................................................................................... 13

4.1 READ – WRITE (RW) / LECTURA – ESCRITURA ................................................................... 13

● para leer y escribir un archivo

● 5 modos

○ r+

■ lee y escribe

■ retorna error si no hay archivo


■ puntero inicio

● lee desde el inicio

○ w+

■ lee/escribe

■ no no existe archivo, intenta crearlo

■ si hay archivo previo, lo borra y crea nuevo

■ deja puntero en inicio de archivo sin nada que leer

○ a+

■ lee/escribe

■ si no hay, intenta crearlo

■ deja el puntero al final; no lee lo que hay por esa razon

■ si ya existe, no borra;

○ x+
■ lee/escribe

■ similr a w+

■ si el archivo existe, no lo borra y genera un error

○ c+

■ lee/escribe

■ similar a w+

■ no trunca el archivo,

■ si existe , no genera error


4.2 READ ONLY (RO) / SOLO LECTURA .................................................................................... 13

4.3 WRITE (W) / ESCRITURA .................................................................................................... 14

4.4 APPEND (A) / AÑADIR ........................................................................................................

........................................................................................................ 14

5 FORMAS DE ACCEDER A ARCHIVOS REMOTOS ......................................................................... 14

● se puede acceder a algun archivo fuera del servidor o computador en el que corre el

lenguaje

● PHP debe poseer los permisos para poder acceder a los archivos

○ tanto para eleer

○ como para escribir en ellos

● la función es fopen

● la ruta del archivo se esecifica el protocolo con uqe se debe recuperar el archivo, en este

caso es http
5.1 FTP ..................................................................................................................................... 15

5.2 HTTP .................................................................................................................................. 15

5.3 GET .................................................................................................................................... 16

5.4 CURL .................................................................................................................................. 16

COMENTARIO FINAL ..........................................................................................................................

18

REFERENCIAS ...............................................................................................................................

FORO1

Una empresa de juegos de azar realiza sorteos diariamente y los ganadores se escriben en un

archivo en el servidor web. El archivo contiene la información de los ganadores de todo el mes.
¿Cuál cree usted que debiera ser el método de acceso a ese archivo? Escriba un pequeño código

que realice esto.

¿Cómo cree usted que debiera recibirse el resultado de la función de escritura?

Método de acceso al archivo

Creo que se debiese utilizar el método “Añadir”

● de esta manera se puede agregar el nombre de los ganadores en el archivo.

● El modo a+ abre el archivo para lectura/escritura. Si el archivo no existe lo intenta crear. Si

el archivo existe, lo abre pero deja el puntero al final del archivo.

● Luego, se puede escribir el nombre de los ganadores que irían quedando al final del

documento.

Recepción del resultado de la función de escritura

<?php
$puntero=fopen("c:ArchivoGanadoresganadoresDelMes.txt","a+");

fwrite($file,"nombregranador");

$nombreganador="pedro peres , 2.222.222.-2 ";

Fclose($file);

?>

(volver al índice)

Semana 6

EXPRESIONES REGULARES Y VARIABLES .............................................................................................

4
OBJETIVOS ESPECÍFICOS

........................................................................................................................... 4

● construir algoritmos

● utilizar expresiones regulares y variables

● crear programa en PHP

INTRODUCCIÓN ...................................................................................................................................

● expresiones regulares herramienta poderosa

● ser constante en desarrollarlas

○ [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[AZ]{2,4}

● características básicas

● tiposde datos
● Variables variables

1. EXPRESIONES REGULARES ........................................................................................................... 5

1.1. SINTAXIS .............................................................................................................................. 5

● elementos de la sintaxis de expresión regular

● Set de caracteres:

○ regexp es un comando o expresión para buscar carácteres o cadenas de carácteres

○ buscar casa o caza se usa: ca[sz]a

○ buscar un dígito entre 0 y 9 o letra mayúscula entre A y H se usa: [0-9A-H]


● Negación

○ se puede solicitar excluir algo

○ metacaracter ^ ,

○ no calzar con qh se usa q[^h]

○ no calzar con queqhe: se usa que[^h]e

● repetición binaria

○ buscar caracter entre 0y1 vez

○ metacaracter ?

○ buscar patron cazan?

■ retorna: Caza porque la n esta 0 vez

■ retorna: cazan porque la n está 1 vez

● repetición

○ metacaracter *
○ el caracter puede estar 1 o más veces

■ busca tr*i : encuentra trio, poruqe la r ocurre una vez

■ también encuentra tio, porque la r ocurre 0 vez

● repetición única

○ metacaracter +

○ cuando pasa una o más veces

○ busca tr+i , encuentra trio porque la r ocurre una vez

○ no encuentra tio, porque la r ocurre 0 vez.

● repetición exacta

○ encuentra un patron que se repite una cantidad epecífica de veces

○ la cantidad se especifica entre llaves {}

○ buscar un string que tenga 8 números [0-9]{8} de un telefono movil

● agrupación
○ se pueden agrupar expresiones con ( )

● o lógico

○ operador

○ se quiere calzar uno u otro argumento al operador

■ buzcar ca[s|z]a , encuentra “caza” y también “casa”

1.2. CARACTERÍSTICAS ................................................................................................................ 6

● expresión regular

○ patron

○ describe una cantidad de texto

○ se aboradar como “regex” o “regexp”

● literal:
○ cualquier carácter de una búsqueda

■ buscar mpa dentro de campana

■ la búsqueda es literal

● metacarácter

○ caracter con significado específico y no se usa literal

■ ^ es un metacaracter

● target string

○ string sobre el que se realiza una búsqueda

■ buscar el patron “hola” es distinto de “Hola” por la mayúscula

● expresión de búsqueda

○ o xpresión regular
○ es el patron que se ntenta encontrar dentro del target string

● secuencia de escape

○ dice que se quiere utilizar un metacaracter como un literal

○ se utiliza el caracter backslash \ delante del metacaracter que se quiere utilizar como

literal

■ buscar (s) dentro de patatas, el patron que se debe usar es \(s\)

1.3. FUNCIONES DE PHP ............................................................................................................. 7

● solo se han presentado las caractristicas de la sintaxis de regexp

● ahora se verá cómo se utiliza dentro del código PHP

● Funciones nativas algunas de PHP para utilizarlas

● se recurre a la libreria de PHP

● Preg_match_all:
○ retorna los resultados de búsqueda de un patron

○ en simple funsiónrecibe 3 parámetros

■ primero es patron

■ segunto texto en que se realiza la busqueda

■ tercero es un arreglo en el que se almacenan los resultados

● Preg_replace:

○ realiza un reemplazo de texto

○ toma 3 parámetros

■ a. patron que se busca para reemplazar

■ b. texto que se insertará


■ c. texto sobre el que se trabajará

○ despues retorna el texto que resulta

■ ejemplo, reeemplazar los espacios en blanco en exceso:

● Preg_split:

○ separa un string

○ usa como separador una expresión regular

○ parámetros

■ a. el patron a buscar

■ b. el texto en donde se realizará la búsqueda

■ c. retorna el arreglo con los resultados


● revisar los conceptos en el Manual https://secure.php.net/manual/es/

1.4. POTENCIALIDADES Y FORMAS DE USO ............................................................................... 8

● las expreiones regulares son un arte

● ejemplos:

1.4.1. BÚSQUEDA DE FECHAS ................................................................................................ 8

● algo común

● buscqueda mediante regexp

● para el ejemplo se utilizará el formato aaa-mm-dd


● epresión regular para buscar fecha

○ 19 o 20 en la primera parte de la elxpresión para búsuqeda (19|20)

○ en el tercer y cuarto carácter se buscan cualquier núero entre 0 y 9 (19|20) [0-9] [0-9]

○ luego separador [- /.]

○ luego expresión del mes

■ primera parte calsa con los meses desde 01 a 09 y la segunda entre los meses 10 y 12

separados por la opción “o”

● ( 0 [1-9] | 1[012] )

○ separador nuevamente [- /.]

○ para el día, se separan 3 grupos

■ del 01 al 09 ; ( 0 [1-9]

■ o; |

■ del decena o veintena [12]


● desde 0 a 9 en ambos casos: [0-9]

■ o: |

■ del treintenta: 3

● desde 0 a 1: [01]

○ la expresión [- /.] reconoce fechas con formatos aaa-mm-dd aunque se haya usado

■ guión -

■ slash /

■ punto .

■ o espacio en blanco para separar

1.4.2. BUSCAR DIRECCIONES IP ............................................................................................. 9


● entontrar numero IP

● lo más trivial podría ser

■ expresión regular

■ busca dígitos en grupos de a uno hasta de a 3

■ funciona con direcciones IP tipos como las siguientes

● 10.123.111.45

● ó

● 211.110.95.11

● ó

● 999.999.999.999, pero esta no es una dirección IP válida

1.5. DINÁMICA INTERNA DE UN MOTOR DE EXPRESIONES REGULARES ................................. 10


● dos principales

○ regexp

○ orientados a texto

○ orientados a regexp

○ los segundos permiten funciones mas avanzadas

○ busca los carácteres en orden de isquerda a derecha, si no coinice comienza con la cadena

siguiente.

2. EXPRESIONES VARIABLES .......................................................................................................... 11

● cuatro tipos básicos

○ booleanos: guarcan true o false


○ enteros: numeros enteros positivos y negativos

○ reales o flotantes: numeros reales positivos y negativ

○ cadenas de carácteres: también conocidos como strings

● variables compuestos

○ en PHP

○ arreglos: coleccion de elementos de uno a más tipos, poseen indices o llaves si se

especifican

○ objetos: una variable puede almacenar un objeto

■ objeto sería un eleento que puede tener un numero designado de características y

métodos

● variables especiales en PHP

○ NULL: valor especial que dice “no hay valor” o “valor nulo”

○ Recurso: almacena referencias o punteros a arrchivos abiertos

○ conexiones a bases de datos similares


2.1. CONCEPTOS BÁSICOS DE LAS VARIABLES ......................................................................... 11

2.2. VARIABLES PREDEFINIDAS ................................................................................................. 12

● arrreglo $_SERVER

○ contiene 30 elementos con sus respectivas llaves, mayoria útiles

○ conitne info como cabeceras, rutas, ubicaciones de script

○ son creadas por el servidor web.

○ ver especificación CGi 1.1 al cuadrado en el manial PHP, ver acerca de las variables.


2.3. ÁMBITO DE LAS VARIABLES ............................................................................................... 15

● variables globales

○ son válidas en tdo el código en el que se escribe el programa

○ su ámbito es todo el programa

○ su vida perdura mientras se esté ejecutando el programa

● variables dentro de una funcion son las variables locales

● ejemplo

○ las variables globales se leen en cualquier parte


○ las variables locales solo se leen dentro de la funcion dada

2.4. VARIABLES VARIABLES....................................................................................................... 17

● ambas profucen el resuldato : hola mundo

3. FUNCIONES ................................................................................................................................ 19

3.1. FUNCIONES REGULARES .................................................................................................... 19

● funcione propias
○ caracteristicas

■ comenzar por letra o guion bajo

■ seguirse on letras , numeros o guiones bajos

● las funciones tienen un ámbito global

● forma egnerl de especificar una funcion es con la plalabra function

● ejemplo

○ solo arroja el valor final

○ si se desea que se muestre la oeración, se podría realizar algo como lo suiguiente

3.2. FUNCIONES VARIABLES ..................................................................................................... 20


COMENTARIO FINAL ..........................................................................................................................

21

REFERENCIAS ........................................................................................................................................

22

Semana 7

Al parecer, ambos tienen grandes posibilidades de ser utilizados para el proyecto con su pros y sus

contras. Sin embargo, la elección no iría por lo estrictamente técnico, sino más bien por el

rendimiento de la producción, las posibilidades de recuperarse de los posibles errores futuros (ya
que no habrá tiempo para probarlas) ya que siempre es necesario prevenir incluso sabiendo que lo

que viene es inevitable.

Ahora bien, el problema principal es la falta de tiempo, por ello, se necesita desarrollar algo

rápido. Entonces ASP.Net permitiría poder hacer con mayor facilidad y rapidez un desarrollo

productivo; frente a la posibilidad de que alguna parte del edificio desarrollado C++ pueda arrojar

un error en “las bases del edificio” sería muy complicado poder arreglar el problema en poco

tiempo.

Por ello, .Net sería la mejor opción. Ahora bien, si hubiese la posibilidad de poder dar mayor

espacio, sería más sencillo, ya que se podría probar, revisar e ir construyendo con seguridad.

En la construcción del edificio rascacielos (manteniendo la metáfora) hay un plan bien detallado

de los tiempos y de lo que se construye, no se puede decir “poco tiempo”, el tiempo que se toma

en construir algo, es el tiempo que se necesita y punto, no es menor. En cambio, en programación,

si puede haber menos tiempo considerando asuntos a favor y en contra, pero si la prioridad es tal

que afecta a que tampoco se pueda probar el compilador, ello ameritaría priorizar un lenguaje por

sobre otro.

Usted es el arquitecto de una solución de software y debe definir el lenguaje de programación a

utilizar. El gerente del proyecto le comenta que no tiene muy claro en qué influye la elección del

lenguaje en cuanto a la verificación de los tipos de variables. ¿Cuáles son las ventajas y

desventajas de revisar los tipos de variables en la compilación o tiempo de ejecución?


Fundamente su respuesta.

Una manera de plantearlo es indicando que los programas o lenguajes de programación, pueden

clasificarse según lo estricto que sean para evaluar los diferentes tipos de variables.

Por ejemplo, PHP no es un lenguaje de programación estricto. Una variable puede ser de tipo

entero, en otro momento en el código puede asignar un string y en otro momento un comando de

booleano.
Por otra parte, los lenguajes como C++ y .net son lenguajes de programación que hacen una

verificación cuando compilan, cada uno con mayor o menor profundidad; en este ejemplo, c++ es

menor porque debe mantener compatibilidad con C.

Ahora bien, un lenguaje liviano de compilar que no es estricto, permitiría una mayor rapidez y

también el uso de diversos tipos de datos en una variable; con otro lenguaje más estricto, la

compilación podría ser más profunda, por ende más robusta pero el tipo de variables haría el

código más extenso.

Entonces, dependiendo de la disponibilidad de recursos (mayor o menor tiempo para crear más o

menos código); la importancia y los tipos de datos (si son datos delicados o no tanto) y de lo que el

usuario final requiera, las posibilidades de programación pueden darse de mejor manera un un

lenguaje por sobre otro.

Entonces, conociendo ls posibilidades que cada lenguaje ofrece en sus tiempos de compilación y

sus tipos por una pate, y las características del proyecto que el jefe de proyecto tenga que cubrir,

será más sencillo poder escoger un lenguaje o combinación de ellos por sobre otro.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA AL OBJETO. PARTE I .........................................

OBJETIVOS ESPECÍFICOS

........................................................................................................................... 3

INTRODUCCIÓN

...................................................................................................................................... 3

1. PROGRAMACIÓN ORIENTADA AL OBJETO

.......................................................................................... 4

● hay tres tipos de programación historicas

○ imperativa

■ tiene el problema de variables globales, las cuales se puede n usar y modificar en

contenido desde cualquier pate del programa.


■ los programas que no tienen estructura adecuada ni sistemas de control para administrar

este tipo de variables, se hace compleja.

■ los módulos que las utilizan no se pueden entender completamente

■ y de manera independiente de aquellos que acceden a las mismas variables

■ todo se encuentra conectado y relacionado dentro del programa

● se pone vulnerable

● propenso a errores por motivo de su interdependencia

○ de construccion

○ de ejecucón

■ el uso de saltos globales como el JUM y el GOTO lo hacen dificil de leer.

○ estructurada

■ centra sua tención en las siguientes ideas

● la no repetición de código (no redundancia=

● Proteccion de las variables (para que no sean modifcabls por otra partes del programa)
● estructuras de control de alto nivele, reemplazan a las estructuras de salro

● repetir codigo por lo general induce errores, es una barrera al momento de realizar

mantenimiento o actualizaciones de programa o sistema de informacion

○ la solución es crear variables que siempre hagan la misma tarea y que se llamenr cuando

sean necesarios.

○ asegurando de que siempre harán lo mismo, no imprta cuantas veces sean llamados.

● en caso sde las variables

○ se protejen, permiten la definicion de variables locales

■ seran aquellas solo en un ámbito de la funci´n o procedimiento para losque se definen.

■ evita el riesgo de que otra función o procedimiento pueda cambiarlas o modificarlas como

lo que sucede en la programación imperativa.

● los saltos son reemplazados por estructuras ordenadas y finitas en las cuales es predecible

el resultado.
● fomenta el uso de procedimientos pequeños, un codigo bien estructurado debiese

implementar una funcion o procedimiento para resolver el problema.

● La subd¿ivición de probleas comlejos enotros más simples es fundamental

○ orientada a objetos

■ POO

■ paradigma o metodologiaa de programación

■ no lenguaje

■ conce´to objeto

● diseña a partir del objeto la estructura modular de los programas que confiorman su

codigo

■ forma de programar

■ optimiza el manejo de la información

■ se hace a través de:


● factores que potencien y faciliten el mantenimiento del software

● factores que faciliten la extención del software

● factores que faciliten la reutilización del código generado

■ intenta ajustar la programación al modo de pensar del hombre y no de la maquina como

ne los otros paradigmas

■ el objeto

● es la representación de un concetpo

● encapsuka o cotniene la información necesaria para realizar la abstración de dicho

conce´to

● las fescripciones de su estado y las operaciones que permiten modificarlo

● las operaciones que determinan también sus capacidades.


1.1. VENTAJAS Y DESVENTAJAS DE LA POO ........................................................................................

1.1.1. VENTAJAS .................................................................................................................... 6

● analista/programador/uruario mejor comunicados

● mejor productividad

● facilita la representación de estructuras complejas

● semantica sencilla de entender

● ayuda a ser más cercano al usuario final y el programa

● favorece

○ modularidad de sistemas y programas

○ resusabilidad del código

○ mejor mantenimiento
1.1.2. DESVENTAJAS .............................................................................................................. 6

● si hay una error en la definición de los coneptso abbstractos, puede dejar con el error todo

el sistema

● exige actualizacion de conocimientos de quienes etan a cargo de los proyectos de software

● exige experticia y experiencia en programación segun el paradigma

1.2. CONCEPTOS DE LA POO ............................................................................................................ 7

1.2.1. OBJETOS ...................................................................................................................... 7

● un objeto en POO equivale a una variable en Pestr


● la instanciación en POO quivale a una declaración de variables

● eltiempo de vida de un bojeto equivale al ámbito de una variable

1.2.2. CLASES ......................................................................................................................... 7

● abstracciones de conjjunto de objetos

○ poseen comportamiento y propiedades comunes

● clase= implementación de un objeto

● objetos= instancias de la calse

● atributos, variables, son el estado de las clases que indican los objetos que los representan

○ durante la ejecución

○ el compilador crea espacio en la memoria

■ para todas las variables

■ que esten en una determinada calse


■ cuando se instancia un objeto de una clase

● métodos

○ funciones

■ una clase representa el comortamietno de un objeto al que pertenede

■ permiten modifiar valores de atributos de un objeto determinado

■ representan las capacidades del objeto

■ se les conocen como servicios

● una clase en POO es un módulo en Pestruc

● Los atributos equvalen a las variables globales

● los métodos equivaln a las funciones del módulo


1.2.3. ATRIBUTOS .................................................................................................................. 8

● datos que caracterizan al objeto

● se define info oculta dentro de un objeto

● se manipula por metodos específicos para el objeto

● atribut: nombre + valor

● puede ser dato simple o testructurado

1.2.4. MÉTODOS .................................................................................................................... 8

● operaciones o acciones sobre objetos

● secuencias de acciones

1.2.5. CONSTRUCTORES ........................................................................................................ 9

● una instancia se crea mediante un método llamado/denominado “constructor”


● el metodo constructor tiene el mismo nombre dela lcase

1.2.6. DESTRUCTORES ........................................................................................................... 9

● puede ser hecha por el programador o automático según el leunguaje

● se deben conocer de cada lenguaje

1.2.7. ENVÍO DE MENSAJES ................................................................................................... 9

● comuncación entre objetos


● se invoca una operación de un mpetodo

● este a su vez puede invocar otros asociados

1.3. INSTANCIACIÓN DE UNA CLASE .................................................................................... 10

● una clase es un molde o plano

● dice cómo es un objeto de dicha clase

○ a partir de la clase, se pueden hacer muchos objetos

○ cada uno de los objetos es una instancia de dicha clase

● clase

○ atributo color

○ cada instancia de esa clase puede tener un valor asignado distinto

● creación de nuevo objeto


○ da valor inicial a los atributos

○ se usa el método constructor

○ se ejecuta automático cuando se inicia un objeto

1.4. REFERENCIA AL OBJETO ACTUAL ................................................................................... 10

● this

2. LENGUAJES ORIENTADOS AL OBJETO ...............................................................................................

11
2.1. CHEQUEO DE VARIABLES AL COMPILAR O EN TIEMPO DE EJECUCIÓN

............................................ 11

● programas evaluados segun cuan estricos son para aevaluar los tipos de variables

● segun

○ metodos de llamados

○ tipo de parámitros,

○ largo de sus arreglos

● PHP no es estricto en este sentido

● una variable puede ser

○ tipo entero

○ el codigo puedeasegnarle un string

○ puede ser booleano

● otros lenguajes no tienen dicha libertado


● ejemplo

○ jaba

○ c++

○ .net

● ellos realizan verificacional momento de la compilación con diferente grado de

profundidad

c++ .net java

menos preciso en la profundidad de compilación. más preciso que c++ interpreta bien el

byte-code, es bastante exhaustivo en los mismos.

junto a PHP es un lenguaje híbrido ya que permite utilizar de igual forma el enfoque de la

programación estructurada si se desea es un POO puro,


en C++ eliminar objetos de la pla es simple, pero eliminar objetos creados dinámicamente es más

difícil.

Existen soluciones como contar referencias y punteros inteligentes, pero no facilita esta labor el

lenguaje. .net junto a PHP incluyen un recolector de basura automático, se encarga de

recuperar toda la memoria que el programa ya no esté utilizando idem que en .net

2.2. LENGUAJES HÍBRIDOS VS. LENGUAJES PUROS ............................................................................

12

● puros

○ solo un modelo de programación

○ modelo orientado a objetos

■ se pueden declaar metodos y clases

■ no se puede definir una función sola o procedimientos sin tener datos globales

■ JAVA

● sintaxis más complejja por generar uso de bastantes métodos datos estáticos
■ C++ PHP

● hibridos

● permite utilizar programación estructurada

2.3. RECOLECCIÓN DE BASURA ...................................................................................................... 12


COMENTARIO FINAL

.............................................................................................................................. 13

REFERENCIAS ........................................................................................................................................

14

La Programación Orientada a Objetos vendría a ser de gran ayuda al aplicarla en los lenguajes, ya

que nos permitiría de alguna manera poder saldar las deficiencias que pueda tener uno u otro

lenguaje; teniendo muy presente la definición de los conceptos para no incurrir en errores que

podrían ser garrafales para todo un proyecto; podríamos ahorrarnos muchos futuros problemas

en la realización de procedimientos, construcción de objetos y la utilización de las distintas

variables ordenándose de manera modular nos permitirá abarcar un mantenimiento y mejora de

mejor (valga la redundancia) manera. Esto, junto a las fortalezas de .net para este caso en que se

necesita crear un trabajo sin el tiempo suficiente para los tiempos de ejecución, nos puede dar

mayor espacio por el lado del mantenimiento y los posibles errores que pudieran ocurrir;

brindando mayor claridad de a qué parte del código dirigirse para plantear la mejora en caso de

que algo falle, teniendo muy presente los conceptos y los procesos llevados a cabo durante la

codificación.

Semana 8
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA AL OBJETO. PARTE II

........................................................ 4

OBJETIVOS ESPECÍFICOS

........................................................................................................................... 4

● Analizar las propiedades fundamentales de la programación orientada al objeto (POO).

● Analizar los modos de acceso en la programación orientada a objetos.

● Distinguir la sobrecarga de métodos y operadores.

● Diferenciar los tipos de relaciones entre clases de objetos.


INTRODUCCIÓN

...................................................................................................................................... 4

● POO desde el desarrollo hasta la mantención del código

● cómo integrar sistemas complejos de software

● popular en desarrollo de software en 20 años

1. PROPIEDADES FUNDAMENTALES DE LA POO

....................................................................................... 5

● paradigma de programación

1.1. INTERFACES ............................................................................................................................ 5

● clases abstractas
● ennumera métodos pero no implementa ninguno

● todos los métodos son abstractos

● permite establecer la estructura de una clse con sus atributos y métodos u otros

○ sin realizar la implementación

○ cada clase puede herredar la interfaz

■ implementar métodos de la forma conveniente

■ todos los métodos deben ser públicos

■ una interfaz no puede tener construtores

● por ello no se puede crear una instancia de interfaz


1.2. POLIMORFISMO ...................................................................................................................... 5

● puede presentarse en diferentes formas, o diferentes comportamientos

● un objeto POO depende de su contexto

● Un metodo puede implementarse de diferentes maneras

○ depende de los argumentos recibidos

○ depende de parámetros para realizar una misma operación

○ ejecuta acciones diferentes en función delnivel de abstracción que le corresponda

● un método es capaaz de realizar múltiples acciones

○ depende de

■ cómo se invoque

■ dónde se le invoque

■ si la invocación varía en cuanto a parametros de inicio

● polimorfismo de sobrecarga
○ cuando las funciones del mismo nombre existen

■ de funcionalidad similar

■ en clases independientes, no secundarias

■ ejemplo

● clases: complex, image y link: tienen la función display

● una clase hereda mismo método

○ una implementacion de un método no es identica en cada subclase

○ se invoca en contextos diferentes

○ puede realizar funciones distintas

○ Polimorfismo paramétrico

■ capacidadde definir varias funciones

■ se utiliza el mismo nombre


■ se usan parámetros diferentes

■ selecciona automáticamente el método correcto a aplicar en función del tipo de dato

pasado en el parámetro.

1.3. HERENCIA .............................................................................................................................. 7

● classes pueden heredad una o varias subclases, astributos y métodos

● se le llama superclase o clase padre

● una sub clase puede comportarse como una super clase

● herencias múltiples, una subclase hereda de varias clases.

● se puede compartir de modo jerarquizado

● arboles de herencia


1.4. ABSTRACCIÓN......................................................................................................................... 8

● captura de caracteristicas y comportamientos de un objeto

● proceso de modelado de a realidad

● se necesita entender los objeto como una suma de omportamietnos bien definidos.

1.5. MODULARIDAD ...................................................................................................................... 8

● subdivision de na aplicacion enpartes m´s pequeñas

● realizan tareas específicas con mayor independencias que otras partes

● permite disminuir el grado de fdificultad entre ls partes

● facilita problemas
● diseña programas más eficientes

1.6. ENCAPSULAMIENTO ................................................................................................................ 9

● alta cohesión y bajo nivel de acoplamiento

● los objtos presentan sus métodos como interfases públicas

● sus atributos como características privadas

● para que el no sean accesible para otros objetos

2. MODOS DE ACCESO .........................................................................................................................

● Tal como especifica Joyanes (óp cit.), existen varios niveles de acceso a los distintos

atributos y métodos de una clase:

● PRIVATE: cuando se utiliza este modificador, el atributo o método no podrá ser accesado

desde fuera de la clase. Adicionalmente, las clases que hereden de esta tampoco tendrán acceso al
método o atributo.

● PROTECTED: un atributo o método protegido es accesible solo desde la clase, pero

cualquier clase que herede también tendrá acceso al método o atributo.

● PUBLIC: cualquiera puede acceder al método o atributo.

3. SOBRECARGA ............................................................................................................................... 10

3.1. SOBRECARGA DE MÉTODOS ................................................................................................... 10

● posibilidades disponibles en la POO


● funciones con mismo nombre pero:

○ diferentes parámetros de cada una

○ es util cuando a una clase con un metodo, le hereda otra sublcase con un metodo

agregando más parámetros o cambiando el tipo de estos

3.2. SOBRECARGA DE OPERADORES ............................................................................................... 11

● idea de redifinir los distintos operadores del lenguaje para extenderlo

● cuando una clase posee muchos atributos, no queda claro cómo operar con ella

○ la sobrecarga facilita la comprensión del código y la lógica dentro de este.

● ejemplo: eun una empresa; Clase “persona”

○ atributos, rut edad, nombre, sueldo


○ el dpto de finanzas necesita saber el sueldo de los empleados en total

■ define el operador + como la suma de los sueldos

○ el dpto de RRHH le intereza saber edades

■ define el operador + como suma de edades

○ ejemplo de sobrecarga de operadores en C++

● en la vida laboral se trabajan multiples lenguajes, es imporante conocer y verificar que el

lenguaje soporte la funcionalidad de “SOBRECARGA”

● tipos de operadores

○ que usan un operando para funcionar , ejemplo ! en lógica, convierte negativo el valor de

una expresión

○ binarios, necesitan dos operandos para entregar un resultado, por ejemplo + y - .


4. RELACIONES ENTRE CLASES Y OBJETOS

............................................................................................. 12

● las relaciones son crreadas de manera natural

● distintos tipos:

4.1. ASOCIACIÓN ......................................................................................................................... 12

● objetos de una calse onectados con objetos de otra clase

● Ejemplo: relacion de pertenencia entre sillas y una mesa

○ se indica que 4 silals pertenecen a una mesa o al reves, una mesa tiene 4 sillas

4.2. AGREGACIÓN Y COMPOSICIÓN ............................................................................................... 13

● tipo especial de asociación


● acoplamiento fuerte entre clases

● relaciones

○ maestro y eclavo

○ “todo” y “parte de”

○ compuesto y componentes

● ejemplo: en un restorante

○ un sandwich

■ pertenece a la categoría “comida rápida”


○ si se elimina el “sandwich” no es necesario eliminr la categoría, pueden haber otro tipos

de comida rápida como pizas o papas fritas.

● relaciones de composición

○ son relaciones fuertes

○ no puede estar una parte sin la otra

○ ejemplo: patente y vehículo

4.3. HERENCIA ............................................................................................................................ 13

● clase y su hija

● hay jerarquia

● se asumen los aotributos y métodos, y luego se agregan los propios

● no significa que la clase hija esté compuesta por la clase padre.

● ejemplo: clase vehículo


○ hereda atributo a sus clases hijas: automóvil, avion, barco

○ todas son vehículos pero no corresponden todas a medios de transporte terrestres

COMENTARIO FINAL

.............................................................................................................................. 14

● tecnica más utilizada en el mundo

● formas de controlar visibilidad métodos y atributos, evita que otras clases no lean cosas

que no les correspondan

● sobrecarga

○ tecnica muy utilizada, provee lógica coherente al codigo y sus operaciones

● distinta relaciones

○ comrpensión de cómo se relacionan y comoponen un desarrollo

○ deja claro tipo de relacion, cardinalidad, fuerza y atributos de ella.


REFERENCIAS ........................................................................................................................................

15

You might also like