Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se...

24
Programación 1º Bachillerato Iniciación a la Programación ¿Qué es un programa? Todos los usuarios de ordenadores utilizamos continuamente programas, desde el sistema operativo que nos permite comunicarnos con el ordenador, hasta el último videojuego que nos proporciona muchas horas de entretenimiento, pero ¿realmente sabemos que es un programa?, esta y otras preguntas son las que vamos a intentar contestar en este manual. Un programa es un conjunto de líneas de texto escritas utilizando un lenguaje especial llamado lenguaje de programación, es decir, cuando un programador se plantea desarrollar un programa debe escribir órdenes utilizando un lenguaje de programación y almacenar estas órdenes en un fichero de texto, llamado fichero fuente. Este fichero fuente debe ser posteriormente traducido a órdenes que el procesador sea capaz de ejecutar, este proceso se realiza gracias a unos programas especiales llamados compiladores. Los compiladores leen el código fuente escrito por el programador y lo transforman en un fichero ejecutable formado por órdenes que es capaz de ejecutar el procesador, a este fichero ejecutable le llamamos programa. Visualmente el proceso podría ser resumido según el siguiente esquema: Lenguajes de Programación Un lenguaje de programación está formado por un conjunto de códigos fáciles de comprender por el programador y fáciles de transformar posteriormente en órdenes que el procesador pueda ejecutar. Existe multitud de lenguajes de programación enfocados normalmente al tipo de aplicación que se va a desarrollar, por ejemplo el lenguaje de programación C es muy utilizado para codificar programas para sistemas como por ejemplo el sistema operativo Linux que está diseñado utilizando este lenguaje, java es un lenguaje para crear aplicaciones que principalmente funcionen en internet, al igual que PHP. Se puede hacer una clasificación de los lenguajes de programación atendiendo a lo parecidos que son al lenguaje de procesador. Siguiendo esta clasificación podemos tener los siguientes tipos de lenguajes: Lenguajes de bajo nivel: Son muy parecidos al lenguaje del procesador, y por tanto es bastante difícil codificar programas en ellos, se suelen utilizar para codificar las partes más críticas de un programa, aquellas que es necesario que se ejecuten con mucha seguridad y rapidez, un ejemplo de este tipo de lenguajes es el lenguaje ensamblador. Lenguajes de nivel medio:Permiten el acceso directo a elementos del hardware como los lenguajes de bajo nivel pero también permiten crear estructuras más complejas y fáciles de entender para el programador como los lenguajes de alto nivel, un ejemplo de este tipo de lenguajes es C. María Dolores Molina 1 Fichero ejecutable Fichero fuente compilador

Transcript of Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se...

Page 1: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Iniciación a la Programación¿Qué es un programa?Todos los usuarios de ordenadores utilizamos continuamente programas, desde elsistema operativo que nos permite comunicarnos con el ordenador, hasta el último videojuego quenos proporciona muchas horas de entretenimiento, pero ¿realmente sabemos que es un programa?,esta y otras preguntas son las que vamos a intentar contestar en este manual.

Un programa es un conjunto de líneas de texto escritas utilizando un lenguaje especial llamadolenguaje de programación, es decir, cuando un programador se plantea desarrollar un programadebe escribir órdenes utilizando un lenguaje de programación y almacenar estas órdenes en unfichero de texto, llamado fichero fuente. Este fichero fuente debe ser posteriormente traducido aórdenes que el procesador sea capaz de ejecutar, este proceso se realiza gracias a unos programasespeciales llamados compiladores. Los compiladores leen el código fuente escrito por elprogramador y lo transforman en un fichero ejecutable formado por órdenes que es capaz deejecutar el procesador, a este fichero ejecutable le llamamos programa. Visualmente el procesopodría ser resumido según el siguiente esquema:

Lenguajes de Programación

Un lenguaje de programación está formado por un conjunto de códigos fáciles de comprender por elprogramador y fáciles de transformar posteriormente en órdenes que el procesador pueda ejecutar.Existe multitud de lenguajes de programación enfocados normalmente al tipo de aplicación que seva a desarrollar, por ejemplo el lenguaje de programación C es muy utilizado para codificarprogramas para sistemas como por ejemplo el sistema operativo Linux que está diseñado utilizandoeste lenguaje, java es un lenguaje para crear aplicaciones que principalmente funcionen en internet,al igual que PHP.Se puede hacer una clasificación de los lenguajes de programación atendiendo a lo parecidos queson al lenguaje de procesador. Siguiendo esta clasificación podemos tener los siguientes tipos delenguajes:

✔ Lenguajes de bajo nivel: Son muy parecidos al lenguaje del procesador, y por tanto esbastante difícil codificar programas en ellos, se suelen utilizar para codificar las partes máscríticas de un programa, aquellas que es necesario que se ejecuten con mucha seguridad yrapidez, un ejemplo de este tipo de lenguajes es el lenguaje ensamblador.

✔ Lenguajes de nivel medio:Permiten el acceso directo a elementos del hardware como loslenguajes de bajo nivel pero también permiten crear estructuras más complejas y fáciles deentender para el programador como los lenguajes de alto nivel, un ejemplo de este tipo delenguajes es C.

María Dolores Molina 1

Fichero ejecutableFichero fuentecompilador

Page 2: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

✔ Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil eltrabajo para el programador aunque también se pierde parte del control que los lenguajes debajo y medio nivel le permiten tener al programador sobre el hardware, ejemplos de este tipode lenguajes son C++, Java, PHP, etc...

El lenguaje de programación C++

El lenguaje C++C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup.La intención de su creación fue el extender al lenguaje de programación C mecanismos quepermiten la manipulación de objetos.

C es un lenguaje que emplea el paradigma de la programación estructurada que resuelve losproblemas mediante el uso de subrutinas o funciones y de tres tipos de estructuras: secuencia,selección e iteración. C++ sin embargo es un lenguaje que emplea el paradigma de laprogramación orientada a objetos que enfoca la resolución de un problema mediante la creación deobjetos que interactúan con el usuario por medio de sus atributos, que representan suscaracterísticas o propiedades, y métodos, que implementan su comportamiento.

El compilador de C++Todo lenguaje de programación necesita incluir un compilador, es decir, un programa que lea lasinstrucciones que el programador ha escrito y las traduzca a los códigos que el procesador es capazde ejecutar, también debe ser capaz de informar al programador de los posibles errores que hayacometido a la hora de codificar su programa. Según lo que hemos explicado anteriormente el compilador dependería solo de la arquitectura delprocesador, pero los programas también necesitan comunicarse con el sistema operativo, por tantotendremos distintos compiladores dependiendo del sistema operativo en el que estemosprogramando. C++ dispone de compiladores para casi cualquier plataforma, de forma que podremostrabajar en C++ tanto en Windows como en Linux si tenemos sus compiladores correspondientes.

Fases de las compilación de un programaEl proceso de transformar un fichero fuente en un código ejecutable en C++ está dividido en lassiguientes fases:

1) El programador escribe el código fuente en un fichero de texto plano (sin formato) con la extensión .cpp además también puede incluir ficheros cabecera con extensión .hpp este tipo de ficheros suele almacenar definiciones generales que afectan a todos los módulos del programa fuente y que se utilizan para segmentar y organizar el código en distintos ficheros.

2) El precompilador analiza la sintaxis de los ficheros fuente, realiza la sustitución se símbolose incluye los códigos de los ficheros cabecera.

3) El compilador recoge la salida del precompilador y la convierte en código máquina, en elcaso de que el programador no haya cometido ningún error de codificación, dando lugar aun fichero con extensión .o u .obj llamado fichero objeto. Si el programador ha cometidoerrores de sintaxis el compilador mostrará por pantalla una lista de los errores cometidospara el programador los revise y no se generará el fichero objeto.

4) El montador une el o los ficheros objeto que van a formar el programa con las librerías queincluye el lenguaje de programación, y que haya utilizado el programador, para generar el

María Dolores Molina 2

Page 3: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

fichero ejecutable con extensión .exe para Windows y sin extensión para Linux.

El compilador gcc

GCC es un compilador integrado del proyecto GNU para los lenguajes de programación C, C++,Objective C y Fortran; es capaz de recibir un programa fuente en cualquiera de estos lenguajes ygenerar un programa ejecutable binario en el lenguaje de la máquina donde se va a ejecutar. Lassiglas GCC significa "GNU Compiler Collection". El compilador GCC suele estar incluido dentrodel sistema operativo Linux ya que es imprescindible para compilar el núcleo del sistema. Nosotrosen este manual vamos a utilizar los comandos GCC para compilar nuestros programas realizados enC++. Para compilar un programa C++ utilizamos el comando g++ con las siguientes opciones:

1. Para compilar el código fuente y generar su correspondiente código objeto escribiremos:g++ -c fichero.cpp

Esta línea genera como salida el fichero objeto fichero.o

2. Para obtener el fichero ejecutable a partir del montaje o lincado de los ficheros objetosescribiremos:

g++ fichero.o -o ficheroEsta línea genera como salida el fichero ejecutable fichero recordemos que en Linux losficheros ejecutables no tienen extensión.

3. Para compilar y lincar en un solo comando, es decir obtener el ejecutable a partir de losfuentes escribiremos:

g++ fichero.cpp -o fichero Esta línea genera como salida un fichero ejecutable que une en un solo programa todos losficheros fuente que hemos incluido.

Entornos Integrados de desarrollo

Son programas compuestos por un conjunto de herramientas de programación, que permiten alprogramador desarrollar todas las fases de la realización de un programa desde la edición,compilación, depuración, y ejecución desde una misma interfaz gráfica, simplificando así el trabajodel programador. Existen muchos entornos integrados de desarrollo (IDE), algunos específicos paraun lenguaje de programación y otros más genéricos que admiten distintos lenguajes. Para ellenguaje de programación C++ en Linux uno de los IDE más utilizados es Anjuta, que admitedistintos lenguajes como C, Java o Phytom además de C++, aunque existen muchos mas comoEclipse o Kdevelop.

En este manual vamos a realizar la compilación y la ejecución de los programas de la línea decomandos dejando para cursos posteriores la utilización de los entornos integrados de desarrollo afin de comprender y distinguir con claridad cada uno de los pasos necesarios para la realización deun programa: edición de código, compilación y ejecución.

María Dolores Molina 3

Page 4: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Pasos Previos: Álgebra de BooleEl álgebra de boole.

Como ya hemos dicho anteriormente un fichero fuente, escrito por un programador utilizando unlenguaje de programación, debe ser traducido a instrucciones que el procesador sea capaz deejecutar, debe haber por tanto una correspondencia entre las instrucciones que el programadorescribe y las instrucciones que el procesador ejecuta. También sabemos que en el ordenador todo sereduce al final a binario, ceros y unos. El álgebra de Boole es un sistema formado por dos elementosB{0,1} y una serie de operadores Y, O, No que permiten expresar operaciones condicionales. En laprogramación el álgebra de Boole es la forma que tiene el programador de crear condicionescomplejas que el procesador sea capaz de analizar. En este apartado vamos a explicar como seimplementa el álgebra de Boole para caso particular del lenguaje de programación C++.

La forma en la que los operadores se relacionan con el conjunto de elementos B, se expresa de lasiguiente manera:

a) El valor 1 se corresponde con el valor booleano cierto.b) El valor 0 se corresponde con el valor booleano falso.

Operador No ( ! )

Este es un operador unario, se aplica sobre un solo elemento y devuelve el valor contrario de dichoelemento.

A !A

0 1

1 0

Operación O (||)Este es un operador binario, se aplica sobre dos elementos y devuelve el valor 1 cuando algunos delos elementos tiene valor 1.

A B A || B

0 0 0

1 0 1

0 1 1

1 1 1

Operación Y (&&)Este es un operador binario, se aplica sobre dos elementos y devuelve el valor 1 solo cuando amboselementos tienen valor 1.

María Dolores Molina 4

Page 5: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

A B A && B

0 0 0

1 0 0

0 1 0

1 1 1

Estos operadores se pueden encadenar junto con los operadores matemáticos <, >, == (igual) , != (distinto), para crear estructuras complejas que permiten al programador crear condiciones que elprocesador es capaz de analizar. Analicemos el siguiente ejemplo:

La condición (A> B) || (A>C) && (C>B) para los valores A=11; B=10; C=13; se analiza siguiendoestos pasos:

a) Sustituimos las variables por sus valores: (11 > 10) || (11 > 13) && (13 > 10)

b) Evaluamos las condiciones de los paréntesis asignado el valor 1 si la condición es cierta y 0

si la condición es falsa: 1 || 0 && 1 (ya que 11 sí es mayor que 10, pero no es mayor que 13,

y 13 es mayor que 10)

c) Aplicamos las tablas correspondientes a los operadores empezando de izquierda a derecha y

tomando el resultado obtenido del primer par como entrada para el siguiente operador:

0 || 1 && 1

Por tanto para ese conjunto de valores el resultado de esta operación será 1, es decir, cierto.

Los operadores booleanos (!,||,&&) solo pueden aplicarse a valores booleanos, sin embargo en C++podemos encontrar expresiones como !A, A && B, siendo A y B variables con valores decimales.En estos casos, se convierte el valor de las variables decimales en valores booleanos de la siguientemanera:

a) Todo valor distinto de cero es cierto y se sustituye por un 1 al analizar una expresión .b) Todo valor igual a cero es falso y se sustituye por un 0 al analizar una expresión.

Debemos recordar que esta conversión solo se realiza en el caso particular de que nosencontremos un operador booleano asociado directamente a una variable numérica.

María Dolores Molina 5

1 && 1

1

Page 6: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Elementos del lenguaje C++Estructura de un programa en C++

Todo programa en C tiene que respetar una estructura básica, que está compuesta de al menos lossiguientes elementos:

/* Un primer programa*/ En cualquier parte del programa pueden aparecer líneas decomentarios que ayuden al programador a entender como seha construido un programa, para poder realizar su posteriormantenimiento. Este tipo de líneas son optativas pero es muyrecomendable su inclusión

#include <iostream> Este tipo de líneas son instrucciones para el preprocesador,empiezan todas por el carácter # y en este caso sirven paraincluir la biblioteca iostream necesaria cuando se van arealizar operaciones de entrada o salida de datos.

using namespace std ; Este instrucción permite la definición del espacio denombres stándar.

int main (void) Un programa en C está formado por un conjunto defunciones que toman una serie de valores como parámetros ydevuelve una series de valores al finalizar su ejecución.Estas funciones son llamadas desde una función principalmain. Esta línea es la declaración de la función principal eindica que no va a tomar ningún valor como argumento(void) y que va a devolver un entero al finalizar suejecución.

{ Las instrucciones de cualquier función deben estarencerradas entre llaves, en esta caso esta línea indica elcomienzo de las instrucciones para la función principalmain.

cout << “Mi primer Programa” ;

Esta línea realiza una llamada a la función cout, que es laencargada de mostrar mensajes de texto por pantalla paracomunicar información con el usuario que está ejecutando elprograma. Todas las instrucciones dentro de una funcióndeben terminar con un ;

return 0; Esta instrucción indica que la función main ha terminado deejecutarse y devuelve el control al sistema operativo con unvalor entero 0 indicando que la ejecución del programa hafinalizado correctamente.

} Esta llave marca el final de las instrucciones que formanparte de la función main y permite al programador incluir ladefinición de más funciones en el caso que sea necesario.

Una vez llegado a este punto del manual podemos realizar la compilación de este primer código,

María Dolores Molina 6

Page 7: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

desde la línea de comandos con el compilador g++.

Palabras reservadasEn un lenguaje de programación se llaman palabras reservadas a aquellas que están predefinidas enel lenguaje de programación, y que tienen una función específica dentro del lenguaje. Estas palabrasson utilizadas por el programador para crear instrucciones siempre respetando la sintaxis establecidaen el lenguaje de programación. Son palabras reservadas, como por ejemplo: using, namespace,const, double, int, char, bool, void, for, while, do, if, switch, case, default, return, typedef, enum,struct, etc.

ComentariosSi pensamos que un programa medio puede estar formado por miles de líneas de código, se vuelveimprescindible utilizar líneas de comentarios que permitan al programador comprender, a una vezse haya completado, como se ha diseñado ese programa, pensando en las futuras modificacionesque se deban realizar sobre el código diseñado en una primera instancia. En C las líneas decomentarios tienen la siguiente sintaxis:

/* línea de comentario */

Las líneas de comentarios pueden ocupar varias líneas y pueden estar situadas en cualquier posiciónrespecto al código.

SentenciasSon cada una de las instrucciones que el programador le da al procesador utilizando la sintaxisestablecida en el programa. La sentencias pueden estar formadas por una sola instrucción, sentenciasimples, en este caso deben ir terminadas por un punto y coma, o pueden estar formadas por unconjunto de instrucciones encerradas entre llaves, sentencias de bloque, cada una de las sentenciassimples que forman un bloque deben ir terminadas con un punto y coma. Analicemos el siguienteejemplo para entender mejor este concepto:

cout << “sentencia simple que imprime un mensaje por pantalla”;

if(a<3) /*sentencia de bloque que comienza con una llave, no lleva ; al final */ { cout << “sentencia simple que forma parte de la sentencia de bloque if”); a=a+1; /*las sentencias simples que forman parte de un bloque terminan en ; */ } /*fin de la sentencia de bloque*/

IdentificadoresSon nombres que utiliza el programador para referirse a los elementos que necesita: variables,constantes, funciones, ficheros, etc... Para crear identificadores en C el programador debe seguir lassiguientes instrucciones:

• Un identificador nunca puede coincidir con una palabra reservada.• Todos los identificadores deben comenzar por una letra.• C++ distingue entre mayúsculas y minúsculas por tanto se deben respetar a la hora de

declarar y utilizar los identificadores.

María Dolores Molina 7

Page 8: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

• Además de letras (solo las del alfabeto inglés, no se puede usar la ñ) los identificadorespueden incluir números y el carácter subrayado y nunca pueden incluir espacios en blanco.

Aunque no hay ninguna norma escrita si que hay una serie de recomendaciones que losprogramadores en C++ suelen seguir a la hora de crear identificadores:

• Los nombres de las variables van todas en minúsculas.• Las nombres de las constantes van todas en mayúsculas.• No utilices palabras en Inglés para crear identificadores ya que pueden coincidir con alguna

palabra reservada que no conozcas.• Los identificadores deben añadir significado a nuestros programas, por tanto no se deben

utilizar identificadores con un solo carácter salvo que su significado esté muy claro.• Desarrolla una serie de normas para crear identificadores en tu programa y se consistente, es

decir, respeta siempre esas normas.

Tipos de datosHay cinco tipos de datos básicos en C++ que son los siguientes:

• Carácter: Admiten un solo carácter que se debe escribir entre comillas simples. La palabra reservada para este tipo de datos char.

• Enteros: Admiten números enteros positivos y negativos, la palabra reservada para este tipo de datos es int.

• Decimales: Se utilizan para representar números decimales positivos y negativos, losnúmeros decimales se escriben utilizando un punto para separar la parte entera de la partedecimal. Ejemplo: 2.345 (dos con trescientos cuarenta y cinco). La palabra reservada paraeste tipo de datos es float para números decimales cortos y double para números decimaleslargos.

• Vacío: Se utiliza para definir variables que no tienen un tipo definido. La palabra reservada para este tipo de datos es void.

• Booleanos: A diferencia de C, en C++ se pueden representar los valores booleanos cierto y falso (como constantes se utilizan los valores true y false).

ConstantesSon posiciones de memoria que no van a cambiar su valor durante toda la ejecución de unprograma. Para definir una constate se utiliza la siguiente instrucción:

const tipo_de_dato CONSTANTE=valor;Ejemplo: const bool OK = true;

Ejemplo: const float PI=3.14159;

VariablesSon zonas de memoria que reserva el programador para almacenar una valor de un tipo definido.Para crear una variable debemos asignar un identificador a esa zona de memoria mediante unainstrucción de declaración. En C++ nunca se puede utilizar una variable si previamente no se ha

María Dolores Molina 8

Page 9: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

declarado. La sentencia de declaración tiene las siguientes partes:

tipo_de_dato identificador;Ejemplo: int edad;

Las variables se pueden clasificar en dos tipos atendiendo al ámbito de actuación de las mismas:

• Variables locales: Se definen y se utilizan dentro de una función o bloque compuesto desentencias, cuando esta función o bloque termina su ejecución las variables locales sedestruyen y por tanto pierden su valor. Se declaran dentro de la función o bloque desentencias donde se va a utilizar.

• Variables globales: Se definen y se utilizan dentro de un programa completo, es decir, sonindependientes de las distintas funciones o bloques que pueden formar un programa, no sedestruyen hasta que no se completa la ejecución del programa. Se definen antes de lainstrucción main.

Operadores y expresiones

Los operadores son símbolos que representan operaciones que pueden ser aritméticos, lógicos y eloperador asignación. Las expresiones están formadas por una concatenación de variables,constantes y operadores.

• Operadores matemáticos

Símbolo Operación

+ Suma

- Resta

* Multiplicación

/ División

% División entera

++ Incremento

- - Decremento

Los operadores matemáticos se utilizan siguiendo las normas básicas del álgebra. Ejemplos:

a = 2 * 3;a ++; /*incrementa en 1 el valor que tenga la variable a */

• El operador asignaciónEste operador se utiliza para asignar valores a las variables, se representa por el operador =.Las variables se colocan a la izquierda, y los valores a asignar se colocan a la derecha delsigno =. Ejemplo: a = (b + c) / 2 ; /* asigna a la variable a la media de las variables b y c */

María Dolores Molina 9

Page 10: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

• Operadores lógicos y relacionales

Dentro de este conjunto se incluyen los operadores forman parte del álgebra de Boole que yahemos explicado en un apartado anterior, y los operadores matemáticos, <, > ,<=,>=, ==(igual), != (distinto). Estos operadores son utilizados por el programador para implementarcondiciones. Los símbolos que se utilizan en el lenguaje C++ para los operadores booleanosson los siguientes:

Símbolo Operación

&& Y

|| O

! No

< Menor

> Mayor

<= Menor o igual

>= Mayor o igual

== Igual

!= Distinto

La expresión tendrá un valor 0 si la condición es falsa y 1 si la condición se verdadera.

Subprogramas: procedimientos y funciones

Un subprograma es un conjunto de líneas de código que realizan una tarea específica y que una vezdefinido puede ser llamada por el programador tantas veces como sea necesario. Podemos encontrardos tipos de subprogramas: procedimientos y funciones. Los subprogramas pueden tomar valoresde entrada llamados parámetros y proporcionan un valor de salida (solo las funciones), aunque losparámetros son opcionales y pueden no existir. Todo programa en C++ se incluye dentro de unafunción principal, main(), que contiene todas las instrucciones que componen ese programa. Estafunción principal será la primera a la que se llame en el programa.El lenguaje C++ incluye además un conjunto de funciones ya predefinidas que el programadorpuede utilizar, estas funciones están incluidas en las librerías o bibliotecas del lenguaje, perotambién permite definir sus propias funciones dentro de su programa.

Para utilizar un subprograma en C++ debemos realizar los pasos siguientes:1. Declaración del subprograma: En la definición de la función se incluye el valor de retorno,

el nombre de la función y los parámetros que vamos a pasarle.2. Llamada al subprograma: Llamamos a la función mediante su nombre en la parte del

programa en la que vayamos a utilizarla, debemos pasar los parámetros y recoger el valor deretorno de forma correcta, en caso de que los tenga.

3. Definición del subprograma: Detallamos el conjunto de instrucciones que componen lafunción.

Para el caso de las funciones ya predefinidas en el lenguaje de programación no será necesario nideclararla, ni definirla solo llamarla. En apartados posteriores detallaremos la sintaxis y ubicaciónde cada una de estas operaciones dentro de un programa en C++.

María Dolores Molina 10

Page 11: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Las librerías o Bibliotecas y los ficheros de cabecera

Las librerías o bibliotecas están formadas un conjunto ficheros que incluyen definicionesespecíficas de funciones que el programador puede utilizar para ahorrarse trabajo, así si unprogramador necesita una función específica que dibuje una ventana en pantalla no es necesarioque codifique dicha función para realizarlo, si no que puede utilizar una librería que incluya estaoperación y usarla directamente en su programa.

Todos los lenguajes de programación incluyendo C++ proporcionan al usuario un conjunto defunciones almacenadas en librerías estándar que son reconocidas por todos los compiladores. Unbuen programador debe conocer y utilizar las funciones incluidas en la librerías estándar dellenguaje de programación que está utilizando. La librería estándar es incluida por defecto por elcompilador en todos los programas. Para utilizar la librería estándar de C++ en Linux necesitamostener instalado el paquete libstdc++ en alguna de sus versiones. En Linux los ficheros que contienenlas librerías se almacenan con extensión .so y .a.

También existen otras bibliotecas no estandarizadas cuyas funciones pueden variar en función de laversión del compilador y el sistema operativo que estemos utilizando, es el caso de las libreríasgráficas que nos permiten crear la interfaz gráfica de usuario (GUI, graphical user interface) comoAllegro o GTK+. Para trabajar con librerías distintas a la librería estándar debemos indicarle alcompilador que las incluyas en el programa mediante unas opciones específicas de compilación.

Las declaraciones de las constantes, variables y funciones utilizadas en una librería se almacenan enunos ficheros llamados ficheros cabecera, que en C++ no tienen extensión. En estos ficheroscontienen las declaraciones de constantes, variables y funciones de las que consta la librería. Poreste motivo no es necesario ni declarar, ni definir las funciones estándar de entrada salida cin ycout, ya que estas se encuentran definidas en el fichero de cabecera iostream.

Para que un programador pueda utilizar las funciones incluidas en una librería debe incluir losficheros de cabecera que contienen la declaración de dichas funciones en su programa, de locontrario el compilador enviará un mensaje al encontrar referencias a funciones llamadas y nodeclaradas.

Existen distintos ficheros cabecera que incluyen muchas funciones agrupadas por tipos. De entre losficheros de cabecera incluidos en la librería estándar vamos a nombrar los que vamos a utilizar eneste curso.

• El fichero iostream incluye la definición de las funciones de entrada y salida de datos quepermiten la comunicación con el usuario mediante el teclado y la pantalla.

• El fichero iomanipin incluye definiciones para facilitar el formato de los datos de salida.

• El fichero cmath incluye definiciones de funciones matemáticas como la función raízcuadrada o la potencia.

• El fichero string incluye definición de funciones que permiten trabajar con cadenas decaracteres.

María Dolores Molina 11

Page 12: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Para incluir los ficheros de cabecera en C++ se utilizan la siguiente instrucción:

#include <nombre_del_fichero_cabecera>

Estas instrucciones se colocan al principio del programa, antes que cualquier función, incluida la función principal main();

El Buffer de entrada y salida de datos

La entrada/salida de datos es una operación en fundamental para comunicarse con el usuario y enC++ se realizan gracias a dos objetos incluidos dentro de las librerías estándar del lenguaje deprogramación (en el fichero de cabecera iostream), el objeto cin y el objeto cout. Para entendercomo se realiza la entrada y salida de datos en un programa en C++ debemos explicar el conceptobuffer de entrada/salida.

Ningún dato de entrada o de salida en un programa C++ se obtiene o envía directamente del/alhardware, sino a través de unas zonas de memoria intermedia (“buffers” de entrada y salida,respectivamente), controlados por el Sistema Operativo e independientes de la ejecución de nuestroprograma.

Así, cuando se pulsa alguna tecla, el Sistema Operativo almacena en secuencia las teclas pulsadasen una zona de memoria intermedia: el “buffer” de entrada. Cuando un programa realiza unaoperación de entrada de datos (por ejemplo, cin >> valor), accede al “buffer” asociado al flujo deentrada cin y obtiene la secuencia de caracteres allí almacenados (si los hubiera) o, en caso de estarvacío, esperará hasta que los haya (hasta que el usuario pulse una serie de teclas seguidas por latecla “ENTER”). Una vez obtenida la secuencia de caracteres entrada por el usuario, se convertirá aun valor del tipo especificado por la operación de entrada, y dicho valor se asignará a la variableespecificada.

De igual forma, cuando se va a mostrar alguna información de salida (por ejemplo, cout << val), dichos datos no van directamente a la pantalla, sino que se convierten a un formato adecuado paraser impresos (una secuencia de caracteres) y se almacenan en una zona de memoria intermediadenominada “buffer”de salida, asociado al flujo de salida cout, desde donde el Sistema Operativotomará la información para ser mostrada por pantalla.

Salida de Datos

La salida de datos permite mostrar información al exterior, y se realiza a través de los flujos desalida. El flujo de salida asociado a la salida estándar (usualmente la pantalla o terminal de laconsola) se denomina cout. La salida de datos a pantalla se realiza utilizando el operador << sobreel flujo cout especificando el dato cuyo valor se mostrará.

Ejemplo: cout << "Introduce la cantidad (en euros): " ;

El ejemplo anterior escribirá en la salida estándar el mensaje correspondiente a la cadena decaracteres especificada.

El siguiente ejemplo escribe en la salida estándar el valor de las variables euros y pesetas, así como

María Dolores Molina 12

Page 13: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

un mensaje para interpretarlos adecuadamente. El símbolo endl especifica que la sentencia deberáescribir un fin de línea, que indica que lo que se muestre a continuación se realizará en una nuevalínea.

cout << euros << " Euros equivalen a " << pesetas << " Pts" << endl ;

Observa que las cadenas de caracteres van entre comillas y las variables no las lleva.

Salida de Datos Formateada

Cuando se utiliza en operador de salida << para escribir un dato, el resultado que aparece en lasalida se ajusta a un comportamiento por defecto. En ocasiones nos puede interesar controlar laforma en la que se muestran los datos, especificando un determinado formato. Para ello, esnecesario incluir el fichero de cabecera iomanip. Por ejemplo, en el siguiente programa usamosalgunos manipuladores típicos:

#include <iostream> #include <iomanip>

using namespace std ;

int main() { bool x = true ; cout << boolalpha << x ; // escribe los booleanos como ’false’ o ’true’ cout << dec << 27 ; // escribe 27 (decimal) cout << hex << 27 ; // escribe 1b (hexadecimal) cout << oct << 27 ; // escribe 33 (octal) cout << setprecision(2) << 4.567 ; // escribe 4.6 cout << setw(5) << 234 ; // escribe " 234" cout << setfill(’#’) << setw(5) << 234 ; // escribe "##234" }

• El manipulador boolalpha especifica que los valores lógicos se mostrarán mediante losvalores false y true. Si no se especifica, se muestran los valores 0 y 1 respectivamente.

• Los manipuladores dec, hex, oct especifican que la salida se realizará utilizando el sistemade numeración decimal, hexadecimal u octal respectivamente.

• El manipulador setprecision(...) especifica la cantidad de dígitos significativos (precisión)que se mostrará en la salida de números reales.

• El manipulador setw(...) especifica la anchura (width) que como mínimo ocupará la salidada datos (permite mostrar la información de forma tabulada).

• El manipulador setfill(...) especifica el carácter de relleno (fill ) que se utilizará, en caso deser necesario, para ocupar toda la anchura del campo de salida (especificada con setw). Pordefecto, si no se especifica el carácter de relleno, se utiliza el espacio en blanco (’ ’).

María Dolores Molina 13

Page 14: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Entrada de Datos

La entrada de datos permite recibir información desde el exterior, y se realiza a través de los flujosde entrada. El flujo de entrada asociado a la entrada estándar (usualmente el teclado) se denominacin. La entrada de datos desde el teclado se realiza mediante el operador >> sobre el flujo cinespecificando la variable donde almacenar el valor de entrada leído desde el teclado:

cin >> euros ;

incluso es posible leer varios valores consecutivamente en la misma sentencia de entrada, de tal forma que las siguientes sentencias son equivalentes:

cin >> minimo ; cin >> maximo ; es equivalente a

cin >> minimo >> maximo ;

En caso de que durante la operación de entrada de datos surja alguna situación de error, dichaoperación de entrada se detiene y el flujo de entrada se pondrá en un estado erróneo. Por ejemplo,dado el siguiente programa:

#include <iostream> using namespace std ; int main() { int num_1, num_2 ; cout << "Introduce el primer número: " ; cin >> num_1 ; cout << "Introduce el segundo número: " ; cin >> num_2 ; cout << "Multiplicación: " << (num_1 * num_2) << endl ; cout << "Fin" << endl ; }

Si al ejecutarse, el usuario introduce 12 enter como primer número, y 3 enter como segundonúmero, se produce la siguiente salida:

Introduce el primer número: 12 Introduce el segundo número: 3Multiplicación: 36 Fin

Sin embargo, si al ejecutarse de nuevo el programa, el usuario introduce 12 espacio 3 enter comoprimer número, entonces la ejecución del programa no se detiene para permitir introducir elsegundo número, ya que éste ya se encuentra en el flujo de entrada de datos, por lo que se producela siguiente salida:

María Dolores Molina 14

Page 15: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Introduce el primer número: 12 3 Introduce el segundo número: Multiplicación: 36 Fin

Como podemos ver a leer el espacio en blanco del flujo asigna directamente el número 3 a lasiguiente variable que pida un valor como entrada y realiza la multiplicación de ambas variables.Aunque por pantalla veremos que dicho valor no se coloca correctamente en la posición asignadapara él.

Sentencias de controlHemos comprobado en apartados anteriores que el flujo de un programa es secuencial, es decir, lasinstrucciones se van ejecutando una detrás de otra en el mismo orden en las que el programador lasha escrito. Las sentencias de control permiten romper esa secuencia, posibilitando al programador latoma de decisiones o la ejecución repetida de un grupo de sentencias. El lenguaje C++ incluye lassiguientes sentencias de control:

• La sentencia if: La sentencia if permite al programador seleccionar en función de unacondición que grupo de sentencias se va a ejecutar. La sintaxis de la sentencia if es lasiguiente:

if (condición){

bloque de sentencias 1}

else{

bloque de sentencias 2}

Si la condición booleana que va entre paréntesis se cumple, es cierta, se ejecutará el bloque de sentencias 1, en caso contrario se ejecutará el bloque de sentencias 2.

En el siguiente ejemplo se mostrará un mensaje avisando al usuario si el número introducidoes par o impar. Para ello utilizamos las operación módulo (%), que almacena en la variableel resto de una división entera, al analizar esta variable podremos distinguir los númeropares, en los que el resto de la división entre 2 siempre va a ser cero y los número imparescuyo resto va a ser uno, este análisis de la variable se realiza con la instrucción condicionalif.

#include <iostream>#include <cmath>

using namespace std;

int main(void){ int valor, resto;

María Dolores Molina 15

Page 16: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

cout << “Introduzca el número para ser analizado: ”; cin >> valor;

resto = valor % 2;

if (resto==0){cout << “El número que ha introducido es par”;}else{cout “El número que ha introducido es impar”;}

return 0;}

Una buena táctica para entender todos los ejemplos es codificarlos y compilarlos paracomprobar su funcionamiento.

La sentencia if se puede puede anidar, es decir, incluir una sentencia if como parte delbloque de sentencias de otra sentencia if.

• La sentencia switch: Esta sentencia permite seleccionar la ejecución de un bloque desentencias, en función del valor de una variable. Esta sentencia se puede considerar comouna ampliación de la sentencia if anidada. Es muy utilizada para la creación de menús deselección, en el siguiente ejemplo se codifica un programa que permite al usuario laselección de las distintas opciones de un menú. La estructura de esta sentencia es lasiguiente:

switch (valor){case valor1: grupo_de_sentencias;break;...case valor_n: grupo_de_sentencias_n;break;

default: grupo_sentencias_default:}

En el siguiente ejemplo se muestra el código de un programa que muestra al usuario un menú porpantalla y realiza una serie de acciones diferentes (cálcular la longitud de la circunferencia o lasuperficie del círculo en función de la opción elegida).

María Dolores Molina 16

Page 17: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

#include <iostream>#include <cmath>

const float PI=3.14159;

int main(void){ int opcion,radio; float longitud, superficie;

cout << “Seleccione una opción del menú \n”; cout << “ 1.- Cálculo de la longitud de una circunferencia \n”; cout << “ 2.- Cálculo de la superficie de un círculo \n”; cout << “ 3.- Salir del programa \n”; cin >> opcion;

swtich (opcion) { case 1: cout << “Introduzca el valor del radio: “; cin >> radio; if(radio>0) { longitud = 2 * PI * radio; cout << “La longitud de la circunferencia es” << longitud; } else { cout << “El radio no puede ser menor que cero “ << endl; } break; case 2: cout << “Introduzca el valor del radio: “; cin >> radio; if(radio>0) { superficie=PI*radio*radio; cout << “La superficie del círculo es ” << superficie; } else cout << “El radio no puede ser menor que cero “ << endl; break; case 3: cout << “Gracias por usar nuestro programa “ << endl; break;

María Dolores Molina 17

Page 18: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

default: cout << “La opción introducida no es la correcta “; }return(0);}

• La sentencia while: Esta sentencia permite repetir la ejecución de un bloque deinstrucciones dependiendo de una condición. La comprobación se realiza antes de la primeraejecución del bloque de sentencias, por lo que la si la condición no se cumple puede que esebloque de instrucciones no llegue nunca a ejecutarse, es decir, el número de repeticiones vadesde 0 a n. La estructura de esta sentencia es la siguiente:

while(condicion){ bloque_de_sentencias;}

• La sentencia do: Al igual que en la sentencia while, esta instrucción permite la repeticiónde un grupo de sentencias mientras que se cumple una condición, pero a diferencia de ella lacomprobación de la condición se realizar después de la primera iteración, es decir, en estecaso el grupo de sentencias se ejecuta al menos una vez. La estructura de la sentencia do esla siguiente:

do{ bloque_de_sentencias;}while(condicion);

• La sentencia for: Esta sentencia permite la repetición de un bloque de instrucciones unnúmero determinado de veces. A diferencia de las sentencias do y while en las que elprogramador no sabe el número de repeticiones que se van a ejecutar ya que depende de quese cumpla la condición, en la sentencia for el programador conoce previamente el número derepeticiones que se van a ejecutar. La estructura de la sentencia for es la siguiente:

for( sentencia_inicial; condicion; sentencia_incremento){ bloque_de_sentencias;}

María Dolores Molina 18

Page 19: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

La secuencia de ejecución de esta instrucción es la siguiente:• Se ejecuta la sentencia_inicial• Se comprueba la condición• Si la condición es cierta se ejecuta el bloque_de_sentencias y la sentencia_incremento y

se vuelve al paso anterior.• Si la condición es falsa, concluye la ejecución de la sentencia for.

En el siguiente ejemplo hemos codificado un programa que muestra por pantalla la tabla demultiplicar que seleccione el usuario.

#include <iostream>

int main(void){ int tabla, valor, i;

cout << “¿Que tabla quiere calcular?”; cin >> tabla;

for(i=1; i<11; i++){ valor=i*tabla;

cout << tabla << ”x” << i << “=” << valor; } return(0);}

Arrays

Corresponden a lo que en matemáticas llamamos vectores y matrices, y hacen referencia a unconjunto de valores que se almacenan mediante un nombre común. Los datos de un vector sealmacenan en posiciones contiguas de memoria.

Para acceder a cada uno de los elementos individuales que forman un vector o matriz utilizamosuno o varios índices. Al número de índices que necesitamos para indexar el vector le llamamosdimensión, así tendremos vectores de una sola dimensión que se indexan utilizando un solo índice,vectores bidimensionales para las matrices de dos dimensiones, etc... Cuando utilizamos vectores dedos dimensiones, el primer valor del índice corresponde al número de columnas y el segundo valordel índice corresponde con el número de filas de una matriz.

Para declarar un array en c se sigue la siguiente estructura:

tipo nombre[indice1][indice2]...[indicen]

María Dolores Molina 19

Page 20: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

Cuando definimos los índices un vector debemos tener en cuenta que el primer valor que puedetomar el índice es el 0 y por tanto en la declaración definiremos los índices restando una unidad alvalor real que queremos que tengan.

Para inicializar u operar con los elementos individuales del vector utilizaremos las sentencias for, anidándolas en el caso que el vector tenga más de un índice. En el siguiente ejemplo se muestra el código de un programa que almacena la tabla de multiplicar que ha seleccionado un usuario en un vector y posteriormente la imprime por pantalla.

#include <iostream>

int main(void) { int tabla[9], col, valor;

cout << “Introduzca la tabla que quiere calcular:”); cin >> valor;

for(col=0;col<9;col++) { tabla[col]=(col+1)*valor; }

for(col=0;col<9;col++) { cout << col+1 <<“ x” << valor << “=” << tabla[col];

}

return(0); }

Ejercicios del Tema 1. Calcula el valor de las siguientes expresiones booleanas sustituyendo los valores de las

variables por los que se indican en cada apartado.

a) ( A >= B) || (A>=C) para A=12; B=11; C=10

b) (A>=B) || (A>=C) para A=12; B=11; C=13;

c) (A==B) && (A==C), para A=1; B=2; C=1

d) (!A && !B) && (A && B) para A=1; B=2 (recuerda que en el lenguaje C todo es cierto

si no es cero y al negar cualquier valor distinto de cero se convierte en cero)

e) Se puede decir que la expresión del apartado a es cierta solo cuando A es la mayor.

Justifica tu respuesta.

María Dolores Molina 20

Page 21: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

f) ¿Qué condiciones se tienen que cumplir para que la expresión del apartado c sea cierta?

g) Escribe una expresión que sea cierta solo cuando A sea la mayor de las tres variables

(A,B,C).

2. Dadas cuatro variables A,B,C,D escribe una expresión boolena que sea cierta solo cuando A

es la mayor de las cuatro variables.

3. Dada las siguientes definiciones de variables: cuenta= número de intentos; radio= radio de la

circunferencia. Escribe una expresión lógica que sea cierta solo cuando el número de

intentos sea mayor que 3 y el radio de la circunferencias sea menor que cero.

4. Dadas las variables base=base de un cuadrado y altura=altura de un cuadrado. Escribe una

expresión booleana para calcular el área del cuadrado solo cuando sea posible. (Debes

pensar tú cuales son las condiciones que debes establecer).

5. Queremos escribir un programa que emita una alarma si en una oficina que se activa en

sensor de movimiento entre las 10 de la noche y las 7 de la mañana. Partiendo de las

variables SENSOR=será 0 si el sensor no está activo y 1 en caso contrario y la variable

HORA=almacena la hora del sistema. Escribe la expresión booleana que cumple estas

condiciones.

6. Queremos escribir un programa que pida tres veces la contraseña a un usuario y le de acceso

solo cuando la contraseña sea correcta y no haya superado el número de intentos. Partiendo

de las variables VAR=almacena la contraseña que el usuario tiene en el sistema, PASS=

almacena los valores introducidos por el usuario con el teclado, e INT=almacena el número

de intentos que ha realizado el usuario. Escribe la expresión booleana que cumple estas

condiciones.

7. Escribe el código de un programa que salude al usuario con el siguiente mensaje: !Bienvenido al sistema !

8. Escribe el código de un programa que pida al usuario el lado de un cuadrado, calcule su perímetro y su área y lo muestre por pantalla.

9. Escribe el código de un programa que pida al usuario dos números enteros y muestre por pantalla con un mensaje los siguientes datos: a) la suma de esos números (entero) b) la resta de esos números (entero) c) la multiplicación de esos números (entero) d) la división de esos números (decimal) e) la raíz cuadrada de esos números (decimal) f) El resto de la división entera de esos números (entero)

María Dolores Molina 21

Page 22: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

10. Escribe el código de un programa que pida al usuario la base y la altura de untriángulo rectángulo y calcule su perímetro y su área.

11. Escribe el código de un programa que pida al usuario un número e imprima porpantalla la tabla de multiplicar de ese número del 1 al 10.

12. Escribe el código de un programa que calcule la longitud de una circunferenciasolo cuando el radio sea mayor que cero, en caso contrario debe mostrar por pantalla unmensaje de advertencia para el usuario.

13. Escribe el código de un programa que pida al usuario dos números e indiquecual es el mayor de los dos.

14. Escribe el código de un programa que pida al usuario 3 números y los muestreordenados.

15. Escribe el código de un programa que muestre el siguiente menú1.- Cálculo de la longitud del círculo2.- Cálculo de la superficie de una circunferencia3.- Salir del programaMostrará un mensaje de error si el valor del radio es menor que cero o la opciónintroducida no está en el menú.

16. Escribe el código de un programa que muestre el siguiente menú.1.- Suma de dos números enteros2.- Resta de dos números enteros3.- Multiplicación de dos números enteros4.- División de dos números enteros5.- SalirEl programa mostrará un mensaje de error si el divisor es cero y si el usuario no haintroducido una opción correcta.

17. Escribe el código de un programa que muestre el siguiente menú a) Cálculo del área de un triángulo b) Cálculo del área de un rectángulo c) Cálculo de la superficie de un círculo d) Salir

El programa mostrará mensajes de error si la base, la altura o el radio son menores oiguales que cero y si el usuario ha introducido una opción errónea.

18. Escribe el código de un programa que lea números por pantalla hasta que seintroduzca 0.

19. Escribe el código de un programa que calcule el área de la circunferencia. No debepermitir que el usuario introduzca un valor para el radio menor que cero, es decir, debevolver a pedir el valor del radio hasta que el usuario introduzca un valor válido.

20. Escribe el código de un programa que presente por pantalla el siguiente menú:

María Dolores Molina 22

Page 23: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

1.- Suma de dos enteros2.- Resta de dos enteros3.- Multiplicación de dos enteros.4.- División de dos enteros5.- Salir.El menú se repite mientras el usuario no introduzca la opción 5. Mostrará avisos si eldivisor es menor que cero o la opción es errónea.

21. Escribe el código de un programa en el que el usuario tiene que adivinar el valorde un número entero de tu elección (comprendido entre 1 y 10). El usuario solo cuenta contres intentos.

22. Escribe el código de un programa que calcule la tabla de multiplicar de unnúmero dado usando un bucle.

23. Escribe el código de un programa que muestre el siguiente menú1.-Cálculo del sumatorio de un número2.-Cálculo del factorial de un número3.- Salirmostrará un mensaje de error si el valor del número es menor que o igual a cero, o la opciónintroducida no está en el menú.

24. Utilizando vectores crea un programa que pida al usuario 5 números y losmuestre por pantalla.

25. Escribe un programa que calcule la tabla de multiplicar de un númerointroducido por pantalla utilizando un vector de 10 elementos.

26. Utilizando vectores crea un programa que pida al usuario 10 números y quedespués nos diga si los números que hemos introducido son pares o impares. (Como ampliación puedes intentar clasificar los elementos pares en un vector y los imparesen otro para mostrar al final todo el conjunto de los pares y todo el conjunto de los impares.)

27. Escribe el código de un programa que pida al usuario 3 elementos y losalmacene en un vector, después debe mostrar los elementos ordenados por pantalla. (Comoampliación de este ejercicio prueba a aumentar el número de elementos a 10 y a ordenarlosutilizando el método burbuja).

28. Escribe un programa que utilizando dos bucles for anidados almacene y muestrepor pantalla una matriz de 3x3 elementos. Declara el vector con 2 índices (matriz[3][3]).

29. Escribe un programa que pida por pantalla una matriz de 2 x 3 elementos, debemostrar la matriz por pantalla respetando su formato, 2 filas con 3 números por fila. Debecalcular y mostrar por pantalla el sumatorio por columnas.

La matriz introducida es la siguiente: 1 2 34 5 6

La suma de la primera columna es : 5

María Dolores Molina 23

Page 24: Iniciación a la Programación€¦ · Programación 1º Bachillerato Lenguajes de alto nivel: Se alejan de las características del hardware haciendo más fácil el trabajo para

Programación 1º Bachillerato

La suma de la segunda columna es :7La suma de la tercera columna es: 9

BibliografíaCurso de Informática. 2004. Pedro Reina. Web: www.pedroreina.net/curso

Fundamentos de programación con el lenguaje de programación C++. Vicente Benjumea y ManuelRoldán. Dpto Lenguajes y Ciencias de la Computación. Universidad de Málaga

María Dolores Molina 24