13
CURSO DE PROGRAMACION EN C Y C++ Página 1 de 13 CURSO DE PROGRAMACION EN C Y C++ Universidad de Sucre Facultad de Ingeniería (10 Agosto LUNES 2015:9-11 AM) CONTENIDOS El contenido del semestre se conformará con contenidos de varios autores, pero en términos generales se desarrollarán los siguientes temas, de la manera más flexible de acuerdo a las respuestas de los alumnos. LECCION 1: INTRODUCCIÓN Y PRIMEROS PASOS. 1.1 Bibliografía 1.2 PRIMEROS PASOS EN WINDOWS PARA EMPEZAR A PROGRAMAR CON C/C++ (PRINCIPIANTES) LECCION 2. ESCRIBIR UN PROGRAMA. “HELLO, WORLD” 2.1 QUÉ ES UN PROGRAMA 2.2 REALIZAR UN PROGRAMA LECCION 3. ESTRUCTURA DEL LENGUAJE C++ 3.1 TIPOS 3.2 LITERALES 3.3 IDENTIFICADORES 3.4 DECLARACIÓN DE CONSTANTES SIMBÓLICAS 3.5 VARIABLES 3.6 CONVERSIÓN ENTRE TIPOS 3.7 OPERADORES 3.8 PRIORIDAD Y ORDEN DE EVALUACIÓN 3.9 ESTRUCTURA DE UN PROGRAMA 3.10 PROGRAMA ORIENTADO A OBJETOS LECCION 7. ENTRADA Y SALIDA ESTÁNDAR 4.1 ENTRADA ESTÁNDAR 4.2 SALIDA ESTÁNDAR 4.3 SALIDA CON FORMATO LECCION 5. SENTENCIAS DE CONTROL 5.1 SENTENCIA DE ASIGNACIÓN 5.2 SENTENCIAS DE CONTROL 5.3 IF 5.4 SWITCH 5.5 WHILE

LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

Embed Size (px)

Citation preview

Page 1: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 1 de 10

CURSO DE PROGRAMACION EN C Y C++Universidad de SucreFacultad de Ingeniería

(10 Agosto LUNES 2015:9-11 AM)

CONTENIDOSEl contenido del semestre se conformará con contenidos de varios autores, pero en términos generales se desarrollarán los siguientes temas, de la manera más flexible de acuerdo a las respuestas de los alumnos.

LECCION 1: INTRODUCCIÓN Y PRIMEROS PASOS.1.1 Bibliografía1.2 PRIMEROS PASOS EN WINDOWS PARA EMPEZAR

A PROGRAMAR CON C/C++ (PRINCIPIANTES)LECCION 2. ESCRIBIR UN PROGRAMA. “HELLO, WORLD”

2.1 QUÉ ES UN PROGRAMA2.2 REALIZAR UN PROGRAMA

LECCION 3. ESTRUCTURA DEL LENGUAJE C++3.1 TIPOS3.2 LITERALES3.3 IDENTIFICADORES3.4 DECLARACIÓN DE CONSTANTES SIMBÓLICAS3.5 VARIABLES3.6 CONVERSIÓN ENTRE TIPOS3.7 OPERADORES3.8 PRIORIDAD Y ORDEN DE EVALUACIÓN3.9 ESTRUCTURA DE UN PROGRAMA3.10 PROGRAMA ORIENTADO A OBJETOS

LECCION 7. ENTRADA Y SALIDA ESTÁNDAR4.1 ENTRADA ESTÁNDAR4.2 SALIDA ESTÁNDAR4.3 SALIDA CON FORMATO

LECCION 5. SENTENCIAS DE CONTROL5.1 SENTENCIA DE ASIGNACIÓN5.2 SENTENCIAS DE CONTROL5.3 IF5.4 SWITCH5.5 WHILE5.6 DO... WHILE5.7 FOR5.8 SENTENCIA BREAK5.9 TRY... CATCH

LECCION 6. FUNCIONES6.1 DEFINICIÓN6.2 ENFOQUE PROCEDURAL FRENTE AL ORIENTADO A OBJETOS6.3 PASANDO ARGUMENTOS A LAS FUNCIONES

Page 2: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 2 de 10

6.4 PARÁMETROS POR OMISIÓN6.5 FUNCIONES RECURSIVAS6.6 FUNCIONES MATEMÁTICAS

LECCION 7. MATRICES Y ESTRUCTURAS7.1 MATRICES7.3 EL TIPO STRING7.4 ESTRUCTURAS

8. FLUJOS8.1 ESCRIBIR Y LEER EN UN FICHERO8.2 ACCESO SECUENCIAL

INTRODUCCION

.

Page 3: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 3 de 10

C++ es un lenguaje de programación diseñado por Bjarne Stroustrup y puesto a disposición de los desarrolladores allá por 1985. La intención de su creador fue extender el exitoso lenguaje de programación C con mecanismos que permitieran la programación orientada a objetos. En ese sentido, y desde un punto de vista de los lenguajes orientados a objetos, C++ es un lenguaje híbrido. Esto es, C++ fue desarrollado a partir del lenguaje de programación C y con pocas excepciones incluye a C, que puede compilarse sin problemas bajo C++. (Carmen Fernández).

C++ es actualmente uno de los lenguajes de programación más populares para el desarrollo de aplicaciones de propósito general. Como muchos otros lenguajes, permite trabajar con todo tipo de datos, crear estructuras de datos, trabajar con ficheros, manipular excepciones, etc. Más aún, C++ es un lenguaje simple, potente y orientado a objetos. Su sintaxis incita al programador a generar programas modulares y fácilmente mantenibles.

C++11 (Wikipedia)El C++11, antes conocido como C++0x, es el nombre de la segunda iteración más reciente del lenguaje de programación C++, reemplazando al C++03 y reemplazado por el C++14, aprobado por la ISO el día 12 de agosto de 2011.1 El nombre es derivado de la tradición de nombrar las versiones de lenguaje por la fecha de la publicación de la especificación.

C++11 incluye varias adiciones al núcleo del lenguaje y extiende la biblioteca estándar de C++, incorporando la mayor parte de las bibliotecas del C++ Technical Report 1 (TR1) - con la excepción de la biblioteca de funciones especiales de matemáticas.2 El C++11 fue publicado como el "ISO/IEC 14882:2011"3 en septiembre de 2011 y está disponible sujeto a pago. El borrador de trabajo disponible más reciente es (N3242) con fecha del 28 de febrero de 2011.

Page 4: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 4 de 10

PARA PROFUNDIZACION: La siguiente es un listado histórico de los documentos del desarrollo de C++, para los que quieran mirar más de cerca las novedades del desarrollo del lenguaje (Los números son hipervínculos a cada documento, puede pulsar Ctrl+Clic para abrir el documento)

Documentos del Comité de Estándar de C++ Doc No. 1401: Jan Kristoffersen (21 October 2002) Atomic operations with multi-threaded

environments Doc No. 1402: Doug Gregor (22 October 2002) A Proposal to add a Polymorphic Function

Object Wrapper to the Standard Library Doc No. 1403: Doug Gregor (8 November 2002) Proposal for adding tuple types into the

standard library Doc No. 1424: John Maddock (3 March 2003) A Proposal to add Type Traits to the

Standard Library Doc No. 1429: John Maddock (3 March 2003) A Proposal to add Regular Expression to the

Standard Library Doc No. 1449: B. Stroustrup, G. Dos Reis, Mat Marcus, Walter E. Brown, Herb Sutter (7

April 2003)Proposal to add template aliases to C++ Doc No. 1450: P. Dimov, B. Dawes, G. Colvin (27 March 2003) A Proposal to Add General

Purpose Smart Pointers to the Library Technical Report (Revision 1) Doc No. 1452: Jens Maurer (10 April 2003) A Proposal to Add an Extensible Random

Number Facility to the Standard Library (Revision 2) Doc No. 1453: D. Gregor, P. Dimov (9 April 2003) A proposal to add a reference wrapper

to the standard library (revision 1) Doc No. 1454: Douglas Gregor, P. Dimov (9 April 2003) A uniform method for computing

function object return types (revision 1) Doc No. 1456: Matthew Austern (9 April 2003) A Proposal to Add Hash Tables to the

Standard Library (revision 4) Doc No. 1471: Daveed Vandevoorde (18 April 2003) Reflective Metaprogramming in C++ Doc No. 1676: Bronek Kozicki (9 September 2004) Non-member overloaded copy

assignment operator Doc No. 1704: Douglas Gregor, Jaakko Järvi, Gary Powell (10 September 2004) Variadic

Templates: Exploring the Design Space Doc No. 1705: J. Järvi, B. Stroustrup, D. Gregor, J. Siek, G. Dos Reis (12 September

2004) Decltype (and auto) Doc No. 1717: Francis Glassborow, Lois Goldthwaite (5 November 2004) explicit class and

default definitions Doc No. 1719: Herb Sutter, David E. Miller (21 October 2004) Strongly Typed Enums

(revision 1) Doc No. 1720: R. Klarer, J. Maddock, B. Dawes, H. Hinnant (20 October 2004) Proposal to

Add Static Assertions to the Core Language (Revision 3) Doc No. 1757: Daveed Vandevoorde (14 January 2005) Right Angle Brackets (Revision 2) Doc No. 1811: J. Stephen Adamczyk (29 April 2005) Adding the long long type to C++

(Revision 3) Doc No. 1815: Lawrence Crowl (2 May 2005) ISO C++ Strategic Plan for Multithreading Doc No. 1827: Chris Uzdavinis, Alisdair Meredith (29 August 2005) An Explicit Override

Syntax for C++ Doc No. 1834: Detlef Vollmann (24 June 2005) A Pleading for Reasonable Parallel

Processing Support in C++ Doc No. 1836: ISO/IEC DTR 19768 (24 June 2005) Draft Technical Report on C++ Library

Extensions

Page 5: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 5 de 10

Doc No. 1886: Gabriel Dos Reis, Bjarne Stroustrup (20 October 2005) Specifying C++ concepts

Doc No. 1891: Walter E. Brown (18 October 2005) Progress toward Opaque Typedefs for C++0X

Doc No. 1898: Michel Michaud, Michael Wong (6 October 2004) Forwarding and inherited constructors

Doc No. 1919: Bjarne Stroustrup, Gabriel Dos Reis (11 December 2005) Initializer lists Doc No. 1968: V Samko; J Willcock, J Järvi, D Gregor, A Lumsdaine (26 February

2006) Lambda expressions and closures for C++ Doc No. 1986: Herb Sutter, Francis Glassborow (6 April 2006) Delegating Constructors

(revision 3) Doc No. 2016: Hans Boehm, Nick Maclaren (21 April 2002) Should volatile Acquire

Atomicity and Thread Visibility Semantics? Doc No. 2142: ISO/IEC DTR 19768 (12 January 2007) State of C++ Evolution (between

Portland and Oxford 2007 Meetings) Doc No. 2228: ISO/IEC DTR 19768 (3 May 2007) State of C++ Evolution (Oxford 2007

Meetings) Doc No. 2258: G. Dos Reis and B. Stroustrup Templates Aliases Doc No. 2280: Lawrence Crowl (2 May 2007) Thread-Local Storage Doc No. 2291: ISO/IEC DTR 19768 (25 June 2007) State of C++ Evolution (Toronto 2007

Meetings) Doc No. 2336: ISO/IEC DTR 19768 (29 July 2007) State of C++ Evolution (Toronto 2007

Meetings) Doc No. 2389: ISO/IEC DTR 19768 (7 August 2007) State of C++ Evolution (pre-Kona

2007 Meetings) Doc No. 2431: SC22/WG21/N2431 = J16/07-0301 (2 October 2007), A name for the null

pointer: nullptr Doc No. 2432: ISO/IEC DTR 19768 (23 October 2007) State of C++ Evolution (post-Kona

2007 Meeting) Doc No. 2437: Lois Goldthwaite (5 October 2007) Explicit Conversion Operators Doc No. 2461: ISO/IEC DTR 19768 (22 October 2007) Working Draft, Standard for

programming Language C++ Doc No. 2507: ISO/IEC DTR 19768 (4 February 2008) State of C++ Evolution (pre-

Bellevue 2008 Meeting) Doc No. 2565: ISO/IEC DTR 19768 (7 March 2008) State of C++ Evolution (post-Bellevue

2008 Meeting) Doc No. 2597: ISO/IEC DTR 19768 (29 April 2008) State of C++ Evolution (pre-Antipolis

2008 Meeting) Doc No. 2606: ISO/IEC DTR 19768 (19 May 2008) Working Draft, Standard for

Programming Language C++ Doc No. 2798: ISO/IEC DTR 19768 (4 October 2008) Working Draft, Standard for

Programming Language C++ Doc No. 2857: ISO/IEC DTR 19768 (23 March 2009) Working Draft, Standard for

Programming Language C++ Doc No. 2869: ISO/IEC DTR 19768 (28 April 2009) State of C++ Evolution (post-San

Francisco 2008 Meeting) Doc No. 3014: Stephen D. Clamage (4 November 2009) AGENDA, PL22.16 Meeting No.

53, WG21 Meeting No. 48, 8–13 March 2010, Pittsburgh, PA Doc No. 3082: Herb Sutter (13 March 2010) C++0x Meeting Schedule Doc No. 3092: ISO/ISC DTR 19769 (26 March 2010) Working Draft, Standard for

Programming Language C++ Doc No. 3126: ISO/ISC DTR 19769 (21 August 2010) Working Draft, Standard for

Programming Language C++

Page 6: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 6 de 10

Doc No. 3225: ISO/ISC DTR 19769 (27 November 2010) Working Draft, Standard for Programming Language C++

Doc No. 3242: ISO/ISC DTR 19769 (28 February 2011) Working Draft, Standard for Programming Language C++

Doc No. 3291: ISO/ISC DTR 19769 (5 April 2011) Working Draft, Standard for Programming Language C++

Doc No. 3290: ISO/ISC DTR 19769 (5 April 2011) FDIS, Standard for Programming Language C++

Artículos Bjarne Stroustrup (1 de mayo de 2005). «The Design of C++0x: Reinforcing C++’s

proven strengths, while moving into the future». C/C++ Users Journal. Consultado el 23 de marzo de 2009.

Raffaele Rialdi (16 de septiembre de 2005). «Il futuro di C++ raccontato da Herb Sutter». Web Log di Raffaele Rialdi. Consultado el 23 de marzo de 2009.

Danny Kalev (21 de julio de 2006). «The Explicit Conversion Operators Proposal». InformIT. Consultado el 23 de marzo de 2009.

Danny Kalev (11 de julio de 2008). «Lambda Expressions and Closures». InformIT. Consultado el 23 de marzo de 2009.

Pete Becker (11 de abril de 2006). «Regular Expressions». Dr. Dobb's Portal. Consultado el 23 de marzo de 2009.

Danny Kalev (10 de marzo de 2006). «The Type Traits Library». InformIT. Consultado el 23 de marzo de 2009.

Pete Becker (1 de mayo de 2005). «C++ Function Objects in TR: Getting from TR1 back to the Standard Library». Dr. Dobb's Portal. Consultado el 23 de marzo de 2009.

Howard E. Hinnant, Bjarne Stroustrup, and Bronek Kozicki (10 de marzo de 2008). «A Brief Introduction to Rvalue References». The C++ Source. Consultado el 23 de marzo de 2009.

«C++0x: The Dawning of a New Standard» . DevX. 18 de agosto de 2008. Consultado el 23 de marzo de 2009.

«Static code analysis and the new language standard C++0x» . Intel Software Network. 15 de abril de 2010.

Bjarne Stroustrup (August 2009). «No 'Concepts' in C++0x». accu.org. Consultado el 29 de junio de 2010.

«Explicating the new C++ standard (C++0x), and its implementation in VC10» . CodeProject.com. 8 de abril de 2010. Consultado el 13 de febrero de 2011.

CURSOS EN LINEA Y BIBLIOGRAFIAS RECOMENDADAS. Las siguientes son las direcciones con los cursos en línea más completos sobre C y C++:

http://www.cplusplus.com/doc/tutorial/Considerado, actualmente, el mejor curso de C++, hasta el momento, el único inconveniente es que esta en inglés.

http://www.linux-party.com/index.php/54-programacion/6929-tutorial-de-c-c-programar-paso-a-paso-para-linux-windows-y-mac#Este curso también goza de mucho prestigio y está completamente en español. Los contenidos del presente semestre serán básicamente tomados de este tutorial en línea.

Page 7: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 7 de 10

http://www.elrincondelc.com/cursoc/cursoc.htmlEste es un curso para principiantes en donde no hace falta ningún conocimiento anterior para seguirlo. Muchos otros cursos suponen conocimientos previos pero eso no sucede aquí.

VIDEOS. Existen excelentes tutoriales en español:https://www.youtube.com/playlist?list=PL4A486BBFC5AD733BEste es un Curso de C++, de código facilito, consta de 27 vídeos. Aprende a programar en C++ con este curso básico de video tutoriales en Español de CódigoFacilito.

https://www.youtube.com/watch?v=_vzc9pQnpicEste es un curso de C++ con Dev-C++, un IDE bastante utilizado y fácil de usar.

https://www.youtube.com/watch?v=tMJc8krx2n4Este es un curso para Novatos en español. Utilizando el entorno integrado de desarrollo CodeBlock.

VIDEOS DE LECTURA OBLIGATORIA PARA REFLEXIONAR. Los siguientes son dos videos, el primero es de Richard Stallman sobre software Libre y el segundo de Steve Job sobre programación.

1. https://www.youtube.com/watch?v=EZf3Xy2ifaU 2. https://www.youtube.com/watch?v=X5Wkp1gsNik

BIBLIOGRAFIA. Los siguientes son los libros recomendados en orden de importancia:

1) Bjarne Stroustrup . Programming Principles and Practice Using C++. Este es el mejor libro de todos. Escrito por el creador de C++. Es un libro escrito para quienes no tienen ningún conocimiento de programación y lleva al lector desde los principios más básicos hasta convertirlo en un programador competente. Hay una versión en español que se puede conseguir en algunas bibliotecas.

2) Bjarne Stroustrup . El lenguaje de programación C++. Es una versión en español que se puede encontrar en internet. Contiene apenas 7 capítulos y están muy condensados, pero es de mucha ayuda.

3) Carmen Fernández. C++ Lo Básico que Debe Saber. Un excelente libro para iniciar desde cero. Se puede conseguir en internet en la librería de la U en la siguiente dirección a un costo de no más de 30 mil pesos: http://www.libreriadelau.com/c-lo-basico-que-debe-saber-informatica-6.html#.VZb-9Pl_Oko

4) Enciclopedia de C++. Es una colección de libros de C y C++ de varios autores, algunos muy buenos y otros no tanto, pero se pueden encontrar en español. Alguna información detallada de los mismos, la pueden obtener en la

Page 8: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 8 de 10

siguiente dirección: http://www.freelibros.org/programacion/programacion-en-lenguaje-c-coleccion-de-49-libros-electronicos-codigos-fuente.html

METODOLOGIA: La metodología se basará en la frase de Brian Kernighan: “Se aprende a programar Programando”.

En este curso se procurará en lo posible utilizar lenguaje bastante no técnico, y por lo demás se cubrirán los temas con ejemplos de trabajo, procurando que sean temas de ingeniería.

Hay un viejo refrán latino: Longum iter est per preacepta, breve et efficax per exempla (Es un largo camino por las reglas, pero corto y eficiente con ejemplos).

Esta será la metodología que seguiremos. Sin embargo se darán pautas en cada tema para ampliar conceptos, indicando textos avanzados, y páginas de la internet, donde podrán continuar aquellos que deseen profundizar o que prevean que necesitarán estudios más sólidos para casos de, por ejemplo, proyectos de grado o investigación.

EVALUACION: La evaluación consistirá exclusivamente de parciales donde se evaluarán los conceptos aprendidos. Se harán parciales uno por cada tema tratado. Al final se promediarán todos los parciales y esa será la nota del 100%.

Page 9: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 9 de 10

PRIMEROS PASOS EN WINDOWS PARA EMPEZAR A PROGRAMAR CON C/C++ (PRINCIPIANTES)http://wiki.geany.org/howtos/win32/getting-startedEn este artículo se proporciona información paso a paso de la instalación del software para la realización de un programa Hola Mundo.

Instale TDM-GCC (el compilador). Puede descargarlo en la siguiente dirección:http://tdm-gcc.tdragon.net/download

Seleccione la versión de 32bit (No el sufijo -w64), paquete, versión.Instalar con opciones por defecto a menos que sepa lo que está haciendo.

Asegúrese de que GCC es accesible en el PATH. Inicie la consola de Windows, pulsando las teclas: WIN+R, escriba cmd y pulse Enter, y escriba gcc.Usted debe obtener algo como esto en el CMD

C:\>gccgcc: fatal error: no input filescompilation terminated.

De lo contrario, se debe añadir manualmente el PATH adecuado.

Instale Geany (IDE)Si no está seguro, descargar e instalar la versión que viene con GTK tiempo de ejecución.http://www.geany.org/Download/Releases

Hello World para C. Inicie Geany, haga clic en Archivo – Nuevo. Haga clic en Documento – Establecer tipo de archivo – Lenguajes de programación – Archivo de fuente C.

Escriba el siguiente código:

Page 10: LECCION 1_INTRODUCCIÓN Y PRIMEROS PASOS_AGRICOLA.docx

CURSO DE PROGRAMACION EN C Y C++ Página 10 de 10

Hello World para C++. Haga lo mismo del paso anterior pero ahora elija Archivo de Fuente C++

Finalice su programa Hello World Click “Nuevo” en la Barra de Herramientas. Escriba su programa Hello World, como se mostró anteriormente, de acuerdo

a su lenguaje (C o C++). Guarde el programa con la extensión adecuada (Use .c para programas en C,

.cpp o .cxx para programas en C++). Haga clic en “Compilar” en la barra de herramientas. Debería decir “La

compilación ha terminado con éxito”, de lo contrario revise su código. Haga clic en “Ejecutar” en la barra de herramientas. Debería ver una ventana

emergente de la consola y debería ver el mensaje “Hello, World!”.

EJERCICIO: Intente escribir un código de C en un programa de C++