Top Banner
1 01 – Introducción al lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales
47

01 - Introducción al lenguaje C

Jul 12, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 01 - Introducción al lenguaje C

1

01 – Introducción al lenguaje C

Diego Andrés Alvarez MarínProfesor Asociado

Universidad Nacional de ColombiaSede Manizales

Page 2: 01 - Introducción al lenguaje C

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)

Page 3: 01 - Introducción al lenguaje C

Sistemas operativos

● Microsoft Windows● GNU/Linux (y su hijo Android)● Mac OS X● iOS● Unix● Solarix● FreeBSD● BlackBerry OS

Page 4: 01 - Introducción al lenguaje C

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/

Page 5: 01 - Introducción al lenguaje C

GNU/Linux

Page 6: 01 - Introducción al lenguaje C

¿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

Page 7: 01 - Introducción al lenguaje C

Bytes

Page 8: 01 - Introducción al lenguaje C

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.

Page 9: 01 - Introducción al lenguaje C

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.

Page 10: 01 - Introducción al lenguaje C

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

Page 11: 01 - Introducción al lenguaje C

Lenguaje ensamblador

Page 12: 01 - Introducción al lenguaje C

Lenguaje de nivel intermedio

Page 13: 01 - Introducción al lenguaje C
Page 14: 01 - Introducción al lenguaje C

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.

Page 15: 01 - Introducción al lenguaje C

Lenguaje de alto nivel

Visual Basic for Applications: Alt+F11 en MS EXCEL

Page 16: 01 - Introducción al lenguaje C

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

Page 17: 01 - Introducción al lenguaje C

Dennis Ritchie (1941-2011)

Page 18: 01 - Introducción al lenguaje C

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

Page 19: 01 - Introducción al lenguaje C

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

Page 20: 01 - Introducción al lenguaje C

Palabras clave

Page 21: 01 - Introducción al lenguaje C

FUENTE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

C vs otros lenguajes (Febrero 2014)

Page 22: 01 - Introducción al lenguaje C

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

Page 23: 01 - Introducción al lenguaje C

¿Por qué C yno MATLAB?

Tomado de: http://xkcd.com/409/

Page 24: 01 - Introducción al lenguaje C

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

Page 25: 01 - Introducción al lenguaje C

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.

Page 26: 01 - Introducción al lenguaje C

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

Page 27: 01 - Introducción al lenguaje C

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/

Page 28: 01 - Introducción al lenguaje C

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

Page 29: 01 - Introducción al lenguaje C

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)

Page 30: 01 - Introducción al lenguaje C

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++

Page 31: 01 - Introducción al lenguaje C

Anjuta

Page 32: 01 - Introducción al lenguaje C

Dev C++

Page 33: 01 - Introducción al lenguaje C

Code::Blocks

Page 34: 01 - Introducción al lenguaje C

Eclipse

Page 35: 01 - Introducción al lenguaje C

KDevelop

Page 36: 01 - Introducción al lenguaje C

Netbeans

Page 37: 01 - Introducción al lenguaje C

Nuestro primer programa

Page 38: 01 - Introducción al lenguaje C

Compilando y ejecutando...

En Windows se debe agregar “.exe”

Linux/Mac OS:

Windows:

Page 39: 01 - Introducción al lenguaje 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

Page 40: 01 - Introducción al lenguaje C

Encabezado

Inclusión de librerías

Prototipos de funciones

Declaración de constantes y variablesglobales

Función main()

Definición de las funciones

Page 41: 01 - Introducción al lenguaje C

Comentarios

Son ignorados por el compilador

Pueden aparecer en cualquier lugar del código

Forma de comentario autorizada en el standard C99

Page 42: 01 - Introducción al lenguaje C

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

Page 43: 01 - Introducción al lenguaje C

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

Page 44: 01 - Introducción al lenguaje C

Observe que ambos archivos están en el mismo subdirectorio

Page 45: 01 - Introducción al lenguaje C

Declaración de variables

Las variables se deben declarar antes de usar:

Page 46: 01 - Introducción al lenguaje C

La función main()

Es el punto de entrada del programa

El standard C permite los siguiente formas de invocar a main():

Page 47: 01 - Introducción al lenguaje C

Bibliografía

http://www.slideshare.net/amraldo/introduction-to-c-programming-7898353