Escolar Documentos
Profissional Documentos
Cultura Documentos
DE ECATEPEC
DIVISION INGENIERIA EN SISTEMAS
COMPUTACIONALES
ACADEMIA DE INGENIERIA APLICADA
GRUPO: 5153
1
TECNOLOGICO DE ESTUDIOS SUPERIORES
DE ECATEPEC
DIVISION INGENIERIA EN SISTEMAS
COMPUTACIONALES
ACADEMIA DE INGENIERIA APLICADA
GRUPO: 5153
2
Índice
Introducción………………………………………………………………….4
Objetivo………………………………………………………………………4
Justificación………………………………………………………………….4
Análisis del problema……………………………………………………….4
Lenguaje de programación………………………………………………...5
1. Java…………………………………………………………………….....6
1.1 Estructura básica del programa……………………………….6-8
1.2 Elementos del lenguaje……………………………………….8-10
1.3 Tipos de dato…………………………………………………10-14
1.3.1 Variables y constantes…………………………………..14-18
1.3.2 Entrada y salida de datos………………………………..18-34
1.4 Errores en tiempo de ejecución……………………………34-35
1.5 Ejecución de un programa………………………………….36-38
2. C++………………………………………………………………………39
2.1 Estructura básica del programa…………………………….39-40
2.2 Elementos del lenguaje……………………………………..40-41
2.3 Tipos de dato…………………………………………………42-43
2.3.1 Variables y constantes…………………………………...44-47
2.3.2 Entrada y salida de datos………………………………..47-50
2.4 Errores en tiempo de ejecución………………………………..51
2.5 Ejecución de un programa………………………………….51-52
3. Python……………………………………………………………………………….53
3.1 Estructura básica del programa……………………………53-54
3.2 Elementos del lenguaje……………………………………..54.56
3.3 Tipos de dato…………………………………………………….56
3.3.1 Variables y constantes……………………………………56-57
3.3.2 Entrada y salida de datos………………………………..58-61
3.4 Errores en tiempo de ejecución………………………………..61
3.5 Ejecución de un programa………………………………….61-62
4. Conclusiones……………………………………………………..…63-64
5. referencias………………………………………………………………65
3
Introducción
Los Lenguajes de programación son aplicaciones específicas diseñadas para
crear otras aplicaciones o programas. Son programas para crear programas. Se
basan en un sistema de instrucciones preestablecidas que indican al ordenador lo
que debe realizar Son códigos integrados compuestos por un vocabulario, con una
sintaxis y una semántica que permite elaborar infinitas secuencias válidas de
tareas e instrucciones.Por medio de ello se realizara la elaboración de un reporte
con datos correctos, congruentes y ya previamente investigados con las
características de tres diferentes lenguajes de programación con sus respectivos
conceptos, definiciones y/o ejemplos. Los elementos que se mencionaran son la
estructura básica del programa, elementos de lenguaje, tipos de dato como son
las variables y constantes y entrada y salida de datos, errores en tipo de ejecución
y la ejecución de de un programa.
Objetivo:
Que el alumno conozca y aprenda la definición de los diferentes elementos en los
lenguajes de programación.
Justificación:
Lo que se hace para la realización es hacer una investigación, previa sobre las
estructuras básicas, los tipos de datos, las entradas y salidas, los errores y la
ejecución.
4
Lenguaje de programación
5
1. JAVA (Lenguaje de programación)
Toda aplicación de consola en Java contiene una clase principal con un método (o
función) main, al igual que en C++, la función main es lo primero que se ejecuta
cuando se inicia la aplicación desde la línea de comandos. De esta forma
podemos deducir que cualquier llamado, declaración o método que no sea
llamado de manera directa o indirecta desde el método main nunca se ejecutará.
En Java el método main recibe como argumento un arreglo de String. Este arreglo
contiene los argumentos enviados por la línea de comandos para la invocación del
programa.
Línea 4: La línea numero cuatro contiene una llave cerrando "}" eso nos indica que
en esta línea termina la ejecución de alguna función (para identificar esta función
que se cierra, sigue la indentacion u seguramente sabrás cual es la que estamos
cerrando) pues bien, habrás notado que la función que esta llave esta cerrando es
la función main(), esto quiere decir que todo lo que halla despues de esta llave
formará parte de la clase "nombre_clase" pero no sera ejecutado ni formará parte
de la función main.
7
Línea 5: La línea cinco, nos indica al igual que la cuatro el final de una función o
en este caso de una clase, esta línea 5 entonces nos indica el final de la clase
"nombre_clase.
Identificadores
Son los nombres que pueden tener las clases, los métodos y las variables y no
pueden contener espacios ni caracteres especiales. Estos nombres deben
respetar ciertas convenciones según la siguiente tabla:
Si el identificador está formado por más de un vocablo, a partir del segundo las
iniciales deben ser mayúsculas. Además, se recomienda que los nombres de las
clases sean sustantivos, los de los métodos verbos y que las variables expresen
con claridad su contenido.
Sentencias
Son las órdenes que se deben ejecutar en el programa y terminan siempre con un
punto y coma:
Por ejemplo:
Bloques de código
8
una de cierre (considerados metacaracteres en java, como veremos más
adelante):
{}
Por ejemplo:
Comentarios
Expresiones
Las expresiones son entidades formadas por dos o más miembros separados
entre sí por operadores que los evalúan y los relacionan.
Por ejemplo;
9
Operadores
Los operadores son signos especiales para hacer acciones específicas y son el
mecanismo con el cual los objetos interactúan relacionando los datos y
devolviendo nuevos valores; los mostraremos conforme los necesitemos. Se
clasifican así:
Aritméticos
De comparación y lógicos
De asignación
Metacaracteres
([{\^-$|]})?*+
Palabras reservadas
Hay un grupo de palabras en Java con las cuales, entre otras cosas, se realizan
las tareas principales, se delimitan los alcances de los objetos, sus datos y sus
métodos, etc. Se pueden clasificar así y las mostraremos también conforme
avancemos:
Tipos de datos
Sentencias condicionales
Sentencias iterativas
Tratamiento de las excepciones
Estructura de datos
Modificadores y control de acceso
11
DATOS NUMÉRICOS ENTEROS
En Java los representan los tipos: byte, short, int, long.
El tipo de dato numérico entero es un subconjunto finito de los números enteros
del mundo real. Pueden ser positivos o negativos.
Ejemplo de declaración de variables enteras:
int a;
byte n1, n2;
short x;
DATOS NUMÉRICOS REALES
En Java los representan los tipos: float, double.
El tipo de dato numérico real es un subconjunto finito de los números reales.
Siempre llevan un punto decimal y también pueden ser positivos o negativos. Los
números reales tienen una parte entera y una parte decimal.
Por ejemplo: 0.08 -54.0001
Ejemplo de declaración de variables reales:
float peso;
12
double longitud;
float altura = 2.5F;
double area = 1.7E4; // equivale a 1.7 * 104
double z = .123; //si la parte entera es 0 se puede omitir
DATOS DE TIPO CARÁCTER
En Java se representa con el tipo char.
Un dato de tipo carácter se utiliza para representar un carácter dentro del rango
\u0000 a \uFFFF (números desde 0 hasta 65535) en Unicode.
En realidad un dato de tipo char contiene un número entero dentro del rango
anterior que representa un carácter.
En Java se utiliza el código Unicode para la representación de caracteres. Este
código actualmente representa los caracteres de la mayoría de idiomas escritos en
todo el mundo.
Los 127 primeros caracteres de Unicode corresponden al código ASCII.
El Código ASCII (American Standard Code for Information Interchange o Código
Estándar Americano para el Intercambio de Información) asigna valores numéricos
a las letras, números, signos de puntuación y algunos otros caracteres especiales.
ASCII incluye 256 códigos divididos en dos conjuntos, estándar y extendido, de
128 cada uno. El conjunto ASCII básico, o estándar, utiliza 7 bits para cada
código, lo que da como resultado 128 códigos de caracteres desde 0 hasta 127.
El conjunto ASCII extendido utiliza 8 bits para cada código, dando como resultado
128 códigos adicionales, numerados desde el 128 hasta el 255.
En el conjunto de caracteres ASCII básico, los primeros 32 valores están
asignados a los códigos de control de comunicaciones y de impresora (caracteres
no imprimibles) empleados para controlar la forma en que la información es
transferida desde una computadora a otra o desde una computadora a una
impresora. En este grupo están los códigos correspondientes a la barra
espaciadora (SP por space), la tecla ENTER de retorno de carro a un nuevo
renglón (CR por carry return), etc. También existen caracteres de control usados
en teleprocesamiento, como ser ACK (Acknowledge - aviso de mensaje recibido),
BEL (bell - aviso por señal sonora), ETX (end of text – fin de texto), STX (start of
text – comienzo de texto), etc.
Los 96 códigos restantes del código básico corresponden a los caracteres
imprimibles y se asignan a los signos de puntuación corrientes, a los dígitos del 0
al 9 y a las letras mayúsculas y minúsculas del alfabeto latino.
Los códigos correspondientes al ASCII extendido, del 128 al 255, se asignan a
aquellos caracteres que no pertenecen al alfabeto anglosajón, por ejemplo, las
vocales con tilde, la ñ, y en general todos los caracteres especiales que utilizan los
distintos lenguajes.
13
a este problema ha sido crear un código más grande con el que poder representar
cualquier carácter de cualquier idioma: el código Unicode.
El código UNICODE proporciona una única representación numérica para cada
símbolo, independientemente del ordenador, el programa o el lenguaje de
programación que se use.
La codificación Unicode se ha transformado en un estándar adoptado por las
principales empresas de hardware y software. Java utiliza la codificación Unicode.
Ejemplo de declaración de variables de tipo carácter:
char car;
char letra1 = 'z';
char letra = '\u0061'; //código unicode del carácter ‘a’
DATOS DE TIPO LÓGICO
Se representan con el tipo boolean.
Los datos de este tipo sólo pueden contener dos valores: true (verdadero) ó false
(falso).
Ejemplo de declaración de variables lógicas:
boolean primero;
boolean par = false;
Los tipos de datos lógicos son también conocidos como booleanos en honor del
matemático inglés George Bool, que desarrolló la teoría conocida como álgebra de
bool que fue la base para la representación de los circuitos lógicos.
Una clase en Java puede contener variables y métodos. Las variables pueden ser
tipos primitivos como int, char, etc. Los métodos son funciones.
public MiClase() {
i = 10;
}
public void Suma_a_i( int j ) {
int suma;
suma = i + j;
}
}
14
La clase MiClase contiene una variable (i) y dos métodos, MiClase() que es el
constructor de la clase y Suma_a_i( int j ).
El tipo de una variable determina los valores que se le pueden asignar y las
operaciones que se pueden realizar con ella.
Para los programadores C++, se pueden señalar algunas diferencias entre Java y
C++ respecto a la sintaxis e interpretación en la declaración de variables miembro
de una clase, como son:
[especificador_de_acceso][static][final][transient][volatile]
tipo nombreVariable [= valor_inicial];
15
Ambito de una Variable
Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las
variables de Java sólo son válidas desde el punto donde están declaradas hasta el
final de la sentencia compuesta que la engloba. Se pueden anidar estas
sentencias compuestas, y cada una puede contener su propio conjunto de
declaraciones de variables locales. Sin embargo, no se puede declarar una
variable con el mismo nombre que una de ámbito exterior.
class Ambito {
int i = 1; // ámbito exterior
{ // crea un nuevo ámbito
int i = 2; // error de compilación
}
}
Variables de Instancia
miObjeto.miVariableDeInstancia;
miVariablePuntero->miVariableDeInstancia;
Variables Estáticas
16
La declaración de un dato miembro de una clase usando static, crea una variable
de clase o variable estática de la clase. El significado de variable estática es que
todas las instancias de la clase (todos los objetos instanciados de la clase)
contienen la mismas variables de clase o estáticas. En otras palabras, en un
momento determinado se puede querer crear una clase en la que el valor de una
variable de instancia sea el mismo (y de hecho sea la misma variable) para todos
los objetos instanciados a partir de esa clase. Es decir, que exista una única copia
de la variable de instancia, entonces es cuando debe usarse la palabra clave
static.
Tanto en Java como en C++, se puede acceder a las variables de clase utilizando
el nombre de la clase y el nombre de la variable, no es necesario instanciar ningún
objeto de la clase para acceder a las variables de clase.
miVariable::miVariableDeClase;
17
Es importante recordar que todos los objetos de la clase comparten las mismas
variables de clase, porque si alguno de ellos modifica alguna de esas variables de
clase, quedarán modificadas para todos los objetos de la clase. Esto puede
utilizarse como una forma de comunicación entre objetos.
Constantes
En Java, se utiliza la palabra clave final para indicar que una variable debe
comportarse como si fuese constante, significando con esto que no se permite su
modificación una vez que haya sido declarada e inicializada.
class Elipse {
final float PI = 3.14159;
...
}
Si se usa la palabra clave final con una variable o clase estática, se pueden crear
constantes de clase, haciendo de esto modo un uso altamente eficiente de la
memoria, porque no se necesitarían múltiples copias de las constantes.
La entrada y salida estándar son flujos de datos que actúan como canales de
comunicación permitiendo la interacción entre un programa y su entorno en el
sistema. En Java podemos tener acceso a estos flujos de datos desde la clase
java.lang.System.
Salida estándar
La salida estándar esta asociada por defecto a la terminal del sistema, es decir
que el resultado de los datos enviados a la salida se observa en pantalla a menos
que su destino sea modificado. Existen dos salidas con diferentes propositos, una
es la propiamente denominada salida estándar la cual se utiliza para la salida
regular de datos, y la otra es la salida estándar de errores la cual se utiliza para la
salida de errores.
18
La salida de datos: System.out
La salida estándar de datos para uso normal (abreviada y en inglés: StdOut) esta
representada por un objeto PrintStream llamado out. La clase PrintStream es una
implementación especial de FilterOutputStream y por lo tanto también de la clase
base OutputStream, de modo que mostrar datos en pantalla es tan sencillo como
referirnos a la variable out e invocar el método void println(String x).
Recordando un ejercicio básico que probablemente todo novato haya echo, aquí
vemos la línea de código que utilizamos para escribir la famosa cadena de texto
“Hola Mundo”:
1...
2System.out.println("Hola Mundo");
3...
La salida:
Hola Mundo
Los métodos print(...) y println(...) son los más usados. De hecho la clase
PrintStream posee estos métodos sobrecargados para todos los datos primitivos
(int, long, etc.) y entonces así puede enviar cualquier tipo de dato como texto hacia
la salida. Los objetos que se quieran imprimir o concadenar serán implícitamente
representados por su implementación del método String toString().
Método Descripción
void printf(String format, Utiliza un Formatter para poder escribir un String formateado.
Object... args) (Disponible desde J2SE 5.0)
Esta es otra salida estándar pero con el fin de ser utilizada para errores (abreviada
y en inglés: StdErr). Al igual que StdOut, también es representada por un objeto
19
PrintStream que en este caso se llama err. Los métodos que podemos invocar
aquí son los mismos vistos anteriormente.
1...
2System.out.println("Esta es la salida estandar normal");
3System.err.println("Esta es la salida estandar de errores");
4...
La salida en NetBeans:
Como se puede observar, en el entorno de un IDE como este utilizar las dos
salidas nos puede ayudar a tener un registro mas legible de las actividades del
programa.
Podríamos sacar mas provecho de estas dos salidas si se modifica su destino. Por
ejemplo podríamos guardar los logs de un programa enviando la salida out a un
archivo llamado salida_normal.txt y la salida err a un archivo llamado
salida_error.txt.
Una forma de modificar las salidas es utilizando los métodos estáticos void
setOut(PrintStream out) y void setErr(PrintStream err) de la propia clase System.
Necesitamos abrir flujos de datos hacia los nuevos destinos de cada salida, para
cada una se envuelve un objeto FileOutputStream(File file) con un objeto
PrintStream(OutputStream out). Véase:
20
1...
2System.setOut(new PrintStream(new FileOutputStream("salida_normal.txt")));
3System.setErr(new PrintStream(new FileOutputStream("salida_error.txt")));
4
5System.out.println("Esta es la salida estandar normal");
6System.err.println("Esta es la salida estandar de errores");
7
8throw new RuntimeException("Error Fatal");
9...
Otra forma de modificar las salidas estándar es a través de la consola del sistema,
tanto en sistemas Windows como UNIX podemos escribir lo siguiente para un tarro
(.jar):
En ambos casos lo que estamos haciendo es cambiar primero con “>” la salida
out hacia salida_normal.txt y luego con “2>” la salida err hacia salida_error.txt. En
estos casos esos dos archivos se guardarían en el directorio desde donde se esta
ejecutando este comando en la consola, pero también se podría haber
especificado una ruta absoluta.
Otra cosa practica que puede hacerse desde la consola es bloquear una o incluso
las dos salidas. Para bloquear la salida out escribimos:
Lectura en bytes
1...
2System.out.println("> Introduce un caracter...");
3int in = System.in.read();
4System.out.println("> Has introducido: " + in);
5...
22
Cuando se lee directamente un flujo de bytes sabemos que estamos trabajando
con ASCII, y podríamos hacer una conversión de int a char (un casting) para
obtener el carácter:
1...
2System.out.println("> Introduce un caracter...");
3
4int in = System.in.read();
5char c = (char) in;
6
7System.out.println("> Has introducido: " + c);
8...
La salida:
Si quisiéramos leer más de un byte podemos intentar con el método int read(byte[]
b), véase:
1 ...
2 System.out.println("> Introduce cinco caracteres...");
3
4 byte[] bufferIn = new byte[5];
5 System.in.read(bufferIn);
6
23
7 for (int i = 0 ; i < bufferIn.length ; i++) {
8 System.out.println("> Has introducido: " + bufferIn[i]);
9 }
10...
En este caso si presionamos más teclas seria en vano, como el buffer que
estamos usando es de 5 bytes el espacio de almacenamiento es limitado.
1...
24
2System.out.println("> Introduce lo que quieras...");
3
4int in = 0;
5while (in != -1) {
6in = System.in.read();
7System.out.println("> Has introducido: " + in);
8}
9...
Introduciendo cualquier cosa veremos los valores de cada carácter junto a los
valores adicionales de cada pulsación de Intro. El bucle solo se detendrá hasta
recibir el valor -1 que representa un EOF (End Of File: el fin de un archivo) y como
la entrada esta asociada al teclado y no a un archivo lo que haremos es emular un
EOF, en la consola de Windows esto se puede hacer presionando CTRL + Z y en
sistemas UNIX presionando CTRL + D. Si no logras detenerlo simplemente finaliza
el proceso desde el administrador de tareas.
La salida en mi caso:
La clase Reader es la clase base en el paquete java.io para manejar los flujos
entrantes de caracteres (16-bit), de esta clase heredan varias clases cuyas
implementaciones se pueden utilizar en combinación con otras clases para
diferentes propósitos. De estas implementaciones tomaremos para combinar con
el InputStream (que representa la entrada estándar) la clase InputStreamReader
que convierte bytes en caracteres. Véase:
1...
2System.out.println("> Introduce un caracter...");
3
4InputStreamReader isr = new InputStreamReader(System.in);
5int in = isr.read();
6
7System.out.println("> Has introducido: " + in);
8...
26
El método int read() de InputStreamReader mantendrá la aplicación bloqueada en
espera de que se introduzca algo en la entrada estándar para poder continuar, el
resultado de presionar A como mayúscula es: 65, si hubiera sido en minúsculas
seria: 97. Hasta aquí parece lo mismo que utilizar el método int read()
directamente desde InputStream como vimos anteriormente, pero en este caso el
método int read() lee concretamente un carácter y lo devuelve representado como
un int (número entero) con un valor entre 0 – 65535 (notar que el rango es mucho
mayor, esto es Unicode), y -1 en caso de que se llegue al EOF (End Of File: fin de
un archivo).
Como los caracteres ASCII (y también el superset de ASCII ISO Latin 1) están
incluidos en Unicode esperamos el mismo resultado de ambos métodos int read()
siempre que usemos caracteres normales que están cubiertos por el formato
ASCII. Pero ¿porque int read() en InputStreamReader no devuelve directamente el
char?, posiblemente sea para poder devolver el -1 que significa un EOF ya que
este no tiene un carácter que lo represente.
1...
2System.out.println("> Introduce algo...");
3InputStreamReader isr = new InputStreamReader(System.in);
4
5int in = isr.read();
6char c = (char) in;
7
8System.out.println("> Has introducido: " + c);
9...
La salida es:
27
Si quisiéramos leer mas de un carácter podemos intentar con el método int
read(char[] cbuf), véase:
1 ...
2 System.out.println("> Introduce cinco caracteres...");
3
4 InputStreamReader isr = new InputStreamReader(System.in);
5 char[] bufferIn = new char[5];
6 isr.read(bufferIn);
7
8 for (int i = 0 ; i < bufferIn.length ; i++) {
9 System.out.println("> Has introducido: " + bufferIn[i]);
10}
11...
En este caso si presionamos más teclas seria en vano, como el buffer que
estamos usando es de 5 bytes el espacio de almacenamiento es limitado.
28
> Has introducido:
Ya podemos ver los caracteres A, B y C. En este caso los otros valores que
obtenemos por presionar Intro (CR y LF, en Windows) no son visibles como un
carácter, pero el que demuestra su presencia es LF que provoca una nueva línea
en la salida de la consola.
1 ...
2 System.out.println("> Introduce lo que quieras...");
3
4 InputStreamReader isr = new InputStreamReader(System.in);
5 int in = 0;
6
7 while (in != -1) {
8 in = isr.read();
9 char c = (char) in;
10System.out.println("> Has introducido: " + c);
11}
12...
La salida en mi caso:
29
> Has introducido:
ABCDE
> Has introducido: A
> Has introducido: B
> Has introducido: C
> Has introducido: D
> Has introducido: E
> Has introducido:
> Has introducido:
escribo algo!
> Has introducido: e
> Has introducido: s
> Has introducido: c
> Has introducido: r
> Has introducido: i
> Has introducido: b
> Has introducido: o
> Has introducido:
> Has introducido: a
> Has introducido: l
> Has introducido: g
> Has introducido: o
> Has introducido: !
> Has introducido:
> Has introducido:^Z
La forma normalmente más cómoda, eficiente y utilizada (al menos de los recursos
que tenemos antes del J2SE 5.0) para leer caracteres desde el teclado es
combinando también otra de las clases que heredan de Reader, se trata de la
clase BufferedReader y utilizar su método String readLine().
1 ...
2 System.out.println("> Introduce algo...");
30
3
4 InputStreamReader isr = new InputStreamReader(System.in);
5 BufferedReader br = new BufferedReader(isr);
6
7 String s = br.readLine();
8
9 System.out.println("> Has introducido: " + s);
10...
La salida es:
1 ...
2 System.out.println("> Introduce algo...");
3
4 InputStreamReader isr = new InputStreamReader(System.in);
5 BufferedReader br = new BufferedReader(isr);
6
7 String s = br.readLine();
8 int n = Integer.parseInt(s);
9
10System.out.println("> Has escrito: " + n);
11...
31
La salida de este ejemplo seria exactamente igual que el caso anterior, pero por
alguna razón suponiendo que estamos trabajando con números y necesitáramos
hacer algún calculo aritmético no podíamos mantener como String nuestro tipo de
dato obtenido, por eso mediante el método estático int parseInt(String s) de la
clase Integer se convierte nuestro String en int.
1...
2System.out.println("> Introduce una linea de texto...");
3
4Scanner sc = new Scanner(System.in);
5String s = sc.nextLine();
6
7System.out.println("> Has introducido: " + s);
8...
Salida:
1...
2System.out.println("> Introduce un numero entero...");
32
3
4Scanner sc = new Scanner(System.in);
5int i = sc.nextInt();
6
7System.out.println("> Has introducido: " + i);
8...
Salida:
También hay muchos otros métodos que se pueden utilizar, la clase Scanner es
muy potente y merece su propio tutorial. Pero teniendo en cuenta estos ejemplos
lo que falta es el control de excepciones, sobretodo la excepción
InputMismatchException que siempre es generada cuando un método recibe un
tipo de dato que no puede manejar. Aunque no estemos obligados a tratarla
deberíamos de hacerlo, por ejemplo si esperamos como en el segundo ejemplo un
número entero con int nexInt() pero introducimos un número largo se generaría
esta excepción.
1 ...
2 System.out.println("> Introduce un numero entero...");
3
4 Scanner sc = new Scanner(System.in);
5 int i = -1;
6
7 try {
8 i = sc.nextInt();
9 System.out.println("> Has introducido: " + i);
10} catch (InputMismatchException imme) {
11System.out.println("> El dato ingresado no es valido!");
33
12}
13...
Los errores en tiempo de ejecución son los que se producen durante la ejecución
del programa. Son los más difíciles de encontrar, no son detectados por el
compilador, ya que son errores de lógica, no de sintaxis. Aunque al compilar un
programa no de errores, el programa puede funcionar incorrectamente y/o a dar
errores durante su ejecución.
Por ejemplo:
Encontrar la causa que los provoca es una labor en ocasiones complicada, razón
por la cual los EID (Entornos Integrados de Desarrollo,) nos proporcionan una
herramienta llamada Depurador que nos ayuda a encontrar los errores lógicos y
demás errores producidos en tiempo de ejecución. Un depurador (debugger), es
un programa diseñado específicamente para la detección, verificación y corrección
de errores. Los depuradores nos permiten trazar el programa (ejecutarlo sentencia
a sentencia) y visualizar el contenido de las variables y direcciones de memoria
durante la ejecución del programa. Además permiten alterar el flujo de ejecución
del mismo, cambiar los valores de las variables e introducir puntos de parada.
35
1.5Ejecución de un programa
Código
/*
grupo: 5153
fecha: 25 de abril 18
practica: proyecto
*/
package hola.mundo;
/**
36
*
* @author edmar
*/
/**
*/
System.out.println("hola mundo");
37
38
2. c++ (Lenguaje de programación)
Caracteres
40
Los caracteres que se pueden utilizar en la sintaxis del lenguaje.
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
+-*/=(){}[]<>’”!@-/^&%_:.,;?|
Espacio y tabulador
N, i, con
K456, var45
Dato_entrada, precio_producto
El c++ es sensible a las letras mayúsculas por lo que dos nombres iguales con
mayúsculas o minúsculas son diferentes.
Palabras reservadas
41
2.3 Tipos de dato
El tipo de dato determina la naturaleza del valor que puede tomar una variable.
Los tipos de datos en C++ se clasifican en primitivos y derivados.
Los tipos de datos primitivos son los que están definidos dentro del lenguaje.
En este tema veremos los tipos primitivos y en temas siguientes estudiaremos los
tipos derivados.
Los tipos de datos primitivos en C++ son: numéricos enteros, numéricos reales,
tipo lógico y tipo carácter ampliado.
42
signed long Entero largo 4 -2147483648 a +2147483647
Entero largo sin
unsigned long 4 0 a 4294967295
signo
signed char Carácter 1 -128 a 127
unsigned char Carácter sin signo 1 0 a 255
Podemos ver que los datos enteros de tipo signed son equivalentes a los enteros
sin utilizar el calificador:
signed int a; es equivalente a escribir int a;
Tipo lógico
Los datos de este tipo sólo pueden contener dos valores: true ó false (verdadero ó
falso).
Si se muestran como enteros, el valor true toma el valor 1 y false el valor 0.
Tipo de Número de
Descripción Rango
Dato bytes típico
bool Dato de tipo lógico 1 0, 1
Tipo carácter extendido
Este tipo se utiliza para representar caracteres UNICODE. Utiliza 2 bytes a
diferencia del tipo char que solo utiliza 1.
Tipo de Número de
Descripción Rango
Dato bytes típico
wchar_
Carácter Unicode 2 0 a 65535
t
43
2.3.1 Variables y constantes
Las variables son posiciones en memoria donde estarán guardados los diferentes
valores que le damos o que toman duranet ejecución los datos que usamos y
normalmente estarán disponibles a lo largo de la ejecución de nuestro programa.
Para asignar valores a una variable en una gran variedad de lenguajes que incluye
a C++ se usa el operador "=" seguido del valor que le daremos a la variable (no
todos usan el "=" para esto). Veamos un ejemplo completo con todos los posibles
usos que le damos a una variable.
#include <iostream>
using namespace std;
int main()
{
char x = 'a'; // Declaramos y asignamos en la misma línea
float res = numero + num2; //Sumamos dos variables y las asignamos a res
//3.5 + 8 = 11.5
res = res + num; //Al valor actual de res le sumamos el valor de num
//11.5 + 5 = 16.5
cout << res << endl; //Mostramos el valor de res por pantalla
return 0;
44
}
En el código anterior hemos visto las multiples formas en que se puede declarar
una variable, cómo asignarle un valor, incluso vimos que es posible asignarle el
valor de una variable a otra, o realizar operaciones entre los valores de variables y
asignar el resultado a una variable nueva, vimos que es posible usar el valor de
una misma variable y cambiar su propio valor (res = res*2).
Las datos constantes, mal llamadas por algunos "variables constantes" (realmente
no son variables) tienen un valor fijo durante toda la ejecución del programa, es
decir, este valor no cambia ni puede ser cambiado a lo largo de la ejecución de
nuestro programa. Las constantes son muy útiles para especificar el tamaño de un
vector y para algunas otras cosas, como facilidad de uso y confiabilidad del
código. Para declarar una constante, se hace despues de declarar las librerías y
antes de las funciones, la sintaxis es la siguiente: #define nombre_constante valor.
Veamos algunos detalles y luego unos ejemplos sencillos del uso de las
constantes en C++
En C++ se pueden definir constantes de dos forma, ambas válidas para nosotros.
La primera es por medio del comando #define nombre_constante valor y la
segunda es usando la palabra clave const, veamos ahora cada una de estas
formas en detalle.
#include <iostream>
using namespace std;
int main()
{
cout << "Mostrando el valor de PI: " << PI;
45
return 0;
}
Notemos que ha sido bastante fácil, sin embargo no todo es bueno. Realmente al
usar la instrucción #define en C++ no estámos creando una constante realmente,
estamos creando una expresión y por tal motivo hay algunas cosas que se
complican, veamos:
#include <iostream>
using namespace std;
int main()
{
cout << "Mostrando el valor de PI: " << PI << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
46
const float PI = 3.1416; //Definimos una constante llamada PI
cout << "Mostrando el valor de PI: " << PI << endl;
return 0;
}
Notemos que de igual forma ha sido bastante fácil y mejor aún ha sido mucho más
intuitivo y sencillo para nosotros. Se puede ver que la declaración es muy similar a
la de una variable cualquiera y que ya no tenemos complicaciones al intentar
añadir la instrucción endl para agregar el salto de línea. Veamos que realmente la
variable no puede cambiar:
#include <iostream>
using namespace std;
int main()
{
const float PI = 3.1416; //Definimos una constante llamada PI
cout << "Mostrando el valor de PI: " << PI << endl;
PI = 2; //Esto generará un error pues PI es de solo lectura (constante)
return 0;
}
La entrada y salida de datos en C++ es simple (al menos para los casos más
comunes). Con esto hago una comparación entre C++ y Java, pues leer una
entrada del usuario por teclado en C++ es bastante simple mientras que en Java
implica una serie de conceptos adicionales que la hacen un tanto más complicada.
Por suerte para nosotros en esta sección veremos cómo leer por teclado en C++,
en otras palabras, asignar a una variable el valor que el usuario escriba por el
teclado. Adicional a esto veremos también cómo mostrar texto por pantalla en
C++, es decir, salida de datos.
Vamos a comenzar primero con aprender a mostrar texto por pantalla en C++.
Este orden se debe a que cuando queremos pedirle algún dato al usuario primero
debemos hacerle saber lo que queremos que ingrese y para hacérselo saber
debemos mostrarle un mensaje con las indicaciones, por tal motivo es importante
47
primero saber mostrar texto en pantalla en C++ y luego a leer texto por teclado en
C++.
Mostrar texto por pantalla en C++ es muy simple. Para imprimir una salida de texto
en C++ se hace uso de la instrucción cout<< es importante tener en cuenta que la
instrucción cout siempre va acompañada de << para controlar el flujo de datos que
sale. No te fijes mucho en ellos, solo ten siempre presente que cout viene
acompañado de << para tener cout<< como resultado.
#include "iostream"
int main()
{
//Se muestra un mensaje por pantalla.
cout << "Hola Mundo" << " Desde AAP." << endl;
return 0;
}
#include "iostream"
#include "string"
int main()
{
string salida1 = "Ejemplo de salida"; //El valor de esta variable se mostrará en
pantalla
48
int numero = 2; //Este valor también se mostrará en pantalla.
string salida2 = "Desde AAP."; //Estos valores se concatenarán en una única
salida
return 0;
}
En este ejemplo de salida por pantalla hemos visto que también es posible usar la
instrucción cout para mostrar en pantalla el valor de las variables así sean
numéricas o cadenas de texto. También vimos que podemos concatenar los
valores de esas variables entre sí y también concatenarlas con otros valores
directamente (espacios, puntos, símbolos, etc.).
Ya tenemos claro cómo mostrar texto por pantalla en C++ ahora haremos uso de
este concepto y veremos cómo leer texto por teclado en C++. Veamos:
Veamos unos ejemplos simples para leer datos en C++. Recuerda como dije más
arriba que lo ideal para leer datos es indicarle al usuario qué es lo que esperamos
que ingrese por lo que en estos ejemplos usaremos también lo recién aprendido
(mostrar texto por pantalla).
#include "iostream"
#include "string"
int main()
{
49
cout << "Hola! Este es un ejemplo en C++" << "\n" << "Por favor ingrese su
nombre:" << endl; //La instrucción \n es un salto de línea Mostrando los textos
separados
cout << "Bienvenido al sistema " << nombre << ". Gracias por usar nuestra
aplicación" << endl;
return 0;
}
#include "iostream"
#include "string"
int main()
{
cout << "Hola! Aqui podras realizar sumas" << endl;//Mensaje de bienvenida
float numero1, numero2; //Se declaran los números que se sumarán (pueden
ser decimales)
cout << "Por favor ingrese el primer valor: " << endl; //Se pide el primer numero
cin >> numero1; //Se asigna el primer valor a numero1
cout << "Por favor ingrese el segundo valor: " << endl; //Se pide el segundo
numero
cin >> numero2; //Se asigna el segundo valor a numero2
cout << "El resultado de la suma de " << numero1 << " + " << numero2 << " es: "
<< numero1+numero2 << endl; //Se muestra el resultado.
return 0;
}
50
2.4 Errores en tiempo de ejecución
La mejor manera de comunicar y tratar errores lógicos y errores en tiempo de
ejecución es utilizar las excepciones. Esto es especialmente cierto cuando la pila
puede contener varias llamadas de función entre la función que detecta el error y
la función que tiene el contexto para saber cómo tratarlo.
ERRORES EN TIEMPO DE EJECUCIÓN:
2.5Ejecución de un programa
Código
/*nombre:cervantes arias roberto
doroteo felipe edmar
villagomez salazar brandon alan
grupo: 5153
fecha: 25 de abril del 2018
objetivo: proyecto
*/
#include <iostream.h>
#include <conio.h>
main ()
{
cout<<"hola mundo";
51
getch();
return 0;
}
52
3. Python (Lenguaje de programación)
Características:
-Tipido dinámico
-Fuertemente tipado
-Multiplataforma
-Orientado a objetos.
53
Además, tu aplicación debería contener un directorio llamado public, que será la
ráiz de tu web y donde ubicarás los archivos estáticos de tu aplicación (imagenes,
CSS, JS, ...).
Según la normativa PEP 8 los comentarios en una sola línea se separan del
código por dos espacios y después del símbolo # un espacio.
x = 22 # Este es un comentario
"""Este es un comentario
de varias líneas"""
1 """Este es un comentario
2 de varias líneas"""
Variables
54
Las variables son espacios donde podemos almacenar datos que son variables.
Pueden ser letras, como una cadena de caracteres, o números. Las variables se
componen de un nombre y el valor.
esta_variable = 99
1 esta_variable = 99
Constantes
Las constantes son como las variables pero se diferencian en que sus datos no
varían.
ESTA_CONSTANTE = 56
1 ESTA_CONSTANTE = 56
Python para todos. Los tipos de datos en Python pueden ser varios, una variable o
constante puede puede tener datos como:
55
Número entero: variable = 16
Booleano:
verdadero = true
falso = false
3.3.1Variables y constantes
mi_variable = contenido_asignado_a_la_variable
MI_CONSTANTE = contenido_asignado_a_la_variable
Para explicar mejor este tema vamos a usar la consola interactiva de python.
56
La forma incorrecta de definir una variable seria la siguiente:
Para trabajar con variables se debe tomar en cuenta que se deben utilizar
nombres descriptivos, si se quiere utilizar mas de una palabra se debe escribir con
guión bajo y finalmente cabe destacar que, la sintaxis correcta para utilizar el
signo ‘=’ es fijarse que siempre respetemos el utilizar un solo espacio después del
signo igual.
57
3.3.2Entrada y salida de datos
Salida en pantalla
La forma más sencilla de producir una salida en python es utilizar la sentencia
print donde se puede pasar 0, una o más expresiones separadas por coma y ver
el resultado en pantalla de la siguiente manera:
o raw_input
o input
58
Entrada de datos en Python
La función raw_input
Función raw_input
El archivo lo guardas con el nombre raw_input.py (al agregar la extensión .py se
guardará como un archivo Python) y lo ejecutas con F5 o con
59
Salida en pantalla del archivo raw_input.py
La función input
Para este ejemplo hacemos lo mismo que en el ejemplo anterior (solo cambiamos
el nombre por input.py):
Función input
Ejecutamos y si todo salió bien deberíamos ver lo siguiente:
60
Salida de la función input
Errores de sintaxis
El intérprete repite la línea culpable y muestra una pequeña ‘flecha’ que apunta al
primer lugar donde se detectó el error. Este es causado por (o al menos detectado
en) el símbolo que precede a la flecha: en el ejemplo, el error se detecta en la
función print(), ya que faltan dos puntos (':') antes del mismo. Se muestran el
nombre del archivo y el número de línea para que sepas dónde mirar en caso de
que la entrada venga de un programa.
3.5Ejecución de un programa
Print (“Hola Mundo”)
61
>>>Hola Mundo
62
Conclusiones:
CERVANTES ARIAS ROBERTO
Mi conclusión es que hicimos un reporte con tres lenguajes de programación en
cada uno de los lenguajes aprendimos su estructura básica del programa también
supimos cuáles eran los elementos de cada lenguaje que hicimos los tipos de
datos que lleva cada lenguaje sus variables y constantes con sus entradas y
salidas de datos también supimos los errores de tiempo que podemos llegar a
cometer a la hora de ejecutar un programa en cada de los lenguajes que hicimos y
lo más importante que aprendimos fue como ejecutar un programa en el lenguaje
que hicimos cada lenguaje es parecido su ejecución y sus sintaxis pero tienen una
función diferente ya que en cada lenguaje podemos programar distintas cosas y a
lo largo de nuestra carrera nos ayudara mucho y facilitarnos las cosas en un futuro
al igual sobre la materia cuando usted maestra nos deje más programas y los
tengamos que realizar durante el transcurso del semestre en laboratorio o durante
en la clase de teoría.
DOROTEO FELIPE EDMAR
Los lenguajes que hablamos en este proyecto son unos de tanto q existen lo que
significa que hay en gran cantidad, algunos han evolucionado a lo largo del tiempo
y siguen vigentes en el transcurso de muchos años, mientras que otros han sido
operativos durante un período más o menos largo y actualmente no se usan. Dada
esta gran variedad de lenguajes, no se pretende dar una visión de todos, sino una
clasificación en diversos tipos y concretar algunos de ellos. En general un lenguaje
es un método conveniente y sencillo de describir las estructuras de información y
las secuencias de acciones necesarias para ejecutar una tarea concreta.
Finalmente, un lenguaje de programación lo definiremos, como un conjunto de
reglas, símbolos y palabras especiales que permiten construir un programa en
difieren compiladores que a su vez comparten algunas características similares un
contra otros para la elabora ración de un programa es importante saber cada uno
de ellos para poder programar si conflictos.
VILLAGÓMEZ SALAZAR BRANDON ALAN
Los Lenguajes de programación son una herramienta que hoy en día es muy
valorada por la comunidad que se enfoca en las tecnologías. Bien es cierto que los
lenguajes de programación en la actualidad son muy buenas para poder hacer
programas que cumplan funciones ya sean simples o complicadas, y estas nos
brinden ayuda mediante el programa haciendo una función o acción que tenga
como propósito cumplirnos un objetivo.
Hay muchos tipos de lenguajes de programación y cada uno tiene sus distintas
características, estructuras, declaraciones etc. Para mí, los lenguajes de
63
programación nos ayudan mucho. Estudiando sobre estos lenguajes podemos
también hacerles de utilidad para poder laborar de ellos, conseguir trabajo además
de que hoy en día es una de las cosas mejores pagadas en las empresas.
64
Referencias
Weiss, Mark Allen: "Estructuras de datos y algoritmos", Addison-Wesley Iberoamericana,
1995.
https://msdn.microsoft.com/es-es/library/aa287550(v=vs.71).aspx
http://dolivasdudem.udem.edu.ni/wp-content/uploads/2014/03/funciones-de-entrada-y-
salida-de-datos-en-c.pdf
http://dis.um.es/~lopezquesada/documentos/IES_1213/IAW/curso/UT3/ActividadesAlumno
s/1/index.html
https://carloszr.com/python-para-todos-elementos/
https://cybersecuritylaboratory.wordpress.com/2016/08/26/variables-y-constantes-en-
python/
http://www.cursodejava.com.mx/cursodejava116.html
https://paginas.matem.unam.mx/pderbf/images/mprogintc++.pdf
http://gy94bfmv.blogspot.mx/2012/10/estructura-basica-de-un-programa-en-c.html
https://es.slideshare.net/rosbelia/estructura-bsica-de-un-programa-en-c
65