LENGUAJE DE PROGRAMACIÓN UNID ENE-ABR 2012 Dr. Alejandro Padilla Díaz DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 1 ¿EL PORQUE ES NECESARIO EL LENGUAJE DE PROGRAMACIÓN? Es necesario porque es una serie de pasos que ayudan a resolver mediante una computadora o periféricos especiales, las actividades de nuestra vida cotidiana, pero con el propósito de incrementar los resultados en menor tiempo posible y con mayor eficiencia. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 2 HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN Desde algunos puntos de vista, la historia de la teoría de lenguajes de programación precede incluso al desarrolllo de los propios lenguajes de programación. El cálculo lambda, desarrollado por Alonzo Church, Max HL. Solis Villareal y Stephen Cole Kleeneen la década de 1930, es considerado ser uno de los primeros lenguajes de programación del mundo, incluso pese a que tenía intención de modelar la computación más que ser un medio para que los programadores describan algoritmos para un sistema informático. Muchos lenguajes de programación funcional se han caracterizado por proveer una "fina apariencia" al cálculo lambda, y muchos se describen en sus términos. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 3 HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN El primer lenguaje de programación (como tal) que se propuso fue Plankalkül, que fue diseñado por Konrad Zuse en los años 40, pero no fue conocido públicamente hasta 1972 (y no implementado hasta 2000, cinco años después de la muerte de Zuse). El primer lenguaje de programación ampliamente conocido y exitoso fue Fortran, desarrollado entre 1954 y 1957 por un equipo de ivestigadores en IBM liberados por John Backus. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 4 HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN El éxito de FORTRAN condujo a la creación de un comité de científicos para desarrollar un lenguaje de programación "universal"; el resultado de su esfuerzo fue ALGOL 58. Separadamente, John McCarthydel MIT desarrolló el lenguaje de programación Lisp (basado en el cálculo Lambda), el primer lenguaje con orígenes académicos en conseguir el éxito. Con el triunfo de estos esfuerzos iniciales, los lenguajes de programación se convirtieron en un tema candente en la investigación en la década de 1960 y en adelante. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 5 DEFINICIÓN DE PROGRAMA Un programa es un conjunto de instrucciones u órdenes basadas en un lenguaje de programación que una computadora interpreta para resolver un problema o una función específica. Es la relación ordenada de actividades, en informática se le conoce como la serie codificada de instrucciones. Redacción de un algoritmo en un lenguaje de programación. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 6 DEFINICIÓN DE PROGRAMA Conjunto de instrucciones ordenadas correctamente que permiten realizar una tarea o trabajo específico. Toda secuencia de instrucciones o indicaciones destinadas a ser utilizadas, directa o indirectamente, en un sistema informático para realizar una función o una terea o para obtener un resultado determinado, cualquiera que fuere su forma de expresión y fijación. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 7 DEFINICIÓN DE PROGRAMA Conjunto secuenciado de instrucciones que quedan escritas en un lenguaje determinado con unos fines específicos. Aunque en el lenguaje común con frecuencia se denomina programa al sistema operativo, la diferencia estriba, precisamente, en la especificidad de aquél frente al carácter de gestión global de éste. La palabra software engloba ambos. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 8 DEFINICIÓN DE CÓDIGO FUENTE (Source code, code base). Texto escrito en un lenguaje de programación específico y que puede ser leído por un programador. Debe traducirse a lenguaje máquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilación. Acceder al código fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 9 DEFINICIÓN DE CÓDIGO FUENTE Liberar un código fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquiera puede analizarlo, copiarlo o modificarlo. Las aplicaciones que liberan sus códigos suelen ser gratuitas bajo licencia GNU. La liberación de un código de un programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto. El código fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el código fuente original a través de los programas ya compilados. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 10 EJEMPLO DE UN CÓDIGO FUENTE //programa que lea 3 valores y obtiene el mayor y menor de los 3 #include<conio.h> #include<iostream.h> #include<stdio.h> #include<stdlib.h> void main() {clrscr(); int a,b,c,may,men; cout<<"Dame 3 valores, separados por comas "; scanf("%d,%d,%d",&a,&b,&c); may=men=a; if(b>may) {may=b; } if(c>may); {may=c; } if(b<men) {men=b; } if(c<men) {men=c; } cout<<"\n El mayor es "<<may; cout<<"\n El menor es "<<men; getch(); } DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 11 DEFINICIÓN DE CÓDIGO OBJETO En programación, el código objeto es el resultado de la compilación del código fuente. Puede ser en lenguaje máquina o bytecode, y puede distribuirse en varios archivos que corresponden a cada código fuente compilado. Luego un enlazador (linker) se encarga de juntar todos los archivos de código fuente para obtener el programa ejecutable. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 12 INTÉRPRETE VS. COMPILADOR INTERPRETE: Es un programa que lee línea a línea un programa escrito en un lenguaje; en lenguaje fuente y lo va traduciendo a un código intermedio, para ejecutarlo. COMPILADOR: Es un programa que lee totalmente un programa escrito en un lenguaje; el lenguaje fuente, y lo traduce a un programa equivalente a otro lenguaje, lenguaje objeto. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 13 INTÉRPRETE VS. COMPILADOR A grandes rasgos un compilador es un programa que lee un programa escrito es un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 14 Tareas INVESTIGAR: DIFERENTES TIPOS DE COMPILADORES DE LENGUAJE CyC++ Y ¿CÓMO SE CONOCEN SUS DIFERENTES VERSIONES DE “C”? DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 15 LENGUAJE DE PROGRAMACIÓN UNID ENE-ABR 2012 Dr. Alejandro Padilla Díaz DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 16 EJECUCIÓN DE PROGRAMAS Generalmente el código fuente lo escriben profesionales conocidos como programadores. Se escribe en un lenguaje que sigue uno de los siguientes dos paradigmas: imperativo o declarativo y que posteriormente puede ser convertido en una imagen ejecutable por un compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta instrucción por instrucción. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 17 EJECUCIÓN DE PROGRAMAS De acuerdo a sus funciones, se clasifican en software de sistema y software de aplicación. En los computadores actuales, al hecho de ejecutar varios programas de forma simultánea y eficiente, se le conoce como multitarea. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 18 EJECUCIÓN DE PROGRAMAS Un programa, una vez escrito, puede ser ejecutado de diversas formas: 1. Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes. Ejemplos de esto son bash, clásico en estaciones Unix y que fue escrito para el proyecto GNU o Python, cuya peculiaridad además de ser multipropósito, está en su facilidad de uso y productividad y de hecho, es usado en parte de los proyectos Google y YouTube.3 DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 19 EJECUCIÓN DE PROGRAMAS 2.- Traduciendo el código escrito del programa (lo que se denomina código fuente), a su equivalente en lenguaje máquina. A este proceso se le llama compilar y al programa traductor se le denomina compilador. Ejemplo de esto es El lenguaje C, en sus diferentes versiones que combina en su sintaxis características de medio y bajo nivel y el compilador gcc usado en el proyecto GNU. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 20 Almacenamiento de Programas Típicamente, los programas se almacenan en una memoria no volátil (por ejemplo un disco, una memoria USB), para que luego el usuario de la computadora, directa o indirectamente, solicite su ejecución. Al momento de dicha solicitud, el programa es cargado en la memoria de acceso aleatorio o RAM del equipo, bajo el control del software llamado sistema operativo, el cual puede acceder directamente al procesador. El procesador ejecuta (corre) el programa, instrucción por instrucción hasta que termina. A un programa en ejecución se le suele llamar también proceso. Un programa puede terminar su ejecución en forma normal o por causa de un error, dicho error puede ser de software o de hardware. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 21 Conocimiento Puede ser definido como el conjunto de hechos y principios acumulados por la humanidad, o el acto, hecho o estado de conocer. Es la familiaridad con el lenguaje, conceptos, procedimientos, reglas, ideas, abstracciones, lugares, costumbres y asociaciones, unida a la habilidad de utilizar estas nociones en forma efectiva para modelar diferentes aspectos del universo que nos rodea. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 22 Conocimiento Los conceptos de conocimiento e inteligencia están íntimamente ligados. La inteligencia requiere de la posesión y acceso al conocimiento. Conocimiento no debe ser confundido con datos o información. El conocimiento incluye y requiere del uso de datos e información. Además, combina relaciones, dependencias, y la noción del saber con datos e información. (HERRAMIENTA). DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 23 Conocimiento Una representación del conocimiento puede ser un esquema o dispositivo utilizado para capturar los elementos esenciales del dominio de un problema. Una representación manipulable es aquella que facilita la computación. En representaciones manipulables, la información es accesible a otras entidades que usan la representación como parte de una computación. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 24 Conocimiento La manipulación del conocimiento involucra además la selección de objetos, entidades y rasgos que son claves para las representaciones. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 25 Lenguajes con tipos fuertes vs. Lenguajes con tipos débiles Los lenguajes débilmente tipados permiten que un valor de un tipo pueda ser tratado como de otro tipo, por ejemplo una cadena puede ser operada como un número. Esto puede ser útil a veces, pero también puede permitir ciertos tipos de fallas que no pueden ser detectadas durante la compilación o a veces ni siquiera durante la ejecución. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 26 Lenguajes con tipos fuertes vs. Lenguajes con tipos débiles Los lenguajes fuertemente tipados evitan que pase lo anterior. Cualquier intento de llevar a cabo una operación sobre el tipo equivocado dispara un error. A los lenguajes con tipos fuertes se les suele llamar de tipos seguros. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 27 Lenguajes con tipos fuertes vs. Lenguajes con tipos débiles Lenguajes con tipos débiles como Perl y JavaScript permiten un gran número de conversiones de tipo implícitas. Por ejemplo en JavaScriptla expresión 2 * x convierte implícitamente x a un número, y esta conversión es exitosa inclusive cuando x es null, undefined, unArray o una cadena de letras. Estas conversiones implícitas son útiles con frecuencia, pero también pueden ocultar errores de programación. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 28 Lenguajes con tipos fuertes vs. Lenguajes con tipos débiles Las características de estáticos y fuertes son ahora generalmente consideradas conceptos ortogonales, pero su trato en diferentes textos varia. Algunos utilizan el término de tipos fuertes para referirse a tipos fuertemente estáticos o, para aumentar la confusión, simplemente como equivalencia de tipos estáticos. De tal manera que C ha sido llamado tanto lenguaje de tipos fuertes como lenguaje de tipos estáticos débiles. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 29 LENGUAJE DE PROGRAMACIÓN UNID ENE-ABR 2012 Dr. Alejandro Padilla Díaz DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 30 Estructura de un Programa en C Todo programa en C ó C++ cuenta con las siguientes áreas: a) Área de Inclusiones b) Área de Definiciones c) Área de Funciones. Bibliotecas declaraciones globales (contantes, tipos y variables) main() { variables locales sentencias } funcion1() { variables locales sentencias } DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 31 1.- Área de Inclusiones: Aquí se incluyen los nombres de las librerías y bibliotecas donde se encuentran las funciones de C++. Ejemplo: #include <stdio.h> //Indica que el compilador de C, busque en las librerías de las funciones estándar de I/O DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 32 2.- Área de Definiciones: Sirve para dar más legibilidad a los programas en C, ya que aquí se escriben las equivalencias de algunos valores. Esta área puede o no utilizarse dependiendo del programa que se realice. Ejemplo: #define N 100 // En el programa al utilizar la variable N, el compilador entenderá que se sustituya por 100. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 33 3.- Área de Funciones: 1. 2. 3. 4. Todo programa en C++, consta de una o más funciones. Se debe tener una función llamada “main” en algún sitio del programa ya que éste comenzará a ejecutarse con dicha función. Por lo general main llamará a otras funciones que le ayuden a realizar su trabajo. Una función contiene proposiciones y variables. Las funciones indican las operaciones que se van realizar y las variables almacenan los valores utilizados durante los cálculos. Cada función debe contener: Una cabecera de la función, que consta del Nombre de la Función, seguida de una lista de valores que la función que llama, proporciona a la función que está invocando. Los argumentos van encerrados entre paréntesis. Las proposiciones de una función están encerradas entre llaves {}. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 34 Comentarios en C y C++ En el estándar ANSI C se puede comentar una o varias líneas de código, esto se lleva a la practica con los caracteres /* que indican el inicio del comentario y el termino de los comentarios es indicado con los caracteres */. En C++ se puede seguir usando la misma forma de comentar una o varias líneas de código que se utiliza en C. C++ también implementa su propia forma de comentar codigo, con los caracteres // permiten comentar una linea completa o una parte de ella. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 35 Ejemplos de comentarios en c++ /* Este es un comentario que en el lenguaje puede ocupar varias lineas y para terminar con */ int x; // declara una variable de tipo entera DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 36 Identificadores Los identificadores son los nombres usados para referenciar las variables, funciones, etiquetas y otros objetos definidos por el usuario. La longitud de un identificador en turbo C puede variar entre uno y 32 caracteres. El primer carácter debe ser una letra o un símbolo de subrayado y los caracteres siguientes pueden ser letras, números o símbolos de subrayado. C y C++ es sensible a las minúsculas y mayúsculas. Un identificador no puede ser igual al de una palabra reservada y no puede tener el nombre que alguna función ya escrita o que se encuentre en la biblioteca. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 37 Palabras Reservadas(Clave): Son aquellas que tienen un significado especial para el compilador, la cual no es posible modificar o alterar y se escriben con minúsculas. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 38 Algunas palabras reservadas son: auto default float register typedef asm do for return union break double goto short unsigned case else if signed void char enum int sizeof volatile const extern long static while continue far near struct switch DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 39 Operadores Un operador es un símbolo monario o binario que indica una acción, por ejemplo el operador binario suma (+) que representa la acción de suma de dos operandos. Ejemplo: al = ej + jand ; Los operandos del ejemplo anterior son: = y + DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 40 Operadores de asignación El operador de asignación básico es el igual (=), la sintaxis es: Cualquier instrucción de la forma: variable = variable operador_expresión; donde operador puede ser entre otros alguno de los operadores binarios +, -, *, / o %, esta instrucción puede escribirse como: variable operador= expresión; DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 41 Operadores aritméticos (+, -, *, /, %) Los operadores aritméticos son muy similares que otros lenguajes, + suma, - resta o menos monario, * multiplicación, / división y % modulo o resto de la división entera. El operador división (/) tiene dos variantes, si uno de los operándoos es numérico real el resultado de la división será real, en caso contrario si los dos operándoos son numéricos enteros el resultado será entero. En el operador modulo o resto de la división (%) los operándoos deben ser enteros. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 42 Operadores de Increment y Decremento Incremento (++) y decremento (--), prefijos y sufijos Estos tipos de operadores son equivalente a un contador con incremento en uno o decremento en uno, por ejemplo si al contador x se le requiere incrementar en uno, la instrucción equivalente seria x = x +1; y con el operador incremento la instrucción seria x++; ó ++x; DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 43 Operadores relacionales Operador Descripción == != > >= < <= Igual No igual Mayor Mayor o igual Menor Menor o igual DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 44 Operadores Lógicos Operador Descripción && AND || OR ! NOT Los operadores lógicos, como los relacionales regresan como resultado ya sean un valor verdadero o un valor falso. Para este lenguaje un valor diferente de cero es verdadero y un valor de cero es falso. Los operadores lógicos permiten formar expresiones lógicas mas complejas, ya que por lo general una operación lógica involucra una o más operaciones relaciónales. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 45 Realizar los siguientes ejercicios: Si tenemos: A=18 b=1 c=4 d=45 Generar lo siguiente: 1) E=A+b 2) F=a*b+d 5) I=H-E 6) E++ 9) K=A%7 10)L=A+A/3 3) G=A+B*c 7) I-- DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 4) H=34+A 8) J*=2 46 LENGUAJE DE PROGRAMACIÓN UNID ENE-ABR 2012 Dr. Alejandro Padilla Díaz DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 47 Tipos de Datos Nociones de Tipos de Datos C y C++ manejan cinco tipos básicos de datos los cuales son: 1)carácter, 2)entero, 3)coma flotante, 4)coma flotante de doble precisión y 5)sin valor. A continuación se muestran cada uno de estos y otros más: DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 48 Tipos de Datos en C y C++ Y son los siguientes Tipo de Dato Char Unsigned char Signed char Int Unsigned int Signed int Short int Unsigned short int Long int Bits 8 8 8 16 16 16 16 16 32 Bytes 1 1 1 2 2 2 2 2 4 Unsigned long int Signed long int Float double 32 32 32 64 4 4 4 8 Rango de Valores -127 a 128 0 a 255 -128 a 127 -32768 a 32767 0 a 65535 -32768 a 32767 -32768 a 32767 0 a 65535 -2147483648 a 2147483648 0 a 4294967295 -21474 a 21474 3.4E –38 a 3.4E +38 1.7E –308 a 1.7E +308 DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 49 Tipos de Datos en C y C++ C++ añade otro tipo de dato el cual es denominado como bool, este tipo de dato es un booleano o lógico ya que solo puede almacenar dos posibles valores, verdadero o falso. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 50 MODIFICADORES DE TIPOS Algunos de los tipos de datos básicos pueden ser precedidos por uno o varios modificadores, un modificador altera el significado del tipo base con la finalidad de que el programador pueda seleccionar el que mas se ajuste a su necesidad. Los modificadores son: signed, unsigned, long y short y los tipos que pueden ser afectados con estos modificadores son: Tipo char int double Modificador signed, unsigned signed, unsigned, long y short Long DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 51 Tipo de Dato Estructura Una estructura es una colección de variables de igual o diferente tipo de dato que se referencia bajo un único nombre. La sintaxis general es: struct etiqueta_de_estructura { tipo nombre_de_variable_o_elemento; tipo nombre_de_variable_o_elemento; ... } [variables_de_estructura] ; DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 52 Ejemplo: Tipo de Dato Estructura Ejemplo: // struct direccion { char calle[40]; char ciudad[30]; char estado[30]; unsigned long int codigo; } datos1, datos2; struct direccion dato_direc; // Declara una variable dato_direc de tipo struct direccion DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 53 Constantes. Es un identificador que se declara en el programa o función y que no puede ser modificado o cambiarse de valor Sintaxis: #define <identificador> <valor> Ejemplos: #define #define #define #define PI 3.1416 CLAVE 7 MENS_ERR “Error” BELL ‘\007’ //carácter campana en ASCII DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 54 Variables Todas las variables deben ser declaradas antes de su uso, aunque algunas declaraciones pueden ser hechas en forma implícita por el contexto. Una declaración de variable debe especificar el tipo de ésta y la variable o lista de variables de ese mismo tipo. Si se declaran dos o más variables del mismo tipo, se separan con coma (,) y al final va un punto y coma (;). Sintaxis: Tipo <identificador-1>, [identificador-2], ..., [identificador-n]; DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 55 Variables Ejemplos: int numero,dia_19_ene_2012: float v1, v2, v3; char c,a,d,e,n,a; Una variable también puede ser inicializada en su declaración. Si el nombre es seguido por un signo de igual y una expresión que sirve como un inicializador. Ejemplo: int dia=19; int mes=1; int anio=2012; DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 56 Ejemplo 01 //Realizar un programa que lea dos valores y obtenga el área de un rectángulo //tomando el primero como base y el segundo como altura #include<conio.h> #include<stdio.h> #include<stdlib.h> void main() {clrscr(); int a,b,x; printf("\n Dame la base"); scanf("%d",&b); printf("\n Dame la altura"); scanf("%d",&a); x=b*a; printf("\n El area del rectangulo es %d",x); getch (); } Términos nuevos: clrscr, printf, scanf, getch Y las Librerías Para ser descritas en clase del 19 de Enero de 2012 DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 57 Ejemplo 02 //Realizar un programa que lea dos valores y obtenga el area de un rectangulo //tomando el primero como base y el segundo como altura #include<conio.h> #include<stdio.h> #include<iostream.h> #include<stdlib.h> void main() {clrscr(); int a,b,x; printf("\n Dame la base"); cin>>a; printf("\n Dame la altura"); cin>>b; x=a*b; cout<<"\n El area del rectangulo es %d"<<x; getch (); } Término nuevo para este ejercicio cin y cout. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 58 Ejercicios para clase: 1. Se deben de leer 3 valores separados por comas; para los 2 primeros fungirán como base y altura para el área de un triángulo, para el segundo y el tercero servirán para el área del rectángulo y para obtener el cubo del tercer valor. NOTA: IMPRIMIR TODOS LOS RESULTADOS 2. Se capturarán dos valores y se deberá obtener el resultado de la división del primero entre el segundo. Y también el residuo del segundo entre el primero. 3. Realizar un programa que lea los 3 valores de un prisma en cm y deberá obtener primero, la multiplicacion de a por b por c, y en seguida convertir a dm cuadrados, que al ser área será de la siguiente manera: Ejemplo: Resultado en cm cuadrados 1398 a dm cuadrados 13.98 DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 59 LENGUAJE DE PROGRAMACIÓN ENE-ABR 2012 Dr. Alejandro Padilla Díaz DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 60 EJERCICIOS (PROGRAMAS), EJEMPLOS DE TIPOS DE DATOS Y VARIABLES. //Programa que lea dos valores, y que obtenga el residuo del primero entre //el segundo y que obtenga en otros resultados el 15% del 1er valor y 20 del 2º #include<stdio.h> #include<conio.h> #include<iostream.h> void main() {clrscr(); int a,b,por_a,por_b,resid; cout<<"Dame 2 valores separados por comas:"; scanf("%d,%d",&a,&b); resid=a/b; por_a=a*.15; por_b=b*.20; printf("\n El 15%% de %d es %d",a,por_a); printf("\n El 20%% de %d es %d",b,por_b); printf("\n El residuo de %d entre %d es %d",a,b,resid); getch(); } DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 61 Programa de dibujo de un Aguila #include<conio.h> #include<stdio.h> #include<stdlib.h> void main() {clrscr(); } printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n printf("\n getch (); (("); \\``."); \_`.``-."); (,`.,.` `._,"); ._ -. ._"); \ `--. ,` `."); `--._ . .`."); `--.--- `. ` `."); `.-- `; .`._"); :- : ;. `.__,._ __"); `\ : ,-( `; o`>."); `-.`: ,` `._ .: (,-`,"); \ ; ;. ,: "); , - -: ;,` `___.,___."); >^^ ^^-` ^ ^^:::::^.. -."); `;^'_, (\`\ _ `::::::::::^ `---."); `-(_, -'),)\`; _ .::::^` `----._,-\\"); \_;`: `.- `-----' `--;-. `. ``.`--.___\\"); -^--' \(-. .``-;`-=:-.__)"); '.`.`._ .-._`--.)"); 24/ene/2012 `-^---^--.`->"); DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 62 Programa de Dibujo de un Puma #include<conio.h> #include<stdio.h> #include<stdlib.h> void main() {clrscr(); printf("\n (^`-''-/^).___..--''^`-._"); printf("\n '6_6 ) `-. ( ).`-.__.`)"); printf("\n (_Y_;)` ._ ) `._ `. ``-..-'"); printf("\n _. `-- _..-_/ /--`_.` ,`"); printf("\n (il),-`` (li),` ((!.-`"); getch (); } DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 63 Ejercicios para realizar por el alumno I.- Realizar un programa que imprima el siguiente triángulo: * *** ***** ******* II.- Realizar un programa que lea 4 valores y obtenga de ellos: El producto, La suma y su Promedio(Media Aritmética). DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 64 LENGUAJE DE PROGRAMACIÓN ENE-ABR 2012 Dr. Alejandro Padilla Díaz DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 65 AGENDA ESTRUCTURAS DE CONTROL if/then/else (flujo) EJERCICIOS DE USO DEL if DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 66 if..else Esta instrucción permite llevar acabo una evaluación o condición de diferentes alternativas o expresiones con operadores relaciónales y lógicos. La instrucción if genera una afirmación y la cláusula else genera una negación o contrario de lo evaluado en la instrucción if. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 67 if..else La cláusula else es opcional. Si una instrucción if en su afirmación requiere de una sola línea no es obligatorio que contenga el bloque de las llaves. Si en el caso de que se requieran dos líneas o mas es obligatorio que estén agrupadas entre llaves. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 68 Sintaxis varias de la cláusula if: if (expresión) { sentencia 1; sentencia 2; sentencia n; } if (expresión) Sentencia; if (expresión) { sentencia 1; sentencia 2; sentencia n; } else { sentencia 1; sentencia 2; sentencia n; } if (expresión) Sentencia; else Sentencia; if (expresión) { sentencia 1; sentencia 2; sentencia n; } else Sentencia; if (expresión) Sentencia; else { Sentencia 1; Sentencia 2; Sentencia n; } DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 69 Ejercicio 1 de if //Realizaar un programa que lea 3 valores separados por comas y que //indique cual es el mayor y cual es el menor #include<conio.h> #include<iostream.h> #include<stdio.h> #include<stdlib.h> void main() {clrscr(); int a,b,c,may,men; cout<<"Dame 3 valores separados por comas "; scanf("%d,%d,%d",&a,&b,&c); may=men=a; if(b>may) {may=b; } if(c>may) {may=c; } if(b<men) {men=b; } if(c<men) {men=c; } cout<<"\nEl mayor es "<<may; cout<<"\nEl menor es "<<men; DR. ALEJANDRO PADILLA DÍAZ getch(); LENG. DE PROGRAMACIÓN } ENE-JUN 2012 70 Ejercicio 2 de if #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<iostream.h> void main() {int x; clrscr(); printf("\n Dame un valor"); scanf("%d",&x); if(x%4==0) {printf("\n %d Es Múltiplo de cuatro",x); } else {printf("\n %d NO Es Múltiplo de cuatro",x); } getch(); } DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 71 Ejercicios para resolver 1. Capturar un numero entero cualesquiera e informar si es o no es múltiplo de 4 ( recordar el operador mod(%), analizado en el tema de operadores aritméticos). 2. Capturar de un empleado el sueldo diario y los días trabajados , desplegarle su cheque semanal solo si ganó mas de $1,000.00 en la semana, en caso contrario desplegarle un bono de despensa semanal de $300.00 mas el sueldo. El Sueldo semanal es multiplicando el sueldo diario por los días trabajados. 3. Capturar una calificación de un estudiante y si es mayor o igual a 6, imprimir APROBADO, y en el caso contrario imprimir NO APROBADO. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 72 Instrucción switch Es una estructura lógica que permite contolar la ejecución de instrucciones cuando se tienen más de dos opciones alternativas de acción; y que los posibles valores que tomará la variable de control (Selector), estén comprendidos en un conjunto ordenado y finito de valores como lo es el tipo entero (int) ó el carácter (char). DR. ALEJANDRO PADILLA DInsDE PROGRAMACIÓN ENE-JUN 2012 73 Instrucción switch Formato: Swicth (Selector) { case 1: sentencia 1; sentencia 2; break; case 2: sentencia 1; sentencia 2; break; default : sentencia 1; sentencia 2; break; } Donde: Selector Es una variable de tipo int, char o algún tipo de dato definido. case N Es el caso específico que se seleccionará break; Envía el control a la siguiente instrucción después del switch, si no se coloca, ejecutará el case siguiente. DR. ALEJANDRO PADILLA DÍAZ LENG. DE PROGRAMACIÓN ENE-JUN 2012 74