Download taller de lenguajes de programación y c++

Document related concepts

Rust (lenguaje de programación) wikipedia , lookup

Programación funcional wikipedia , lookup

Haxe wikipedia , lookup

Racket (lenguaje de programación) wikipedia , lookup

C Sharp wikipedia , lookup

Transcript
Taller de algoritmo
Programación c++
30/03/2013
Yefrin Gómez romo
Docente
Sandy romero cuello
Uniguajira
Ing. sistemas – diurna - mañana
I semestre
Riohacha – guajira
TALLER DE LENGUAJES DE PROGRAMACIÓN Y C++
1. Que es un lenguaje de programación y cuál es su objetivo
2. Como se clasifican los lenguajes de programación de ejemplos
3. Haga un cuadro comparativo entre lenguaje de programación estructurado y
lenguaje de programación orientado a objetos.
4. Que es el lenguaje C++ y cuáles son sus
fortalezas y características
fundamentales. En la actualidad cuantas versiones de C++
5. Como es la estructura de un programa en C++, identifique cada uno de sus
elementos. De un ejemplo de un programa.
6. Cuáles son los tipos de datos que existen en C++
7. Que es una librería en C++ , enuncie las más importantes y diga para que sirven
8. Como se declara una librería. Como se declara una variable, una constante.
9. Como se asigna en C++
10. Como se lee y se escribe en C++ con la librería stdio.h
11. Como se lee y se escribe en C++ con la librería iostream.h
12. Como se representan las primitivas secuenciales, condicionales incluyendo el DD y
los ciclos repetitivos, para, mientras que y haga hasta.
13. Pase los cinco primeros algoritmos que tiene en su libreta a C++

Nota: El trabajo es individual y es en físico puede ser impreso o a manuscrito, para
reforzar la investigación véase el video que aparece en la wiki.
Solución
1 - Lenguaje de programación
Un lenguaje de programación es un idioma artificial diseñado para expresar
procesos que pueden ser llevadas a cabo por máquinas como las computadoras.
Pueden usarse para crear programas que controlen el comportamiento físico y
lógico de una máquina, para expresar algoritmos con precisión, o como modo de
comunicación humana.
Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que
definen su estructura y el significado de sus elementos y expresiones. Al proceso
por el cual se escribe, se prueba, se depura, se compila y se mantiene el código
fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de un
programa de computadora, mediante la aplicación de procedimientos lógicos, a
través de los siguientes pasos:
• El desarrollo lógico del programa para resolver un problema en particular.
• Escritura de la lógica del programa empleando un lenguaje de programación
específico (codificación del programa).
• Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
• Prueba y depuración del programa.
• Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de
programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los
lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para
el marcado de páginas web que no es propiamente un lenguaje de programación,
sino un conjunto de instrucciones que permiten diseñar el contenido de los
documentos).
Permite especificar de manera precisa sobre qué datos debe operar una
computadora, cómo deben ser almacenados o transmitidos y qué acciones debe
tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje
que intenta estar relativamente próximo al lenguaje humano o natural. Una
característica relevante de los lenguajes de programación es precisamente que más
de un programador pueda usar un conjunto común de instrucciones que sean
comprendidas entre ellos para realizar la construcción de un programa de forma
colaborativa.
Objetivos Didácticos
Pues el auténtico objetivo de las mismas es mostrar los rangos, las
posibilidades y tipos de lenguajes que hay.
•Que el alumno conozca las características y propiedades de los distintos
tipos de lenguajes de programación.
• Que el alumno adquiera experiencia en el uso de al menos un lenguaje de
programación de cada uno de los tipos mostrados.
• Que el alumno aumente su capacidad para aprender nuevos lenguajes.
• Adquisición del conocimiento necesario para elegir el lenguaje más
adecuado a cada situación.
• Preparar al alumno para la comprensión de los temas relacionados con la
implementación de los lenguajes de programación
2 - Como se clasifican los lenguajes de
programación de ejemplos
Los lenguajes de programación se pueden clasificar según varios criterios. He
encontrado doce en total: Nivel de abstracción, propósito, evolución histórica,
manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de
programación, lugar de ejecución, concurrencia, interactividad, realización visual,
determinismo y productividad.
Hay que tener en cuenta también, que en la práctica, la mayoría de lenguajes no
pueden ser puramente clasificados en una categoría, pues surgen incorporando
ideas de otros lenguajes y de otras filosofías de programación, pero no importa al
establecer las clasificaciones, pues el auténtico objetivo de las mismas es mostrar
los rangos, las posibilidades y tipos de lenguajes que hay.
1. Nivel de abstracción.
Según el nivel de abstracción, o sea, según el grado de cercanía a la máquina:



Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta
las características del procesador. Ejemplo: Lenguajes ensamblador.
Lenguajes de nivel medio: Permiten un mayor grado de abstracción pero al
mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel.
Ejemplo: C puede realizar operaciones lógicas y de desplazamiento con bits,
tratar todos los tipos de datos como lo que son en realidad a bajo nivel
(números), etc.
Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan
conceptos, tipos de datos, etc., de una manera cercana al pensamiento
humano ignorando (abstrayéndose) del funcionamiento de la máquina.
Ejemplos: Java, Ruby.
Hay quien sólo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es
considerado de alto nivel).
 Lenguaje maquina:
Los ordenadores sólo entienden un lenguaje específico para cada máquina, que se
denomina código máquina o Lenguaje Máquina. Este lenguaje utiliza un código
binario (símbolos “0" y “1"). Las órdenes que se dan a un ordenador han de ir
codificadas en instrucciones, y estas forman los programas. Las instrucciones
tienen dos partes diferenciadas: código de operación y código de operando:
CODOP
CODOPERANDO
En la primera, se codifica la operación que realiza la instrucción. Este código de
operación siempre es único para cada instrucción. En la segunda se indica la
dirección de memoria en la que se encuentra el operando, hasta un máximo de tres,
sobre el o los que se aplicarán en la operación. Puesto que cada tipo de
ordenador tiene su código máquina específico, para programar en este lenguaje el
programador debe conocer la arquitectura física de la computadora con cierto
detalle (registros de la CPU, palabras de memoria,...). La estructura del lenguaje
máquina está totalmente adaptada a los circuitos de la computadora y muy alejada
del lenguaje que empleamos normalmente para expresar y analizar los problemas
que hoy día son resolubles con la computadora. Por ejemplo, para hacer cálculos
aritméticos disponemos de un “lenguaje” matemático fácil de comprender y claro,
que no se parece en nada al código máquina necesario para hacer dichos cálculos.
2. Propósito.
Según el propósito, es decir, el tipo de problemas a tratar con ellos:




Lenguajes de propósito general: Aptos para todo tipo de tareas: Ejemplo: C.
Lenguajes de propósito específico: Hechos para un objetivo muy concreto.
Ejemplo: Csound (para crear ficheros de audio).
Lenguajes de programación de sistemas: Diseñados para realizar sistemas
operativos o drivers. Ejemplo: C.
Lenguajes de script: Para realizar tareas varias de control y auxiliares.
Antiguamente eran los llamados lenguajes de procesamiento por lotes (batch)
o JCL (“Job Control Lenguajes”). Se subdividen en varias clases (de Shell, de
GUI, de programación web, etc.). Ejemplos: bash (shell), mIRC script, Java
Script (programación web).
3. Evolución histórica.
Con el paso del tiempo, se va incrementando el nivel de abstracción, pero en la
práctica, los de una generación no terminan de sustituir a los de la anterior:
Lenguajes de primera generación (1GL): Código máquina.
Lenguajes de segunda generación (2GL): Lenguajes ensamblador.
Lenguajes de tercera generación (3GL): La mayoría de los lenguajes modernos,
diseñados para facilitar la programación a los humanos. Ejemplos: C, Java.
Lenguajes de cuarta generación (4GL): Diseñados con un propósito concreto, o
sea, para abordar un tipo concreto de problemas. Ejemplos: NATURAL,
Matemática.
Lenguajes de quinta generación (5GL): La intención es que el programador
establezca el qué problema ha de ser resuelto y las condiciones a reunir, y la
máquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog.
4. Manera de ejecutarse.
Según la manera de ejecutarse:
Lenguajes compilados: Un programa traductor traduce el código del programa
(código fuente) en código máquina (código objeto). Otro programa, el enlazador,
unirá los ficheros de código objeto del programa principal con los de las librerías
para producir el programa ejecutable. Ejemplo: C.
Lenguajes interpretados: Un programa (intérprete), ejecuta las instrucciones del
programa de manera directa. Ejemplo: Lisp.
También los hay mixtos, como Java, que primero pasan por una fase de
compilación en la que el código fuente se transforma en “bytecode”, y este
“bytecode” puede ser ejecutado luego (interpretado) en ordenadores con distintas
arquitecturas (procesadores) que tengan todos instalados la misma “máquina
virtual” Java.
5. Manera de abordar la tarea a realizar.
Según la manera de abordar la tarea a realizar, pueden ser:
Lenguajes imperativos: Indican cómo hay que hacer la tarea, es decir, expresan
los pasos a realizar. Ejemplo: C.
Lenguajes declarativos: Indican qué hay que hacer. Ejemplos: Lisp, Prolog. Otros
ejemplos de lenguajes declarativos, pero que no son lenguajes de programación,
son HTML (para describir páginas web) o SQL (para consultar bases de datos).
6. Paradigma de programación.
El paradigma de programación es el estilo de programación empleado. Algunos
lenguajes soportan varios paradigmas, y otros sólo uno. Se puede decir que
históricamente han ido apareciendo para facilitar la tarea de programar según el tipo
de problema a abordar, o para facilitar el mantenimiento del software, o por otra
cuestión similar, por lo que todos corresponden a lenguajes de alto nivel (o nivel
medio), estando los lenguajes ensambladores “atados” a la arquitectura de su
procesador correspondiente. Los principales son:
 Lenguajes de programación procedural: Divide el problema en partes más
pequeñas, que serán realizadas por subprogramas (subrutinas, funciones,
procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos:
C, Pascal.
 Lenguajes de programación orientada a objetos: Crean un sistema de clases
y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan
acciones y se comunican con otros objetos. Ejemplos: C++, Java.
 Lenguajes de programación funcional: La tarea se realiza evaluando
funciones, (como en Matemáticas), de manera recursiva. Ejemplo: Lisp.
 Lenguajes de programación lógica: La tarea a realizar se expresa empleando
lógica formal matemática. Expresa qué computar. Ejemplo: Prolog.
Hay muchos paradigmas de programación: Programación genérica, programación
reflexiva, programación orientada a procesos, etc.
7. Lugar de ejecución.
En sistemas distribuidos, según dónde se ejecute:
Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el más
utilizado en servidores web.
 Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: Java Script en
navegadores web.

8. Concurrencia.
Según admitan o no concurrencia de procesos, esto es, la ejecución simultánea de
varios procesos lanzados por el programa:


Lenguajes concurrentes. Ejemplo: Ada.
Lenguajes no concurrentes. Ejemplo: C.
9. Interactividad.
Según la interactividad del programa con el usuario u otros programas:

Lenguajes orientados a sucesos: El flujo del programa es controlado por la
interacción con el usuario o por mensajes de otros programas/sistema
operativo, como editores de texto, interfaces gráficos de usuario (GUI) o
kernels. Ejemplo: Visual Basic, lenguajes de programación declarativos.
 Lenguajes no orientados a sucesos: El flujo del programa no depende de
sucesos exteriores, sino que se conoce de antemano, siendo los procesos
batch el ejemplo más claro (actualizaciones de bases de datos, colas de
impresión de documentos, etc.). Ejemplos: Lenguajes de programación
imperativos.
10. Realización visual.
Según la realización visual o no del programa:


Lenguajes de programación visual: El programa se realiza moviendo bloques
de construcción de programas (objetos visuales) en un interfaz adecuado para
ello. No confundir con entornos de programación visual, como Microsoft Visual
Studio y sus lenguajes de programación textuales (como Visual C#).
Ejemplo: Mind script.
Lenguajes de programación textual: El código del programa se realiza
escribiéndolo. Ejemplos: C, Java, Lisp.
11. Determinismo.
Según se pueda predecir o no el siguiente estado del programa a partir del estado
actual:


Lenguajes deterministas. Ejemplos: Todos los anteriores.
Lenguajes probabilísticos o no deterministas: Sirven para explorar grandes
espacios de búsqueda, (como gramáticas), y en la investigación teórica de
hipercomputación. Ejemplo: mutt (generador de texto aleatorio).
12. Productividad.
Según se caractericen por tener virtudes útiles o productivas, u oscuras y
enrevesadas:



Lenguajes útiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez,
claridad, productividad, etc., motiva que sean utilizados en empresas,
administraciones públicas y/o en la enseñanza. Ejemplos: Cualquier lenguaje
de uso habitual (C, Java, C++, Lisp, Python, Ruby,…).
Lenguajes esotéricos o exóticos: Inventados con la intención de ser los más
raros, oscuros, difíciles, simples y/o retorcidos de los lenguajes, para diversión
y entretenimiento de frikis programadores. A veces exploran nuevas ideas en
programación. Ejemplo: Brainfuck.
Traductores:
Para facilitar el trabajo de programación y hacer los programas más legibles,
resolviendo las limitaciones que presentan los lenguajes máquina, se han
desarrollado lenguajes de programación que permiten utilizar una simbología y
terminología próximas a las tradicionalmente utilizadas en la descripción de
problemas.
Estos lenguajes se denominan genéricamente lenguajes simbólicos. Como la
computadora únicamente puede interpretar y ejecutar código máquina, existen
programas traductores, que traducen o trasladan programas desde el lenguaje
simbólico al lenguaje máquina.
En general existen traductores para convertir programas escritos en un lenguaje a
otro. El programa inicial se denomina programa fuente, y el programa obtenido tras
el proceso de traducción programa objeto.
Traductor de
lenguaje “A”
a lenguaje
“B”
Programa
“MEDIA” en
lenguaje “B”
COMPUTADOR
Programa
“MEDIA” en
lenguaje “A”
Programa fuente
Programa objeto
Ensambladores y macroensambladores: (lenguaje
de bajo nivel)




Los lenguajes ensambladores permiten al programador:
Escribir las instrucciones utilizando, en vez de códigos binarios o intermedios,
una notación simbólica o mnemotécnica para representar los códigos de
operación. Normalmente los códigos mnemotécnicos están constituidos por tres
o cuatro letras que, en forma abreviada, indican la operación a realizar.
Usualmente, debido al origen anglosajón de los fabricantes de computadoras,
los mnemotécnicos son abreviaturas en inglés. Por ejemplo: la Suma se suele
representar como ADD (suma en inglés), SUB (sustracción), MOV (movimiento),
NOT (negación lógica), CALL (llamada a un procedimiento), RET (retorno de
procedimiento.
Utilizar, para los datos, direcciones simbólicas de memoria en lugar de
direcciones binarias absolutas. Así, por ejemplo, los datos pueden ser
referenciados mediante identificadores, tales como I, SUMA, PROD, CONT,
AUX, etc. Existen sentencias declarativas (también denominadas
seudoinstrucciones o directivas) para indicar al traductor la correspondencia
entre direcciones simbólicas y direcciones de memoria. Con estas
seudoinstruciones, el traductor crea una tabla con cuya ayuda, al generar las
instrucciones máquina, sustituye las direcciones simbólicas por las direcciones
binarias correspondientes.
Lenguajes de alto nivel: Compiladores e intérpretes:
Los lenguajes ensambladores se suelen denominar lenguajes de segunda
generación, en contraposición a los lenguajes máquina, que fueron los de la
primera generación. Los lenguajes de alto nivel se consideran lenguajes de tercera
generación. Los lenguajes de alto nivel no obligan al usuario a conocer los detalles
de la computadora que utiliza. Con estos lenguajes las operaciones se expresan
con sentencias o frases muy parecidas al lenguaje matemático o al lenguaje natural,
utilizados habitualmente por las personas (igual que para los ensambladores,
predomina el uso de palabras o términos en inglés). Las características de los
lenguajes de alto nivel son:
 Las instrucciones se expresan por medio de caracteres alfabéticos, numéricos y
caracteres especiales (+, =, /, etc.).
 El usuario puede definir las variables que desee, dándoles los nombres que
considere oportuno (TOTAL, CONTADOR, RESULTADO, etc.), siendo las reglas
para denominación de las mismas muy poco restrictivas. La asignación de
memoria para variables y constantes las hace directamente el traductor.
 Los lenguajes de alto nivel apenas dependen de la máquina. Hay lenguajes más
trasladables que otros. Por ejemplo, al existir muchos dialectos del BASIC, con
frecuencia es necesario adaptar partes de los programas para pasarlos de una
computadora a otra. Hay lenguajes casi “independientes de la computadora”. En
general, cuanto mejor definido (sin ambigüedades) y diseñado esté un lenguaje,
menos dependiente de la máquina será. Entre sus actividades, el American
National Standard Institute (ANSI) se encarga de realizar normalizaciones de
lenguajes para garantizar la translabilidad de los programas.
3. Haga un cuadro comparativo entre lenguaje
de programación estructurado y lenguaje de
programación orientado a objeto:
LEUNGUJE DE PROGRAMACION
ESTRUCTURADO
LENGUAJE DE PROGRAMACION
ORIENTEDA A OBJETOS
La programación estructurada utiliza
un número limitado de estructuras de
control que minimizan la complejidad
de los problemas y que reducen los
errores. Ésta incorpora entre otros
elementos: el diseño descendente,
recursos abstractos y estructuras
básicas.
Se le conoce como paradigma o
modelo de programación, esto
significa que no es un lenguaje
especifico o una tecnología si no una
forma de programar mediante
instrucciones.
Un lenguaje es descrito como
estructurado en bloque cuando tiene
una sintaxis para encerrar estructuras
entre palabras clave tipo corchete, o la
de llaves {...} de C++
La programación orientada a objetos,
intenta simular el mundo real a través
del significado de objetos que contiene
características y funciones
La programación estructurada es una
forma de
escribir programación de ordenador de
forma clara, para ello utiliza
únicamente tres estructuras:
Cuando programamos un objeto y
definimos sus características y
funcionalidades en realidad lo que
estamos haciendo es programar
una clase de algoritmo propio del
secuencial, selectiva e iterativa.
usuario.
4- Que es el lenguaje C++ y cuáles son sus
fortalezas y características fundamentales.
En la actualidad cuantas versiones de C++
C++ es un lenguaje de programación diseñado a mediados de los años 1980
por Bjarne Stroustrup. C++ es un lenguaje imperativo orientado a objetos derivado
del C [1]. En realidad un superconjunto de C, que nació para añadirle cualidades y
características de las que carecía. El resultado es que como su ancestro, sigue
muy ligado al hardware subyacente, manteniendo una considerable potencia para
programación a bajo nivel, pero se la han añadido elementos que le permiten
también un estilo de programación con alto nivel de abstracción.
La intención de su creación fue el extender al exitoso lenguaje de
programación C con mecanismos que permitan la manipulación de objetos. En
ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el
C++ es un lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumó
a los otros dos paradigmas que ya estaban admitidos (programación
estructurada y la programación orientada a objetos). Por esto se suele decir que
el C++ es un lenguaje de programación multiparadigma.
Actualmente existe un estándar, denominado ISO C++, al que se han adherido la
mayoría de los fabricantes de compiladores más modernos. Existen también
algunos intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder
crear nuevos tipos que se comporten como tipos fundamentales.
El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje
fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado
el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y
se refiere a que C++ es una extensión de C.
Fortalezas
- Lenguaje de programación orientado a objetos.
- Lenguaje muy didáctico, gracias a este lenguaje puedes aprender muchos otros
lenguajes con gran facilidad, como C#, Java, Visual Basic, Java script, PHP, entre
otros.
- Es muy potente en lo que se refiere a creación de sistemas complejos, un lenguaje
muy robusto.
- Permite elaborar aplicaciones sencillas como un "Hello World!" hasta sistemas
operativos y mucho más, todo eso dependiendo del manejo del lenguaje.
- Actualmente, puede compilar y ejecutar código de C, ya viene con librerías para
realizar esta labor.
- Es un lenguaje muy empleado, existen muchos tutoriales en línea, libros, códigos
fuentes abiertos... hay material de sobra y basta para aprender lo necesario y
mucho más con este lenguaje.
- Existen muchos algoritmos cuyo pseudocódigo se encuentra ya desarrollado en
C++, de manera que puedes tomarlo y amoldarlo a tu solución (porque el que veas
un fragmento de código no asegura que sea correcto al 100%).
Características del lenguaje C++
Las principales características del Lenguaje C son:
1.-Tiene un conjunto completo de instrucciones de control.
2.-Permite la agrupación de instrucciones.
3.-Incluye el concepto de puntero (variable que contiene la dirección de otra
variable).
4.-Los argumentos de las funciones se transfieren por su valor.
5.- E/S no forma parte del lenguaje, sino que se proporciona a través de una
biblioteca de funciones.
Permite la separación de un programa en módulos que admiten compilación
independiente.
Originalmente el Lenguaje C estuvo muy ligado al sistema operativo UNIX como se
había mencionado antes que, en su mayor parte, está escrito en C. Más adelante
se comenzó a utilizar en otros sistemas operativos para programar editores,
compiladores, etc. Aunque se le conoce como un lenguaje de programación de
sistemas, no se adapta mal al resto de aplicaciones. De hecho, hoy en día un alto
porcentaje de software para ordenadores personales está escrito en Lenguaje C.
Por ejemplo, el sistema operativo MS-DOS.
Algunas de las características más importantes que definen el lenguaje y que han
permitido que sea tan popular, como lenguaje de programación son:
Tamaño pequeño.
Uso extensivo de llamadas a funciones.
Comandos breves (poco tecleo).
Lenguaje estructurado.
Programación de bajo nivel (nivel bit)
Implementación de apuntadores - uso extensivo de apuntadores para la memoria,
arreglos, estructuras y funciones
Las diversas razones por la cual se ha convertido en un lenguaje de uso profesional
son:
El uso de constructores de alto nivel.
El poder manejar actividades de bajo-nivel.
El generar programas eficientes.
La posibilidad de poder ser compilado en una variedad de computadoras, con
pocos cambios (portabilidad).
Un punto en contra es que tiene una detección pobre de errores, lo cual en
ocasiones es problemático para los principiantes
Versiones de c++
En general los programas en c++ son compatibles, los que tienen cierta diferencia
son los compiladores.
Compilador, es un programa, que entiende el código y lo transforma en órdenes de
máquina, El compilador tiene su sistema de detección de errores y su ayuda. Hay
compiladores que solo procesan sobre consola es decir sobre la base del msdos o
similar, otros permiten procesar en ventanas (Windows) e incorporar objetos
visuales a lo que es codificación.
Esta es una lista de compiladores que hay:















Xcode
Borland c++
Codewarrior c++
Comeau C++
Cygwin (GNU C++)
MINGW – Minimalist GNU for Windows
Dev C++ (IDE que usa MinGW)
wx-Dev C++ (IDE basado en Dev C++)
Digital Mars C++
DJ Delorie's C++ development system for DOS/Windows (GNU C++)
Edison Design Group C++ Front End
Green Hills C++
HP C++ para UNIX y HP C++ para OpenVMS.
IBM C++
Intel C++











The LLVM Compiler Infrastructure.
Mentor Graphics/Microtec Research C++
Microsoft Visual C++
Microsoft Visual Studio Express Editions
Paradigm C++
The Portland Group C++
SGI C++
Sun C++
Sun Studio.
WindRiver's Diab C++
ZinjaI
Y seguro hay más, todos ellos basados en el desarrollo de C++ y con sus
diferencias entre uno y otro.
5 - Como es la estructura de un programa en C++,
identifique cada uno de sus elementos. De un
ejemplo de un programa.
Estructura de un programa en c++

#include<iostream.h>
#include<conio.h>
Llamado de las diferentes librerías
Llamado a la función principal main, que es como nuestro inicio

main(){

char nom[30]; Declaración de variables en este caso de tipo carácter

cout<<"Digite su nombre";

cin>>nom;
cout para escribir y cin para leer
Cout<<"Como Estas "<<nom;

getch();  Función tipo carácter, espera que presione una tecla

return 0;  Directiva de retorno return 0
 Cuerpo del programa

}  Con una llave se indica el final del programa
Todo programa escrito en C consta de una o más funciones, una de las cuales se
llama main. El programa siempre comenzará por la ejecución de la
función main. Cada función debe contener:
 Una cabecera de función, que consta del nombre de la función, seguido de una
lista opcional.
 Una lista de declaración de argumentos, si se incluyen estos en la cabecera.
 Una sentencia compuesta, que contiene el resto de la función.
Los argumentos son símbolos que representan información que se le pasa a la
función desde otra parte del programa. (También se llaman parámetros a
los argumentos).
Cada sentencia compuesta se encierra con un par de llaves, {.....}. Las llaves
pueden contener combinaciones de sentencias elementales (denominadas
sentencias de expresión) y otras sentencias compuestas. Así las sentencias
compuestas pueden estar anidadas, una dentro de otra. Cada sentencia de
expresión debe acabar en punto y coma (;).
Los comentarios pueden aparecer en cualquier parte del programa, mientras
estén situados entre los delimitadores /*................ */ (por ejemplo: /*esto es un
ejemplo*/). Los comentarios son útiles para identificar los elementos principales
de un programa o simplemente para orientar a un posible usuario de ese código.
Todo fichero fuente en C sigue la siguiente estructura; para verla más claramente
pondremos un ejemplo con sus correspondientes comentarios, que nos vayan
explicando cada una de las partes, muchas de las cosas que se vean, no se
conocen aún, pero nos servirán para hacernos una idea de cómo se estructura un
programa:
Ejemplo:
#include <stdio.h>
#include <conio.h>
Un ejemplo sencillo de un programa que intercambia el valor de 2 números:
#include <iostream.h>
Int main ()
{
int x, y;
int aux;
cin >> x >> y;
aux = x;
x = y;
y = aux;
cout << x <<y;
return 0;
}
Directiva de preprocesamiento Biblioteca de E/S por consola
Este programa usa la definición de
cout para escribir por consola
Cabecera de la función
Cuerpo de la función
{…}
/*#Include del sistema: Se deben especificar todos los ficheros de cabecera
(ficheros con extensión .h) correspondientes a las librerías de funciones
utilizadas.
Son librerías implementadas y listas para que nosotros las usemos, con sólo
llamar a la función que tenga implementada dentro dicha librería. Por ejemplo:
la instrucción printf está incluida dentro de stdio.h, por tanto, cuando
decidamos usarla, tendremos que poner en esta sección:
#include <stdio.h> */
#include <lista.h>
/* #Include de la aplicación: Ficheros de cabecera creados para el fichero
fuente. Se puede decir que estos son los que yo he creado, que son
invocados escribiendo su nombre seguido de .h. (Más tarde
explicaremos cómo se crean). Si lo pongo entre signos: < > (como lo
tenemos en este ejemplo), dicha librería será buscada en el directorio del
compilador INCLUDE que contiene las librerías. Si por el contrario pongo:
#include "lista.h", entonces, dicha librería será buscada 1º en el directorio
actual, y luego, si no está, será buscada en el directorio del
compilador INCLUDE*/
Extern void salida (void);
/* Extern variables globales externas: Variables globales que voy a
definir en otros módulos que voy a usar en este módulo. A salida le
hemos asignado el tipo de almacenamiento extern, pues tiene que ser
accedida desde otro archivo distinto de aquel en que es definida; por
tanto, ha de ser una función externa. */
#define CIERTO 1
#define FALSO 0
/* #define definición de macros y constantes simbólicas.*/
typedef struct {
int dia;
int mes;
int ano;
}FECHA;
/* typedef definición de tipos: me sirve para crearme un tipo
distinto de los preestablecidos de partida.*/
int suma (int , int);
/* Declaración de los prototipos de las funciones
implementados en este módulo: La declaración de una función
le da información al compilador de una función que va a ser
utilizada pero que todavía no ha sido implementada. En particular
le dice al compilador qué tipo de datos requiere y cuál devuelve la
función. En el ejemplo, la función con nombre suma
recibe dos números enteros y da como salida otro número
entero.*/
Extern int a, b, c;
/* Declaración de variables globales de este módulo:
extern declaración de funciones externas a este módulo:
Funciones que se utilizan en este módulo y que están
implementadas en otro módulo.
Static declaración de las funciones internas no visibles para otros
módulos: Funciones que se implementan en este módulo y que no
pueden ser utilizadas en otros módulos. */
Main() {
............
............
}
Int suma (int x,int y) {
...........
...........
}
/* Implementación de las funciones: Se implementan todas las
funciones del módulo incluida la función main().*/
6 - Cuáles son los tipos de datos que existen
en C++
Todos los programas gestionan algunos tipos de información que normalmente se
pueden representar utilizando uno de los ocho (8) tipos de datos básicos de C y
C++: texto o char, valores enteros o int, valores de coma flotante o flota, valores
en como flotante de doble precisión o doublé (long double), enumerados o
enum, s i n v a l o r o void, punteros y booleanos.
1.Texto (tipo de dato char) está constituido por caracteres simples, como a,
Z, ¿, 3 y cadenas, como “Esto es una prueba” (normalmente, de 8 bits o un
byte por carácter, con un rango de 0 a 255).
2. Los valores enteros ( t i p o d e d a t o
int) s o n
aquellos
números
q u e s e a p r e n d i e r o n a c o n t a r ( 1 , 4 , - 2 , 1 3 5 4 ) ; normalmente, tienen un
tamaño de 16 bits, 2 bytes o una palabra, con rango de -32768 a 32767. En
Windows 98 Windows NT, los valores enteros tienen un tamaño de 32 bits con un
rango de -2147483648 a 2147483647.
3. Los valores en coma flotante (tipo de dato float) son números que tienen una
parte fraccional, como por ejemplo pi(3,14159), y exponentes (7,563
1021). También se conocen como números reales (normalmente, son de 32 bits, 4
byteso 2 palabras, con un rango de +/-3,4E-38 a 3,4E+38).
4. Los valores en coma flotante de doble precisión (tipo de dato double) tienen un
rango superior (normalmente de 64 bits, 8 bytes ó 4 palabras, con un rango
de 1, 7E-308 a 1, 7E+308). Los valores en coma flotante
Long doublé (doble precisión largos) son incluso más precisos (normalmente,
tamaño de 80 bits ó 5 palabras, con un rango de+/-1,18E-4932 a 1,18E-4932).
5 .los tipos de datos enumerados (tipo de dato enum) permiten al usuario definir
tipos de datos.
6. El tipo void se utiliza para especificar valores que ocupan cero bits y no tienen
valor (este tipo también se puede utilizar para la creación de punteros genéricos.
7. El tipo de dato puntero no contiene información en el mismo sentido que el resto
de los tipos de datos; en su lugar, cada puntero contiene la dirección de la posición
de memoria que almacena el dato actual.
8. El tipo de dato bool, al que se le puede asignar las constantes true
(Verdadero) y false (falso)
RANGO DE LOS TIPOS DE DATOS
Tipo
Rango mínimo
Rango máximo
Char
0
255
Short
-128
127
-32768
32767
Int
Unsigned int
0
65535
Long
-2147483648
2147483637
Float
3.4*(10-38)
3.4*(1038)
Double
1.7*(10-308)
1.7*(10308)
Long double
1.7*(10-308)
1.7*(10308)
7 - Que es una librería en C++ , enuncie las más
importantes y diga para que sirven
Librería en c++
Junto con los compiladores de C y C++, se incluyen ciertos archivos llamados
bibliotecas más comúnmente librerías. Las bibliotecas contienen el código objeto de
muchos programas que permiten hacer cosas comunes, como leer el teclado,
escribir en la pantalla, manejar números, realizar funciones matemáticas, etc. Las
bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de
entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como
imaginarás existen muchísimas librerías disponibles y todas con una función
específica.
En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que
podemos importar o incluir en nuestro programa. Estos archivos contienen las
especificaciones de diferentes funcionalidades ya construidas y utilizables que
podremos agregar a nuestro programa, como por ejemplo leer del teclado o mostrar
algo por pantalla entre muchas otras más. Al poder incluir estas librerías con
definiciones de diferentes funcionalidades podremos ahorrarnos gran cantidad de
cosas, imaginemos por ejemplo que cada vez que necesitemos leer por teclado,
debamos entonces crear una función que lo haga (algo realmente complejo), al
poder contar con las librerías en C++, podremos hacer uso de una gran variedad de
funciones que nos facilitaran la vida y aumentarán la modularidad de nuestros
códigos. Las librerías no son únicamente archivos externos creados por otros,
también es posible crear nuestras propias librerías y utilizarlas en nuestros
programas. Las librerías pueden tener varias extensiones diferentes, las más
comunes son: .lib, .bpl, .a, .dll, .h y algunas más ya no tan comunes.
En conclusión, las librearías son archivos (no siempre externos) que nos permiten
llevar a cabo diferentes tareas sin necesidad de preocuparnos por cómo se hacen
sino simplemente entender cómo usarlas. Las librearías en C++ permiten hacer
nuestros programas más modulares y reutilizables, facilitando además crear
programas con funcionalidades bastante complejas en unas pocas líneas de
código.
Las librerías no son únicamente archivos externos creados por otros, también es
posible crear nuestras propias librerías y utilizarlas en nuestros programas. Las
librerías pueden tener varias extensiones diferentes, las más comunes son:






lib,
.bpl,
.a,
.dll,
.h
y algunas más ya no tan comunes.
Las librerías o cabeceras de programa permiten el manejo de funciones básicas,
que admite el reconocimiento de palabras claves del propio sistema.
<iostream.h>, que permite el manejo de entrada y/o salida mediante dos objetos de
flujo de datos cout<< y cin>>.
<conio.h>, quien trae las funciones básicas como posicionamiento o limpieza de
pantalla entre otras.
<math.h>, que permite la utilización de funciones matemáticas.
<stdio.h> que permite el manejo de entrada y/o salida mediante dos objetos de flujo
de datos printf y scanf.
 Otras: <windows.h>,
 <string.h>,
 <stdlib.h>
Algunas Librerías en c++
Librería fstream:
Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el
programar, tanto leer como escribir en ellos.
Librería iosfwd:
Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs
estándar. Por ejemplo ostream.
Librería iostream:
Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e
importante (aunque no indispensable).
Librería list:
Parte de la STL relativa a contenedores tipo list; listas doblemente enlazadas
Librería math:
Contiene los prototipos de las funciones y otras definiciones para el uso y
manipulación de funciones matemáticas.
Librería memory:
Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros
inteligentes (auto_ptr).
Librería new:
Manejo de memoria dinámica
Librería numeric:
Parte de la librería numérica de la STL relativa a operaciones numéricas.
Librería ostream:
Algoritmos estándar para los flujos de salida.
Librería queue:
Parte de la STL relativa a contenedores tipo queue (colas de objetos).
Librería stdio:
Contiene los prototipos de las funciones, macros, y tipos para manipular datos de
entrada y salida.
Librería stdlib:
Contiene los prototipos de las funciones, macros, y tipos para utilidades de uso
general.
Librería string:
Arte de la STL relativa a contenedores tipo string; una generalización de las
cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso
de las cadenas de caracteres, pues elimina muchas de las dificultades que generan
los char
Librería typeinfo:
Mecanismo de identificación de tipos en tiempo de ejecución
Librería vector:
Parte de la STL relativa a los contenedores tipo vector; una generalización de las
matrices unidimensionales C/C++
8 - Como se declara una librería. Como se declara
una variable, una constante.
Sintaxis para declarar Librerías en C++
La declaración de librerías, tanto en C como en C++, se debe hacer al principio de
todo nuestro código, antes de la declaración de cualquier función o línea de código,
debemos indicarle al compilador que librerías usar, para el saber qué términos
estarán correctos en la escritura de nuestro código y cuáles no. La sintaxis es la
siguiente: #include <nombre de la librería> o alternativamente #include "nombre de
la librería". Cualquiera de las 2 formas es válida en C++ (no estoy seguro si en C
sea válido), ten en cuenta que siempre el nombre de la librería debe ir entre " y " o
entre < y >. En tu código puedes declarar todas las librerías que quieras, pero en
realidad no tienen sentido, declarar una librería que no vas a usar en tus
programas, sin embargo no existe límite para esto.
¿Cómo declarar una librería en C++?
Veamos a continuación como se haría la declaración de unas cuantas librerías
conocidas, recuerda que ese pueden declarar todas las librerías necesarias y
siempre debe hacerse al comienzo del código fuente
?
1
#include "iostream"
2
#include "string"
3
#include <math.h>
4
#include <conio.h>
5
6
Using namespace std;
Con esto debió quedar claro, como declarar librerías C++ al interior de un código
fuente. Lo único adicional, es la línea que dice using namespace std; esta línea nos
ayuda a declarar un espacio de nombre que evita tener que usarlo cada que
accedemos a alguna función específica de una librería. Teniendo este namespace
declarado podemos llamar por ejemplo el comando cout >>, que pertenece a la
librería iostream, sin embargo sin este namespace sería std::cout >>, imagina tener
que hacer esto cada vez que uses algún comando o función de las librerías, sería
bastante tedioso.
Como declarar una variable
Variable: int numero; char letra; Long enterolargo; float numeroflotante;
Como declarar un constante
Constantes
def: Una constante es un dato cuyo valor no puede cambiar durante la ejecución del
programa. Recibe un valor en el momento de la compilación y este permanece
inalterado durante todo el programa.
Constantes declaradas
También llamadas constantes con nombre, son las que se declaran en la
sección const asignándoles un valor directamente. Por ejemplo:
Const
Pi = 3.141592; (* valor real *)
Min = 0; (* entero *)
Max = 99; (* entero *)
Saludo = 'Hola'; (* cadena caract. *)
9 - Como se asigna en C++
Operadores de asignación
§1 Sinopsis
C++ dispone de los siguientes operadores de asignación:
=
Asignación
*=
Asigna producto
/=
Asigna división
%=
Asigna resto (módulo)
+=
Asigna suma
-=
Asigna diferencia (resta)
<<=
Asigna desplazamiento izquierda
>>=
Asigna desplazamiento derecha
&=
Asigna AND entre bits
^=
Asigna XOR entre bits
|=
Asigna OR entre bits
§2 Sintaxis:
<expr-unaria> <operador-de-asignación> <expr-derecha>
Ejemplo:
x = 3;
x += 3;
x &= 3;
§3 Comentario
Todos ellos son operadores binarios, de los cuales, = es el único de asignación
simple, los demás son operadores de asignación compuestos.
Los seis primeros aceptan operandos de distinto tipo, mientras que los cinco
últimos: <<=, >>=, &=, ^= y |=, implican manejo de bits ( 4.9.3), por lo que sus
operandos deben ser tipos int en sus distintas variantes.
§3.1 No olvidar que las expresiones de asignación producen un resultado. El tipo
resultante es el de la <expr-unaria> (izquierda); el valor que se aplica es el
determinado por <expr-derecha> (el Rvalue
2.1.5). El valor resultante de <exprunaria> después de la asignación, es el resultado de la expresión (el Lvalue
2.1.5). Así pues, cualquiera que sea su sentido concreto, todos implican la "copia"
de un bloque de memoria (que contiene el "resultado") en algún sitio (la dirección
indicada por el Rvalue).
Ejemplo:
Int num; float f = 3.14;
num = f + 1;
En este caso, el valor 4.14, resultado de <expr-derecha>, se aplica a num.
Teniendo en cuenta que el tipo resultante debe ser el de num (un int en este caso),
se realiza automáticamente una conversión del float 4.14 a int (con pérdida de
precisión si es necesario), con el resultado de que num recibe el valor 4 y el
resultado de la asignación es un int de valor 4.
§3.2 Esta propiedad de las asignaciones de producir un resultado, es justamente la
que permite expresiones de asignación compuesta del tipo:
A = B = C = D;
y es ampliamente utilizada en la programación de C++. Considere el bucle del
siguiente ejemplo:
While ( (ch = getchar () )!= 27) ;
Aprovechando que en este caso, el resultado de la asignación es un char, se utiliza
directamente en la cláusula del while, resultando que el bucle se ejecuta
indefinidamente hasta que se pulse la tecla ESC (escape).
§3.3 En general las sentencias de asignación tienen la forma:
variable = expresion
La parte izquierda (que tiene que ser un Lvalue no constante) adquiere el valor
señalado en la expresión de la derecha, pero se mantiene el tipo original de la
variable de la parte izquierda. En caso necesario se realiza una conversión de tipo
(con pérdida de precisión en su caso) del izquierdo al derecho.
Nota: observe que el operador C++ de asignación simple (=) se distingue de otros
lenguajes como Pascal que utilizan el símbolo:= para este operador. Observe
también que la asignación simple (=) utiliza un símbolo distinto del operador
relacional de igualdad (==).
§4 Las variables se pueden inicializar en el mismo momento de la declaración
(asignándoles un valor). Este es el único caso en que se puede asignar una
constante [2]. Ejemplo:
int primero = 0;
char ch = ‘a’;
float balance = 123.456;
char string [10] = "1234567890";
const float pi = 3.14159 ;
§5 En la expresión E1 = E2, E1 debe ser un Lvalue modificable, en caso contrario
puede obtenerse un mensaje de error: Lvalue required [1]. Por ejemplo, una vez
declarado char a[10], ninguna de las dos sentencias que siguen es válida:
a = "0123456789";
a[10] = "0123456789";
La expresión de asignación en sí misma no es un Lvalue.
§6 Si @ es un operador compuesto, la expresión E1 @= E2 equivale a E1 = E1
@ E2. Por ejemplo: E1 += E2 equivale a E1 = E1 + E2.
Ejemplos
x *= y
/* equivalentes */ x = x * y
x *= y + 2 /* equivalentes */ x = x * (y + 2)
Ejemplo operativo:
#include <iostream>
using namespace std;
int main() {
// ===============
int sec = 3628;
cout << sec << " segundos son ";
int h = sec / (60*60);
cout << h << " hora y ";
sec %= 60*60;
int m = sec / 60;
cout << m << " minutos y ";
sec %= 60;
cout << sec << " segundos" << endl;
}
Salida:
3628 segundos son 1 hora y 0 minutos y 28 segundos
§7 Tanto para las asignaciones simples como compuestas, ambos operandos E1 y
E2 deben cumplir alguna de las siguientes condiciones (asumimos que E1 está a la
izquierda del operador y E2 es el de la derecha):
• E1 es de tipo aritmético, cualificado o no y E2 es un tipo aritmético.
• E1 es una estructura o unión cualificada o no, pero de tipo compatible con E2.
• E1 y E2 son punteros a versiones no cualificadas de tipos compatibles, el tipo de
objeto señalado por E1 tiene todos los calificadores del tipo de objeto señalado por
E2.
• E1 o E2 es un puntero a objeto o tipo incompleto, y el otro es un puntero a una
versión cualificada o no cualificada de void. El tipo de objeto señalado por E1 tiene
todos los calificadores del objeto señalado por E2.
• E1 es un puntero y E2 es un puntero nulo.
• No puede haber espacios entre los operadores compuestos (+ =)
• Hay ciertas condiciones, en que los operadores de asignación no pueden
aplicarse cuando se trata de propiedades de clases ( 4.9.2a).
Ejemplos
char* = 0;
// asignación de nulo a puntero a carácter
char *= 0;
// char = char * 0
Precauciónes !!
Es relativamente frecuente confundir el orden de escritura de estos operadores.
Recuerde que, en todos los casos de asignación compuesta, el símbolo "=" va a la
derecha!!.
Considere el siguiente ejemplo:
#include <iostream.h>
void main() {
// ==============
int x = 2, y = 4;
int* z = &x;
x =& y;
// Error !!
x &= y;
// Ok.
z =& y;
// Ok. Asignar un puntero!!
cout << "x = " << x << endl; // Comprobaciones.
cout << "y = " << y << endl;
cout << "z = " << z << endl;
}
Salida (después de eliminada la sentencia errónea):
x=0
y=4
z = 0065FDFC
10 - como se lee y se escribe en c++ con la librería
stdio.h
Lectura: scanf(“%d”,&variable);
Escritura: printf(“La variable es: %d”,variable);
las librerías son son archivos que en C contienen las funciones que son las
acciones que C nos permite hacer
estas son las librerías más usadas por que son librerías estándares de entrada y
salidas de datos tenemos la librerías
stdio.h
se agrega asi:
#include<stdio.h>
11 - como se lee y se escribe en c++ con la librería
iostream.h
Lectura: cin>> variable;
Escritura: cout<<”su variable es:”<<variable;
< IOSTREAM.H>
Las operaciones de entrada y salida no forman parte del conjunto de sentencias
de C++, sino que pertenecen al conjunto de funciones y clases de la
biblioteca estándar
de
C++.
Ellas
se
incluyen
en
los archivos de
cabecera iostream.h por lo que siempre que queramos utilizarlas deberemos
introducir la línea de código #include <iostream.h>
Esta biblioteca es una implementación orientada a objetos y está basada en
el concepto de flujos. A nivel abstracto un flujo es un medio de describir la secuencia
de datos de una fuente a un destino o sumidero. Así, por ejemplo, cuando se
introducen caracteres desde el teclado, se puede pensar en caracteres que fluyen o
se trasladan desde el teclado a las estructuras de datos del programa.
Los objetos de flujo que vienen predefinidos serán:
cin, que toma caracteres de la entrada estándar (teclado);
cout, pone caracteres en la salida estándar (pantalla);
cerr y clog ponen mensajes de error en la salida estándar.
Estos objetos se utilizan mediante los operadores << y >>. El operador << se
denomina operador de inserción; y apunta al objeto donde tiene que enviar
la información. Por lo tanto la sintaxis de cout será:
cout<<variable1<<variable2<<...<<variablen;
No olvidemos que las cadenas de texto son variables y se ponen entre " " (comillas
dobles).
Por su parte >> se denomina operador de extracción, lee información del flujo cin (a
la izquierda del operador) y las almacena en las variables indicadas a la derecha).
La sintaxis sería la siguiente:
cin>>variable1>>...>>variablen;
Un ejemplo de código utilizando ambos objetos podría ser el siguiente:
#include <iostream.h>
...
main ()
{
int i;
cout<<"Introduce un número";
cin>>i;
...
}
...
Que mostraría por pantalla la frase "Introduce un número" y posteriormente
almacenaría el valor introducido por teclado en la variable i.
12 - como se representan las primitivas
secuenciales, condicionales dependiendo DD los
ciclos respetivos, para, mientras que y haga hasta
Las estructuras de operación de programas son un grupo de formas de trabajo, que
permiten, mediante la manipulación de variables, realizar ciertos procesos
específicos que nos lleven a la solución de problemas. Estas estructuras se
clasifican de acuerdo con su complejidad en:
• SECUENCIALES
La estructura secuencial es aquella en la que una acción sigue a otra en secuencia.
Las operaciones se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto
consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona
será reconocida con el nombre de la variable que recibe el valor.
Una estructura secuencial se representa de la siguiente forma:
Inicio
Accion1
Accion2
.
.
AccionN
- Asignación
La asignación consiste, en el paso de valores o resultados a una zona de la
memoria. Dicha zona será reconocida con el nombre de la variable que recibe el
valor. La asignación se puede clasificar de la siguiente forma:
SIMPLES: Consiste en pasar un valor constante a una variable (a ? 15)
CONTADOR: Consiste en usarla como un verificador del número de veces que se
realiza un proceso (a ? a + 1)
ACUMULADOR: Consiste en usarla como un sumador en un proceso (a ? a + b)
DE TRABAJO: Donde puede recibir el resultado de una operación matemática que
involucre muchas variables (a ? c + b*2/4)
- Entrada
Todo algoritmo tiene por objetivo principal reducir los resultados pudiendo o no
incorporar información del medio externo (datos), al ambiente o sistema que
observa.
Esta incorporación de valores del exterior nos lleva a definir una acción algorítmica
primitiva de Lectura o Entrada. Se usará para ello la palabra Leer, seguida de la
variable o lista de variables.
Esta acción tiene el mismo efecto que una asignación, sólo que ésta última utiliza
valores del ambiente del algoritmo; en cambio la lectura asigna valores desde el
exterior.
Sin estación, la ejecución de un algoritmo producirá siempre la misma respuesta.
Las acciones de lectura y asignación permiten “definir variables” en un algoritmo
- Salida
La acción primitiva que permite a un algoritmo comunicar resultados o salida de
información al medio exterior que representará por la palabra clave Escribir.
Se destacan algunas diferencias entre las acciones de lectura y escritura. La lectura
se utiliza solamente a través de variables; y por lo tanto, si se lee una variable que
ya fue definida en el algoritmo, implicará un acceso destructivo; esto es, la variable
perderá su valor para tomar el del nuevo dato que se ingrese. En cambio, si se
escribe resultados a través de variables el ejecutante realizará un proceso no
destructivo a dichas variables, pues solo necesita conocer su contenido para
ejecutar la escritura. Aquí las variables conservan sus valores después de la acción.
Las acciones de lectura y escritura son conocidas como acciones de entrada/salida
o abreviadamente E/S.
Condicionales dependiendo DD los ciclos
respetivos, para, mientras que y haga hasta
BLOQUE DEPENDIENDO DE (DD):
Este bloqué se utiliza cuando se pueden tomar muchos caminos a partir del valor
que tenga asignado una variable, es muy útil en algunos casos pero su uso está
condicionado a que la herramienta de programación lo acepte, su estructura es la
siguiente
DD (variable)
[valor 1]:
“instrucciones que se ejecutan cuando la variable tiene asignado el valor 1”
[valor 2]:
“instrucciones que se ejecutan cuando la variable tiene asignado el valor 2”
.
.
[valor n]:
“instrucciones que se ejecutan cuando la variable tiene asignado el valor n”
FIN DD
Ejemplo:
Inicio
Lea “Ingrese una opción numérica de 1 a 4”;OP
DD (OP)
1: Imprima “usted seleccionó la opción uno”
2: Imprima “usted seleccionó la opción dos”
3: Imprima “usted seleccionó la opción tres”
4: Imprima “usted seleccionó la opción cuatro”
Fin DD
Fin
Este algoritmo solicita al usuario ingresar un número entre 1 y 4, y entrega un
letrero que indica cual opción seleccionó el usuario
CICLO PARA
El ciclo para ejecuta un bloque de instrucciones un número determinado de veces.
Este número de veces está determinado por una variable contadora (de tipo entero)
que toma valores desde Un límite inferior hasta un límite superior. En cada ciclo
después de ejecutar el bloque de Instrucciones, la variable contadora es
incrementada en 1 automáticamente y en el momento en Que la variable
sobrepasa el límite superior el ciclo termina.
El valor final de la variable contadora depende del lenguaje de programación
utilizado, por lo tanto, no es recomendable diseñar algoritmos que utilicen el valor
de la variable contadora de un ciclo para, después de ejecutar el mismo. De la
definición de ciclo para se puede inferir que el bloque de instrucciones no se
ejecuta si el límite inferior es mayor al límite superior.
La forma general del ciclo para es la siguiente:
PSEUDOCODIGO
Para (<variable> := <lim_inf> hasta <lim_sup>)
Hacer
<bloque instrucciones>
fin_para
Donde <variable> es la variable contadora del ciclo, la cual debe ser de tipo entero.
<lim_inf> es el valor inicial que toma la variable contadora. <lim_sup> es el último
valor que toma la Variable contadora; cuando el valor de la variable contadora
supere este valor, el ciclo termina.
<bloque instrucciones> es el conjunto de instrucciones que se ejecuta en cada
iteración, mientras la variable contadora no sobrepase el <lim_sup>.
Casos:
• Cuando <lim_inf> es menor que <lim_sup> ocurre lo siguiente:
1. La variable contadora se vuelve igual a <lim_inf>
2. Se ejecuta <bloque de instrucciones>
3. Se incrementa automáticamente en 1 la variable contadora del ciclo.
4. Si el valor de contador del ciclo es menor o igual que <lim_sup> se vuelve de
nuevo al paso 2.
De otro modo se abandona el ciclo.
• Es de anotar que el valor final de la variable contadora queda incrementada por
encima
del <lim_sup> para que pueda finalizar el ciclo
para variable:= lim_inf,
hasta lim_sup
ENTRADA
SALIDA 14
• Cuando <lim_inf> es mayor que <lim_sup> el ciclo termina sin ejecutarse nunca.
El. <bloque de instrucciones>. Tenga en cuenta que no se genera error al correr el
programa
Ejemplo:
Para (x:=5 hasta 4) hacer.
Esta línea de código nunca se ejecuta.
• Es de anotar que los lenguajes de programación tienen una variable a esta
instrucción para que el valor pueda ir en descenso.
• Tanto <lim_inf> como <lim_sup> pueden ser expresiones como en el siguiente
Ejemplo:
para(j:=x+1 hasta 2*y) hacer.
En este caso se calculan primero los valores de las expresiones (x+1) y (2*y)
empleando para esto los valores actuales de x y y para utilizarlos como <lim_inf> y
<lim_sup> respectivamente.
CICLO MIENTRAS
El ciclo mientras
Permite ejecutar un bloque de instrucciones mientras que una expresión lógica
dada se cumpla, es decir, mientras su evaluación dé como resultado verdadero. La
expresión lógica se denomina condición y siempre se evalúa antes de ejecutar el
bloque de instrucciones. Si la condición no se cumple, el bloque no se ejecuta. Si la
condición se cumple, el bloque se ejecuta, después de lo cual la instrucción vuelve
a empezar, es decir, la condición se vuelve a evaluar.
En el caso en que la condición evalúe la primera vez como falsa, el bloque de
instrucciones no será ejecutado, lo cual quiere decir que el número de repeticiones
o iteraciones de este bloque será cero. Si la condición siempre evalúa a verdadero,
la instrucción se ejecutará
Indefinidamente, es decir, un número infinito de veces.
La forma general del ciclo mientras es la siguiente:
Diagrama
PSEUDOCODIGO
Mientras <condición> hacer
<bloque instrucciones>
fin_mientras
Donde, <condición> es la expresión lógica que se evalúa para determinar la
ejecución o no del bloque de instrucciones, y <bloque instrucciones> es el
conjunto de instrucciones que se ejecuta si la condición evalúa a Verdadero.
CICLO HAGA-MIENTRAS
El ciclo haga-mientras es similar al ciclo mientras, la diferencia radica en el
momento de evaluación de la condición.
En el ciclo haga-mientras la condición se evalúa después de ejecutar el bloque de
instrucciones, por lo tanto, el bloque se ejecuta por lo menos una vez. Este bloque
se ejecuta nuevamente si la condición evalúa a verdadero, y no se ejecuta más si
se evalúa como falso.
La forma general del ciclo haga-mientras es la siguiente:
Haga
<bloque instrucciones>
Mientras <condición>
Donde, <bloque instrucciones> es el conjunto de instrucciones que se ejecuta y
<condición> es la expresión lógica que determina si el bloque se ejecuta. Si la
<condición> se evalúa como verdadero el bloque es ejecutado de nuevo y si es
evaluada como falso no es ejecutado.
Después de ejecutar el bloque de acciones se evalúa la <condición>.
Ejemplos
Ejemplo 1. El problema de calcular la suma de los números naturales desde 1 hasta
n
(enunciado anteriormente), se puede solucionar usando el ciclo haga-mientras. A
continuación se describe el algoritmo solución:
1
n: entero /* se define la variable para el número */
2
suma: entero /* se define la variable para la suma */
3
i: entero /* se define la variable para recorrer los números entre 0 y n */
4
escribir ( “Ingrese el número: ” )
5
leer (n) /* lee el primer número */
6
suma:=0 /* inicia la suma en cero */
7
:=1 /* empieza la variable que recorre los números en i 1 */
8
haga
9
suma := suma + i /* en cada iteración suma el número i */
10 i := i + 1 /* incrementa i en 1 para tomar el siguiente número en la próxima
iteración */
11 mientras (i <= n)
12 escribir ( “La suma es: ”, suma )
13. Pase los cinco primeros algoritmos
que tiene en su libreta a C++.

Hacer un algoritmo que lea el sexo de una persona y me diga si es
hombre o mujer:
/*Programa para leer un sexo y decir si es hombre o mujer */
#include<iostream.h>
#include<conio.h>
main(){
int sexo;
cout<<"Diga su sexo por favor:\n 1 Para Masculino \n 2 Para Femenino \n ---> ";
cin>>sexo;
if(sexo==1){
cout<<"Eres un hombre";
}else
if(sexo==1){
cout<<"Eres mujer";
}else

cout<<"\nOpcion No valida \n ENTER para salir";
getch();
return 0;
}
Hacer un algoritmo que lea un color en español y los escribas en ingles
solo teniendo en cuenta los colores primarios:
/*Pasar un color primario a ingles*/
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
main(){
char color[100];
int a=2,b=2,c=2;
cout<<"Diga Que Color Primario Quiere Pasar Al Ingles :";
gets(color);
a = strcmp(color,"rojo");
b = strcmp(color,"azul");
c = strcmp(color,"amarillo");
if(a==0){
cout<<"Red";
}else
if(b==0){
cout<<"Blue";
}else
if(c==0){
cout<<"Yellow";
}else{
cout<<"No es un color primario";
}
getch();
return 0;
}
 Hacer un algoritmo que me permita leer el nombre de una persona y
saludar a esa persona por su nombre:
/*Saludar por el nombre */
#include<iostream.h>
#include<conio.h>
main (){
char nom[30];
Cout<<"Digite su nombre";
Cin>>nom;
Cout<<"Como Estas "<<nom;
getch ();
Return 0;
}

Hacer un algoritmo que lea una vocal y nos diga que vocal leyó:
/* Decir una vocal */
#include<iostream.h>
#include<conio.h>
main(){
char vocal;
cout<<"Digite la vocal que desea leer: ";
cin>>vocal;
cout<<"So vocal Fue: "<<vocal;
getch();
return 0;
}
 Hacer un algoritmo que me permita leer dos números, los sume y escriba
el resultado:
/*Leer dos números y sumarlos*/
#include<iostream.h>
#include<conio.h>
main(){
int numero1,numero2,suma;
cout<<"Ingrese el primer numero: ";
cin>>numero1;
cout<<"\nIngrese el segundo numero: ";
cin>>numero2;
suma=numero1+numero2;
cout<<"\nLa suma es: "<<suma;
cout<<"\n Es decir: "<<numero1<<"+"<<numero2<<"="<<suma;
getch();
return 0;
}