Вы находитесь на странице: 1из 10

C (lenguaje de Programacin)

C es un lenguaje de programacin creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolucin del anterior lenguaje B, a su vez basado en BCPL. Al igual que B, es un lenguaje orientado a la implementacin de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del cdigo que produce y es el lenguaje de programacin ms popular para crear software de sistemas, aunque tambin se utiliza para crear aplicaciones. Se trata de un lenguaje dbilmente tipificado de medio nivel pero con muchas caractersticas de bajo nivel. Dispone de las estructuras tpicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar cdigo en ensamblador con cdigo C o acceder directamente a memoria o dispositivos perifricos. La primera estandarizacin del lenguaje C fue en ANSI, con el estndar X3.159-1989. El lenguaje que define este estndar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estndar ISO (ISO/IEC 9899:1990). La adopcin de este estndar es muy amplia por lo que, si los programas creados lo siguen, el cdigo es porttil entre plataformas y/o arquitecturas.

Filosofa
Uno de los objetivos de diseo del lenguaje C es que slo sean necesarias unas pocas instrucciones en lenguaje mquina para traducir cada elemento del lenguaje, sin que haga falta un soporte intenso en tiempo de ejecucin. Es muy posible escribir C a bajo nivel de abstraccin; de hecho, C se us como intermediario entre diferentes lenguajes. En parte a causa de ser de relativamente bajo nivel y de tener un modesto conjunto de caractersticas, se pueden desarrollar compiladores de C fcilmente. En consecuencia, el lenguaje C est disponible en un amplio abanico de plataformas (seguramente ms que cualquier otro lenguaje). Adems, a pesar de su naturaleza de bajo nivel, el lenguaje se desarroll para incentivar la programacin independiente de la mquina. Un programa escrito cumpliendo los estndares e intentando que sea porttil puede compilarse en muchos computadores. C se desarroll originalmente (conjuntamente con el sistema operativo Unix, con el que ha estado asociado mucho tiempo) por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programacin de sistemas, para la que se dise originalmente.

C++ (Lenguaje de Programacin)


C++ es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup. La intencin de su creacin fue el extender al exitoso lenguaje de programacin C con mecanismos que permitan la manipulacin de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido. Posteriormente se aadieron facilidades de programacin genrica, que se sum a los otros dos paradigmas que ya estaban admitidos (programacin estructurada y la programacin orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programacin multiparadigma. Actualmente existe un estndar, denominado ISO C++, al que se han adherido la mayora de los fabricantes de compiladores ms modernos. Existen tambin algunos intrpretes, tales como ROOT. Una particularidad del C++ es la posibilidad de redefinir los operadores (sobrecarga de operadores), y de poder crear nuevos tipos que se comporten como tipos fundamentales. El nombre C++ fue propuesto por Rick Mascitti en el ao 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre "C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que C++ es una extensin de C.

Un ejemplo de programa en C++, el clsico Hola mundo


A continuacin se cita un programa de ejemplo Hola mundo escrito en C++:

Al usar la directiva #include estamos dicindole al compilador que busque e interprete todos los elementos definidos en el archivo que acompaa la directiva (en este caso, iostream). Para evitar sobrescribir los elementos ya definidos al ponerles igual nombre, se crearon los espacios de nombres o namespace del singular en ingls. En este caso hay un espacio de nombres llamado std, que es donde se incluyen las definiciones de todas las funciones y clases que conforman la biblioteca estndar de C++. Al incluir la sentencia using namespace std le estamos diciendo al compilador que usaremos el espacio de nombres std por lo que no tendremos que incluirlo cuando usemos elementos de este espacio de nombres, como pueden ser los objetos cout y cin, que representan el flujo de salida estndar (tpicamente la pantalla o una ventana de texto) y el flujo de entrada estndar (tpicamente el teclado).

Tipos de Lenguajes
LENGUAJES DE MQUINA

El lenguaje mquina de una computadora consta de cadenas de nmeros binarios (ceros y unos) y es el nico que entienden directamente los procesadores. Todas las instrucciones preparadas en cualquier lenguaje de mquina tienen por lo menos dos partes. La primera es el comando u operacin, que dice a la computadora cul es la funcin que va a realizar. Todas las computadoras tienen un cdigo de operacin para cada una de sus funciones. La segunda parte de la instruccin es el operando, que indica a la computadora dnde hallar o almacenar los datos y otras instrucciones que se van a manipular; el nmero de operandos de una instruccin vara en las distintas computadoras. En una computadora de operando nico, el equivalente binario de SUMAR 0814 podra hacer que se sume el valor que se encuentra en la localidad de almacenamiento o direccin 0814 al valor que se encuentra en la unidad aritmtica lgica. En una mquina de dos operandos, la representacin binaria de SUMAR 0814 8672 podra hacer que se sume el valor que est en la localidad 8672 al valor que est en la direccin 0814. El formato de operando nico es popular en las microcomputadoras ms pequeas; la estructura de dos operandos se encuentra en casi todas las dems mquinas. Segn los estndares actuales, las primeras computadoras eran poco tolerantes. Los programadores tenan que traducir las instrucciones de manera directa a la forma de lenguaje de mquina que comprendan las computadoras. Por ejemplo, un programador que escribiera la instruccin SUMAR 0814 para una de las primeras mquinas IBM hubiera escrito: 000100000000000000000000000010111000 Adems de recordar las docenas de cdigos numricos para los comandos del conjunto de instrucciones de la mquina, el programador tena que conocer las posiciones donde se almacenan los datos y las instrucciones. La codificacin inicial muchas veces requera meses, por lo que era costosa y era frecuente que originara errores. Revisar las instrucciones para localizar errores era casi tan tedioso como escribirlas por primera vez. Adems, si era necesario modificar un programa posteriormente, la tarea poda llevarse meses.

LENGUAJE DE PROGRAMACION Lenguajes de programacin hay en gran cantidad, algunos han evolucionado a lo largo del tiempo y son usados en el transcurso de muchos aos, mientras que otros han sido operativos durante un perodo ms o menos largo y actualmente no se emplean. Dada esta gran variedad de lenguajes, aqu no se pretende dar una visin completa, sino una clasificacin en diversos tipos y concretar el ms recomendado para el aprendizaje, el Pascal, que se le dedica un apartado para quienes estn interesados en aprender a programar en un lenguaje asequible. En general un lenguaje es un mtodo conveniente y sencillo de describir las estructuras de informacin y las secuencias de acciones necesarias para ejecutar una tarea concreta. Pero este proceso se puede realizar de muchas maneras distintas, por lo que habr que disponer de clasificaciones. Una muy importante es hacer dos grupos en base a su funcionamiento, esto es considerarlos como intrpretes y compiladores, segn se describe seguidamente:

Un lenguaje se dice que es un intrprete, por ejemplo los BASIC primitivos, cuando para ejecutar un programa el lenguaje ha de leer y traducir al lenguaje especfico de la mquina las instrucciones una por una. Como es lgico el proceso se enlentece, por ejemplo si una operacin est dentro de la estructura conocida como ciclo y este se repite 100 veces, el lenguaje tiene que traducirlo 100 veces al cdigo de la mquina. No todo son desventajas, pues la parte buena de este tipo de lenguajes es que los errores se pueden corregir al momento y seguir facilmente la ejecucin del programa, por lo cual son idneos (a excepcin del BASIC que no es estructurado y fomenta el desorden) para aprender a programar, proceso en el que da lo mismo la lentitud.

CLASIFICACIN DE ALTO NIVEL De alto nivel

Los lenguajes de alto nivel son aquellos en los que las instrucciones son escritas con palabras similares a las del lenguaje humano. Esto permite facilitar la escritura y la comprensin del cdigo al programador Ejemplos: ADA Basic COBOL FORTRAM PASCAL JAVA

Organigrama tipos de lenguajes continuar De alto nivel

Necesitan ser traducidos a instrucciones en lenguaje mquina que entiendan las computadoras. Estos programas que realizan esa traduccin se llaman compiladores. Y los programas escritos en lenguajes de alto nivel se denominan programas fuente. El programa objeto es el resultado de traducir de un programa fuente para obtener un lenguaje comprensible por la mquina.

GRAFICO Organigrama tipos de lenguajes tipos de lenguajes siguiente n de los lenguajes de programacin siguiente

Estilo de Programacin Herramientas utilizadas (en la traduccin y ejecucin) Otros

siguiente Encapsulamiento Jerarqua modularidad Funcionales Lgicos secundarios Tipificacin Persistencia concurrencia A imperativos clasificacin

Su funcionamiento se basa en instrucciones secunciales, es decir se cambia progresivamente el estado del sistema, hasta alcanzar la solucin del problema.

a declarativos Organigrama estilo de programacin

Ms que en el cmo? Desarrollar paso a paso un proceso, le interesa el qu? Deseamos obtener de este programa
o

funcionales : se basan en funciones,representadas mediante expresiones que nos permiten obtener ciertos resultados a partir de una serie de argumentos Lgicos : se basa en el clculo de predicados, permite lograr que una computadora basandose en un conjunto de hechos y de reglas lgicas, pueda derivar en soluciones inteligentes.

a orientados a objetos Organigrama estilo de programacin

Se centra en los objetos que van a manipular, y no en la lgica requerida para manipularlos, cada de los cuales tendr ciertas funciones (mtodos) y ciertos valores que los identifican, teniendo adems, la facultad de comunicarse entre ellos a travs del paso de mensajes.

continuar Organigrama estilo de programacin


Abstraccin: determinacin de las caractersticas de objetos. Encapsulamiento: agrupa y almacena los elementos que definen la estructura y el comportamiento de una abstraccin. Modularidad: agrupar las abstracciones que guardan cierta relacin lgica. Jerarqua: establecer un orden o una clasificacin de las abstracciones.

Herramientas utilizadas Organigrama estilo de programacin es compilados Lenguajes interpretados Lenguajes procesados siguiente clasificacin

TCNICAS DE PROGRAMACION

Movimiento de datos
El juego de instrucciones reducido, y su tamao de 14 bits, hacen que el PIC16F84A tenga una serie de restricciones. Por un lado no se pueden especificar dos registros dentro de una instruccin. Cada registro necesita 7 bits para especificar la direccin, pero tambin hay que especificar el cdigo de la instruccin y qu hacer con ella. La solucin es realizar todo a travs del registro de trabajo o w que no necesita direccin y est situado dentro de la CPU del microcontrolador. Una transferencia de un registro a otro necesitara dos instrucciones. Supongamos que tenemos que transferir un dato al puerto B: MOVF DATO, W ; copia el contenido del registro DATO en W MOVWF PORTB ; copia el contenido de W en el Puerto B Nota: En todos los ejemplos consideramos que w = 0 y que f = 1, esto significa que MOVF DATO, W es lo mismo que MOVF DATO, 0 La primera instruccin tiene la forma MOVF f,d que copia el registro f en el destino especificado por d (w en este caso). La segunda instruccin simplemente mueve cualquier dato contenido en w en el registro f, que en este caso es el puerto B. El registro DATO permanece invariable en la primera instruccin y w permanece invariable en la segunda, de manera que estas instrucciones se parecen ms a una copia que a un movimiento de datos. Las instrucciones con literales no tienen espacio para contener la direccin de un registro, por eso debemos utilizar el registro de trabajo w para cargar un registro con un literal y tambin se necesitan dos instrucciones. MOVLW MOVWF 0xAA DATO ; coloca el valor 10101010 en W ; copia W en el registro DATO

Esto mismo se aplica cuando se usan operaciones booleanas, de suma y de resta entre literales y registros. Todas necesitan dos instrucciones: MOVLW SUBWF f,d k ; copia el literal en W ; copia el resultado de restar W de f en d

Supongamos que queremos poner a cero el nibble inferior MOVLW 0xF0 ; ponemos una mascara ('11110000') ANDWF DATO, f ; el resultado de DATO AND 0xF0 se coloca en DATO Las instrucciones de un solo operando son fciles de entender:

CLRF f, Pone todos los bits del registro f a cero CLRW, Pone todos los bits de W a cero BCF f,b, Pone a cero el bit b del registro f

BSF f,b, Pone a cero el bit b del registro f

Errores frecuentes Es fcil cometer pequeos errores que nos harn gastar gran cantidad de tiempo. Aqu hay algunas causas de problemas frecuentes. Muchas instrucciones de un programa son del tipo MOV y estn relacionadas con w. Es muy fcil confundir "cargar un registro en w" con "cargar f con w".

MOVWF f, w se mueve al registro f (El resultado se guarda en f) MOVF f, w, El registro f se mueve a w, guardando el resultado en w MOVF f, f, El registro f se mueve sobre s mismo

En este ultimo caso, el registro no vara, pero las banderas del registro STATUS si. MOVWF es la nica instruccin w-f que no tiene bit de destino, ya que el destino siempre ser f. Las instrucciones w-f son:

ADDWF f,d, Suma el valor de w al registro f guardndolo en w o f ANDWF f,d, AND del valor de w con el registro f guardndolo en w o f IORWF f,d, OR del valor de w con el registro f guardndolo en w o f MOVWF f, Mueve el valor de w al registro f guardndolo en w o f SUBWF f,d, Resta al valor del registro f el valor de w guardndolo en w o f SWAPF f,d, Intercambia los nibbles del registro f guardndolo en w o f XORWF f,d, OR Exclusiva del valor de w con el registro f guardndolo en w of

En todos estos casos, w o f cambiarn, segn el destino. Otras instrucciones cuyo destino cambia son:

INC f,d, Incrementa el valor del registro f guardndolo en w o f DEC f,d, Decrementa el valor del registro f guardndolo en w o f COMP f,d, Complementa el valor del registro f guardndolo en w o f SWAP f,d, Intercambia el valor del registro f guardndolo en w o f RLF f,d, Rota a la izquierda el valor del registro f guardndolo en w o f RRF f,d, Rota a la derecha el valor del registro f guardndolo en w o f

Otro error comn es poner GOTO cuando deberamos poner CALL y viceversa. Esto provocara que el programa se quede colgado o se comporte de manera extraa. Relacionados con el mismo tipo de instrucciones, otro error comn es olvidar poner al final de las subrutinas la instruccin de retorno RETURN, RETLW o RETFIE.

ELEMENTOS BSICOS DE LA PROGRAMACION VARIABLES. Una variable es un identificador que puede tomar diferentes valores dependiendo del tipo que esta se declare. Una variable es un identificador que puede cambiar de valor durante la ejecucin de un programa. Una variable es una posicin de memoria donde se puede almacenar una valor para uso de un programa. 5. INICIALIZACIN DE VARIABLES Inicializar una variable es el darle un valor despus que se ha declarado pero antes de que se ejecuten las sentencias en las que se emplea. 6. CONSTANTES. Constantes son los valores que no pueden ser modificados. En C, pueden ser de cualquier tipo de datos. Adems de los ejemplificados anteriormente, Podemos crear constantes de caracteres con barra invertida. Estos corresponden a los caracteres que son imposibles introducir desde el teclado. 7. OPERADORES Un operador es un smbolo que indica al compilador que realice manipulaciones lgicas o matemticas especficas. Los operadores del mismo nivel de precedencia son evaluados por el compilador de izquierda a derecha. Por supuesto, se puede utilizar parntesis para ordenar la evaluacin. Tambin, conviene utilizar parntesis para hacer ms claro el orden en que se producen las evaluaciones, tanto para la persona que lo elabora o para los que despus tengan que seguir el programa. Operadores Lgicos: Estos operadores se utilizan para establecer relaciones entre valores lgicos. Estos valores pueden ser resultado de una expresin relacional. Operadores Lgicos And Y Or O Not Negacin

Prioridad de los Operadores Lgicos Not And Or Operadores de Asignacin. Los operadores de asignacin se utilizan para formar expresiones de asignacin, en las que se asigna el valor de una expresin a un identificador. ***** Por definir el operador de asignacin** . Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecucin de las operaciones indicadas. Una expresin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las expresiones en:

Aritmticas Relacinales Lgicas

9. PALABRAS RESERVADAS. Son palabras que tienen un significado especial para el lenguaje y no se pueden utilizar como identificadores. 10. COMENTARIOS. Los comentarios pueden aparecer en cualquier parte del programa, mientras estn situados entre los delimitadores /* comentario */. Los comentarios son tiles para identificar los elementos principales de un programa o para explicar la lgica subyacente de estos. Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede decir que es la representacin detallada en forma grfica de como deben realizarse los pasos en la computadora para producir resultados. Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos en la computadora), se relacionan entre s mediante lneas que indican el orden en que se deben ejecutar los procesos. Los smbolos utilizados han sido normalizados por el instituto norteamericano de normalizacin (ANSI).