SlideShare una empresa de Scribd logo
Profesora: Ana Lilia LAUREANO CRUCES
Alumnos: Sergio Luis PÉREZ PÉREZ
Luis Eduardo URBAN RIVERO
Abraham GONZÁLEZ HERNÁNDEZ
Programación Estructurada en C++
Una reflexión…
ž Algunas veces se rechaza C++ por ser este
un lenguaje demasiado permisivo y
conducente a escribir programas no legibles y
difíciles de decifrar. Sin embargo, se puede
intentar el uso de ciertas características del
lenguaje con el fin de modelar
apropiadamente el diseño de programas.
Esta introducción es un intento por mantener
un control sobre la escritura en código C++.
Programación Estructurada en C++
Comunicación entre módulos
ž En programación estructurada el diseño
es con base en abstracciones:
— Procedurales o procedimentales y
— Funcionales
ž Y la comunicación entre estas
abstracciones es a través de datos:
— A este mecanismo se le conoce como paso
de parámetros
Programación Estructurada en C++
Abstracciones
Procedimentales
l Una abstracción procedimental es aquella
que integra una serie de acciones sus
características son:
l Los parámetros relaccionados a la abstracción,
pueden pasar por valor o por referencia. Lo
anterior implica que los valores: 1) se producen, 2)
se modifican, o 2) permanecen constantes.
Programación Estructurada en C++
Abstracciones Procedimentales y
funcionales en C ++
ž En C++ existen los dos tipos de
abstracciones, su implementación es
de la siguiente forma.
Programación Estructurada en C++
Formalización de abstracciones
procedimentales
ž Void Nombre_Proc (parámetros)
—{
○ instrucciones;
—}
Programación Estructurada en C++
Abstracciones Funcionales en
C++
ž Integra una serie de operaciones aritméticas,
regresando un valor. Este último debe estar
asociado algún tipo de dato sus
características son:
— Todos los parámetros pasan por valor.
— Se hace hincapié en el hecho de que la función
nos debe regresar un valor ya que éste se
generará a través de la integración de las
operaciones aritméticas.
Programación Estructurada en C++
Formalización de abstracciones
funcionales
—Tipo_de_Dato Nombre_Func (parámetros)
—{
○ Tipo_de_Dato Variable;
○ Instrucciones;
○ Variable ç operaciones aritméticas;
○ return Variable;
—}
ž En este caso la función tiene asociado un
Tipo_de_Dato.
ž Se hace hinacapié en que la Variable debe ser del
mismo tipo que el asociado a la función
Programación Estructurada en C++
Paso de parámetros
ž Existen dos tipos de paso de parámetros:
— Referencia: apuntan a una localidad de memoria lo
que les da la capacidad de crear o modificar los
datos.
— Valor: solo copia el contenido para ser utilizado
dentro de la abstracción. Se mantiene su valor
original, una vez terminadas las acciones del
procedimiento.
Programación Estructurada en C++
Como se hace en C++
ž En el caso de paso de parámetros por
referencia se antepone un ampersand
(&) al nombre de la variable.
ž En el caso de paso de parámetros por
valor, sólo se pone el nombre de la
variable.
— Por valor Por referencia
— Void Mod(int variable) Void Mod(int &variable)
Programación Estructurada en C++
En el caso de los Arreglos…un
caso especial
ž siempre pasan por referencia, pensando
en abstracciones procedimentales, ya
que …
ž En el caso de las abstracciones
funcionales no tiene ningún sentido
Programación Estructurada en C++
Ejemplo de una abstracción
procedural y funcional
float cubo(float x)
{
float res;
res = (x*x*x)
return res;
}
void cubo (float x, &res)
{
res=(x*x*x);
}
Programación Estructurada en C++
void main()
{
float n, res1, res2;
cin>>n;
res1 = cubo(n);
cubo(n, res2);
cout<< res1;
cout<< res2;
}
Programación Estructurada en C++
Lenguaje C++
Fundamentos
ž Primer programa en C++
ž // pp1.cpp
ž # include < iostream.h>
ž main ( )
ž {
cout << “ hola mundo ” << endl;
}
Programación Estructurada en C++
Apuntadoresy el paso de
parámetros por referencia
ž Los apuntadores son un tipo de datos en C++
que se clasifican como dirección.
— Puntero
— Referencia
— -------------------------------------------------------------------
int beta
— int* intPtr
— Podemos hacer que intPtr apunte a beta usando el operador
& (dirección de)
— intPtr = & beta // con esta se puede accesar el contenido de
beta
Programación Estructurada en C++
ž Memoria
ž int beta;
ž int *intPtr = & beta;
ž 5000 5008 intPtr
ž 5008 beta
.
.
.
.
.
28
intPtr beta
28
Programación Estructurada en C++
ž *intPtr // denota la variable a la que apunta intPtr
ž En el ejemplo intPtr apunta a beta
ž Así que la siguiente sentencia *intPtr = 28;
ž Guarda el valor 28 en beta. Este es un
direccionamiento indirecto.
ž La sentencia beta = 28; representa el
direccionamiento directo a beta.
Programación Estructurada en C++
ž *intPtr = 28;
ž cout << intPtr << endl;
ž cout << *intPtr << endl;
ž 5008
ž 28
Programación Estructurada en C++
Usos del operador de
Asignación
84
p1 = p2
99
p1
p2
p2
p1
p2
p1
p2
p1
84
84
99
99
99
99
* p1 = *p2
Programación Estructurada en C++
ž //ejem1.cpp
ž #include<stdio.h>
ž #include<iostream.h>
ž main ( )
ž {
ž char Res;
ž int *p, q;
ž Res = 's';
ž WHILE ((Res=='s') || (Res=='S'))
ž {
ž q = 100; // se asigna 100 a la variable entera q
ž p = &q; //se asigna a p la direccion de q
ž cout << *p); // se imprime el contenido de p
ž cout << endl;
ž cout << "deseas desplegarlo de nuevo? (S/N) n";
ž cin >> Res;
ž }
ž }
Programación Estructurada en C++
ž //este programa nos muestra el uso de las instrucciones para utilizar
ž //apuntadores
ž //pointer1.cpp
ž #include<iostream.h>
ž main(void)
ž {
ž int *p; // p es un apuntador a datos de tipo entero
ž p = new int; //asigna memoria para un entero
ž // simpre se debe verificar si la asignación fue exitosa
ž if (!p)
ž {
cout<<"fallo la asignacion";
ž return 1;
ž }
ž *p = 20; //asigna a esa memoria el valor de 20
ž cout<<"el valor depositado en la dirección apuntada por p es ";
ž cout<< *p; //prueba que funciona mostrando el valor
ž delete p; // libera la memoria
ž return 0;
ž }
Programación Estructurada en C++
Paso de parámetros por valor y
por referencia en C++
ž En una abstracción funcional todos los
parámetros por default son por valor y la
función regresa un valor como
resultado.
ž En una abstracción procedural los
parámetros pueden pasar por valor y/o
por referencia.
Programación Estructurada en C++
#include <iostream.h> // paso por valores
void swap (int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
cout <<"Al final y dentro de swap: i = " << a << " j = " << b << "n";
}
Main ( )
{
int i = 421, j = 53;
cout <<"antes: i = " << i << " j = " << j << "n";
swap(i,j);
cout <<"despues: i = " << i << " j = " << j << "n";
}
Paso de
parámetros por
valor en C++
Programación Estructurada en C++
Paso de parámetros
por referencia en C++
#include <iostream.h> // paso por referencia
void swap (int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
cout <<"Al final y dentro de swap: i = " << a << " j = " << b << "n";
}
main ( )
{
int i = 421, j = 53;
cout <<"antes: i = " << i << " j = " << j << "n";
swap(i,j);
cout <<"despues: i = " << i << " j = " << j << "n";
}
Programación Estructurada en C++
Paso de parámetros por referencia en
C++: otra forma
#include <iostream.h> // paso por referencias
void swap(int *a, int *b); // a y b es una variable de tipo apuntador a entero
main()
{int i = 421, j = 53;
cout <<"antes: i = " << i << " j = " << j << "n";
swap(&i,&j); // se pasan las direcciones de las localidades i y j
cout <<"despues: i = " << i << " j = " << j << "n";
}
void swap(int *a,int *b)
{int temp;
temp = a;
a = b;
b = temp;
cout <<"Al final y dentro de swap: i = " << a << " j = " << b << "n";
Programación Estructurada en C++
//refer.cpp
// programa que ejemplifica el paso de parámetros por valor
// y por referencia
# include <iostream.h>
int q, w;
void cambia(int x, int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
void cambia1( int *a, int *b)
{
int t;
t = *a;
*a=*b;
*b= t;
}
main() {
cout<<"dame un valor entero";
cin>> q;
cout<<"Dame un valor entero ";
cin>> w;
cout<<"Escribo los valores antes de mandarlos";
cout<<"q= "<<q<<" "<<"w= "<<w<<endl;
cambia(q,w);
cout<<"escribo los valores despues de haberlos enviado a cambia";
cout<<q<<" "<<w<<endl;
cambia1(&q,&w);// intercambio de sus valores
cout<< "escribo los valores despues de haberlos enviado a cambia 1";
cout<<q<<" "<<w<<endl;
return 0;
}
Programación Estructurada en C++
Para manejo dinámico de
memoria (New y Delete)
ž New:
— asigna memoria para un
objeto del tipo y tamaño
especificados.
— Devuelve un apuntador
a un objeto del tipo
especificado, que hace
referencia al espacio
reservado.
ž Delete:
— libera la memoria
reservada para un objeto.
— Sólo se puede aplicar a
apuntadores que han sido
retornados por el
operador new.
Programación Estructurada en C++
El manejo del tamaño en
new
ž En el caso de arreglos se especifica
explícitamente.
ž En otros casos viene definido por el tipo.
— El tipo puede ser definido por el usuario.
Programación Estructurada en C++
//programa que utiliza la asignación de arrays utilizando new
//este programa realiza lo mismo que el anterior pero de una manera
//distinta
//array2.cpp
#include<iostream.h>
main(void)
{
float *p; // la variable a la que apunta p es de tipo flotante
int i;
p = new float[10]; //es un arreglo de 10 apuntadores
if (!p) {
cout<<"fallo en la asignacionn";
return 1;
}
// asigna valores de 100 a 109
for (i=0; i<10; i++) p[i]=100.00 +i; // asigna contenidos al array. Y lo que esta
moviendo es el apuntador
for (i=0; i<10; i++) cout <<p[i]<<" "; // muestra los contenidos del array
delete [10] p; // borra el arreglo de 10 apuntadores
return 0;
}
Programación Estructurada en C++
p=new float[10];
0
1
2
7
8
9
float *p
float
Programación Estructurada en C++
Tipos definidos por el usuario
ž ESTRUCTURAS (o Registros)
struct date_s {
int day, month, year;
};
Podemos definir variables de este tipo
referenciando la estructura por el nombre:
date_s AnotherDate;
Programación Estructurada en C++
Lenguaje C++
Tipos definidos por el usuario
ž Enumeraciones
— enum_nombre {lista_de_elementos}
— Así como lo indica el formato a la lista de
elementos se le asignan valores enteros
secuencialmente iniciando por cero o los
que el usuario asigne:
— enum colores { negro, rojo, verde, azul}
— enum colores { negro = 2, rojo, verde, azul}
Programación Estructurada en C++
ž #include<iostream>
ž using namespace std;
struct persona
{ int edad;
string nombre;
string apellido;
};
main ()
{
persona emi;
cout<<("dime tu nombre")<<endl;
cin>>emi.nombre;
cout<<emi.nombre;
}
Programación Estructurada en C++
Lenguaje C++
unos operadores especiales
Los operadores de
incremento ++ y --
pueden ser explicados
por medio del siguiente
ejemplo. Si tienes la
siguiente secuencia de
instrucciones
a = a + 1; b = a;
Se puede usar
b = a++; // asigna el valor de a a
b y después lo incrementa
b = ++a; // incrementa el valor
de a y después lo asigna a b
Estructuras de Control en
C++: Selecciones
if (expresión lógica)
{ /*Verdadero*/
. . .
}
else
{ /*Falso*/
. . .
}
(expresión lógica)
V
F
Selección
Sencilla
Selector (op)
1 2 3
Caso
switch (op)
{
case 1:
{
…
}break;
case 2:
{
…
}break;
case 3:
{
…
}break;
default:
{
…
}break;
}
Estructuras de Control en C++:
Iteración: NO Condicional
for (i = 1; i <= N; i++)
{
.
.
.
}
Para I<- 1 hasta N
Progresión Aritmética
Estructuras de Control en C++:
Iteración: Condicionales
while (expresión lógica = v)
{
.
.
.
}
(expresión lógica = V)
Mientras
do
{
.
.
.
} while (expresion lógica = V)
( expresión lógica = V)
Repite_Hasta
NOTA: C++ no cuenta de forma explícita con un
REPITE_HASTA, se maneja como DO-WHILE.
Implica desarrollar una expresión lógica complemento de la
diseñada en código neutro.
Un ejemplo de la Vida …
fin

Más contenido relacionado

PPTX
Instrucciones basicas de_c_
PPTX
Instrucciones basicas de_c_
PPTX
PROGRAMACIÓN BÁSICA EN C++
PDF
Informatica3 de 3 apuntes eii año 24/25.
PPTX
S1-EDD-1.1 Punteros a estructuras
PDF
Curso de C++ (2014)
Instrucciones basicas de_c_
Instrucciones basicas de_c_
PROGRAMACIÓN BÁSICA EN C++
Informatica3 de 3 apuntes eii año 24/25.
S1-EDD-1.1 Punteros a estructuras
Curso de C++ (2014)

Similar a Programacion estructurada en C+fffffffffffrr (20)

PPTX
Trabajo tutorial de visual C++
DOC
Estructuras dinámicas de datos
PPTX
Una gran, conceptual y breve introducción c++
PPTX
ESTRUCTURA BASICA PARA C++
PPTX
ESTRUCTURA BÁSICA PARA C++
PDF
Estructura de Datos
PPTX
Tutorial jared
PPTX
Clase 1 Lenguaje C++
PPTX
Estructura de Lenguaje C++
PDF
Revista programacion
PPTX
Elementos basicos c++
PPTX
Elementos basicos c++
PPTX
Elementos basicos c++
PDF
Implementacion de punteros
PDF
Elemento1
PDF
Introduccion a C++.pdf
PPTX
Programacion orientada a objetos
PPTX
Tutorial C++
PPTX
tutorial de c++
Trabajo tutorial de visual C++
Estructuras dinámicas de datos
Una gran, conceptual y breve introducción c++
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BÁSICA PARA C++
Estructura de Datos
Tutorial jared
Clase 1 Lenguaje C++
Estructura de Lenguaje C++
Revista programacion
Elementos basicos c++
Elementos basicos c++
Elementos basicos c++
Implementacion de punteros
Elemento1
Introduccion a C++.pdf
Programacion orientada a objetos
Tutorial C++
tutorial de c++
Publicidad

Último (20)

DOCX
Estratégias de Ventas para WhatsApp paso a paso
PDF
Mapa mental de cultura social Historia Economica
PDF
S07 - Morfología urbana..........................
PDF
PROGRAMA CALEB. par la iglesia es un programa
PDF
Principios d. Anatomía y no se que más poner jaja
PPTX
Epidemiologia de campo vrs epidemiologia social.pptx
PPT
RESOLUCION ALTERNATIVA DE CONFLICTOS 3 CONT.ppt
PPTX
Tratados-de-Paz-entre-Chile-y-Peru.pptxx
PDF
JsjsjskkskskskskskksjskwiwUltradiano.pdf.pdf
PDF
Presentación_rendición_de_cuentas_2020_26-FEB-2021.pdf
PPT
2010_06 FSI_ASBA Pruebas de Stress de Riesgo de Crédito El Caso Peruano MLUY_...
PPTX
EXPOSICIÓN 2021.pptxhgdfshdghsdgshdghsds
PPTX
EPCE_EXCEL 365 CURSO DE ENTRENAMIENTO.pptx
PPTX
INDUCCION Y ORIENTACION DE LA EMPRESA VALE
PDF
Rendición_Pública_de_Cuentas_Inicial_2019.pdf
PPTX
Grupo 008_Equipo 3_Evidencia 4_ATDI.pptx
PPTX
Status Proyecto CIVIX INTELIGENCIA ARTIFICIAL
PDF
Actualización en el uso de uterotónico.pdf
PPTX
GUERRAS INTERNACIONALES DE BOLIVIA .pptx
PDF
TEST DE ORIENTACION VOCACIONAL DILAN MAHECHA
Estratégias de Ventas para WhatsApp paso a paso
Mapa mental de cultura social Historia Economica
S07 - Morfología urbana..........................
PROGRAMA CALEB. par la iglesia es un programa
Principios d. Anatomía y no se que más poner jaja
Epidemiologia de campo vrs epidemiologia social.pptx
RESOLUCION ALTERNATIVA DE CONFLICTOS 3 CONT.ppt
Tratados-de-Paz-entre-Chile-y-Peru.pptxx
JsjsjskkskskskskskksjskwiwUltradiano.pdf.pdf
Presentación_rendición_de_cuentas_2020_26-FEB-2021.pdf
2010_06 FSI_ASBA Pruebas de Stress de Riesgo de Crédito El Caso Peruano MLUY_...
EXPOSICIÓN 2021.pptxhgdfshdghsdgshdghsds
EPCE_EXCEL 365 CURSO DE ENTRENAMIENTO.pptx
INDUCCION Y ORIENTACION DE LA EMPRESA VALE
Rendición_Pública_de_Cuentas_Inicial_2019.pdf
Grupo 008_Equipo 3_Evidencia 4_ATDI.pptx
Status Proyecto CIVIX INTELIGENCIA ARTIFICIAL
Actualización en el uso de uterotónico.pdf
GUERRAS INTERNACIONALES DE BOLIVIA .pptx
TEST DE ORIENTACION VOCACIONAL DILAN MAHECHA
Publicidad

Programacion estructurada en C+fffffffffffrr

  • 1. Profesora: Ana Lilia LAUREANO CRUCES Alumnos: Sergio Luis PÉREZ PÉREZ Luis Eduardo URBAN RIVERO Abraham GONZÁLEZ HERNÁNDEZ
  • 2. Programación Estructurada en C++ Una reflexión… ž Algunas veces se rechaza C++ por ser este un lenguaje demasiado permisivo y conducente a escribir programas no legibles y difíciles de decifrar. Sin embargo, se puede intentar el uso de ciertas características del lenguaje con el fin de modelar apropiadamente el diseño de programas. Esta introducción es un intento por mantener un control sobre la escritura en código C++.
  • 3. Programación Estructurada en C++ Comunicación entre módulos ž En programación estructurada el diseño es con base en abstracciones: — Procedurales o procedimentales y — Funcionales ž Y la comunicación entre estas abstracciones es a través de datos: — A este mecanismo se le conoce como paso de parámetros
  • 4. Programación Estructurada en C++ Abstracciones Procedimentales l Una abstracción procedimental es aquella que integra una serie de acciones sus características son: l Los parámetros relaccionados a la abstracción, pueden pasar por valor o por referencia. Lo anterior implica que los valores: 1) se producen, 2) se modifican, o 2) permanecen constantes.
  • 5. Programación Estructurada en C++ Abstracciones Procedimentales y funcionales en C ++ ž En C++ existen los dos tipos de abstracciones, su implementación es de la siguiente forma.
  • 6. Programación Estructurada en C++ Formalización de abstracciones procedimentales ž Void Nombre_Proc (parámetros) —{ ○ instrucciones; —}
  • 7. Programación Estructurada en C++ Abstracciones Funcionales en C++ ž Integra una serie de operaciones aritméticas, regresando un valor. Este último debe estar asociado algún tipo de dato sus características son: — Todos los parámetros pasan por valor. — Se hace hincapié en el hecho de que la función nos debe regresar un valor ya que éste se generará a través de la integración de las operaciones aritméticas.
  • 8. Programación Estructurada en C++ Formalización de abstracciones funcionales —Tipo_de_Dato Nombre_Func (parámetros) —{ ○ Tipo_de_Dato Variable; ○ Instrucciones; ○ Variable ç operaciones aritméticas; ○ return Variable; —} ž En este caso la función tiene asociado un Tipo_de_Dato. ž Se hace hinacapié en que la Variable debe ser del mismo tipo que el asociado a la función
  • 9. Programación Estructurada en C++ Paso de parámetros ž Existen dos tipos de paso de parámetros: — Referencia: apuntan a una localidad de memoria lo que les da la capacidad de crear o modificar los datos. — Valor: solo copia el contenido para ser utilizado dentro de la abstracción. Se mantiene su valor original, una vez terminadas las acciones del procedimiento.
  • 10. Programación Estructurada en C++ Como se hace en C++ ž En el caso de paso de parámetros por referencia se antepone un ampersand (&) al nombre de la variable. ž En el caso de paso de parámetros por valor, sólo se pone el nombre de la variable. — Por valor Por referencia — Void Mod(int variable) Void Mod(int &variable)
  • 11. Programación Estructurada en C++ En el caso de los Arreglos…un caso especial ž siempre pasan por referencia, pensando en abstracciones procedimentales, ya que … ž En el caso de las abstracciones funcionales no tiene ningún sentido
  • 12. Programación Estructurada en C++ Ejemplo de una abstracción procedural y funcional float cubo(float x) { float res; res = (x*x*x) return res; } void cubo (float x, &res) { res=(x*x*x); }
  • 13. Programación Estructurada en C++ void main() { float n, res1, res2; cin>>n; res1 = cubo(n); cubo(n, res2); cout<< res1; cout<< res2; }
  • 14. Programación Estructurada en C++ Lenguaje C++ Fundamentos ž Primer programa en C++ ž // pp1.cpp ž # include < iostream.h> ž main ( ) ž { cout << “ hola mundo ” << endl; }
  • 15. Programación Estructurada en C++ Apuntadoresy el paso de parámetros por referencia ž Los apuntadores son un tipo de datos en C++ que se clasifican como dirección. — Puntero — Referencia — ------------------------------------------------------------------- int beta — int* intPtr — Podemos hacer que intPtr apunte a beta usando el operador & (dirección de) — intPtr = & beta // con esta se puede accesar el contenido de beta
  • 16. Programación Estructurada en C++ ž Memoria ž int beta; ž int *intPtr = & beta; ž 5000 5008 intPtr ž 5008 beta . . . . . 28 intPtr beta 28
  • 17. Programación Estructurada en C++ ž *intPtr // denota la variable a la que apunta intPtr ž En el ejemplo intPtr apunta a beta ž Así que la siguiente sentencia *intPtr = 28; ž Guarda el valor 28 en beta. Este es un direccionamiento indirecto. ž La sentencia beta = 28; representa el direccionamiento directo a beta.
  • 18. Programación Estructurada en C++ ž *intPtr = 28; ž cout << intPtr << endl; ž cout << *intPtr << endl; ž 5008 ž 28
  • 19. Programación Estructurada en C++ Usos del operador de Asignación 84 p1 = p2 99 p1 p2 p2 p1 p2 p1 p2 p1 84 84 99 99 99 99 * p1 = *p2
  • 20. Programación Estructurada en C++ ž //ejem1.cpp ž #include<stdio.h> ž #include<iostream.h> ž main ( ) ž { ž char Res; ž int *p, q; ž Res = 's'; ž WHILE ((Res=='s') || (Res=='S')) ž { ž q = 100; // se asigna 100 a la variable entera q ž p = &q; //se asigna a p la direccion de q ž cout << *p); // se imprime el contenido de p ž cout << endl; ž cout << "deseas desplegarlo de nuevo? (S/N) n"; ž cin >> Res; ž } ž }
  • 21. Programación Estructurada en C++ ž //este programa nos muestra el uso de las instrucciones para utilizar ž //apuntadores ž //pointer1.cpp ž #include<iostream.h> ž main(void) ž { ž int *p; // p es un apuntador a datos de tipo entero ž p = new int; //asigna memoria para un entero ž // simpre se debe verificar si la asignación fue exitosa ž if (!p) ž { cout<<"fallo la asignacion"; ž return 1; ž } ž *p = 20; //asigna a esa memoria el valor de 20 ž cout<<"el valor depositado en la dirección apuntada por p es "; ž cout<< *p; //prueba que funciona mostrando el valor ž delete p; // libera la memoria ž return 0; ž }
  • 22. Programación Estructurada en C++ Paso de parámetros por valor y por referencia en C++ ž En una abstracción funcional todos los parámetros por default son por valor y la función regresa un valor como resultado. ž En una abstracción procedural los parámetros pueden pasar por valor y/o por referencia.
  • 23. Programación Estructurada en C++ #include <iostream.h> // paso por valores void swap (int a,int b) { int temp; temp = a; a = b; b = temp; cout <<"Al final y dentro de swap: i = " << a << " j = " << b << "n"; } Main ( ) { int i = 421, j = 53; cout <<"antes: i = " << i << " j = " << j << "n"; swap(i,j); cout <<"despues: i = " << i << " j = " << j << "n"; } Paso de parámetros por valor en C++
  • 24. Programación Estructurada en C++ Paso de parámetros por referencia en C++ #include <iostream.h> // paso por referencia void swap (int &a,int &b) { int temp; temp = a; a = b; b = temp; cout <<"Al final y dentro de swap: i = " << a << " j = " << b << "n"; } main ( ) { int i = 421, j = 53; cout <<"antes: i = " << i << " j = " << j << "n"; swap(i,j); cout <<"despues: i = " << i << " j = " << j << "n"; }
  • 25. Programación Estructurada en C++ Paso de parámetros por referencia en C++: otra forma #include <iostream.h> // paso por referencias void swap(int *a, int *b); // a y b es una variable de tipo apuntador a entero main() {int i = 421, j = 53; cout <<"antes: i = " << i << " j = " << j << "n"; swap(&i,&j); // se pasan las direcciones de las localidades i y j cout <<"despues: i = " << i << " j = " << j << "n"; } void swap(int *a,int *b) {int temp; temp = a; a = b; b = temp; cout <<"Al final y dentro de swap: i = " << a << " j = " << b << "n";
  • 26. Programación Estructurada en C++ //refer.cpp // programa que ejemplifica el paso de parámetros por valor // y por referencia # include <iostream.h> int q, w; void cambia(int x, int y) { int temp; temp=x; x=y; y=temp; } void cambia1( int *a, int *b) { int t; t = *a; *a=*b; *b= t; } main() { cout<<"dame un valor entero"; cin>> q; cout<<"Dame un valor entero "; cin>> w; cout<<"Escribo los valores antes de mandarlos"; cout<<"q= "<<q<<" "<<"w= "<<w<<endl; cambia(q,w); cout<<"escribo los valores despues de haberlos enviado a cambia"; cout<<q<<" "<<w<<endl; cambia1(&q,&w);// intercambio de sus valores cout<< "escribo los valores despues de haberlos enviado a cambia 1"; cout<<q<<" "<<w<<endl; return 0; }
  • 27. Programación Estructurada en C++ Para manejo dinámico de memoria (New y Delete) ž New: — asigna memoria para un objeto del tipo y tamaño especificados. — Devuelve un apuntador a un objeto del tipo especificado, que hace referencia al espacio reservado. ž Delete: — libera la memoria reservada para un objeto. — Sólo se puede aplicar a apuntadores que han sido retornados por el operador new.
  • 28. Programación Estructurada en C++ El manejo del tamaño en new ž En el caso de arreglos se especifica explícitamente. ž En otros casos viene definido por el tipo. — El tipo puede ser definido por el usuario.
  • 29. Programación Estructurada en C++ //programa que utiliza la asignación de arrays utilizando new //este programa realiza lo mismo que el anterior pero de una manera //distinta //array2.cpp #include<iostream.h> main(void) { float *p; // la variable a la que apunta p es de tipo flotante int i; p = new float[10]; //es un arreglo de 10 apuntadores if (!p) { cout<<"fallo en la asignacionn"; return 1; } // asigna valores de 100 a 109 for (i=0; i<10; i++) p[i]=100.00 +i; // asigna contenidos al array. Y lo que esta moviendo es el apuntador for (i=0; i<10; i++) cout <<p[i]<<" "; // muestra los contenidos del array delete [10] p; // borra el arreglo de 10 apuntadores return 0; }
  • 30. Programación Estructurada en C++ p=new float[10]; 0 1 2 7 8 9 float *p float
  • 31. Programación Estructurada en C++ Tipos definidos por el usuario ž ESTRUCTURAS (o Registros) struct date_s { int day, month, year; }; Podemos definir variables de este tipo referenciando la estructura por el nombre: date_s AnotherDate;
  • 32. Programación Estructurada en C++ Lenguaje C++ Tipos definidos por el usuario ž Enumeraciones — enum_nombre {lista_de_elementos} — Así como lo indica el formato a la lista de elementos se le asignan valores enteros secuencialmente iniciando por cero o los que el usuario asigne: — enum colores { negro, rojo, verde, azul} — enum colores { negro = 2, rojo, verde, azul}
  • 33. Programación Estructurada en C++ ž #include<iostream> ž using namespace std; struct persona { int edad; string nombre; string apellido; }; main () { persona emi; cout<<("dime tu nombre")<<endl; cin>>emi.nombre; cout<<emi.nombre; }
  • 34. Programación Estructurada en C++ Lenguaje C++ unos operadores especiales Los operadores de incremento ++ y -- pueden ser explicados por medio del siguiente ejemplo. Si tienes la siguiente secuencia de instrucciones a = a + 1; b = a; Se puede usar b = a++; // asigna el valor de a a b y después lo incrementa b = ++a; // incrementa el valor de a y después lo asigna a b
  • 35. Estructuras de Control en C++: Selecciones if (expresión lógica) { /*Verdadero*/ . . . } else { /*Falso*/ . . . } (expresión lógica) V F Selección Sencilla
  • 36. Selector (op) 1 2 3 Caso switch (op) { case 1: { … }break; case 2: { … }break; case 3: { … }break; default: { … }break; }
  • 37. Estructuras de Control en C++: Iteración: NO Condicional for (i = 1; i <= N; i++) { . . . } Para I<- 1 hasta N Progresión Aritmética
  • 38. Estructuras de Control en C++: Iteración: Condicionales while (expresión lógica = v) { . . . } (expresión lógica = V) Mientras
  • 39. do { . . . } while (expresion lógica = V) ( expresión lógica = V) Repite_Hasta NOTA: C++ no cuenta de forma explícita con un REPITE_HASTA, se maneja como DO-WHILE. Implica desarrollar una expresión lógica complemento de la diseñada en código neutro.
  • 40. Un ejemplo de la Vida …
  • 41. fin