01 Introducción al lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales



Documentos relacionados
Informática I para Bachillerato

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Informática 1 Grado en Matemáticas

MANUAL TÉCNICO DE IMPLEMENTACIÓN PROYECTO SOCIAL COMPUESCUELA. Elaborado por: Julián A. Hernández M.

Laboratorio 01: Programar en lenguaje ANSI C bajo Windows

Unidad III El lenguaje de programación C

Unidad I. Introducción a la programación de Dispositivos Móviles (Continuación )

Cristian Blanco

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

Unidad 9. Entornos de Desarrollo

Algoritmos y programas

Análisis de aplicación: Geany

Introducción al Mundo GNU/Linux

Introducción a la Computación

Módulo 2. Inicio con Java

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

Practica 01: Programación en C bajo Linux y funciones

TALLER DE CONOCIMIENTOS APRENDICES JORGE LEONARDO MAZA CARLOS DAVID ZAMBRANO JOSE G. RODRIGUEZ PROFESOR RONALD MARTELO

AUDITORIA A AMBIENTES DE DESARROLLO, APLICACIONES EN PRODUCCION, SERVICIOS DE TI, CONTRATACION DE RECURSOS DE TI. VIVIANA GÓMEZ BARCO PRESENTADO A:

Guía de estudio para examen de recuperación tecnología I

Prueba de Concepto, Informes XBRL vs. SGBDR.

Capítulo 1 Introducción a la Computación

CAPITULO IV CONCLUSIONES Y RECOMENDACIONES

El Entorno Integrado de Desarrollo Dev-C++ (Ayuda básica para las primeras sesiones de prácticas)

COLEGIO COMPUESTUDIO

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 3: sistemas operativos

Capacidad de procesamiento del compilador Python para el Sistema Operativo Windows y Linux Palabras Clave:

Guía de Instalación de la JDK y del Eclipse

Preliminares. Tipos de variables y Expresiones

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

REPORTE DE INVESTIGACIÓN SOBRE SOFTWARE PARA LA ELABORACIÓN DE DIAGRAMAS DE FLUJO.

MÓDULO 1: Sistemas de Cómputo

Dev C++. Compilador de C para Windows

Práctica 3 Manejo de GCC y ejecución de programas por consola. Computador Compilador Editor de texto o IDE

Compilación y ejecución de programas en Java.

TAREA #6 Tipos de Software y Documentos Colaborativos.

Figura 4.1 Clasificación de los lenguajes de bases de datos

Módulo: Ahorra espacio ÍNDICE 1. QUÉ ES WINRAR? 3

Evaluación de entornos integrados de desarrollo 1. Funciones de un entorno de desarrollo

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

Actividad 2: Configurar e Instalar un Sistema Operativo virtual

Popularidad comparada de PHP vs ASP, y posibles causas

IES Abyla. Departamento de Informática. Sistemas Operativos

Introducción al Dev-C++

Act 1: Revisión de Presaberes. Lectura No. 1. Título de la Lectura: El Computador

Informática I para Bachillerato

Actividad N 1. Primer procesador creado por Intel

Tutorial. Configuración del entorno de programación Code::Blocks.

Actualización de versión a Bizagi 10.x

TUTORIAL DE INSTALACIÓN PARA VIRTUALBOX

Es el conjunto de programas y procedimientos ejecutados en un computador, necesarios para hacer posible la realización de una tarea específica.

MS_10266 Programming in C# with Microsoft Visual Studio 2010

Índice. Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador?

LENGUAJE. Tema 1 - Introducción

Introducción a Visual.Net

Introducción al lenguaje de programación java

laboratorio de sistemas operativos y redes

UNIVERSIDAD NACIONAL DE INGENIERÍA FACULTAD DE INGENIERÍA INDUSTRIAL Y SISTEMAS UMBRELLO ADMINISTRACION DE BASE DE DATOS

Ingeniería del Software III

3.1 Introducción a Wireshark

Una computadora es un dispositivo electrónico, operando bajo el control de las instrucciones almacenadas en su propia unidad de memoria.

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Arquitectura Cliente/Servidor

Ing. Andrés Bustamante

Presentación del Curso Virtual

EDITOR E INTÉRPRETE DE ALGORITMOS REPRESENTADOS EN DIAGRAMAS DE FLUJO 1 RESUMEN

REPÚBLICA BOLIVARIANA DE VENEZUELA. MINISTERIO DEL PODER PUPALAR PARA LA EDUCACIÓN. U.E.C NICOLÁS MEZA


A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

Servicio de Informática

Examen de Arquitectura de Computadores

Análisis de aplicación: Skipfish

Capítulo 2 Análisis del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

INSTALACION MANUAL DE ECLIPSE EN UBUNTU

Tema 1. Introducción a JAVA

El presente documento describe la importancia que está tomando el cómputo distribuido en

MATERIAL 2 EXCEL 2007

colegio de bachilleres de Chiapas plantel 56 catedrático: Jorge Roberto Nery Gonzales materia: hojas de calculo

Tema 1 Fundamentos de Computación

Desarrollo de Aplicaciones Web Por César Bustamante Gutiérrez. Módulo I: Conceptos Básicos Tema 1: Concepto iniciales.

REDES DE COMPUTADORES FACULTAD DE INGENIERIA ELECTRONICA UNIVERSIDAD PONTIFICIA BOLIVARIANA. Profesor: Jhon Jairo Padilla Aguilar, Ph.D.

Este documento se distribuye bajo los términos de la licencia Creative Commons by sa. sa/2.

Lenguaje C++ Introducción 6. Introducción a la Computación Tc1001 Programación en Lenguaje C++

Gestor de aplicaciones Java. Esta herramienta es el intérprete de los archivos de clase generados por el javac (compilador).

Capitulo V Administración de memoria

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Manual del Usuario. Programa para el cálculo de los ángulos asociados a la geometría de iluminación y observación de la escena SAC-C MMRS. Versión 1.

Cómo compilar y ejecutar programas en ĺınea de comandos

Entorno de Programación Visual Studio 6

4 ARQUITECTURA DE COMUNICACIONES

Interfaces de Usuario Inteligentes:

Unidad II. Interfaz Grafica

Introducción a Computación

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Instructivo para descarga del código fuente

Transcripción:

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

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 Un sistema operativo es un programa o conjunto de programas que en un sistema informático gestiona los recursos de hardware y provee servicios a los programas de aplicación. 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 (si tiene al menos 4 Gb de RAM): https://www.youtube.com/results?search_query=instalar+linux+mint+16+virtualbox De lo contrario instale el sistema operativo desde el Live CD (no hay necesidad de borrar Windows para tal fin): https://www.youtube.com/results?search_query=instalar+linux+mint+16+live+dvd

Bytes

Lenguajes de programación Es un conjunto de instrucciones diseñadas para expresar procesos que pueden ser llevados a cabo por las computadoras: De máquina: procesador unos y ceros que entiende el De bajo nivel (lenguaje ensamblador): 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. Desventajas: Mínima portabilidad (depende de la máquina) 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

The C programming language (1978)

Características del lenguaje C K&R C89 C99 C11 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

Palabras clave

C vs otros lenguajes (Febrero 2014) FUENTE: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

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 Utilizaremos el gcc en el curso Microsoft Visual C++ (soporta el C99/C11 parcialmente a partir de la versión 2013). Y muchos otros: http://en.wikipedia.org/wiki/category:c_compilers

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... Linux/Mac OS: Windows: En Windows se debe agregar.exe

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 miarchivo.h programa1.c programa2.c programa1.c GNU/Linux: /usr/include Windows: C:\MinGW\include 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 programa2.c #include miarchivo.h #include <miarchivo.h> int main(void) {. return 0; } int main(void) {. return 0; }

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