Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Gpo. 221
18/02/13
Marco histrico:
Creado entre 1970 y 1972 por Brian Kernighan y Dennis Ritchie para escribir el cdigo del sistema operativo UNIX. Desde su nacimiento se fue implantando como el lenguaje de programacin de sistemas favorito para muchos programadores, sobre todo por ser un lenguaje que conjugaba la abstraccin de los lenguajes de alto nivel con la eficiencia del lenguaje mquina. Los programadores de sistemas que trabajaban sobre MS-DOS y Macintosh tambin utilizaban C, con lo cual la prctica totalidad de aplicaciones de sistema para microordenadores y para sistemas UNIX est escrita en este lenguaje. A mediados de los ochenta el C se convierte en un estndar internacional ISO. Este estndar incluye tanto la definicin del lenguaje como una enorme biblioteca de funciones para entrada/salida, tratamiento de textos, matemticas, etc. A mediados de los ochenta se crea el C++, extensin de C orientada a objetos. El C++ se convierte en estndar ISO en 1998. En el momento actual, el lenguaje C no va a modificarse ms. Ser el C++ el que incorporar nuevos cambios.
Caractersticas:
Orientado a la programacin de sistemas. Es altamente transportable. Es muy flexible. Genera cdigo muy eficiente. Es muy expresivo (se pueden realizar muchas funciones escribiendo pocas lneas de cdigo). Es muy poco modular. Hace pocas comprobaciones. Da poca disciplina al programador. Es difcil leer cdigo escrito por otras personas.
Elementos. El preprocesador:
Transforma el programa fuente, convirtindolo en otro archivo fuente pre digerido. Las transformaciones incluyen: Eliminar los comentarios. Incluir en el fuente el contenido de los ficheros declarados con #include <fichero> (a estos ficheros se les suele llamar cabeceras). Sustituir en el fuente las macros declaradas con #define (ej. #define CIEN 100).
El compilador:
Convierte el fuente entregado por el preprocesador en un archivo en lenguaje mquina: fichero objeto. Algunos compiladores pasan por una fase intermedia en lenguaje ensamblador.
El enlazador:
Un fichero objeto es cdigo mquina, pero no se puede ejecutar, porque le falta cdigo que se encuentra en otros archivos binarios. El enlazador genera el ejecutable binario, a partir del contenido de los ficheros objetos y de las bibliotecas. Las bibliotecas contienen el cdigo de funciones pre compiladas, a las que el archivo fuente llama (por ejemplo printf). Sigue el paradigma de la programacin estructurada: Algoritmos+estructuras de datos = programas. Estructuras de datos Literales Tipos bsicos (todos numricos) Tipos enumerados Tipos estructurados (struct, union) Punteros y vectores
Construcciones algortmicas Construcciones condicionales (if,switch) Construcciones iterativas (while,for,do...while) Subrutinas (funciones) Adems de lo anterior, el C tiene otros elementos: Comentarios Inclusin de ficheros Macros Compilacin condicional El preprocesador es quien normalmente se encarga de interpretar estas construcciones.
N.L: 2
Lenguaje de programacin Paulo Cesar Morales Cruz Gpo. 221 18/02/13 1.1. Conceptos generales. Variable: Es un espacio de memoria reservado para almacenar un valor que corresponde a un tipo de dato soportado por el lenguaje de
programacin. Una variable es representada y usada a travs de una etiqueta (un nombre) que le asigna un programador o que ya viene predefinida.
Constante: Una constante es un dato numrico o alfanumrico que no cambia durante la ejecucin del programa. Compilador: Son programas o herramientas encargadas de compilar. Un compilador toma un texto (cdigo fuente) escrito en un lenguaje
de alto nivel y lo traduce a un lenguaje comprensible por las computadoras (cdigo objeto).
Cdigo fuente: Texto escrito en un lenguaje de programacin especfico y que puede ser ledo por un programador. Debe traducirse a
lenguaje mquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda ser ejecutado por un intrprete. Este proceso se denomina compilacin.
Lenguaje de programacin: Lenguaje artificial que puede ser usado para controlar el comportamiento de una mquina, especialmente una
computadora. Estos se componen de un conjunto de reglas sintcticas y semnticas que permiten expresar instrucciones que luego sern interpretadas.
Cdigo objeto: Es el resultado de la compilacin del cdigo fuente. Puede ser en lenguaje mquina o bytecode, y puede distribuirse en
varios archivos que corresponden a cada cdigo fuente compilado. Luego un enlazador (linker) se encarga de juntar todos los archivos de cdigo fuente para obtener el programa ejecutable.
Interprete: Es un programa de computadora que ejecuta o lleva a cabo instrucciones escritas en un lenguaje de programacin.
N.L: 2
Lenguaje de programacin
Gpo. 221
18/02/13
Tipo entero: representa nmeros enteros con o sin signo, que estarn compuestos por los dgitos del 0 al 9, pudiendo ser precedidos por los signos + o -. Algunos ejemplo de datos enteros son: 0, 23, -176, -1, etc. Para definir variables en C se antepone la palabra reservada del tipo al identificador de la variable. El tipo de datos entero se define en el lenguaje de programacin C por la palabra reservada int. Para definir un tipo de dato en C se escribe lo siguiente: int nombre_variable = valor; No es necesario que la variable tenga un valor predeterminado. Se puede definir sin asignarle ningn valor. Si tenemos varios datos que son del mismo tipo, se pueden definir todas en la misma lnea de cdigo escribiendo un nico int, separando el nombre de las variables por ,. Una vez que se haya acabado de definir variables, se cierra la lnea de cdigo con ;, Por ejemplo: int edad = 24; int edad; int edad, num, contador; Tipo real: Se emplean para representar nmeros reales (con decimales). Para definir datos reales se antepone la palabra reservada float al identificador de la variable. float identificador = valor; Por ejemplo: float numero1, numero2; float numero3 = 123.43; float numero3; Tipo carcter: Este tipo de datos se emplea para representar un carcter perteneciente a un determinado cdigo utilizado por el ordenador (normalmente el cdigo ASCII). Para representar este tipo de dato se antepone la palabra reservada char al identificador de la variable. Char identificador = valor; Una constante tipo char se representa como un solo carcter encerrado entre comillas simples. Por ejemplo: char letra, letra2; char letra=a; Tipo cadena de caracteres: una cadena de caracteres es un nmero de caracteres consecutivos (incluso ninguno) encerrado entre unos delimitadores determinados, que en el lenguaje C son las comillas dobles. Para definir variables de tipo cadena, estas se definen como vectores de caracteres, esto es, anteponiendo la palabra reservadachar al identificador de la variable, y despus entre corchetes la longitud mxima de cadena. Char identificador[cantidad] = mensaje ; Por ejemplo: char cadena[20]; char cadena[20] = Hola mundo; char cadena[] = HOLA; En la siguiente tabla se hace un resumen de los distintos tipos de datos: Tipo de dato Entero Real Carcter Cadena de carcter Int Float Char Char Palabra reservada Int numero=0; Float numero=12.2; Char letra = a; Char palabra[10] = HOLA; Ejemplo
N.L: 2
Gpo. 221
18/02/13
Una constante es un dato cuyo valor no puede cambiar durante la ejecucin del programa. Recibe un valor en el momento de la compilacin y este permanece inalterado durante todo el programa. 1.5. Operadores. Un operador es un smbolo o palabra que significa que se ha de realizar cierta accin entre uno o dos valores que son llamados operandos. Tipos de Operadores: a) Aritmticos (su resultado es un nmero): potencia, * , / , mod, div, + , b) Relacionales (su resultado es un valor de verdad): =, <, >, <=, >=, <> c) Lgicos o Booleanos (su resultado es un valor de verdad): not, and, or d) Alfanumricos : + (concatenacin) e) Asociativos. El nico Operador asociativo es el parntesis ( ) , el cual permite indicar en qu orden deben realizarse las operaciones. Cuando una expresin se encuentra entre parntesis, indica que las operaciones que estn dentro de ellos debe realizarse primero. Si en una expresin se utilizan ms de un parntesis se deber proceder primero con los que se encuentren ms hacia el centro de la expresin.
N.L: 2
Lenguaje de programacin
Acerca de los argumentos
Gpo. 221
18/02/13
Una diferencia importante entre las funciones printf y scanf consiste en la manera en que se les pasan los argumentos. Todos los argumentos de una llamada a la funcin scanf (a excepcin de la cadena de formato) son pasados por referencia, es decir, se proporciona la direccin de la variable y no su valor. Esto se debe a que la funcin utiliza estas variables para almacenar un valor leido de la entrada estndar y en consecuencia necesita saber la posicin de memoria en la que el mismo ser almacenado. En contraparte, la funcin printf no necesita conocer la direccin de las variables, sino el valor que contienen para poder escribirlo en la salida estndar. Por esta razn, todos los tipos de dato simple (enteros, caracteres, etc.) son pasados por valor. Algunas otras variables como los arreglos y las estructuras (esto incluye las cadenas ya que son arreglos de caracteres) son pasados por referencia, pero esto se debe a limitaciones del pase de parmetros por valor (ya que los parmetros se almacenan en la pila, vase el captulo de procedimientos) y no a que la funcin printf necesite conocer la direccin de dichos argumentos per se.
2. Control de programas.
Instrucciones de control de programa permiten alterar la secuencia normal de ejecucin de un programa. Estas instrucciones se dividen en tres grandes categoras: Instrucciones Condicionales que en C++Builder se implementan con las instrucciones if() y switch(). Instrucciones de ciclos con: for, while, do while. Instruccin de salto incondicional: goto.
2.1. Estructura de control selectivas. La estructura de seleccin se utiliza para alterar el flujo de control secuencial de un programa mediante la evaluacin de una condicin lgica. Una condicin lgica se expresa como una expresin relacional, donde cada operando pueden ser una constante o una variable y los operadores relacionales deben ser uno de los expuestos en la tabla de operadores de relacin. 2.1.1. If.
La sentencia if sirve para ejecutar una serie de instrucciones si se cumple una determinada condicin. If en ingls significa si (condicional). La forma general de la sentencia if es la siguiente: if (condicion) { sentencia1; sentencia2; ... sentencia n; } siguiente sentencia La condicin es una expresin que puede resultar verdadera o falsa. Si la condicin es cierta, entonces el procesador ejecutar las sentencias del bloque entre llaves. Si no es cierta, el programa ignora todas las sentencias y continuar por la siguiente sentencia.
2.1.1.1. If-else.
El funcionamiento de esta estructura es sencillo. Se evala una condicin, si es verdadera ejecuta un cdigo, si es falsa, ejecuta otro cdigo (o contina con la ejecucin del programa). if (condicin) ejecuta esto si la condicin es verdadera else ejecuta esto si la condicin es falsa Ejemplo de la estructura de seleccin if en C int edad; printf(Ingrese su edad: \n); scanf(%d, &edad);
N.L: 2
Lenguaje de programacin
Gpo. 221
18/02/13
if (edad>=18) { printf(Usted es mayor de edad. \n); } else { printf(Usted es menor de edad. \n); };
2.1.1.2. If anidados.
En ocaciones cuando hay ms de dos caminos posibles es necesario implementar estructuras condicionales anidadas, es decir por la rama del verdadero o falso (else:) disponemos otras estructuras condicionales. Debemos tener cuidado con la indentacin del cdigo para evitar errores. if condicion1 -------sentencias1 --------if condicion2 -----------------sentencias2 --------end if end if.
2.1.2. Switchcase. Tambin existen ocasiones o programas donde se exige evaluar muchas condiciones a la vez, en estos casos o se usa una condicin compuesta muy grande o se debe intentar convertir el problema a uno que se pueda resolver usando la instruccin switch(); La instruccin switch() es una instruccin de decisin mltiple, donde el compilador prueba o busca el valor contenido en una variable contra una lista de constantes ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional. El formato de esta instruccin es el siguiente; capturar o asignar variable de condicin; switch(var int o char) { case const1: instruccin(es); break; case const2: instruccin(es); break; case const3: instruccin(es); break; default: instruccin(es); }; 2.2. Estructura de control repetiva.
Corresponde la ejecucin repetida de una secuencia de sentencias, mientras se cumple una determinada condicin. Poseen una sola entrad y una sola salida.
2.2.1.
For.
Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una vez.
N.L: 2
Lenguaje de programacin
Gpo. 221
18/02/13
Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccin simple o compuesta. Su formato general es: for (inicializacin; condicin; incremento) { instruccin(es); }; ejemplo: for(x=1;x10;x=x+1) { puts( MAMA ); }; En su forma simple la inicializacin es una instruccin de asignacin que carga la variable de control de ciclo con un valor inicial. La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo. El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite un ciclo. Se deben separar esos 3 argumentos con punto y coma (;)
2.2.2.
While.
En lenguaje C, para escribir una instruccin while (repetitiva mientras) se utiliza la sintaxis: while ( <expresin_lgica> ) { <bloque_de_instrucciones> } Cuando el <bloque_de_instrucciones> slo contiene una instruccin, los caracteres abrir llave ({) y cerrar llave (}) son opcionales. Por otra parte, al igual que en las instrucciones alternativas doble y simple, a la <expresin_lgica> de una instruccin repetitiva while, tambin se le llama condicin. Para que se ejecute el <bloque_de_instrucciones>, la condicin tiene que ser verdadera. Por el contrario, si la condicin es falsa, el <bloque_de_instrucciones> no se ejecuta. Por tanto, cuando el flujo de un programa llega a un bucle while, existen dos posibilidades: Si la condicin se evala a falsa, el bloque de instrucciones no se ejecuta, y el bucle while finaliza sin realizar ninguna iteracin. Si la condicin se evala a verdadera, el bloque de instrucciones s que se ejecuta y, despus, se vuelve a evaluar la condicin, para decidir, de nuevo, si el bloque de instrucciones se vuelve a ejecutar o no. Y as sucesivamente, hasta que, la condicin sea falsa. El <bloque_de_instrucciones> de un bucle while puede ejecutarse cero o ms veces (iteraciones). Si el <bloque_de_instrucciones> se ejecuta al menos una vez, seguir ejecutndose repetidamente, mientras que, la condicin sea verdadera. Pero, hay que tener cuidado de que el bucle no sea infinito. Cuando la condicin de un bucle while se evala siempre a verdadera, se dice que se ha producido un bucle infinito, ya que, el programa nunca termina. Un bucle infinito es un error lgico. Es importante hacer hincapi en el hecho de que, en un bucle while, primero se evala la condicin y, en el caso de que sta sea verdadera, entonces se ejecuta el bloque de instrucciones. Veremos que, en el bucle do while, el procedimiento es al revs. En l, primero se ejecuta el bloque de instrucciones y, despus, se evala la condicin. Para que un bucle while no sea infinito, en el bloque de instrucciones debe ocurrir algo para que la condicin deje de ser verdadera. En la mayora de los casos, la condicin se hace falsa al cambiar el valor de una variable. En resumen, una instruccin repetitiva while permite ejecutar, repetidamente, (cero o ms veces) un bloque de instrucciones, mientras que, una determinada condicin sea verdadera.
2.2.3.
Dowhile.
Esta estructura de repeticin es similar a la estructura while. En while la condicin para que se repita el bloque de instrucciones se evala desde el principio del ciclo de repeticiones, en cambio, en la estructura do-while, al principio se ejecuta el bloque y luego se evala la condicin para ver si se sigue ejecutando o no. Esto significa que el bloque se ejecutar por lo menos una vez.
N.L: 2
Lenguaje de programacin
La forma de esta estructura es: do { bloque de enunciados } while (condicin);.
Gpo. 221
18/02/13
N.L: 2