Poo 1

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 15

CAPITULO I

LENGUAJE “C” CONCEPTOS BASICOS


1 Conceptos De La Programación Orientada a Objetos.-La programación
orientada a objetos existe desde la creación de los primeros lenguajes de
programación. Los conceptos que se manejan de abstracción de datos, herencia y
Polimorfismo se manejaban en estos lenguajes, pero con el desarrollo del lenguaje
“C” y la programación visual se utiliza este tipo de programación con mayor
profusión.
Programación estructurada, la programación estructurada se basa en la
creación de una función principal y una serie de rutinas(funciones) llamadas
desde la función principal, que hacen que el desarrollo sea horizontal
contrastando con la programación lineal cuyo desarrollo es vertical. También
podemos indicar que la informática en su parte de programación era:
Programa = Algoritmo + Estructura de datos. La ventaja de este modelo era
importante pero todavía se seguía manejando por separado el estado del sistema
que descansa en la estructura de datos y los procedimientos que actúan sobre el
sistema, tampoco hay una consistencia de datos, esto queda librado al criterio del
programador, estas desventajas y otras más se van a superar con la
programación orientada a objetos.
1.1 Programación orientada a objetos.- La programación orientada a objetos es
la ultima modificación, donde ya se incorporan algunos aspectos tomando
como modelo la vida real.
Tipos de Datos Abstractos Algunos autores describen la programación
orientada a objetos como programación de tipos de datos abstractos y sus
relaciones. Vamos a tratar de estudiar este aspecto de modelo de la vida real
con mas detalles en el concepto de “Tipos de Datos Abstractos”
Creando modelos.- La informática y la automatización en general trata de
resolver o facilitar la vida real creando programas y aplicaciones para esto.
Sin embargo, los problemas de la vida real no están claramente definidos por
qué primeramente hay que crear un modelo de las entidades que actúan en la
vida real, entonces lo primero que se tiene que hacer es tratar de obtener tu
propia perspectiva abstracta, o modelo, del problema. Este proceso de
modelado se llama abstracción y se ilustra en la Figura 1.1.

PROBLEMA
ABSTRACCION

MODELO

Figura 1.1
El modelo define una perspectiva abstracta del problema. Esto implica que el
modelo se enfoca solamente en aspectos relacionados con el problema y que
tú tratas de definir propiedades del problema. Estas propiedades incluyen
 Los datos que son afectados
 Las operaciones que son identificadas por el problema.
Vamos a plantear un caso, deseamos manejar los alumnos de un instituto.
Que información es necesaria, que funciones necesitamos que trabajen:
Algunas propiedades serian
 DNI,
 Nombre
 Fecha de nacimiento,
 Talla
 Domicilio,
 Color de ojos
 Color de pelo,
 Teléfono
pero nosotros nos abstraeremos y tomaremos solo las propiedades
necesarias para resolver el problema. Este modelo solo implica propiedades
que son necesarias para cumplir con los requerimientos de la aplicación, por
ejemplo el nombre, fecha de nacimiento y el DNI. A estas propiedades se les
llama los datos del modelo (de alumno). Ahora ya se tienen descritas a los
alumnos reales por medio de un alumno abstracto.
Definiremos algunas operaciones para manejar los alumnos:
 Matricula de un alumno nuevo.
 Evaluación del alumno en un curso.
Para resumir, la abstracción es la estructuración de un problema en
entidades bien definidas por medio de la definición de sus datos y
operaciones. Consecuentemente, estas entidades combinan datos y
operaciones. No están desacoplados unos de otras.
El modelo quedara:

Nombre

Fecha de Nacimiento

Matricula_Ingresantes
DNI

Evaluacion

1.2. Organización de un Programa C++:Se compone de los bloques:

Directivas del PreProcesador


Include
Macros

Datos y funciones externas

Datos y Funciones Globales

void main( )
{……….
...........
…………
}

1.2.1. Directivas del Preprocesador:Permite que se realicen ciertas tareas


antes que la compilación se efectúe. Las directivas son normalmente
#include y #define.
Ejemplo:
# include<math.h> // incluye el archivo fuente en C++ de las librerías
matemáticas
# include<conio.h> // incluye el archivo fuente de manejo de pantalla
# define PI 3.1416 // indica que PI es equivalente a 3.1416
También:
# include<nombre_archivo> // Busca en directorio por defecto
# include “nombre_archivo”// Busca en directorio actual y luego en directorio
por defecto

1.2.2. Declaraciones Globales: Indica que variables y funciones definidas por


el usuario comunes (accesibles) a todas las funciones del archivo fuente.
Ejemplo:#include <iostream.h>
int A,B; float C, D;
int media(int p1, int p2); // Prototipo

1.2.3. La función main(). Es el punto de inicio de la ejecución de un


programaEn programas simples todo el código se coloca en el programa.
Ejemplo :

#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;

void _tmain(int argc, _TCHAR* argv[])


{int a,b,c;
cout<< "ingrese a: ";
cin>>a;
cout<< "ingrese b: ";
cin>>b;
c=a+b;
cout<<"La suma es:"<<c<<endl;
getch();
//return 0;
}

En programas más complejos el código va en las funciones


void main ( )
{ leer ( );
procesar_planilla( );
imprimir_planilla( );
}
Lo visualizamos así:
void main()
{

}
void leer( )
{
}

void procesar_planillas( )
{

void inprimir_planillas( )
{

1.3. Estructura General de un programa en Borland C++. -


1.3.1. Introducción .- Un programa en C++ se compone de una o más
funciones. Por lo menos debe existir la función main(), una función es un
grupo de instrucciones que realizan una tarea (o tareas). Un programa
nos permite incluir una serie de archivos de cabecera, que también
contiene definiciones y otras funciones.
Ejemplo : Programa que realiza una suma utilizando funciones y variables
globales.

#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
/* Variables globales */
int operando1, operando2;
int resultado;
/* funciones globales, declaración de prototipos */
void leer( );
void sumar( );
void escribir( );
int _tmain(int argc, _TCHAR* argv[])
{leer ( );
sumar ( );
escribir ( );
return 0;
}
/* desarrollo de las funciones */
void leer ( )
{ //clrscr();
cout<< " Operando1= "; cin >> operando1;
cout<< " Operando2= "; cin >> operando2;
}
1.3.2. Creación de un Programa.- Para crear y ejecutar un programa hay
que realizar las siguientes etapas:
Utilizando un editor de texto escribimos el programa y lo grabamos, este
programa grabado será el archivo fuente del programa.
Genera nombre.cpp
Traducción del programa a lenguaje de maquina o un código entendible por el
computador, llamado también compilación, se genera el código objeto.
Genera nombre.exe
1.3.3. Compilación, enlace y ejecución.- El editor, el compilador y la
ejecución están disponibles en el entorno integrado del Visual C++.
El editor y el compilador en el eid.
La ejecución en el menú debug (depuración).
1.4. Elementos de un programa en C++.- Se compone de elementos llamados
tokens, que pueden ser identificadores, palabras reservadas, comentarios,
signos de puntuación, separadores y archivos de cabecera.
 Identificadores.- Cadenas de caracteres sirven para identificar cualquier
elemento de un programa como constantes, variables, funciones etc.
Ejemplo: línea, leer_datos, valor, suelo, PI. Todo identificador está
compuesto por letras, dígitos y el carácter subrayado, el primer carácter
debe de ser una letra.

 Palabras reservadas.- Son identificadores que son utilizados por el


sistema y no pueden ser utilizados para otros fines. Ejemplo: char, return,
break, if etc.

 Comentarios.- Nos entregan información sobre el programa pero no son


procesables. Existen dos tipos en C

/* ........*/ Comentario se puede hacer por varias líneas


/* Realizado por: AAAAAAAAAA
Fecha: 99/99/99
Calcula aaaaa */
// Comentario para el final de la línea
contador = contador + 1; // Incremento unitario del contador
 Signos de puntuación: Los puntos y comas terminan una sentencia, las
llaves agrupan instrucciones, las comas separan elementos iguales etc.

{ leer(a1,a2,a3);
procesar(a1, a2, a3);
escribir(a3);}
 Separadores.- Espacios en blanco, tabulaciones, retornos de carro y
avances de línea.
 Archivos de cabecera.- Nos permiten incluir archivos al momento de
compilación.
1.5. Tipos de Variables estándar en C++.- Datos estándar quiere decir aceptados
por todos, en C++ tenemos como en la mayoría de lenguajes enteros, reales y
carácter.
 Entero
int 9 digitos 4 bytes
long 9 digitos 4 bytes
 Real
float 3.4 x 10-38 a 3.4 x 1038 4 bytes
double 1.7 x 10-308 a 1.7 x 10308 8 bytes
long double 3.4 x 10-4932 a 3.4 x 103932 10bytes

 char
Char -128...... 127 1 byte
Unsigned char 0..255 1 byte

1.6. Constantes.- Se clasifican en:


 Constantes literales. ( Escritas directamente en el programa)
Enteras. 125, 100, 0x372
Reales. 1.25E-4, 75.25
Carácter. ‘A’, ‘n’
Cadena. “jose ruiz”, “------------“
 Constantes definidas(Simbólicas). Definidas mediante #define
#define linea “---------------“
#define maximo 1000
#define raiz2 1.4142
 Constantes enumeradas. Se utilizan para clarificar un programa, un
ejemplo seria: enum frutas { naranja, papaya, fresa, limón},
inmediatamente el compilador asocia un numero de orden a cada elemento,
el primero será 0 (naranja)
 Constantes declaradas. Se declara con el formato
const tipo nombre = valor;
ejemplo: const int dias_mes = 30; const char[ ] titulo = “ MENU
PRINCIPAL”
1.7. Variables.- Se le asigna una posición de memoria cuyo contenido si puede ser
modificado, al contrario de las constantes que no pueden ser modificadas. La
variable tiene un identificador, un tipo de valor que almacena y una dirección.
Su forma general es:

Tipo nombre [= valor];

Ejemplo: int contador = 0, suma = 0; float raiz = 1.0; long factorial=1;


1.8. Entrada y salida simple en C++.- La entrada y salida básica en C++ se realiza
utilizando los flujos cin y cout. El flujo cin(entrada) conecta el dispositivo por
defecto de enatrada(teclado) con el sistema. El flujo cout(salida) conecta el
programa con el dispositivo asignado por defecto a la salida(Pantalla). Para
colocar información en cout se utiliza el operador sobrecargado “<<” y para
tomar información en cin se utiliza el operador sobrecargado “>>”.
Veamos el ejemplo 1.-
PROGRAMA
// prog31.cpp: define el punto de entrada de la aplicación de consola.
/*OBJETIVO: Mostrar la salida en pantalla utilizando el operador << y el flujo cout,
considera constantes y variables. */
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
#define linea1 "|---------------------------------------------------|"
#define linea2 "|---------------------------------------------------|"
void main( )
{ int i;
//clrscr();
cout<<linea1<<endl;;
cout<<'|';
for (i=1;i<=20;i++)
cout<<i<<" ";
cout<<'|'<<endl;
cout<<linea2;
getch(); }

EJECUCION
En la lectura se asignara valores a las variables sea una por una o varias a la vez,
como en el ejemplo 2.-PROGRAMA
// prog41.cpp: define el punto de entrada de la aplicación de consola.
/* CODIGO:
FECHA: 19 de Enero de 2015
OBJETIVO: Mostrar las diferentes formas de leer valores y almacenarlos en las variables
*/
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
void main( )
{ int voltaje,corriente;
system("cls");
cout<<"Ingrese voltaje ==> ";cin>>voltaje;
cout<<"Ingrese corriente=> ";cin>>corriente;
cout<<"Voltaje = "<<voltaje<<endl;
cout<<"Corriente = "<<corriente<<endl;
cout<<"Potencia ==> "<<voltaje*corriente<<endl;
cout<<"Ingrese voltaje y corriente separados por blancos ==> "; cin>>voltaje>>corriente;
cout<<"Potencia ==> "<<voltaje*corriente<<endl;
_getch();}
EJECUCION

1.9. Secuencias de escape.- Las secuencias de caracteres en las que el primero


es la barra invertida, se denominaron secuencias de escape y nos permiten
enviar ciertos caracteres a la pantalla. Por ejemplo, \n se utiliza para
representar el carácter nueva línea (decimal 10) y \t será tabulación horizontal.
La tabla es:.

Secuencia   Valor     Símbolo     Que hace                           


 \a               0x07         BEL          Sonido audible (bell)
 \b               0x08          BS           Retroceso (backspace)
 \f               0x0C          FF            Salto de formato (formfeed)
 \n               0x0A         LF             Saltar una línea (linefeed)
 \r               0x0D         CR             Retorno de carro (carriage return)
 \t               0x09          HT             Tabulación horizontal (H Tab)
 \v               0x0B         VT             Tabulación vertical (V Tab)
Veamos el ejemplo 3.-
PROGRAMA
// prog51.cpp: define el punto de entrada de la aplicación de consola.
/* CODIGO: cppcap01ejem03
FECHA: 19 de Enero de 2015
OBJETIVO: MANEJO DE SECUENCIAS DE ESCAPE */
#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
void main( )
{ // CALCULO DE VALORES PARA UNA FUNCION DE LA FORMA A*X^2+B*X+C
float x,fx,dx;
int i,n,A,B,C;
cout<<"\n\t\t\t TABULANDO UNA FUNCION \n\n\n";
cout<<"\t Ingrese coeficientes A,B,C separados por blancos: ";
cin>>A>>B>>C;
cout<<"\t Ingrese valor inicial : ";cin>>x;
cout<<"\t Ingrese cantidad de valores : ";cin>>n;
cout<<"\t Ingrese incremento de x : ";cin>>dx;
cout<<"\n\n"; cout<<"\t\tx";
cout<<"\t\tf(x) \n"; cout<<"\t\t__";
cout<<"\t\t____ \n\n";
for(i=1;i<=n;i++)
EJECUCION
{ fx= A*x*x+B*x+C;
cout<<"\t\t"<<x;
cout<<"\t\t"<<fx<<"\n";
x=x+dx; }
_getch() ; }

EJECUCION

Manipulación y formato de datos de salida.- El precisar con cuantos decimales


debe mostrarse nuestros datos de salida y que ancho y otras características se llama
dar formato a la salida. Cuando deseamos manejar este formato lo podemos realizar
de la siguiente manera:
1. Mediante el uso de funciones miembro de un objeto de flujo. Su sintaxis es la
siguiente:
nombreObjetoInvocador.nombreFuncionMiembro(listaArgumentos );
cout.width( 5 );
cout.fill( '*' );
cout.precision( 3 );
2. Mediante el uso de funciones especiales llamadas manipuladores, con o sin
argumentos.
cout << flush;
cout << endl;
cout << setw( 6 ) << 12 << endl;
cout << seprecision( 2 ) << 12.325 << endl;
3. Mediante el uso de banderas (indicadores) como argumentos de la función
miembro setf( ) del objeto de flujo:
cout.setf( ios::fixed );
cout.setf( ios::showpoint );
Veamos la tabla de manipuladores de flujo de salida:
MANIPULADOR FUNCION QUE REALIZA
dec Establece la base decimal.
hex Establece la base hexadecimal
oct Establece la base octal.
endl Inserta nueva línea y cambia de flujo
ends Inserta un cero nulo al final de la cadena.
flush Vacía el flujo
setbase(int n) Establece la conversión de base.
resetiosflags(long f) Limpia el formato especificado por f.
setiosflag( long f) Establece formato especificado por f.
setfill(int c) Rellena con el carácter c.
setprecision(int n) Establece precisión de punto flotante a n.
setw(int n) Establece el ancho de campo a w.
Ejemplo 4.- Veamos un ejemplo de dec,oct y hex.
PROGRAMA

// prog61.cpp: define el punto de entrada de la aplicación de consola.


// OBJETIVO: Utilizacion de manipuladores de flujo de salida

#include "stdafx.h"
#include<iostream>
#include<conio.h>
using namespace std;
void main( )
{ // Lee un valor y lo muestra en formato decimal, octal y hexadecimal
int numero;
system ("cls");
cout<<"Ingrese un numero : ";
cin>>numero;
cout<<"Numero decimal......"<<numero<<endl;//base decimal
cout<<"Numero octal........"<<oct<<numero<<endl;//base octal
cout<<"Numero hexadecimal.."<<hex<<numero<<endl;//base hexadecimal
getch();
}
Tabla de indicadores de formato:

INDICADOR LO QUE REALIZA


ios::left Justifica a la izquierda dentro de setw.

ios::rigth Justifica a la derecha dentro de setw.

ios::scientific Muestra números en notación científica.

ios::fixed Muestra en formato de punto fijo.

ios::dec Formatea a base 10.

ios::hex Formatea a base 16.

ios::oct Formatea a base 8.

ios::uppercase Formatea la parte literal a mayúscula.

ios::showbase Imprime el prefijo de base.

Ios::showpos Imprime signo

Ios::showpoint Completa con ceros.

Ejemplo 5.- Veamos un ejemplo que maneje la precisión de salida de un valor real.
PROGRAMA
// prog71.cpp: define el punto de entrada de la aplicación de consola.
//OBJETIVO: Muestra el uso del manipulador setprecision( )
//para indicar el número de dígitos decimales del valor flotante.
#include "stdafx.h"
#include <iostream> //Para cout
#include <iomanip> //Para setprecision( )
#include <conio.h> //Para getch()
using namespace std;
void main( void )
{float valor = 3.1416;
cout<< setiosflags( ios::fixed );
cout<< setprecision( 0 ) << valor << endl;
cout<< setprecision( 1 ) << valor << endl;
cout<< setprecision( 2 ) << valor << endl;
cout<< setprecision( 3 ) << valor << endl;
cout<< setprecision( 4 ) << valor << endl;
cout<< setprecision( 5 ) << valor << endl;
cout<< setprecision( 6 ) << valor << endl;
getch(); }
PROBLEMAS
1. Dado un numero “n” se pide calcular la cantidad de cifras impares y de cifra
pares que tiene “n”. Utilizar variables globales.
PROGRAMA

// prog81.cpp: define el punto de entrada de la aplicación de consola.


//OBJETIVO: Lee un numero y halla cuantos cifras impares y cifras pares componen el numero.
#include "stdafx.h"
int num,cifra;
int contp, conti; // contador de cifras pares y contador de cifras impares
#include<iostream>
# include<conio.h>
using namespace std;
void main( )
{ system("cls");
cout<<"Ingrese un numero: ";cin>>num;;
while( num!=0)
{ cifra = num%10;
if (cifra%2==0)
contp++;
else
conti++;
num=num/10; }
cout<<"Cifras pares : "<<contp<<endl;;
cout<<"Cifras impares: "<<conti;getch(); }

Nota: Observe algunos detalles, las variables son globales, por lo tanto los contadores
se inicializan automáticamente desde cero. Además num es una variable entera solo
debe permitir valores de 5 cifras pero se sobrepasa, quiere decir que el tipo entero
ocupa más de dos bytes (4 bytes).
2.- Escriba un programa que utilice la definición del tipo enumerado color, e imprima
el color escogido..
PROGRAMA
// prog10.cpp: define el punto de entrada de la aplicación de consola.
//OBJETIVO: Maneja tipo enumerado
#include "stdafx.h"
# include<iostream>
# include<conio.h>
using namespace std;
void main( )
{ enum color {rojo,verde,amarillo,azul,negro};
color c1=rojo,c2 = amarillo, c3 = negro;
switch(c1)
{ case 0:cout<<"ROJO"<<endl;break;
case 1:cout<<"VERDE"<<endl;break;
case 2:cout<<"AMARILLO"<<endl;break;
case 3:cout<<"AZUL"<<endl;break;
case 4:cout<<"NEGRO"<<endl;break; }
switch(c2)
EJECUCION

3.- Elaborar un programa que simule la acción de una calculadora de bolsillo: lee una
secuencia de valores numéricos separados por operadores aritméticos (+, -, *, /), y
calcula el valor de la expresión definida por esta secuencia. El resultado del cálculo se
produce cuando se lee el operador ‘=’.
PROGRAMA
/* prog02.cpp: define el punto de entrada de la aplicación de consola.
OBJETIVO: Simula la acción de una calculadora de bolsillo o sea lee un operando,
luego el operador ,
a continuación el operando realiza la operación y lee un nuevo operando y así
hasta que
el operador sea el signo igual y muestre el resultado */
#include "stdafx.h"
# include<iostream>
# include<conio.h>
using namespace std;
void main( )
{ float operando,resultado;
char operador;
system("cls");
cout<<" Ingrese operando ==> "; cin>>resultado;
do {cout<< "Ingrese operador ==> ";
cin>>operador;
switch(operador)
{ case '+': cout<<" Ingrese operando ==> ";
cin>>operando;
resultado=resultado+operando;break;
case '-': cout<<" Ingrese operando ==> ";
cin>>operando;
resultado=resultado-operando;break;
case '*': cout<<" Ingrese operando ==> ";
cin>>operando;
resultado=resultado*operando;break;
case '/': cout<<" Ingrese operando ==> ";
cin>>operando;
resultado=resultado/operando;break; }
} while(operador!='=');
cout<<" Resultado = "<<resultado;
_getch();}

EJECUCION

También podría gustarte