Está en la página 1de 78

Universidad Iberoamericana de Ciencias y Tecnología

Facultad de Ingeniería
Escuela de Ingeniería ….

Lenguajes de
Programación
Claudio Hormazábal Ocampo
Primer Semestre 2010

Email: claudio@hormazabal.cl
Apuntes, Emuladores, Calificaciones:
http://www.hormazabal.cl/e-cursos

Strictly Confidential 1
Descripción de la Asignatura

 Los contenidos fundamentales que se estudian en esta


asignatura son: Sistemas Numéricos (ej. Memorias),
Organización de Microcomputadores, Lenguajes de Bajo Nivel,
Lenguajes de Alto Nivel y sus aplicaciones.
 Los contenidos de esta asignatura son requisitos
fundamentales para la asignatura de Microprocesadores.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 2


Objetivos Generales:

 Comprender la base conceptual de la interacción humano,


software, hardware.(proyecto Lemuc)

 Analizar el funcionamiento de un computador para descubrir


sus posibilidades y limitaciones.

 Relacionar la estructura del computador con las instrucciones


de software.

 Elaborar programas de computadora utilizando lenguajes de


programación de bajo nivel y alto nivel.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 3


Horario

Civil Electrónica e Informática


 Martes de 13:00 a 15:10
 Miércoles de 13:50 a 15:10

Ejecución Electrónico Diurno


 Miércoles de 17:30 a 19:30
 Viernes de 13:00 a 14:20

Ejecución Electrónica, Computación, Biomédica Vespertino


 Lunes de 20:30 a 22:30
 Viernes de 19:00 a 20:20

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 4


TEMARIO

 UNIDAD 1: Sistemas Numéricos.


1. Decimales, Binarios, Hexadecimales.
2. Operaciones en Binario.
3. Operaciones en Hexadecimal.
4. Conversiones.
5. Operaciones a nivel de Máquina.
6. Lógica a nivel de máquina.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 5


TEMARIO (Continuación …)

 Unidad 2: Organización de un Computador.


1. La memoria.
2. La Unidad Central de Procesos (CPU).
3. La Familia 80x86.
4. Registros de un Microprocesador.
5. Modos de Operación.
6. Interrupciones.
7. Aplicaciones.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 6


TEMARIO (Continuación …)

 Unidad 3: Lenguajes de Bajo Nivel. (Assembler)


1. Lenguajes de máquina.
2. Ensambladores.
3. Operandos e Instrucciones.
4. Instrucciones de Datos.
5. Instrucciones Aritméticas.
6. Instrucciones Lógicas y de Bits.
7. Instrucciones de Control.
8. Otros tipos de Instrucciones.
9. Directivas.
10. Entradas y Salidas.
11. Depuración.
12. Aplicaciones.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 7


TEMARIO (Continuación …)

 Unidad 4: Lenguajes de Alto Nivel. (JAVA)


1. Conceptos Básicos.
2. Palabras Reservadas.
3. Identificadores, Constantes, Operadores.
4. Tipos de Datos y Recursos.
5. Estructura Lógica de un programa.
6. Librerias y Componentes.
7. Funciones y Procedimientos.
8. Arreglos y Archivos.
9. Acceso al Hardware.
10. Programación de Aplicaciones.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 8


Evaluación

 Prueba Acumulativa 1 :20%


 Prueba Acumulativa 2 :20%
 Prueba Acumulativa 3 :20%
 Disertación :10%
 Laboratorio :30%

Promedio ponderado es la nota de presentación a examen: NPE.


Nota de presentación a examen :70%
Examen :30%

Eximidos: Alumnos con promedio de notas ponderado igual o


mayor a 5,5
El profesor podrá eximir a los alumnos con promedio igual o
superior a 5,0 siempre y cuando se cumpla con el requisito de
asistencia exigido en la asignatura y sin nota rojo en alguna
prueba.
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 9
Disertación:

 Formar grupos de 3 personas.


 Máximo 20 minutos por grupo.
 Cada grupo disertará sobre algún lenguaje de programación
con los siguientes temas como mínimo (excepto Assembler y
JAVA):
1. Incidencia de los Sistemas Numéricos en el Lenguaje.
2. Incidencia del Hardware en el Lenguaje.
3. Operativa, Estructura y nociones básicas de la Programación.
4. Crear un programa que calcule el factorial de una división
(entero) de 2 números digitado por teclado y explicar la
programación.
5. Conclusiones.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 10


Bibliografía:

 “Fundamentos de la Programación” Luis Joyane. Mc Graw Hill.


 “Problemas de Metodología de la Programación”. Luis
Joyanes.
 Google¡¡¡
 Calificaciones, Apuntes, Software y emuladores en:
http://www.hormazabal.cl/e-cursos

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 11


Introducción

¿DE QUE TRATA EL CURSO?


Aprender a ocupar el computador como herramienta de solución de problemas
prácticos y teóricos.
Para ello es necesario, de acuerdo a orden de importancia:
1º Fundamentalmente saber resolver en forma teórica el problema, independiente de
su naturaleza, computador o lenguaje a usar. (saber pensar)
2º Saber metodologías de solución de problemas que permitan expresar el resultado
computacionalmente (saber de computación)
3º Escoger un lenguaje apropiado que haga más fácil la implementación de la solución,
y del cual se tenga dominio (saber de lenguajes).

Programación < > Magia + Conocimiento + Suerte


Programación = Concentración + Planificación +Lógica
+ Perseverancia + Creatividad

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 12


Introducción (Continuación …)

¿Por qué nace la computación?


La continua necesidad de manejar grandes cantidades 2
lon( x)
de información, automatizar procesos de cálculos x 2
x
rutinarios y administrar conocimiento humano.

Desde la antigüedad se construyeron máquinas


mecánicas capaces de realizar cálculos matemáticos
en forma más rápida.
x 2

Por eso, el nombre de computación viene


efectivamente del cálculo.

Computación = Del latín que significa


pensamiento,
Es la ciencia de calcular y procesar
información. 2*3+5+8+10*5-14+12

Por tanto la esencia del computador es almacenar +8-9+6+5+14+13+22


-52+8*44-100+589-2
datos y ser capaz de procesarlos y/o calcularlos. +3*55-13+51/25+8

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 13


Introducción (Continuación …)

Reseña Histórica:
Antigüedad : Existían mecanismos de cálculo que sólo pueden hacer lo pre-establecido
Notación numérica posicional
Construcción de ábacos
1642, Pascal crea una máquina de sumar
Modernismo : Mecanismos de cálculo capaces de reconocer nuevas funciones diferentes a las pre-
establecidas (poseen lenguaje propio de programación)
1822, Charles Babbage crea la máquina análitica y de diferencias
1945, von Neumann crea las bases para el primer computador con tarjetas programables
1946, primer computador eléctrico
Post-Modernismo : Mecanismo de cálculo y manejo de información (poseen lenguaje propio de
programación) Se transforma en herramienta fundamental en administración y producción
(década 50’)
Actualidad : Mecanismo de cálculo, manejo de información y conocimiento humano (reconocen
diferentes lenguajes de programación a parte del propio)
Desde 1960 se comienza a masificar el uso del computador en todas las áreas humanas.
Comienzan las técnicas de manejo de conocimiento humano. Ej. Comunidades del
conocimiento.
Se crean los sistemas expertos y de inteligencia artificial.
A partir de la década del ‘80 gracias a los PC (personal computer) el computador se
transforma en herramienta útil en toda actividad humana.
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 14
UNIDAD 1: Sistemas Numéricos.

Sistemas Numéricos
1.-Sistema N-ario: Ejemplo :
X N x K
 x x x x
3 2 1 0
XX1013 94 B5
9475
K 3 2 1 0
3 2 1 0
X D xN
i
i
XXDD 99**13
10 44**13
10 11
7*10
13 55*13
10
i 0

2.- Sistema Binario: Ejemplo :


X x  x x x x
B
K
K 3 2 1 0
X 1101 2
i 3 2 1 0
X D
i 0
x2 i X 1* 2 1* 2 0* 2 1* 2
D

3.- Sistema Hexadecimal: Ej. Ejemplo :


(Direcciones de Memoria)

X H x K
 x x x x
3 2 1 0 X 16
1101
K 3 2 1 0

X D x 16i
i X D 1*16 1*16 0*16 1*16
i 0

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 15


UNIDAD 1: Sistemas Numéricos.

 Sistemas con notación posicional: La posición del dígito o símbolo


tiene relevancia. Es decir, el símbolo adquiere un valor distinto dependiendo de la
posición en que este se encuentre. En estos sistemas, el número se construye
mediante una sumatoria de los dígitos ponderados por una potencia de la base.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 16


UNIDAD 1: Sistemas Numéricos.

 Ejemplo de distintos sistemas de notación posicional:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 17


UNIDAD 1: Sistemas Numéricos.

Operaciones en Binario.
 Suma binaria.
La suma se realiza tomando consideración la siguiente tabla:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 18


UNIDAD 1: Sistemas Numéricos.

 Resta Binaria:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 19


UNIDAD 1: Sistemas Numéricos.

 Multiplicación Binaria: Se realiza de la misma forma que la


multiplicación decimal pero considerando la siguiente tabla
de multiplicar binaria.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 20


UNIDAD 1: Sistemas Numéricos.

 División Binaria: Se realiza de la misma forma que la


división decimal pero tomando en cuenta las tablas de
multiplicar en binario.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 21


UNIDAD 1: Sistemas Numéricos.

Operaciones en Hexadecimal.

Tabla de números en Hexadecimal:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 22


UNIDAD 1: Sistemas Numéricos.

 Suma en sistema hexadecimal. Se debe considerar para


efectuar la suma la siguiente tabla:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 23


UNIDAD 1: Sistemas Numéricos.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 24


UNIDAD 1: Sistemas Numéricos.

 Multiplicación en Hexadecimal: Para la realización de la


multiplicación en hexadecimal es necesario considerar las
tablas de multiplicar en el sistema hexadecimal.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 25


UNIDAD 1: Sistemas Numéricos.

 Tarea: Averiguar sobre la división en Hexadecimal.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 26


UNIDAD 1: Sistemas Numéricos.

Conversiones
 En general, para convertir de Base X a base 10:

1. Método de evaluación del polinomio: Para convertir un


número de base cualquiera a base 10 se evalúa el polinomio
que genera el número, realizando las operaciones en base 10.
Si el sistema tiene base mayor a 10, previo a la evaluación
del polinomio se convierten los símbolos en su
equivalente a base 10.
Ejemplos:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 27


UNIDAD 1: Sistemas Numéricos.

2. Método de los productos sucesivos: Este método se deriva de


una forma distinta de evaluar el polinomio y es aplicable sólo
a números enteros.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 28


UNIDAD 1: Sistemas Numéricos.

 En general, para convertir de Base 10 a Base X.


1. Método para números enteros: Divisiones sucesivas.
1. Se realizan divisiones enteras sucesivas en las cuales el divisor
es la base.
2. Primer dividendo es el número en base 10.
3. Siguientes dividendos son los cuocientes de las divisiones
enteras.
4. Los dígitos del número en base X están formados por los
restos de las divisiones enteras.
5. Dígito menos significativo del número en base X corresponde al
primer resto.
6. Dígito más significativo corresponde al último cuociente.
7. Termina la división hasta que el cuociente sea menor que la
base.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 29


UNIDAD 1: Sistemas Numéricos.

Algoritmo:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 30


UNIDAD 1: Sistemas Numéricos.

 Método para números fraccionarios: Para convertir un


número fraccionario de base 10 a base X se debe
utilizar el siguiente método.
1. Se multiplica el número fraccionario decimal por la base X.
2. La parte entera del número resultante corresponde a la primera
cifra decimal del número en la base X.
3. Se realizan sucesivas multiplicaciones por la base X considerando las
partes decimales de las multiplicaciones.
4. Los enteros de los productos obtenidos corresponden a los
decimales del número en base X.
Respecto al número de decimales que
debe tener el número en la nueva base
se debe recordar lo siguiente:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 31


UNIDAD 1: Sistemas Numéricos.

 CONVERSIÓN DECIMAL-BINARIO: Los métodos mas


conocidos son:
1. Divisiones sucesivas entre 2: Consiste en dividir
sucesivamente el número decimal y los cocientes que se van
obteniendo entre 2, hasta que una de las divisiones se haga
0. La unión de todos los restos obtenidos escritos en orden
inverso, nos proporcionan el número inicial expresado en el
sistema binario.
Ej.:10(10)=1010(2)

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 32


UNIDAD 1: Sistemas Numéricos.

2. Multiplicación sucesiva por 2: Se utiliza para convertir una


fracción decimal a binario, consiste en multiplicar dicha fracción por 2,
obteniendo en la parte entera del resultado el primero de los dígitos binarios
de la fracción binaria que buscamos. A continuación repetimos el mismo
proceso con la parte fraccionaria del resultado anterior, obteniendo en la
parte entera del nuevo resultado el segundo de los dígitos buscados.
Iteramos sucesivamente de esta forma, hasta que desaparezca la parte
fraccionaria o hasta que tengamos los suficientes dígitos binarios que nos
permitan no sobrepasar un determinado error.
Ejemplo:
Convertir la fracción decimal 0.828125 en fracciones binarias

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 33


UNIDAD 1: Sistemas Numéricos.

3 Métodos de las restas sucesivas de las potencias de


2: Consiste en tomar el numero a convertir y buscar la potencia de 2 mas
grande que se pueda restar de dicho numero, tomando como nuevo numero
para seguir el proceso el resultado de la resta. Se repiten las mismas
operaciones hasta que el número resultante en una de las restas es 0 o
inferior al error que deseamos cometer en la conversión. El numero binario
resultante será un uno (1) en las posiciones correspondientes a las potencias
restadas y un cero (0) en las que no se han podido restar.
Ej. Convertir el número decimal 1994 a binario.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 34


UNIDAD 1: Sistemas Numéricos.

 CONVERSIÓN DE BINARIO A DECIMAL: El método consiste


en reescribir él número binario en posición vertical de tal forma que
la parte de la derecha quede en la zona superior y la parte izquierda
quede en la zona inferior. Se repetirá el siguiente proceso para cada
uno de los dígitos comenzados por el inferior: Se coloca en orden
descendente la potencia de 2 desde el cero hasta n, donde el mismo
el tamaño del número binario, el siguiente ejemplo ilustra de la
siguiente manera. Utilizando el teorema fundamental de la
numeración tenemos que 1001.1es igual a:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 35


UNIDAD 1: Sistemas Numéricos.

 Representación de números con signo.


En matemáticas, los números negativos en cualquier base se
representan del modo habitual, precediéndolos con un signo
"−". Sin embargo, en una computadora, hay varias formas de
representar el signo de un número. Se tratarán cuatro
métodos para representar números con signo: signo y
magnitud, complemento a uno, complemento a dos y exceso
N.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 36


UNIDAD 1: Sistemas Numéricos.

 Signo y Magnitud.
Una primer enfoque al problema de representar el signo de un
número podría consistir en asignar un bit para representar el
signo, poner ese bit (a menudo el bit más significativo) a 0
para un número positivo, y a 1 para un número negativo. Los
bits restantes en el número indican la magnitud (o el valor
absoluto). Por lo tanto en un byte con solamente 7 bits
(aparte del bit de signo) la magnitud puede tomar valores
desde 0000000 (0) a 1111111 (127). Así se puede
representar números desde -127(10) hasta +127(10).
Observación: El cero tiene 2 representaciones: 00000000 (0)
y 10000000 (-0).
Ejercicio: Representar el número -100, -50 y -25 en binario.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 37


UNIDAD 1: Sistemas Numéricos.

 Complemento a uno.
Como alternativa para representar números negativos puede
usarse un sistema conocido como complemento a uno. La
forma del complemento a uno de un número binario es un
NOT bit a bit aplicado al número.
Ej: el complemento a uno de 00101011 (43) se convierten en
11010100 (−43).
Observación: El cero tiene 2 representaciones 0:00000000
(+0) y 11111111 (−0).
El rango para la representación en complemento a uno con 8
bits es −127 a +127 (en base 10).

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 38


UNIDAD 1: Sistemas Numéricos.

 Complemento a dos.
El complemento a dos de un número N que, expresado en el
sistema binario está compuesto por n dígitos, se define como:

Ejemplo: En Complemento a 2, para n = 16, el número -9503(10)


se escribe calculando el Complemento a la Base del número
9503(10) representado en base 2, es decir, del número
10010100011111(2):

C2(N) = C2(10010100011111) =
= 2^n - N =
= 2^16 - 10010100011111 =
= 10000000000000000 - 10010100011111 =
= 1101101011100001C2
En consecuencia,
-950310 = 1101011100001C2

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 39


UNIDAD 1: Sistemas Numéricos.

Truco para complemento a 2:


Una forma fácil de implementar el complemento a dos es la
siguiente:

¿Para qué sirve complemento a 2? Su utilidad principal se


encuentra en las operaciones matemáticas con números
binarios. En particular, la resta de números binarios se facilita
enormemente utilizando el complemento a dos: la resta de
dos números binarios puede obtenerse sumando al
minuendo el complemento a dos del sustraendo.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 40


UNIDAD 1: Sistemas Numéricos.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 41


UNIDAD 1: Sistemas Numéricos.

El complemento a uno también se puede definir como una


unidad menor que su complemento a dos, es decir:

Por ejemplo, calculemos el complemento a 1 del número 45


que, expresado en binario (101101), tiene 6 dígitos:

su complemento a dos es:

y, su complemento a uno es una unidad más pequeño:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 42


UNIDAD 1: Sistemas Numéricos.

 Tarea: Averiguar sobre Exceso N.

Mostrar calendario de pruebas.

Los informes de Laboratorio que


se entreguen fuera de plazo, serán
calificados, como máximo, con
nota 4.0.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 43


UNIDAD 1: Sistemas Numéricos.

 Coma Flotante:es un método de representación de números


reales que se puede adaptar al orden de magnitud del valor a
representar, usualmente trasladando la coma decimal,
mediante un exponente, hacia la posición de la primera cifra
significativa del valor. De esta forma, con un número dado de
dígitos representativos se obtiene mayor precisión que con el
punto fijo, debido a que el valor de estos dígitos es siempre
significativo sea el que sea el orden de magnitud del número
a representar.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 44


UNIDAD 1: Sistemas Numéricos.

Representación en coma flotante:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 45


UNIDAD 1: Sistemas Numéricos.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 46


UNIDAD 1: Sistemas Numéricos.

 Números con representación especial:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 47


UNIDAD 1: Sistemas Numéricos.
 Procedimiento para pasar un número decimal a coma flotante:
Ejemplo: Pasar el nº -6,125(10) a binario IEEE754.
1º.-El bit 31 tomará el valor del signo de la mantisa. (-6,125 => - => 1)
2º.-Pasar a binario la mantisa decimal.
6=110
0,125=0,001
6,125=110,001(2)
3º.-Normalizar. Correr la coma a derecha o izquierda hasta convertir el número
binario en un numero de la forma 1,………
El número de desplazamientos va a dar valor al exponente de forma que:
Desplazamiento a la derecha => Exponente negativo
Desplazamiento a la izquierda => Exponente positivo
6,125=110,001(2)=> 1,10001 => Exponente = 2
2 expresado en exceso 127 => 129 => 10000001(2)
4º.-Mantisa representada con bit implícito => 1,10001 => 10001 (el bit 1 de
la parte entera no se representa)
5º.-El número final es 1 10000001 10001000000000000000000 (Se
agregan a la derecha los “0” necesarios para completar los 23 bits de la
mantisa)
6º.-Pasado a hexadecimal 110000001 1000 100 0000 0000 0000 0000 =
C0C40000(16)

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 48


UNIDAD 1: Sistemas Numéricos.

 Procedimiento para pasar de coma flotante a decimal:


1º.-Convertir a binario el número hexadecimal
C0C40000(16) = 1100 0000 1100 0100 0000 0000 0000 0000(2)

2º.-Identificar los campos del número binario:


1 10000001 10001000000000000000000
Signo de la mantisa Exponente representado en exceso 127 Mantisa normalizada con bit implícito

3º.-Convertir cada uno de los campos a decimal


1 => Mantisa negativa
10000001(2) => 129 => +2
10001000000000000000000(2)=>1,10001000000000000000000(2)
=> Con exponente +2 => Hay que desplazar la coma a la derecha
(+2) 2 posiciones => 110,001000000000000000000(2) => 6,125(10)

4º.-El número final es la combinación de todos los valores de los campos


-6,125

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 49


Unidad 2 :PHP

 PHP es lo que se llama un lenguaje de programación del lado


del servidor, esto significa que el código se interpreta en el
servidor y no en el Computador del usuario.

El código php interpretado, produce un resultado que es


enviado al navegador del visitante en forma de HTML,
imagen, documento .doc... de ninguna manera el navegador
del visitante accede al código fuente en php sino solo a su
resultado en HTML.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 50


Unidad 2 :PHP

El navegador pide un documento al servidor, en el caso que


este documento sea un archivo PHP, el archivo es interpretado
y se envía su resultado al navegador.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 51


Unidad 2 :PHP

 Veamos un ejemplo sencillo de código escrito en php:


<html>
<head>
title>Prueba</title>
</head>
<body>
<?php

$texto = "Hola mundo";


echo $texto;
?>
</body>
</html>
Este código producirá el siguiente resultado que es lo que se
enviará al navegador del visitante:
<html>
<head>
<title>Prueba</title>
</head>
<body>
Hola mundo
</body>
</html>

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 52


Unidad 2 :PHP

 Notar que el código php esta delimitado por las etiquetas


<?php y ?>.

Otra característica del php es que las variables se identifican


con el signo del peso ($) y que cada instrucción debe
finalizarse con un punto y coma (;).

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 53


Unidad 2 :PHP

 Instalación Apache y PHP.


Para empezar a aprender a programar en PHP, debemos tener
un servidor web con PHP instalado, y lo más cómodo para
trabajar es que lo tengamos en nuestro propio PC. Las
herramientas que necesitamos, son un servidor web ( en el
curso se utilizará Apache pero IIS de Windows también es una
alternativa ), el propio PHP y posiblemente el motor de bases
de datos MySQL.

Todo esto se puede instalar por separado, o se puede hacer


con paquetes que instalan y configuran PHP, Apache y MySQL.
Un paquete de software con todos estos “ingredientes” es
XAMPP, existen otros como el WAMP o easyPHP.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 54


Unidad 2 :PHP

 XAMPP es el único paquete de los que hemos señalado,


disponible para multiplataforma (Windows, Mac OS X,
GNU/Linux y Solaris). Incluye, entre otros, aplicaciones como
Apache, MySQL, intérprete PHP, OpenSSL, phpMyAdmin,
Mercury Mail Transport System y FileZilla FTP Server.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 55


Unidad 2 :PHP

 Procedimiento de Instalación:
Bajar paquete desde:
http://www.apachefriends.org/es/xampp.html

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 56


Unidad 2 :PHP

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 57


Unidad 2 :PHP

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 58


Unidad 2 :PHP

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 59


Unidad 2 :PHP

 Comentarios:
Para que en futuras revisiones de tu código sea inteligible
para la mente humana, es recomendable comentar lo que se
esta haciendo en PHP pero en palabras.

De esta manera el código será mucho mas sencillo de


comprender y a su vez de modificar, corregir, ampliar...

Los comentarios que soporta PHP són los de C, C++ y los del
shell de Unix, asi podemos usar // y /* */ para comentarios y
comentarios multilinea respectivamente como haríamos en C:

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 60


Unidad 2 :PHP

 Ejemplos:
<?php
echo 'Esto se ve';
// esto no se ve
echo 'esto tambien se ve';
/* esto tampoco
se ve */
?>

<?php
# esto no se ve
echo 'pero esto si';
?>

<?php
/* /* Nunca hacer nunca esto */ */
?>
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 61
Unidad 2 :PHP

 Variables:
Una variable es un nombre que contiene determinados
datos, ya sean de texto o numéricos, y en php tienen la
peculiaridad de ir precedidas por el signo peso ($).
En PHP no es necesario declarar las variables antes de
usarlas y pueden contener texto y números indiferentemente.
Ejemplo de uso de variables:

<?php
$miVariable = 'Hola ';
$miVariable2 = 33;
// Imprimimos Hola 33
echo $miVariable.$miVariable2;
?>
Como se observa, se asigna algún valor a una variable con el
operador de igualdad (=), y concatenamos con el operador
punto (.).
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 62
Unidad 2 :PHP

 Existe la posibilidad de trabajar con una variable de nombre


variable, es decir, podemos acceder a una variable que tenga
el nombre que nos viene indicado por el contenido de otra
variable, usando ($$):
<?php
$nombreVariable = "miVariable";
$$nombreVariable = "Hola";
// Imprimimos Hola
echo $miVariable;
?>

 Para que una variable sea accesible desde cualquier parte de


nuestro script php, la definiremos cómo global de la siguiente
manera:
<?php
global $miVariableGlobal = 'Hola';
?>
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 63
Unidad 2 :PHP

 Variables predefinidas
PHP tiene muchas variables predefinidas, pero hay que tener
en cuenta que todas estas variables no suelen estar activas
en todos los servidores, para saber de que variables
disponemos, podemos usar la función de info de PHP:
<?php
phpinfo();
?>
Variables más comúnmente utilizadas y que probablemente
nuestro servidor tendrá correctamente habilitadas:

1 $SERVER_NAME: Cuando imprimimos en nuestro servidor


la variable $SERVER_NAME nos devolverá normalmente el
nombre del server si estamos trabajando en local saldria
http://localhost/ o el nombre que le hayamos puesto a la
maquina.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 64


Unidad 2 :PHP

 2 $SERVER_SOFTWARE: En este caso nos saldrá el tipo de


servidor que estamos usando: Ej IIS o apache y la versión.

 3 $DOCUMENT_ROOT: La variable DOCUMENT_ROOT


imprime en el navegador la ruta de los archivos “mirando”
hacia Internet , depende de la configuración del servidor,
nos dará la ruta.

 4 $HTTP_REFERER: Haciendo referers queremos decir que


nos desplegará de donde procede la persona que visita
nuestra web.

 5 $HTTP_USER_AGENT: nos desplegará la información de


que navegador estamos utilizando, Netscape, mozilla,
Internet Explorer,etc...

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 65


Unidad 2 :PHP

 6 $REMOTE_ADDR: Esta variable nos permite saber la IP del


visitante que ve nuestra página.

 7 $SERVER_ADMIN: Simplemente nos devolverá el email de


configuración del servidor donde esta alojado el script PHP.

 8 $REQUEST_METHOD: Si imprimimos esta variable nos


devolverá el tipo de petición que usamos para acceder a la
pagina si fue con POST o con GET.

 9 $HTTP_ACCEPT: Los tipos de archivos que el visitante


puede recibir de este servidor con el navegador actual.

 10 $REMOTE_PORT: Indica el puerto que se esta utilizando


para comunicarse con el servidor web.
Estas son algunas variables.
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 66
Unidad 2 :PHP

 Constantes.
Una constante es como una variable pero con la diferencia
que una vez toma un valor este no puede variar durante la
ejecución del script, otra particularidad de las constantes es
que son globales, por lo que se pueden leer desde el interior
de una función sin tener que pasarlas como parámetro.

Al contrario que las variables, las constantes se expresan sin


signo del dolar ($), y se tienen que definir usando la función
define:

<?php
define ('miConstante','valor de mi constante');
echo miConstante;
?>

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 67


Unidad 2 :PHP

 Existe otra función, llamada defined que nos permite saber si


se ha declarado una constante determinada, lo haremos de la
siguiente manera:

<?php
$mivariable = defined(“midato");
// Mostrara 0 si existe la variable y 1 si no existe
echo $mivariable;
?>

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 68


Unidad 2 :PHP

 En algunos casos no es posible acceder al valor de una


constante directamente por su nombre, pues este nombre
puede coincidir con el de una función y el resultado producido
no sería el esperado, en ese caso usaremos la función
constant para leer el valor de dicha constante:

<?php
define ('echo','valor de mi constante');
echo constant('echo');
?>

En este ejemplo vemos como la constante tiene un nombre


polémico, que coincide con el de una funcion (echo) y para
diferenciar el primer echo del segundo hemos usado la
funcion constant (palabras reservadas).
Existen muchas constantes predefinidas en PHP, entre las
cuales encontramos las llamadas constantes mágicas.
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 69
Unidad 2 :PHP

 Constantes mágicas
Existen unas constantes llamadas mágicas que son accesibles
para cualquier script PHP, estas nos proporcionan información
sobre el script, que depende del lugar en el que las usemos:
__FILE__ : Contiene el nombre y la ruta del archivo que se
está ejecutando.
__LINE__ : Contiene la línea que se está ejecutando en ese
momento exacto del fichero actual
__FUNCTION__ :Añadida en la versión 4.3 de PHP,
contiene el nombre de la función que se está ejecutando
actualmente
__CLASS__ : Añadida también en la versión 4.3, contiene el
nombre de la clase que se ejecuta actualmente
__METHOD__ - Añadida el la versión 5, contiene el nombre
del método actual

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 70


Unidad 2 :PHP

 Ejemplo de uso de estas constantes:

<?php
echo "Ejecutando la línea ".__LINE__;
?>

Nótese que estas constantes tienen dos barras de subrayado


delante y dos detrás del nombre cada una.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 71


Unidad 2 :PHP

 Tipos de datos en PHP


PHP es un lenguaje de los denominados de tipo dinámico, lo que
significa que una misma variable puede tener tipos ( numero,
texto, vector... ) diferentes en distintos momentos. Por esta
razón, no soporta la definición de tipos en la declaración de
variables sino que el tipo de la variable viene determinado por
el contexto en el que se encuentra. Ejemplo:

<?php
// La variable $var1 es un numero ( entero )
$var1 = 3;
// La variable $var2 es un texto ( cadena de caracteres )
$var2 = "9 años";
//Si juntamos las variables $var1 y $var2, obtenemos un texto
$var3 = $var1 . $var2; // "39 años"
// Si en cambio las sumamos obtendremos un número
$var3 = $var1 + $var2; // 12 ( 3 + 9)
?>
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 72
Unidad 2 :PHP

 Se puede forzar un tipo determinado, con la función settype o


ente paréntesis delante de la variable uno de los siguientes
tipos de datos:
1) boolean – Lógico: Puede contener 2 valores True o False.
Al usarlo cómo entero su valor puede ser 1 ( True ) o 0 (
False ).

Un ejemplo típico de lógico es el resultado de una


comparación:

<?php
$var1= 1 != 2 ; // $var1 es true
?>

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 73


Unidad 2 :PHP

2) integer – Entero: Puede contener enteros ( sin decimales


) positivos y negativos, se pueden escribir en notación octal,
decimal y hexadécimal:
<?php
$var1 = 027; // Notación octal ( 23 en decimal )
$var1 = 23; // Notación decimal
$var1 = 0x17; // Notación hexadecimal ( 23 en decimal )
?>

Si se utiliza cómo lógico su valor es False si es 0 o True en


cualquier otro caso.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 74


Unidad 2 :PHP

3) float – Decimal: En versiones anteriores a la 4.2.0 de PHP


se les llamaba double, contienen números decimales positivos o
negativos. Si lo usamos cómo entero, su valor se redondea a la
baja ( truncamiento ).
4) string - Cadena de caracteres: Es una lista de caracteres (
letras, cifras, signos... ) en un orden determinado, por ejemplo
"hola mundo". Los representamos delimitados con comillas
dobles o simples. No podemos utilizar el mismo tipo de comillas
en el interior de una cadena que para delimitarla, en este caso le
tendremos que poner un \ delante para diferenciarla del final de
la cadena, y se puede confundir, \\ en lugar de \:
<?php // Así si
$var1 = "pongo \ delante de las \" pero no de las ' ";
$var1 = 'pongo \ delante de las \' pero no de las " ';
$var1 = "pongo \\";
// Así no
$var1 = "pongo " donde quiero"; // Mal ! "
$var1 = "pongo \"; // Mal ! \
?>

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 75


Unidad 2 :PHP
Las cadenas con comillas dobles, a parte de \" y \' tienen otros
caracteres especiales:
\n - Salto de línea (en código, no en la presentación de la pág.)
\r - Retorno de carro (Enter)
\t - Tabulador
\$ - Peso

La existencia de un carácter especial \$ para peso, es porque en


el interior de comillas dobles podemos usar variables. Si vamos
a acceder a elementos de un vector, lo agruparemos con { y }
detrás del $:
<?php // Así si
$var1 = "php";
$var2 = Array ( "php","html" ); // [0]=>php, [1]=>html
$var3 = "aprendo $var1"; // aprendo php
$var3 = "aprendo {$var2[0]}"; // aprendo php
// Así no
$var3 = "aprendo $var2[0]"; // aprendo Array
?>
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 76
Unidad 2 :PHP

Si mezclamos una cadena con números ( enteros o decimales)


se utilizará cómo número hasta el primer carácter incorrecto.
Si lo mezclamos con lógicos será False cuando la cadena está
vacía.

5) null – vacío: No tiene valor, se comporta como cadena


vacía, cero o false;

6) array – vector: Se verán a continuación como parte de


un nuevo tópico.

2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 77


Unidad 2 :PHP

 Vectores en PHP
Los vectores o array ( a veces mal llamados arreglos ) son
listas ordenadas de elementos. Para definir un vector en PHP
utilizamos la función array:

<?php
$vector = array ( "elemento 1", "elemento 2" );
?>

Una vez definido el vector, podemos acceder a sus elementos,


sus elementos estarán identificados por un número (
empezando por 0 ) o una clave que se puede definir así:

<?php
$vector = array ( "clave 1" => "elemento 1", "clave 2" => "el
emento 2" );
?>
2007, Claudio Hormazábal Lenguajes de Programación claudio@hormazabal.cl 78

También podría gustarte