01 - introducción al lenguaje c
TRANSCRIPT
1
01 – Introducción al lenguaje C
Diego Andrés Alvarez MarínProfesor Asociado
Universidad Nacional de ColombiaSede Manizales
Arquitectura de un computador● Procesador (CPU, memoria caché)● Buses de datos (son las flechas en el dibujo)● Memoria (de corto y largo plazo)● Periféricos (entrada, salida)
Sistemas operativos
● Microsoft Windows● GNU/Linux (y su hijo Android)● Mac OS X● iOS● Unix● Solarix● FreeBSD● BlackBerry OS
Estadísticas a Junio 2013 con respecto al uso de sistemas operativos en los 500 computadores
más poderosos del planeta
Fuente: http://top500.org/statistics/list/
¿Quiere instalar GNU/Linux?
Si está interesado en instalar GNU/Linux, le recomiendo instalar la distribución Linux Mint (con el escritorio KDE):
http://www.linuxmint.com/
Se recomienda hacerlo inicialmente dentro de una máquina virtual:
https://www.youtube.com/results?search_query=install+linux+mint+14+virtualbox
Lenguajes de programación● De máquina: unos y ceros que entiende el
procesador● De bajo nivel: es aquel en el que sus
instrucciones ejercen un control directo sobre el hardware y están condicionados por la estructura física de la computadora que lo soporta.
● De nivel intermedio● De alto nivel: expresan los algoritmos de una
manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas.
Lenguaje de máquina
Lenguaje de máquina del Intel 8088. El código de máquina en hexadecimal se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul. Abajo se ve un texto en hexadecimal y ASCII.
Lenguaje de bajo nivel
Ventajas:
● Máximo aprovechamiento de los recurso de la máquina.
● Máxima velocidad posible.
● Mínima portabilidad (depende de la máquina)
Desventajas:
● Requiere de la máxima atención y de una organización estructurada en base a los planos del hardware y del objetivo del software.
● Largo tiempo de desarrollo
● Difícil encontrar errores
Lenguajes de alto nivel
Ventajas● Genera un código más sencillo y comprensible.● Escribir un código válido para diversas máquinas y,
posiblemente, sistemas operativos.
Inconvenientes● Reducción de velocidad al ceder el trabajo de bajo
nivel a la máquina.● Algunos requieren que la máquina cliente posea una
determinada plataforma.
Lenguaje C
● Desarrollado por Dennis Ritchie en AT&T Bell Labs entre 1969 y 1973
● Es el lenguaje de programación más utilizado en la actualidad:
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
● Muy rápido, eficiente, fácil● Permite el acceso de bajo nivel a la máquina
pero permite programación de alto nivel
Historia del lenguaje C
1973: invención por Dennis Ritchie
1978: primera especificación (K&R C: Dennis Ritchie and Brian Kernighan)
1989: aparece el ANSI C (standard ANSI C89: el más usado en la actualidad)
1990: ANSI C adoptado por la ISO (standard C90). Nota C89 y C90 son los mismos
1999: standard ISO C99
No está completamente implementado en muchos compiladores
2011: standard ISO C11
Características del lenguaje C● Pocas palabras clave (27+5+5+7)● Utilizado para desarrollar sistemas operativos● Utilizado para programar desde
microcontroladores hasta supercomputadores● Lenguaje compilado● Lenguaje de nivel medio-bajo● Permite el acceso “bajo” a la memoria del
computador
K&R C89 C99 C11
FUENTE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
C vs otros lenguajes (Febrero 2014)
Lenguaje C vs otros lenguajes
● Es un subconjunto de C++ y de Objective-C● Influenció: C#, Java, Perl, PHP, Python
http://en.wikipedia.org/wiki/List_of_C-based_programming_languages
Carece de:● excepciones● chequeo de rangos● colección de basura (garbage collection)● programación orientada a objetos
Creando código en C
● Se utiliza cualquier editor de texto● Extensión .c para los archivos fuente● Extensión .h para los archivos encabezado
Compiladores
Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina).
De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
Compiladores de lenguaje C
● GNU compiler collection: gcc (MinGW, Cygwin)
● Intel C++ compiler● Open Watcom● (Borland) Turbo C● Microsoft Visual C++ (solo soporta el C89)
Y muchos otros:
http://en.wikipedia.org/wiki/Category:C_compilers
Utilizaremos el gcc en el curso
El compilador MinGWhttp://mingw.org/
● Es una versión nativa para Windows del compilador GNU Compiler Collection (GCC)
● Este es el compilador que viene por defecto en el Code::Blocks
● Se debe tener en cuenta que es un compilador de 32 bits
● Su variante para 64 bits es el MinGW-64, el cual se puede descargar de:
http://mingw-w64.sourceforge.net/
Lenguaje interpretado vs
Lenguaje compilado
Los lenguajes compilados son lenguajes de alto nivel en los que el código fuente se traduce a lenguaje de máquina para una ejecución rápida. Ejemplo: Lenguaje C/C++
Un lenguaje interpretado es aquel en el que las instrucciones se traducen o interpretan una a una siendo típicamente unas 10 veces más lentos que los programas compilados: Ejemplo: MATLAB, Python, VisualBasic
Entorno de desarrollo integrado(IDE Integrated Development Environment)
Un IDE es un entorno de programación que ha sido empaquetado como un programa de aplicación; es decir, consiste en:● un editor de código● un compilador● un depurador● un constructor de interfaz gráfica (GUI)
IDEs para C/C++
● Anjuta
● Code::Blocks (utilizaremos este durante el curso)
● CodeLite
● Dev-C++
● Eclipse
● KDevelop
● NetBeans (si usted tiene un Mac, utilizará este durante el curso)
● Visual Studio Express
● wxDev-C++
Estructura de un programa en C
Contiene:● Encabezados● Librerias #include● Prototipos de funciones● Declaración de constantes y variables globales● Función main()● Otras funciones
Encabezado
Inclusión de librerías
Prototipos de funciones
Declaración de constantes y variablesglobales
Función main()
Definición de las funciones
Comentarios
Son ignorados por el compilador
Pueden aparecer en cualquier lugar del código
Forma de comentario autorizada en el standard C99
La directiva del compilador #include
Sirve para cargar textualmente el archivo nombrado en el código actual (generalmente un archivo de encabezado .h)
#include <miarchivo> busca ''miarchivo'' en los "include paths" (/usr/include o directiva -L)
#include ”miarchivo” busca ''miarchivo'' en el subdirectorio actual
Se supone que "miarchivo" contiene constantes, funciones, y otras declaraciones
Subdirectorio actualGNU/Linux: /usr/includeWindows: C:\MinGW\include
assert.hcomplex.hcurses.hlimits.hlocale.hmath.hmiarchivo.h
stdio.hstdlib.hstderr.hthread.htime.hunistd.h
miarchivo.h
programa1.c
programa2.c
#include “miarchivo.h”
int main(void){
…….return 0;
}
programa1.c
#include <miarchivo.h>
int main(void){
…….return 0;
}
programa2.c
La función main()
Es el punto de entrada del programa
El standard C permite los siguiente formas de invocar a main():
Bibliografía
http://www.slideshare.net/amraldo/introduction-to-c-programming-7898353