Sei sulla pagina 1di 8

Lenguaje de programacin

Paulo Cesar Morales Cruz

Gpo. 221

18/02/13

1. Elementos del lenguaje C.


En este documento encontraremos los elementos principales del lenguaje C as como parte de su historia y sus caractersticas, entre otras cosas.

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.

Leonardo Javier Alva Espejo

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.

1.2. Componentes y estructura de un programa.


Todo programa escrito en C consta de una o ms funciones, una de las cuales se llama main. El programa siempre comenzar por la ejecucin de la funcin main. Cada funcin debe contener: Una cabecera de la funcin, que consta del nombre de la funcin, seguido de una lista opcional de argumentos encerrados con parntesis. Una lista de declaracinde argumentos, si se incluyen estos en la cabecera. Una sentencia compuesta, que contiene el resto de la funcin. Los argumentos son smbolos que representan informacin que se le pasa a la funcin desde otra parte del programa . (Tambin se llaman parmetros a los argumentos). Cada sentencia compuesta se encierra con un par de llaves, {.....}. Las llaves pueden contener combinaciones de sentencias elementales (denominadas sentencias de expresin) y otras sentencias compuestas. As las sentencias compuestas pueden estar anidadas, una dentro de otra. Cada sentencia de expresin debe acabar en punto y coma (;). Los comentarios pueden aparecer en cualquier parte del programa, mientras estn situados entre los delimitadores /* ................ */ (por ejemplo: /*esto es un ejemplo*/). Los comentarios son tiles para identificar los elementos principales de un programa o simplemente para orientar a un posible usuario de ese cdigo. /* Comentarios de un parrafo completo comprendidos entre /*.....*/, sirven para aclarar qu el programa o una parte del programa */ // Comentarios de 1 sola lnea // Zona de ficheros de cabecera de las libreras #include <....... . h> // h de Head #include <....... . h> // Zona de prototipos de funciones Int Potencia (int x,y) // Zona de variables globales Int valor; Float media_total; Void main (void) // Prog. ppal. tpico de Turbo C { // Llave de inicio del programa // Cdigo del programa ....... ....... ....... // Fin del programa } // Desarrollo del cdigo de las funciones anteriores 1.3. Tipos de datos y declaracin de variables. Hay dos clases de tipos de datos: tipos fundamentales y tipos derivados. nicamente vamos a ver los tipos de datos fundamentales.

Leonardo Javier Alva Espejo

N.L: 2

Lenguaje de programacin

Paulo Cesar Morales Cruz

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

Leonardo Javier Alva Espejo

N.L: 2

Lenguaje de programacin 1.4. Constantes.

Paulo Cesar Morales Cruz

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.

1.6. Sentencias de entrada y salida.


Hay varias maneras de usar entrada/salida en ensamblador, vamos a presentar la ms sencilla, usando funciones de alto nivel del lenguaje de programacin C. En C, las instrucciones bsicas de entrada salida son printf y scanf, las cuales permiten respectivamente enviar (print, imprimir) o recibir (scan, leer) informacin. printf La funcin printf permite escribir en la salida estndar (monitor), proporcionando un formato especfico para los datos a escribir. Esta funcin recibe una cantidad variable de argumentos, en los que solo uno de ellos es obligatorio: la cadena de formato. Este parmetro es una cadena que permite indicar el formato que tendr la impresin que se quiere realizar, y en base a la cual se determina la cantidad y tipo de los parmetros restantes. Dicha cadena puede contenter caracteres comunes y corrientes, los cuales se mostrarn en pantalla exactamente como se encuentran en la cadena, y un segundo tipo de caracteres conocidos como especificadores de formato, los cuales estn formados por un smbolo de porcentaje (%) y un cdigo de formato. Los especificadores de formato, ms usados, compatibles con la funcin printf son los siguientes: Especificador Formato %c Caracter simple %d Entero con signo en base decimal %s Cadena de caracteres %u Entero sin signo en base decimal %x Entero con signo en base hexadecimal Adems de la cadena de formato, deben existir tantos parmetros adicionales como especificadores de formato contenga la cadena, ya que cada uno de los mismos proporciona el valor por el cual ser sustituido cada especificador al momento de mostrar la cadena por la pantalla. Dicho de otra manera, la cadena de formato puede ser vista como una plantilla, mientras que el resto de los parmetros son los valores que completan los campos vacos de dicha plantilla. scanf La funcin scanf permite leer desde la entrada estndar, proporcionando un formato especfico para los datos a recibir. De forma anloga a la funcin printf, esta funcin permite reconocer los tipos de datos especificados por el estndar ANSI de C tales como nmeros, caracteres y cadenas. Los argumentos recibidos por la funcin scanf son similares a los de la funcin printf, siendo de nuevo el primero de ellos la cadena de formato. Sin embargo en este caso la cadena de formato es utilizada para especificar una "plantilla" que deber ser completada con la entrada proporcionada por el usuario. En este caso, por cada especificador de formato que se encuentre en la cadena ser necesario proporcionar un apuntador a la direccin de memoria en la que ser almacenado el elemento reconocido. Los especificadores de formato compatibles con la funcin scanf son los mismos que para printf.

Leonardo Javier Alva Espejo

N.L: 2

Lenguaje de programacin
Acerca de los argumentos

Paulo Cesar Morales Cruz

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);

Leonardo Javier Alva Espejo

N.L: 2

Lenguaje de programacin

Paulo Cesar Morales Cruz

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.

Leonardo Javier Alva Espejo

N.L: 2

Lenguaje de programacin

Paulo Cesar Morales Cruz

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.

Leonardo Javier Alva Espejo

N.L: 2

Lenguaje de programacin
La forma de esta estructura es: do { bloque de enunciados } while (condicin);.

Paulo Cesar Morales Cruz

Gpo. 221

18/02/13

Leonardo Javier Alva Espejo

N.L: 2

Potrebbero piacerti anche