SlideShare una empresa de Scribd logo
1
01 – Introducción al lenguaje C
Diego Andrés Alvarez Marín
Profesor Asociado
Universidad Nacional de Colombia
Sede 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/
GNU/Linux
¿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
Bytes
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
Lenguaje ensamblador
Lenguaje de nivel intermedio
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 de alto nivel
Visual Basic for Applications: Alt+F11 en MS EXCEL
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
Dennis Ritchie (1941-2011)
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
Palabras clave
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
¿Por qué C y
no MATLAB?
Tomado de: http://xkcd.com/409/
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 MinGW
http://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++
Anjuta
Dev C++
Code::Blocks
Eclipse
KDevelop
Netbeans
Nuestro primer
programa
Compilando y ejecutando...
En Windows se debe agregar “.exe”
Linux/Mac OS:
Windows:
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 variables
globales
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 actual
GNU/Linux: /usr/include
Windows: C:MinGWinclude
assert.h
complex.h
curses.h
limits.h
locale.h
math.h
miarchivo.h
stdio.h
stdlib.h
stderr.h
thread.h
time.h
unistd.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
Observe que ambos archivos
están en el mismo subdirectorio
Declaración de variables
Las variables se deben declarar antes de usar:
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

Más contenido relacionado

La actualidad más candente

HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
DarioManzano
 
LENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION CLENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION C
javu
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacion
Fausto Orozco
 
Mi lenguaje de programación de preferencia es C++
Mi lenguaje de programación de preferencia es C++Mi lenguaje de programación de preferencia es C++
Mi lenguaje de programación de preferencia es C++N_Alejandrino
 
Presentacion de c++
Presentacion de c++Presentacion de c++
Presentacion de c++
iutevenus2011
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++Sylvert
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++itzjpb
 
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOSPRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
Roxa1190
 
C++ y sus utilidades
C++ y sus utilidadesC++ y sus utilidades
C++ y sus utilidades
Student A
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciamonty19
 
Programacion i
Programacion iProgramacion i
Programacion iy_ely_9
 
Estructura general de un programa en lenguaje´´c´´ y sus variables
Estructura general de un programa en lenguaje´´c´´ y sus variablesEstructura general de un programa en lenguaje´´c´´ y sus variables
Estructura general de un programa en lenguaje´´c´´ y sus variables
Luz Zaragoza Chavez
 
Historia y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c optHistoria y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c opt
Marvin Romero
 

La actualidad más candente (17)

HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
 
LENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION CLENGUAJE DE PROGRAMACION C
LENGUAJE DE PROGRAMACION C
 
1. que es programacion
1. que es programacion1. que es programacion
1. que es programacion
 
Mi lenguaje de programación de preferencia es C++
Mi lenguaje de programación de preferencia es C++Mi lenguaje de programación de preferencia es C++
Mi lenguaje de programación de preferencia es C++
 
Presentacion de c++
Presentacion de c++Presentacion de c++
Presentacion de c++
 
Presentación de C++
Presentación de C++Presentación de C++
Presentación de C++
 
Introducción c++
Introducción c++Introducción c++
Introducción c++
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Programacion 1 feli
Programacion 1 feliProgramacion 1 feli
Programacion 1 feli
 
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOSPRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
PRESENTACION LENGUAJE C Y SISTEMAS OPERATIVOS
 
C sharp
C sharpC sharp
C sharp
 
Paola y lorena
Paola y lorenaPaola y lorena
Paola y lorena
 
C++ y sus utilidades
C++ y sus utilidadesC++ y sus utilidades
C++ y sus utilidades
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Programacion i
Programacion iProgramacion i
Programacion i
 
Estructura general de un programa en lenguaje´´c´´ y sus variables
Estructura general de un programa en lenguaje´´c´´ y sus variablesEstructura general de un programa en lenguaje´´c´´ y sus variables
Estructura general de un programa en lenguaje´´c´´ y sus variables
 
Historia y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c optHistoria y caracteristicas del lenguaje c opt
Historia y caracteristicas del lenguaje c opt
 

Similar a 01 - Introducción al lenguaje C

01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
Diego Andrés Alvarez Marín
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1karlalopezbello
 
Code blocks & lenguaje c++
Code blocks & lenguaje c++Code blocks & lenguaje c++
Code blocks & lenguaje c++aldaircausado11
 
02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdf
NancyHerrera88
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
laura cortez
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
laura cortez
 
Lenguaje C _ C++
Lenguaje C _ C++Lenguaje C _ C++
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
Sarai Vélez
 
Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
MartinCetis109
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
MartinCetis109
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
MartinCetis109
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
DyllanBastidas
 
Compiladores de programacion
Compiladores de programacionCompiladores de programacion
Compiladores de programacion
MtCeroCero
 
Lenguajes de programacion rivas maldonado
Lenguajes de programacion  rivas maldonadoLenguajes de programacion  rivas maldonado
Lenguajes de programacion rivas maldonado
RAUL Velez
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
michelledelgado97
 
OpenMP - Configuración de IDE y ejecución de código paralelo
OpenMP - Configuración de IDE y ejecución de código paraleloOpenMP - Configuración de IDE y ejecución de código paralelo
OpenMP - Configuración de IDE y ejecución de código paralelo
adelsolar
 
Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435
Scarlett Rodriiguez
 
Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Rayco Paucar
 

Similar a 01 - Introducción al lenguaje C (20)

01 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 301 - Introducción al lenguaje de programación Python 3
01 - Introducción al lenguaje de programación Python 3
 
Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1Programacion ii modulo2-leccion1
Programacion ii modulo2-leccion1
 
Code blocks & lenguaje c++
Code blocks & lenguaje c++Code blocks & lenguaje c++
Code blocks & lenguaje c++
 
02- Clase 1 - UD2 - Lenguajes.pdf
02- Clase 1 - UD2 -  Lenguajes.pdf02- Clase 1 - UD2 -  Lenguajes.pdf
02- Clase 1 - UD2 - Lenguajes.pdf
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Tutorial de-c
Tutorial de-cTutorial de-c
Tutorial de-c
 
Lenguaje C _ C++
Lenguaje C _ C++Lenguaje C _ C++
Lenguaje C _ C++
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Tema1 b
Tema1 bTema1 b
Tema1 b
 
Tutorial de- c. ++
Tutorial de- c. ++ Tutorial de- c. ++
Tutorial de- c. ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
Tutorial de-c ++
Tutorial de-c ++Tutorial de-c ++
Tutorial de-c ++
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
Compiladores de programacion
Compiladores de programacionCompiladores de programacion
Compiladores de programacion
 
Lenguajes de programacion rivas maldonado
Lenguajes de programacion  rivas maldonadoLenguajes de programacion  rivas maldonado
Lenguajes de programacion rivas maldonado
 
Presentación lenguajedeprogramacion
Presentación lenguajedeprogramacionPresentación lenguajedeprogramacion
Presentación lenguajedeprogramacion
 
OpenMP - Configuración de IDE y ejecución de código paralelo
OpenMP - Configuración de IDE y ejecución de código paraleloOpenMP - Configuración de IDE y ejecución de código paralelo
OpenMP - Configuración de IDE y ejecución de código paralelo
 
Deber
DeberDeber
Deber
 
Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435Microsoft Visual Studio Universidad OYM Seccion 0435
Microsoft Visual Studio Universidad OYM Seccion 0435
 
Deber 130912163339-phpapp01
Deber 130912163339-phpapp01Deber 130912163339-phpapp01
Deber 130912163339-phpapp01
 

Más de Diego Andrés Alvarez Marín

Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Diego Andrés Alvarez Marín
 
03 - Cadenas en Python 3
03 - Cadenas en Python 303 - Cadenas en Python 3
03 - Cadenas en Python 3
Diego Andrés Alvarez Marín
 
02 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 302 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 3
Diego Andrés Alvarez Marín
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
Diego Andrés Alvarez Marín
 
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
Diego Andrés Alvarez Marín
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
Diego Andrés Alvarez Marín
 
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...
Diego Andrés Alvarez Marín
 
03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C
Diego Andrés Alvarez Marín
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
Diego Andrés Alvarez Marín
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
Diego Andrés Alvarez Marín
 
07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial
Diego Andrés Alvarez Marín
 
06 - Variables aleatorias conjuntas
06 - Variables aleatorias conjuntas06 - Variables aleatorias conjuntas
06 - Variables aleatorias conjuntas
Diego Andrés Alvarez Marín
 
04 - Funciones de distribución discretas
04 - Funciones de distribución discretas04 - Funciones de distribución discretas
04 - Funciones de distribución discretas
Diego Andrés Alvarez Marín
 
02 - Introducción a la teoría de probabilidad
02 - Introducción a la teoría de probabilidad02 - Introducción a la teoría de probabilidad
02 - Introducción a la teoría de probabilidad
Diego Andrés Alvarez Marín
 
00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva
Diego Andrés Alvarez Marín
 

Más de Diego Andrés Alvarez Marín (17)

Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
Alvarez (2023) - Teoría de la Elasticidad usando Matlab y Maxima - volumen 1 ...
 
03 - Cadenas en Python 3
03 - Cadenas en Python 303 - Cadenas en Python 3
03 - Cadenas en Python 3
 
02 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 302 - Tipos de datos escalares en Python 3
02 - Tipos de datos escalares en Python 3
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
07 - Tipos de datos definidos por el programador en lenguaje C: struct, typed...
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...
04 - Sentencias de control condicionales y ciclos en lenguaje C: for, while, ...
 
03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C03 - Entrada y salida en lenguaje C
03 - Entrada y salida en lenguaje C
 
08 - Punteros en lenguaje C
08 - Punteros en lenguaje C08 - Punteros en lenguaje C
08 - Punteros en lenguaje C
 
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
02 - Conceptos fundamentales sobre tipos de datos en lenguaje C
 
07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial07 – Estimación puntual e introducción a la estadística inferencial
07 – Estimación puntual e introducción a la estadística inferencial
 
06 - Variables aleatorias conjuntas
06 - Variables aleatorias conjuntas06 - Variables aleatorias conjuntas
06 - Variables aleatorias conjuntas
 
05 - Funciones de densidad de probabilidad
05 - Funciones de densidad de probabilidad05 - Funciones de densidad de probabilidad
05 - Funciones de densidad de probabilidad
 
04 - Funciones de distribución discretas
04 - Funciones de distribución discretas04 - Funciones de distribución discretas
04 - Funciones de distribución discretas
 
03 Variable Aleatoria
03   Variable Aleatoria03   Variable Aleatoria
03 Variable Aleatoria
 
02 - Introducción a la teoría de probabilidad
02 - Introducción a la teoría de probabilidad02 - Introducción a la teoría de probabilidad
02 - Introducción a la teoría de probabilidad
 
00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva00/01 - Introduccion al curso y a la estadística descriptiva
00/01 - Introduccion al curso y a la estadística descriptiva
 

Último

FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 

Último (10)

FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 

01 - Introducción al lenguaje C

  • 1. 1 01 – Introducción al lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales
  • 2. 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)
  • 3. Sistemas operativos ● Microsoft Windows ● GNU/Linux (y su hijo Android) ● Mac OS X ● iOS ● Unix ● Solarix ● FreeBSD ● BlackBerry OS
  • 4. 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/
  • 6. ¿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
  • 8. 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.
  • 9. 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.
  • 10. 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
  • 12. Lenguaje de nivel intermedio
  • 13.
  • 14. 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.
  • 15. Lenguaje de alto nivel Visual Basic for Applications: Alt+F11 en MS EXCEL
  • 16. 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
  • 18. 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
  • 19. 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
  • 22. 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
  • 23. ¿Por qué C y no MATLAB? Tomado de: http://xkcd.com/409/
  • 24. 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
  • 25. 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.
  • 26. 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
  • 27. El compilador MinGW http://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/
  • 28. 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
  • 29. 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)
  • 30. 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++
  • 38. Compilando y ejecutando... En Windows se debe agregar “.exe” Linux/Mac OS: Windows:
  • 39. 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
  • 40. Encabezado Inclusión de librerías Prototipos de funciones Declaración de constantes y variables globales Función main() Definición de las funciones
  • 41. Comentarios Son ignorados por el compilador Pueden aparecer en cualquier lugar del código Forma de comentario autorizada en el standard C99
  • 42. 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
  • 43. Subdirectorio actual GNU/Linux: /usr/include Windows: C:MinGWinclude assert.h complex.h curses.h limits.h locale.h math.h miarchivo.h stdio.h stdlib.h stderr.h thread.h time.h unistd.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
  • 44. Observe que ambos archivos están en el mismo subdirectorio
  • 45. Declaración de variables Las variables se deben declarar antes de usar:
  • 46. La función main() Es el punto de entrada del programa El standard C permite los siguiente formas de invocar a main():