Upload
anon504226862
View
218
Download
0
Embed Size (px)
Citation preview
Lenguaje C++Lenguaje C++Lenguaje C++Lenguaje C++
Historia y definiciones Tipos de datos utilizados Tipos de datos utilizados Arreglos y estructuras F i Funciones Libreras en C
Lenguaje CLenguaje CHistoria
El C++ nace en 1983 de un proyecto para incorporar el paradigmade programacin orientado a objetos al lenguaje C. Su creador fuBjarne Stroustrup que desde 1979 inicia este trabajo como su tesisj p q jdoctoral.
La idea fue el crear un lenguaje de propsitogeneral que facilitara la programacin y lageneral que facilitara la programacin y larealizacin de muchas de las tareasanteriormente reservadas al lenguajeensamblador como el C pero que incorporaseensamblador como el C, pero que incorporaseel paradigma de programacin orientado aobjetos.
Lenguaje C++Lenguaje C++
Evolucin
1983: nace el C++ incorporando el paradigma de programacind b l l C ( S )orientado a objetos al lenguaje C (Bjarne Stroustrup).
1985: Stroustrup crea su primer libro de C++ titulado "The C++Programming Language.1998: surge el primer estndar internacional para C++ (C++1998: surge el primer estndar internacional para C++ (C++ISO/IEC 14882:1998) conocido como C++98.2011: se culmin el estndar ms reciente denominado C++11 quetuvo gran influencia de la biblioteca Boosttuvo gran influencia de la biblioteca Boost.
Lenguaje C++Lenguaje C++
Qu es C++?
C++ es un lenguaje de programacin de AltoNivel, que incorpora funcionalidad de lenguajesde bajo nivel como el ensamblador y C (de nivelde bajo e co o e e sa b ado y C (de eintermedio).
Qu es un lenguaje de programacin?
Un lenguaje de programacin es el conjunto de smbolos y palabras yreglas que permiten al usuario de una computadora darleinstrucciones y rdenes para que esta los ejecuteinstrucciones y rdenes para que esta los ejecute.
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
Los lenguajes de programacin se pueden clasificar segn varioscriterios:
Nivel de abstraccin Propsito
Lugar de ejecucin Concurrencia
Evolucin histrica Manera de ejecutarse Manera de abordar la tarea a realizar
Interactividad Realizacin visual Determinismo
Paradigma de programacin Sistema de tipos
Productividad Estandarizacin
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
Criterio 1: Nivel de Abstraccin: indica el parecido entre ellenguaje de programacin y el lenguaje natural (manejado por loshumanos). Mientras mayor sea el nivel de abstraccin mayor es elu a os) e t as ayo sea e e de abst acc ayo es eparecido del lenguaje de programacin con el natural.BAJO NIVEL NIVEL MEDIO ALTO NIVEL
La programacin se realiza
teniendo muy en t l
Permiten un mayor grado de abstraccin pero
Manejan datos de una manera
cercana al pensamientocuenta las
caractersticas del hardware.
se mantienen algunas
cualidades de los l j d
pensamiento humano
ignorando del funcionamiento
Ensamblador
lenguajes de bajo nivel
C
funcionamiento de la mquina
Java, fortran,C++Ej.
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
COMPILADOS
Criterio 2: Manera de Ejecutarse
INTERPRETADOS MIXTOS
El compilador traduce el cdigo fuente (programa
escrito en un lenguaje) en
El intrprete traduce una instruccin y la
ejecuta, luego
Se compilan a un lenguaje rpido de ejecutar yescrito en un lenguaje) en
cdigo mquina (cdigo objeto). Luego el
enlazador unir los
ejecuta, luego contina con la
prxima de la misma manera hasta
de ejecutar y luego se
interpretan.
ficheros de cdigo objeto del programa principal con los de las libreras
terminar el programa. Java, C#
Python, PhP, Perl, Html
para producir el programa ejecutable.
Fortran, C, C++,Pascal
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
OtCriterio 3: el Paradigma de Programacin
Programacin Orientada a Objetos
OtrosParadigmas
Procedimentamental
Son lenguajes que organizan los algoritmos en procedimientos,
Es una especializacin de la programacin estructurada en el cual l d ll f
(POO)(Estructurado)
algoritmos en procedimientos, funciones o subrutinas, cuyo objeto es dividir en pasos ms simple un problema complejo. Se dicen
el programa se desarrolla en funcin de objetos. Los objetos integran datos y programas (subrutinas) que aplican sobre estos datos y permiten
p p jestructurados porque adems plantean un modelo para la organizacin en el cual se organizan las instrucciones
aplican sobre estos datos y permiten la interaccin entre otros objetos similares o no. Permite mejor utilizacin de cdigo y facilita lapara que se ejecuten de forma
secuencial, esto es, evitando saltos.
Fortran, C, Pascal
utilizacin de cdigo y facilita la comprensin de las aplicaciones .
Java, C++, Python
Lenguaje C++Lenguaje C++Clasificacin de los lenguajes de programacin
C i i d i iCriterio 4: EstandarizacinAlgunos lenguajes son estandarizados, otros no lo son y algunos otrosposeen un estndar informal.
Por qu es importante la estandarizacin?La estandarizacin garantiza que un programa escrito un lenguajeestndar se ejecute de la misma manera sin importar elestndar se ejecute de la misma manera sin importar elcompilador /intrprete usado ni el sistema operativo.Los organismos internacionales que producen estndares paralenguajes de programacin son el ANSI (American National Stardardlenguajes de programacin son el ANSI (American National StardardInstitute) y la ISO (International Standard Organization).
C11 es el nombre informal para el estndar ISO/IEC 9899:2011l t l l j Cque reglamenta al lenguaje C.
C++11 es el nombre informal para el estndar ISO/IEC 14882:2011que reglamenta al lenguaje C++.
Lenguaje C++Lenguaje C++Caractersticas del C++
El lenguaje C++ es un lenguaje de propsito general que hasido empleado para el desarrollar gran cantidad de aplicacionescomplejas como sistemas operativos, compiladores, procesadores det t b d d t t t Ej ltexto, bases de datos entre otras. Ejemplos:
OS: Windows (95, 98, Me, 2000, XP, )Procesador de texto: Microsoft OfficeExploradores de internet: Internet Explorer Firefox GoogleExploradores de internet: Internet Explorer, Firefox, Google.Aplicaciones varias: Adobe, etc.
Es un lenguaje portable, es decir, ofrece la posibilidad de utilizarlot t d d i i i d dtanto en macroordenadores como en mini y microordenadores
Lenguaje C++Lenguaje C++Caractersticas del C++
Posibilita una programacin estructurada o modular, POO,programacin genrica y otros. Es un lenguaje compilado y estandarizado.g j p y Produce programas de cdigo compacto y eficiente Caractersticas de Alto nivel con rasgos presentes de bajo nivel,sin embargo para aplicaciones de bajo nivel se prefiere elEnsamblador o el Lenguaje C.
Desventajas del C++ Puede ser difcil de aprender a manejar todas sus caractersticas. Se requiere ms tiempo en conseguir el ejecutable, porque cadavez compila todo el fichero.p
Lenguaje C++Lenguaje C++Primer programa en C++
// Mi primer programa en C++ Comentarios de lnea (//). Se utilizan para explicar el uso o significado de
Programa Partes
#include Preprocesador: incluir una biblioteca estandar o de usuario. En esta caso
para explicar el uso o significado de un programa.
using namespace std;
estandar o de usuario. En esta caso la de en de entrada/salida.Uso del espacio de nombre std queincluye a todos los elementos de labibli t t d d C (
int main(){
biblioteca estandar de C++ (e.g. cout).
Definicin de la funcin main.E t l i f icout
Lenguaje C++Lenguaje C++Primer programa en C++
#include Incluir biblioteca estandar deentrada/salida (preprocesador)
using namespace std;
int main() {
Uso del espacio de nombrestd que incluye al objeto cout
Definicin de la funcin main() {cout
Lenguaje C++Lenguaje C++Directivas del Preprocesador de C++
Los programas en C++ (como los de C) pueden incluir otrosprogramas externos denominados bibliotecas mediante elPreprocesador y la directiva:
#include
Lenguaje C++Lenguaje C++Directivas del Preprocesador de C++
El Preprocesador se llama antes de compilar el programa y seencarga de interpretar todas las instrucciones que comiencen por elsmbolo de #smbolo de # .
Otra directiva muy comnmente utilizada del Preprocesador es#define La misma permite definir palabras en el proceso de#define. La misma permite definir palabras en el proceso decompilacin para posteriormente realizar compilaciones selectivas, osimplemente para reemplazar un valor numrico donde aparezcandichas palabras. Tambin es posible definir pseudo-funciones conp p pesta directiva.
Otras directivas tiles son las tres de compilacin condicional #if-#elif-#else-#endif, #ifdef-#else-#endif y #ifndef-#else-#endif.
Lenguaje C++Lenguaje C++Definiciones
Algoritmo
Es una secuencia ordenada de pasos que permitenl b l blalcanzar una meta obtener o resolver un problema.
No necesariamente son programas de computadora.
ProgramaPrograma
Es una secuencia de instrucciones ordenadas a ser ejecutadas poruna computadora. Un programa debe estar escrito en algn lenguajede programacin, y puede incluir uno o ms algoritmos
Lenguaje C++Lenguaje C++Definiciones
ConstanteUna constante es un valor que no puede ser alterado durante laejecucin de un programa Se crean anteponiendo la palabra constejecucin de un programa. Se crean anteponiendo la palabra consta una declaracin de variable.
VariableVariableLas variables son espacios reservados en la memoria que puedencambiar de contenido a lo largo de la ejecucin de un programa. Sedeclaran (crean) colocando el tipo de dato y su nombredeclaran (crean) colocando el tipo de dato y su nombre(identificador).
Lenguaje C++Lenguaje C++Tipos bsicos de datos
enteros reales
punteros
caracteres lgicos
vacio
complejos El soporte para datos complejos viene dado por la bibliotecaestndar de C++, en el archivo de cabecera complex.
TamaoSignoModificadores SignoAlmacenamiento
Proteccin
Lenguaje C++Lenguaje C++Tipos de datos
Modificadores
Tamaoshortlong
Signosignedunsigned
Modo de
auto (por defecto)->seg. pila
register->registros
Static >globales o montculoModo de
private
protected
AlmacenarStatic->globales o montculo
Extern->globales
mutable y volatile->globales
Proteccin(POO)
public
const
Lenguaje C++Lenguaje C++
Nombre Descripcin Tamao Rango
Tipos de datos Primitivos (bsicos)Nombre Descripcin Tamao Rango
char Carcter o entero pequeo 1byte signed: -128 a 127unsigned: 0 a 255
short int(short) Entero corto 2bytes signed: -32768 a 32767unsigned: 0 a 65535( ) y unsigned: 0 a 65535
int Nmero entero 4bytes signed: -2147483648 a 2147483647unsigned: 0 a 4294967295
i d 2147483648 2147483647long int (long) Nmero entero largo 4bytes signed: -2147483648 a 2147483647unsigned: 0 a 4294967295
bool Valor booleano 1byte true o falseN fl d / 3 4* ( / 38)float Nmero punto flotante de precisin simple 4bytes
+/- 3.4*e(+/- 38) (~7 dgitos de precisin)
double Nmero punto flotante de precisin doble 8bytes+/- 1.7*e(+/- 308) (~15 dgitos de precisin)
long double Nmero punto flotante de precisin doble extendida 8bytes+/- 1.7*e(+/- 308) (~15 dgitos de precisin)
wchar_t Caracteres largos 2 o 4 bytes 1 carcter largo
Lenguaje C++Lenguaje C++Declaracin de datos
P d tili d t C i l t di i tPara poder utilizar datos en C++ es necesario crearlos, a este procedimientose le denomina declaracin de datos.
En C++ los tipos bsicos de datos se declaran colocando el tipo seguido porEn C los tipos bsicos de datos se declaran colocando el tipo seguido poruna lista de nombres (o identificadores) de datos separada por comas.
Los identificadores son los nombres asignados a las variables, contantes,funciones nombres de espacio objetos y clases Estos pueden contenerfunciones, nombres de espacio, objetos y clases. Estos pueden contenercaracteres alfanumricos y el carcter de piso _ (no se permiten caracteresespeciales). Adems, los identificadores no pueden coincidir con las palabrasreservadas del lenguaje.
tipo_de_dato nombre1 [, nombre2, nombre 3,]g j
Lenguaje C++Lenguaje C++Tipos de datos
Existen diferentes tamaos de nmeros enteros que, segn el compilador y
Enteros
Existen diferentes tamaos de nmeros enteros que, segn el compilador yla plataforma de hardware, pueden tener desde 1 byte hasta 8 bytes
Lenguaje C++Lenguaje C++Tipos de datos
Enterosint a1; // Entero de 4 Bytes con signoint a2=50; // Declaracin e inicializacin de un entero de 4 Bytesint a2=50; // Declaracin e inicializacin de un entero de 4 Bytes.unsigned int a3; // Enteros de 4 Bytes sin signosigned long a4; /* Enteros de 4 Bytes con signo. Puede omitirse el
difi d i d */modificador signed */signed long long a5 = 10000000; // Enteros de 8 Bytes con signoconst int radio = 20; /* Constantes creadas por el compilador */#define K 20 /* Constantes creadas por el preprocesador */bool condicion = false; // Declara una variable booleana y le asigna falso.
Lenguaje C++Lenguaje C++Tipos de datos
Llamados tambin punto flotantes, ya que utilizan un sistema de
Reales
representacin basado en la tcnica de punto flotante, que permite operarcon nmeros reales de diversas magnitudes, mediante un nmero decimalllamado mantisa y un exponente que indica el orden de magnitud.
Estndar IEEE 754 Precisin simple (4 Bytes)[ 1 bit-signo | 8 bits-exponente | 23 bits-mantisa ]Precisin double (8 Bytes) Precisin double (8 Bytes)[ 1 bit-signo | 11 bits-exponente | 52 bits-mantisa ]
Precisin double extendida (10 Bytes)[ 1 bit-signo | 1 bit-parte entera | 15 bits-exponente | 63 bits-mantisa ][ g | p | p | ]
No soportado por todos los compiladores y sistemas operativos
Lenguaje C++Lenguaje C++Tipos de datos
El tipo de dato punto flotante en lenguaje C++ slo tiene dos
Reales
tamaos: float y double, que son 4 bytes y 8 bytes respectivamente. Seles puede utilizar tanto para representar nmeros decimales, como pararepresentar nmeros enteros con un orden de magnitud muy grande.
flfloat a;double a = 1e23;double a = 3.1416;float a = 4e-9;double a = -78;const double pi = 3.141516927;
Lenguaje C++Lenguaje C++Tipos de datos
Los caracteres se representan utilizando el tipo char, que tiene slo 1 bytede tamao. Este tipo se utiliza para representar los 255 caracteres de la
Caracteres (char)
de tamao. Este tipo se utiliza para representar los 255 caracteres de latabla de caracteres ASCII (del ingls American Standard Code forInformation Interchange Cdigo Estndar para el Intercambio deInformacin ). El tipo char es tambin un tipo entero, ya que puede tomar
l d 0 255 E t t d tibl l ISO/IEC 10646valores de 0 a 255. Este estndar es compatible con el ISO/IEC 10646creado por el ISO Working Group, que define el un conjunto decaracteres universales en octetos.
#include #include int main() {
char a = 's';char A = a;
char c;std::cin>>c ;std::cout
Lenguaje C++Lenguaje C++Tipos de datos
Caracteres
Lenguaje C++Lenguaje C++Tipos de datos
Caracteres
Lenguaje C++Lenguaje C++Tipos de datos
Caracteres
Lenguaje C++Lenguaje C++Tipos de datos
Al igual que los datos de tipo char son datos enteros de 2 4 Bytes, quepermiten almacenar caracteres de tipo UNICODE que tambin es
Caracteres Anchos (wchar_t)
p p qcompatible con el estndar ISO/IEC 10646 y otros estndares.El estndar UNICODE permite almacenar los caracteres en 8, 16 y 32 bits.El estndar UNICODE permite representar los caracteres y grafemas dediferentes lenguas adems de sus signos diacrticos caracteres dediferentes lenguas, adems de sus signos diacrticos, caracteres depuntuacin, ideogramas, caracteres silbicos, caracteres de control y otros .
#include int main() {() {
wchar_t aw= 's';wchar_t a2w= L's'; char c;std::wcout
Lenguaje C++Lenguaje C++Tipos de datos
Caracteres Anchos (wchar_t): tabla UNICODE
Lenguaje C++Lenguaje C++Tipos de datos
En C++ todas las variables deben ser declaradas antes de su uso
Declaraciones
En C++ todas las variables deben ser declaradas antes de su uso.Una declaracin especifica un tipo y contiene una lista de una o msvariables (identificadores) de ese tipo.
int menor;
int menor, mayor, paso;char inicial, nombre[100];
int mayor;int paso;char inicial;;char nombre[100];
int i =0;i t li it i 1int limite=maximo+1;
Lenguaje C++Lenguaje C++Tipos de datos
Declaraciones de variables
Tipo_dato Nombre_variable
static long int cantidad;int importe, suma, total, media;char letra carac = A;char letra, carac = A ;flota precio = 500;
Declaraciones de constantesHay dos tipos de constantes en C++ las creadas por el compilador y las creadas por el preprocesador.
const long int maximo; // creada por el compiladorconst long int maximo; // creada por el compilador#define MAX 100 // creada por el preprocesador
Lenguaje C++Lenguaje C++Tipos de datos:Modificadores de tipo de almacenamiento
auto (por defecto): los datos creados dentro de funciones se almacenan
en el segmento de pila y su valor no se retiene entre llamadas.
register: almacena los datos en los registros del CPU, si es posible.
static: almacena los datos en el segmento de datos pero son visibles
l d t d l f i d dslo dentro de la funcin donde se crearon.
extern: indica al compilador que las variables globales y funciones no
estaticas pueden utilizarce desde otros archivos.p
mutable: indica que datos compuestos de tipo constante poseen
campos que pueden cambiar.
volatile: indican que la variable puede cambiar por fuentes externas de
software o hardware.
Lenguaje C++Lenguaje C++Tipos de datos
i lLiteralesRepresentan valores constantes naturales alfanumricas que permitenrepresentar distintos valores. Se utilizan para darle valores a las variables yconstantes.
// Literales enteros5, 6, -20 // decimales0113 // octales
// Literales de caracteres ASCIId, c, a
0113 // octales0x4b // hexadeciamales33u // entero sin signo33l // entero largo33ul // entero largo sin signo
// Literales de cadenas de caracteres// ASCIIHola Mundo!!!palabra
// Literales decimales3.14159 // double6.02e23 // 6.02 x 10^23 double1 6e-19L // 1 6 x 10^-19 long double
// Literales de cadenas UNICODELaLHola Mundo!!!
1.6e 19L // 1.6 x 10 19 long double6.02e23f // float
Lenguaje C++Lenguaje C++Tipos de datos
i ibilid d d l dVisibilidad de los datosEstablece desde donde son visibles los datos. La visibilidad es globalcuando los datos se declaran fuera de cualquier par de llaves {} de locontrario son locales. Observacin: los datos globales se inicializan en cero,mientras que los locales no.
#include using namespace std;int entero;char car=a;Variables globales Formas alternas para
int main() {unsigned int car=3;double simple (3.1415);Variables locales
asignar valores inicia-les a variables. La primera es una asignacin y la
cout
Lenguaje C++Lenguaje C++Tipos de datos
Tipo especial: void
Permite indicar de forma explcita que no existe ningn dato. El otro uso deeste tipo es para referirse a un puntero a un objeto de tipo desconocido.
void a; // error: a tiene que ser de tipo distinto a vaco.void g(); // La funcin g no devuelve datosvoid g(); // La funcin g no devuelve datos.void *p; // declaracin de un puntero a un dato de tipo desconocido.
Lenguaje C++Lenguaje C++Conversin entre tipos de datos
C i iConversin automtica:Cuando se operan con datos primitivos de diferentes tipos en una mismaexpresin, se determina cual es el dato de mayor jerarqua y todos losp , y j q ydems se convierten en este tipo. Las reglas de jerarqua se muestran acontinuacin:
int < unsigned < long int < unsigned long < float < double < long double
Conversin explcita:
int < unsigned < long int < unsigned long < float < double < long double
Note que los datos bool, char, short o enum se promueven a int.
Convierte explcitamente los datos de un tipo en otro sin atender a las reglasde conversin automticas. Las dos maneras clsicas de realizar esto son:
p
Alternativa 1: (tipo) expresin // la expresin se convierte al tipo entre parntesisAlternativa 2: Tipo(expresin) // igual que antes, pero parecido a una llama de
// funcin.
Lenguaje C++Lenguaje C++Palabras reservadas del C++
Se pueden utilizar para los nombres de variables cualquier combinacindeseada de palabras, excepto las 63 siguientes que estn reservadas parauso exclusivo del lenguaje:
asm auto bool break casecatch char class const const_castcontinue default delete do doubled i t l li it tdynamic_cast else enum explicit exportextern false float for friendgoto if inline int longmutable namespace new operator privatep p pprotected public register reinterpret_cast returnshort signed sizeof static static_caststruct switch template this throwtrue try typedef typeid typenametrue try typedef typeid typenameunion unsigned using virtual voidvolatile wchar_t while
Lenguaje C++Lenguaje C++Operadores de entrada/salida
Las operaciones de entrada y salida no estn propiamente definidas por ellenguaje C++, sin embargo las necesidades de interaccin con el mundoexternos son notables.
P b i l i i t d t d lid d d t lPara cubrir los requerimientos de entrada y salida de datos, se recurre aluso de bibliotecas, entre las cuales la principal es: iostream.h
Salida (cout): permite imprimir a la salida por defecto, el monitor.Utiliza el operador
Lenguaje C++Lenguaje C++Operadores de entrada/salida
Escritura: secuencias de escape para representar caracteresespeciales.
#include using namespace std;g p ;
int main() {cout
Lenguaje C++Lenguaje C++Operadores de entrada/salida
Entrada (cin): permite leer de la entrada por defecto, el teclado.Utiliza el operador >> para indicar que el flujo de datos se dirige a la variable que almacenar el valor ledo del teclado.cin espera hasta que se presione la tecla enter para leer los datoscin espera hasta que se presione la tecla enter para leer los datos.
int edad;double peso, altura;char letra cad[101] cadena1[101];char letra, cad[101], cadena1[101];string cadena2;cin >> edad;cin >> peso >> altura;
// Lectura de cadenas de caracteres.cin >> letra; // lee un carcter ASCII.cin >> cad; // lee una palabra.cin.getline(cadena1,100); /* lee una cadena de caracteres de hasta 100
100 caracteres */100 caracteres /getline(cin, cadena2); // lee una cadena utilizando la biblioteca string.h
Lenguaje C++Lenguaje C++Operadores de entrada/salida
Conversin de cadenas a valores numricos: la conversin de cadenasConversin de cadenas a valores numricos: la conversin de cadenasa valores numricos se puede realiza tambin con la bibliotecasstream.h (stringstream) , como se muestra en el siguiente ejemplo.
#include #include #include using namespace std;int main () {string mystr;float price=0;int quantity=0;cout > price;cout > quantity;cout
Lenguaje C++Lenguaje C++Operadores de entrada/salida
El manejo de archivos para la lectura y escritura se realiza medianteotro conjunto de bibliotecas estndares referidas a continuacin:
ofstream: contiene mtodos (funciones) para escribir en archivos. ifstream: contine mtodos para leer de archivos.f t ti t d l ibi d hifstream: contiene mtodos para leer y escribir de archivos.
En general solamente se utiliza la biblioteca fstream.h para el manejo dearchivos ya que combina las funciones de entrada y salidaarchivos, ya que combina las funciones de entrada y salida.
Lenguaje C++Lenguaje C++Funciones
E i d di i d di b jEs una seccin de cdigo independiente, con nombre, que ejecuta una
tarea especfica y puede o no devolver un valor al programa que la llam.
Las funciones dividen tareas grandes de computacin en
varias pequeas, ocultando la manera como realizan su
t Ad it tili l di d ll dtarea. Adems, permiten reutilizar el cdigo desarrollado
por otros de forma modular.
Sencillez Claridad Eficiencia
Nota: todos los programas en C++ poseen una funcin principal denominada main donde se inicia la ejecucin del programa.
Lenguaje C++Lenguaje C++Funciones
Existen tres operaciones que se requieren para utilizar las funciones:
1. Definicin: es donde se indica como se denomina la funcin
(denominado prototipo de la funcin) y la manera en la que realiza su(denominado prototipo de la funcin) y la manera en la que realiza su
trabajo (cuerpo de la funcin).
2. Declaracin: indica como se denomina la funcin y las variables de
entrada y salida (prototipo). Se requiere declarar las funciones antes de
utilizarlas.
3 Ll d f i ll ili d b l3. Llamado: para usar una funcin se llama utilizando su nombre y los
parmetros o variables de entrada (parte del prototipo).
Partes del prototipo de una funcin:
tipo_retorno nombre_de_la_funcin (paramtro1, paramtro2,...)
Partes del prototipo de una funcin:
Lenguaje C++Lenguaje C++Funciones: prototipo
Sin valor
Tipo de retorno: indica el TIPO de dato (valor) que devuelve lafuncin.
voidSin valor
Con valor
void
int , float , double , char , u otros tipo del
lenguaje o creados por el usuario.
Parmetros: establece los datos que recibe la funcin para poderrealizar su trabajo. Cada parmetro posee un TIPO y unidentificador.
void imprimir()
int factorial( int n )Tipo de retorno
Identificador o nombre de la funcin
int factorial( int n )
float promedio( int A, int B )
p
Parmetros
Lenguaje C++Lenguaje C++Funciones: definicin
Ejemplo: Hola mundo
#include using namespace std;
int main() {
cout
Lenguaje C++Lenguaje C++Funciones: declaracin y llamado
Ejemplo#include U i tdUsing namespace std;void holamundo();
int main()
Declaracin
int main(){
holamundo();return 0;;
}
void holamundo() Llamado{
cout
Lenguaje Lenguaje C++C++Funciones: ejemplo 1 de llamado a una funcin
j l#include
Ejemplo using namespace std;double promedio(int x, int y);
int main(void)int main(void){
double prom; int A=5,B=8;
di (A B)prom = promedio(A,B);cout
Lenguaje C++Lenguaje C++Funciones: ejemplo 2 ocultamiento de la informacin
#include using namespace std;
void sumar valor(int numero);void sumar_valor(int numero); int main(void){
int numero = 57;sumar_valor(numero);cout
Lenguaje C++Lenguaje C++Funciones y variables
Revisin de variables locales y globales
Los datos declarados dentro de una funcin solo son accesibles dentro deesta misma funcin y se les conocen como Variables Locales. Lasvariables locales se definen dentro de cada una de las funciones y sontotalmente distinta una de otra a pesar de poseer identificadores idnticos,p py no se puede utilizar fuera de esta.
Las Variables Globales son las que se definen fuera de cualquier funcinLas Variables Globales son las que se definen fuera de cualquier funcin,estas variables se pueden utilizar dentro de la funcin main() y dentro decualquier funcin creada por nosotros.
Lenguaje C++Lenguaje C++Funciones
Variables locales
#include using namespace std;using namespace std;int main(void){
funcion1(); f i 2()funcion2(); return 0;
}void funcion1() void funcion2()void funcion1(){
int dato = 53; cout
Lenguaje C++Lenguaje C++Funciones
Variables globales#include using namespace std;int variable_G = 99;void funcion();main(){
cout
Lenguaje C++Lenguaje C++Funciones: parmetros por defecto (opcional)
En C++ las funciones pueden recibir algunos parmetros y losdems pueden tener valores por defecto. Los parmetros pordefecto se especifican en el prototipo como muestra el siguiente
lejemplo.int incrementar (int valor, int incremento=1);int incrementar (int valor, int incremento) {
return (valor+incremento);}
Observacin: se requiere que todos los parmetros a la derecha del d f b lprimer parmetro por defecto tambin posean un valor por
defecto.
int sumar(int primer, int segundo=0, int tercero=0); VALIDO( p , g , );int sumar(int primer, int segundo=0, int tercero); INVALIDOint sumar(int primer, int segundo, int tercero=0); VALIDO
Lenguaje C++Lenguaje C++Funciones inline: (opcional)
Las funciones cortas que se llaman muchas veces y que poseenuna sola clausula de retorno (return) pueden definirse como en-lnea. Este tipo de funciones se ejecuta ms rpidamente que otrasd b d l l d d d l d ddebido a que el compilador copia su contenido en cada lugar dondese hubiese llamado la funcin, esto es, nunca se produce elllamado.
inline long cuadrado(long int num) {return (num*num);
}}
Lenguaje C++Lenguaje C++Funciones : sobrecarga de funciones (opcional)
Existen muchos funciones que realizan las mismas operacionessobre distintos tipos de datos (e.g. enteros, punto flotante, enterossin signo, etc) o con distinto nmero de parmetros. En estos
l l b l dcasos es conveniente utilizar el mismo nombre para las distintasfunciones que realizan la misma tarea sobre diferentes tipos dedatos, a esto se le denomina sobrecarga de funciones.
int maximo(int a, int b);int maximo (int a, int b, int c);float maximo (float a float b);float maximo (float a, float b);double maximo (double a, double b)
Observe que el compilador puede determinar la funcinsobrecargada a utilizar mediante el nmero y tipo de parmetrosque recibe.
Lenguaje C++Lenguaje C++Operadores
AritmticosLos operadores son smbolos que tienen un significado especifico y que le indican al procesador que operacin ha de realizar.
C++ incluye 5 operadores bsicos para operaciones aritmticas
p q p
Si los operandos son enteros el resultado es entero. Si alguno de ellos esdouble, float o long double el resultado ser flotante.
Un operador bsico para modificar una variable es el operador deasignacin =. Este operador le asigna el valor a la derecha del operadora la variable ubicada a la izquierda del mismo.
Lenguaje CLenguaje C++++Operadores
Aritmticos
Funciones de la librera :
double sin(valor);double cos(valor);double tan(valor);
double cosh(valor);double tanh(valor);double log10(valor);double tan(valor);
double asin(valor);double atan(valor);
double log10(valor);double log(valor);double ldexp(valor1,valor2);
double acos(valor);double sinh(valor);
double pow(valor);double sqrt(valor);
Nota: cmath contiene la biblioteca de funciones matemticas en C++.
Lenguaje C++Lenguaje C++Operadores
Aritmticos
Las expresiones matemticas se evalan de izquierda a derecha Es recomendable utilizar parntesis para eliminar interpretacioneserrneas y posibles ambiguedades
Si ti
1i i
Signo negativo -Incremento ++Decremento --
Casos particulares i
Lenguaje C++Lenguaje C++Operadores
Relacionales
Lgicos
Lenguaje C++Lenguaje C++Operadores
De bits: slo aplica a datos enteros y caracteres con o sin signo.Los datos punto flotante arrojan errores de compilacin.
Operador Nombre Significado EjemploOperador Nombre Significado Ejemplo
& AND AND a nivel de bits p & 255
| OR OR a nivel de bits s | 125
^ XOR XOR a nivel de bits y ^ 44
~ NOT Negacin de bits ~n
Lenguaje C++Lenguaje C++Operadores
Otros
Coma (,): a = (b=3 b+2); // b=3 y a=5Coma (,) : a = (b=3, b+2); // b=3 y a=5
Tamao de dato sizeof: a = sizeof(int a); // a=4
D i i ? ? l d d l f lDesicin ? : expr ? valor_verdadero : valor_falso
Conversin de tipo: float a = 3.1415;float a 3.1415;int b = (int) a; int b = int(a) // convierte el dato decimal en entero
Lenguaje C++Lenguaje C++Operadores: precedencia
Nivel Operador Descripcin Orden1 :: Scope Izq. a der.2 () [] . -> ++ -- conversin de tipo Postfix Izq. a der.() [] p q
3++ -- ~ ! sizeof new delete unarios (prefijo)
Der. a izq.* & punteros+ - Signo
4 (type) Tipo Der. a izq.5 .* ->* Miembro de puntero Izq. a der.6 * / % + - Aritmticos Izq. a der.7 > < > = == != Relacional Izq. a der.q8 & ^ | && || De bits Izq. a der.9 ?: Conditional Der. a izq.10 = *= /= %= += -= >>=
Lenguaje C++Lenguaje C++Estructuras condicionales
if else else ifEste conjunto de proposiciones se utilizan paraexpresar decisiones Permite realizar una preguntaexpresar decisiones. Permite realizar una preguntadonde la posible respuesta solo puede ser verdadera ofalsa.
"si se cumple la condicin, haz esto, y sino, haz esto otro"
Lenguaje C++Lenguaje C++Estructuras condicionales
if else else if
if (condicin) if (nota>=10)if (condicin)sentencia;
if (nota>=10)cout =10)t A b d sentencia1;
elsesentencia2;
cout
Lenguaje C++Lenguaje C++Estructuras condicionales
if else else if
if (condicin){{
sentencia;sentencia; La indentacin (los espacios al comienzo de
l l )}else{
sentencia;
las lneas) no es necesaria, pero ayuda a la claridad del cdigo
sentencia;sentencia;
}
Lenguaje C++Lenguaje C++Estructuras condicionales
if else if else
if (condicin1) i 1
if (T>=100)caliente;
else if (T> 50)sentencia1;else if (condicin2)
sentencia2;
else if (T>=50)tibio;
else if (T>=0)felse if (condicin3)
sentencia3;
l
fresco;else
frio;else
sentencia ninguno de los anteriores;
calienteTibiofrescofro
100500
Lenguaje C++Lenguaje C++Estructuras condicionales
switch / case
C++ tiene incorporada una sentencia de bifurcacin mltiplell d it h C t t i l t d bllamada switch. Con esta sentencia, la computadora comprueba unavariable (enteras o de tipo char) sucesivamente frente a una lista deconstantes enteras. Despus de encontrar una coincidencia, la computadoraejecuta la sentencia o bloque de sentencias que se asocian con la constante
Lenguaje C++Lenguaje C++Estructuras condicionales
switch / case
switch(mes)switch(mes){
case 1:enero;b kbreak;
case 2:febrero;break;break;
default:error;break;
break;}
Lenguaje C++Lenguaje C++Estructuras cclicas
whileEl bucle while sirve para ejecutar cdigo reiteradas veces. El uso de esta instruccin o de otras estructuras cclicas queda ade esta instruccin o de otras estructuras cclicas queda a discrecin del programador
while (expresion) {
sentenciasrelacin A>=B
sentencias} entero
constante
,1,5,1000...0
1
Lenguaje C++Lenguaje C++Estructuras cclicas
whileEjemplo: imprimir los nmeros del 1 al 10
#include using namespace std;
main() {int i=1;while (i
Lenguaje C++Lenguaje C++Estructuras cclicas
do whileRealiza la misma tarea que el while con la diferencia de que evala la condicin al final del ciclo.
#include using namespace std;
int main() {int i=1;do {do {
cout
Lenguaje C++Lenguaje C++Estructuras cclicas
forEsta instruccin cclica se halla presente en la mayora de los lenguajes de programacin estructurados y permite repetir unalenguajes de programacin estructurados, y permite repetir una instruccin o conjunto de instrucciones un nmero determinado de veces.
for (inicializacin; condicin de paro; paso) {
sentenciassentencias}
Lenguaje C++Lenguaje C++Estructuras cclicas
forEjemplo: imprimir la tabla de multiplicar del 2
#include using namespace std;main() {
int i; int tabla = 2; for (i=1;i
Lenguaje CLenguaje C++++Estructuras cclicas
forEjemplo: introducir una serie de nmeros en un arreglo
for(i=0;i
Lenguaje CLenguaje C++++Estructuras cclicas
Sentencias goto , break y continue
goto : realiza un salto a la etiqueta especificada (e g goto et1;)goto : realiza un salto a la etiqueta especificada (e.g. goto et1;)
break : interrumpe la ejecucin de una estructura cclica y continua en l llas instrucciones que le siguen.
continue : se salta el resto del ciclo actual y reinicia uno nuevo. No implica necesariamente la salida de la estructura cclica.
Lenguaje C++Lenguaje C++Arreglos
Los arreglos son una coleccin de variables del mismo tipo que seLos arreglos son una coleccin de variables del mismo tipo que se referencian utilizando un nombre comn.
En C++ la cantidad de elementos que podr contener un arreglo es fijo yEn C++ la cantidad de elementos que podr contener un arreglo es fijo yse define cuando se declara el arreglo.
Los ndices de los arreglos comienzan en cero (0) y terminan en el tamaod l l 1del arreglo menos 1.
Los arreglos declarados globalmente o como static se inicializan a cero,mientras que los locales no se inicializan.e t as que os oca es o se c a a
arreglo[0]
arreglo[1]
tipo_elemento nombre[tamao];
int N elementos
arreglo[n-1]
intchar
doublefloat
N elementos
Lenguaje C++Lenguaje C++Arreglos
int notas[40];
double vector[] = { -1 , 5 , 3 }; -1 5 3double vector[] { 1 , 5 , 3 }; 1
vector[0]
5
vector[1]
3
[ ]
vector[2]
int lista [10];lista[2] = 15; // sobrescribir elemento 3
num = lista[8]; // extraer elemento 9
C ifi l l it d l di d lC++ no verifica los lmites de los ndices, de manera que en el ejemplo anterior lista[19] es una operacin vlida aunque noexista el dato.
Lenguaje C++Lenguaje C++Arreglos
float tabla[20][30];
int arreglo[n][m];
arreglo[0][0] arreglo[0][m-1]
arreglo[1][0] arreglo[1][m-1]
n x m elementos
arreglo[n-1][1] arreglo[n-1][m-1]
Lenguaje C++Lenguaje C++Arreglos
float tabla[20][30][40];
Lenguaje C++Lenguaje C++Arreglos
Manejo de arreglos : introduccin de elementos
n = numero de elementos
-1 2 0 3 5 1 4 10 2 -2
vector[0] vector[9]
i t t [10] 10int vector[10], n=10;for(i=0 ; i
Lenguaje CLenguaje C++++Arreglos
Manejo de arreglos : suma
9
vector[0]
-1 2 0 3 5 1 4 10 2 -2 90vector
ii
vector[9]vector[0] vector[9]
suma=0;for(i=0 ; i
Lenguaje C++Lenguaje C++Arreglos
Manejo de arreglos : imprimir un arreglo
9
vector[0]
-1 2 0 3 5 1 4 10 2 -2 90vector
ii
vector[9]vector[0] vector[9]
for(i=0 ; i
Lenguaje C++Lenguaje C++Arreglos
Manejo de matrices : introduccin de elementos
a a a 11 12 121 22 2
m
m
a a aa a a
1 2
ij
n n nm
aa a a
for(i=0 ; i
Lenguaje CLenguaje C++++Arreglos
Manejo de matrices : suma por filas
11 12 1
21 22 2
ma a aa a a
1matriz [1][ ] sumfila[1]
m
jj
matriz [2][ ] sumfila[2]m
j 21 22 2mij
a a aa
1matriz [2][ ] sumfila[2]
jj
1 2n n nma a a
1matriz [ ][ ] sumfila[ ]
m
jn j n
n
1TOTAL sumfila[ ]
n
ii
Lenguaje C++Lenguaje C++Arreglos
Manejo de matrices : suma por filas
for(i=0 ; i
Lenguaje C++Lenguaje C++Arreglos
Manejo de matrices : suma por columnas
11 12 1a a a 11 12 121 22 2
m
m
a a aa a a
1 2
ij
n n nm
aa a a
1 2n n nm 1matriz [ ][1]
n
jj
TOTAL sumcol[ ]m
j 1 matriz [ ][ ]n
jj m
sumcol[1]j
1TOTAL sumcol[ ]
jj
1
sumcol[ ]j
m
Lenguaje C++Lenguaje C++Arreglos
Manejo de matrices : suma por columnas
for(j=0 ; j
Lenguaje CLenguaje C++++Tipos de datos derivados
EnumeracionesSon conjuntos de constantes enteras relacionadas que pueden tomar UNOd l ibl l i d l t d d fi i l C d d lde los posibles valores asignados al momento de definirla. Cada uno de losvalores especificados en la definicin de la unin es asignado un valorentero que puede ser especificado por el usuario. Si el valor entero no seespecifica entonces se asocian con las constantes enteras 0, 1, 2, 3, Las enumeraciones se definen con la palabra enum seguida del identificadordel tipo enumeracin y finalmente de una lista de items que constituyen laenumeracin.
enum identificador { enumerador1, enumerador2, numeradorN };
0 1 N
Lenguaje CLenguaje C++++Tipos de datos derivados
EnumeracionesOtras formas de crear enumeraciones se presentan a continuacin:
enum identificador { enumerador1=valor1, enumerador2=valor2, numeradorN=valorN };enum { enumerador1, enumerador2=valor2, numeradorN};
Algunos ejemplos de posibles enumeraciones siguen:
enum dia {lunes, martes, mircoles, jueves, viernes, sbado, domingo};
enum color {amarillo, azul=4, rojo, verde=1, morado};
enum genero {masculino, femenino, androgeno};
Lenguaje C++Lenguaje C++Tipos de datos derivados
EnumeracionesLa creacin de datos enumeracin requiere el uso del identificadorseguido del nombre de la variable. Opcionalmente, se puedeseguido del nombre de la variable. Opcionalmente, se puedecolocar antes del identificador la palabra reservada enum.
enum DiasSemanas {Domingo,Lunes,Martes,Miercoles,Jueves,Viernes,Sabado};int main() {int main() {
DiasSemanas dia = Domingo; // alternativamente DiasSemanas dia;int diaInt = dia;f (di I t D i di I t < S b d di I t++) {for (diaInt = Domingo; diaInt
Lenguaje CLenguaje C++++Tipos de datos derivados
Enumeraciones
#include
enum colores {negro = -1, blanco = 7, azul, rojo, cian, verde, naranja};
main(){
cout
Lenguaje C++Lenguaje C++Tipos de datos derivados
EstructurasUna estructura es una agrupacin de varios datos los cuales pueden ser deigual o de diferente naturaleza (tipo). Las estructuras deben ser declaradasal inicio del programa, antes del main()A diferencia de los arreglos, las estructuras nos permiten agrupar variosdatos, que mantengan algn tipo de relacin, aunque sean de distinto tipo,permitiendo manipularlos todos juntos, usando un mismo identificador, ocada uno por separadop p
struct tipo_estructura
{
ti i bl b i bl 1tipo_variable nombre_variable1; tipo_variable nombre_variable2;
};
Lenguaje C++Lenguaje C++Tipos de datos derivados
Estructuras
struct trabajador{
char nombre[20]; int edad;
Camposint edad;char puesto[10];
};
trabajador fijo; typedef struct trabajador;trabajador fijo;
Lenguaje C++Lenguaje C++Tipos de datos derivados
Estructuras
struct cd{
char artista[25];float precio;
Artista
precio
canciones
CD1
float precio;int canciones;
};
ca c o es
Artista
canciones
CD2typedef struct cd CD;CD CD1,CD2;
Artista
precio
CD2
Lenguaje C++Lenguaje C++Tipos de datos derivados
Estructuras
Artista=Rihannastruct cd {
h ti t [25] Artista=Rihanna
Precio=52.60
Canciones=12
char artista[25];float precio;int canciones;
} CD1;} ;cout > CD1.artista;cout > CD1.canciones;cout
Lenguaje CLenguaje C++++Tipos de datos derivados
Estructuras
struct par struct complejop{
int x;int y;
}
p j{
double real;double imaginario;
}}
typedef struct par punto ;punto P1,P2;
}
struct complejo A,B,C;
P1.x=5;P2.y=4;
C.real=A.real+B.real;
y ;P2=P1;
Lenguaje C++Lenguaje C++Tipos de datos derivados
Arreglo de Estructuras
struct persona p{
long cedula;char nombre[20];
};};
typedef struct persona empleado;
empleado profesor[200];profesor[i].nombre
empleado profesor[200];profesor[i].cedula
Observacin 1: es posible tener estructuras anidadas.Observacin 2: C++ admite declarar funciones dentro de las estructuras, a
tipo de dato se le denomina Clases y es uno de los elementos fundamentales de la programacin orientada a objeto.
Lenguaje C++Lenguaje C++Tipos de datos derivados
UnionesLa definicin de "unin" es similar a la de "estructura", La diferencia entre
las dos es que en una estructura, los miembros ocupan diferentes reas dela memoria, pero en una unin, los miembros ocupan la misma rea dememoria. La memoria total de la unin se define por el dato de mayortamao que exista dentro de la unin.Se puede acceder a sus campos pero no al mismo tiempo. Como ocupan lamisma rea de memoria, modificar uno equivale a modificar el valor delotro.
union nombre {
tipo variable campo1; p _ p ;tipo_variable campo2;
};
Lenguaje C++Lenguaje C++Tipos de datos derivados
Uniones
union palabra struct sistemap{
char mensajes[50];char ayudas[50];
}
{char mensajes[50];char ayudas[50];
}} }
palabra.mensajes = "Primer" sistema.mensajes = "Primer"
palabra.ayudas = Segundo" sistema.ayudas = Segundo"
DF1
Slide 103
DF1 Pensar en cambiar esta lamina o remodelarlaDavid Fernandez, 9/3/2013
Lenguaje C++Lenguaje C++Tipos de datos derivados
Uniones
Las uniones son usadas cuando se necesita que una variable tome
union u_tag{
valores de tipos diferentes. En el ejemplo siguiente:
int ival;float fval;char pval;
} uval;} uval;
la variable "uval" de tipo "u_tag" puede tomar valores:
"int" si se usa "uval.ival""fl t" i " l f l""float" si se usa "uval.fval""char *" si se usa "uval.pval"
Lenguaje C++Lenguaje C++Punteros
Memoria
Lenguaje C++Lenguaje C++Punteros
Memoria
Al declarar una variableestamos diciendo alestamos diciendo alordenador que reserve unaparte de la memoria RAMpara almacenarla
La variable def guardaLa variable def guardala direccin dondereside el grupo debytes de la variableabc
Lenguaje C++Lenguaje C++Punteros
Un puntero es una variable que permite almacenar direcciones de
Definicin
Un puntero es una variable que permite almacenar direcciones dememoria
Son muy usados en C y C++, en parte porque algunas veces es la nicay y , p p q gmanera de programar ciertos clculos, en parte porque usualmente seobtiene cdigo ms compacto y eficiente
Pueden producir fcilmente programas imposibles de
entender si se emplean sin precauciones
Lenguaje C++Lenguaje C++Punteros
Definicin
El gran secreto de C++ esta en el uso de los apuntadores
C++ usa los apuntadores en forma explicita y extensiva porque:
Es la nica forma de expresar algunos clculos. Se genera cdigo compacto y eficiente. Es una herramienta muy poderosa
Lenguaje C++Lenguaje C++Punteros
La declaracin de un puntero es inconfundible ya que su declaracini l t i f t l i i t
Declaracin y manejo
incluye uno o ms asteriscos y su formato es el siguiente:
El tipo del dato puede ser:puede ser: entero punto flotante booleano carcter punteroDato compuesto
Lenguaje C++Lenguaje C++Punteros
int *puntero; // Declara un puntero a una variable tipo int
Ejemplo
int *puntero; // Declara un puntero a una variable tipo intint var1; // Declara una variable tipo intint var2;
1 123456 // Al l l 123456var1 = 123456; // Almacena el valor 123456puntero = &var1; // Se almacena su direccin en punterocout
Lenguaje C++Lenguaje C++Punteros
Operadores
El operador & antepuesto al nombre de una variable retorna el valor dela direccin inicial de memoria donde el compilador almacen oalmacenar el valor de la variable. Para acceder al valor que se encuentraen la direccin de memoria apuntada por un puntero se debe"dereferenciar" el puntero utilizando al operador * delante del mismodereferenciar el puntero utilizando al operador * delante del mismo.
Por estos motivos se suele denominar a & eloperador de referencia y a * el operadoroperador de referencia y a el operadorde indireccin.
Lenguaje CLenguaje C++++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 11
yy CC0048CC0048 22
int *ip, *ip2;
ipip CC004CCC004C ip2ip2 CC0050CC0050
CC0054CC0054 z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 11
yy CC0048CC0048 22
int ip, ip2;ip = &x;
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0054CC0054
z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 11
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0054CC0054
z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 00
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;*ip = 0;
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0054CC0054
z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 00
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0044CC0044
ip2 = ip;
CC0054CC0054 z[0]z[0] CC0058CC0058 [ ][ ] z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 00
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0044CC0044
ip2 = ip; z[0] = *ip2;
CC0054CC0054 z[0]z[0] CC0058CC0058 00[ ][ ]
z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 00
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0058CC0058
ip2 = ip; z[0] = *ip2; ip2 = &z[0];
CC0054CC0054 z[0]z[0] CC0058CC0058 00[ ][ ]
z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 00
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0058CC0058
ip2 = ip; z[0] = *ip2; ip2 = &z[0];*ip2 = 7;
CC0054CC0054 z[0]z[0] CC0058CC0058 77
p ;
[ ][ ]
z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Ejemplo
EtiquetaEtiqueta DireccinDireccin ContenidoContenidoint x = 1, y = 2, z[10];int *ip *ip2;
xx CC0044CC0044 77
yy CC0048CC0048 11
int ip, ip2;ip = &x; y = *ip;*ip = 0; i 2 i
ipip CC004CCC004C CC0044CC0044
ip2ip2 CC0050CC0050 CC0058CC0058
ip2 = ip; z[0] = *ip2; ip2 = &z[0]; *ip2 = 7;
CC0054CC0054 z[0]z[0] CC0058CC0058 77
p ;*ip = *ip2
[ ][ ]
z[1]z[1] CC005CCC005C
Lenguaje C++Lenguaje C++Punteros
Aritmtica de punteros
La aritmtica de punteros se limita a suma (incremento), resta(d t ) i i i tili d t d(decremento), comparacin y asignacin utilizada con apuntadores.
char c; // suponga que se crea en 0x400
char* pc;p ;
short int a, *pa; // suponga que a se crea en 0x500
pc = &c; // pc ahora apunta a 0x400
pc pc + 1; // pc ahora apunta a 0x401pc = pc + 1; // pc ahora apunta a 0x401
pa = &a;
pa++; // pa contiene el valor 0x502
Lenguaje C++Lenguaje C++Punteros
Aritmtica de punteros
En un arreglo, sug ,nombre es unpuntero constante.Por lo tanto, elnombre del arreglonombre del arregloconoce donde estel primer elemento(primera variable) delgrupo.
El nombre del arreglo no es una variable, es una constante. g ,Sus elementos son las variables.
No se requiere & si se apunta al inicio de un arreglo
Lenguaje C++Lenguaje C++Punteros
Punteros y funcionesEn general, cuando C++ pasa argumentos a funciones los pasa por valor,es decir si el parmetro es modificado dentro de la funcin una vez quees decir, si el parmetro es modificado dentro de la funcin, una vez quetermina la funcin el valor pasado (original) de la variable permaneceinalterado.
Sin embargo, hay muchos casos que se quiere alterar el argumentopasado a la funcin y recibir el nuevo valor una vez que la funcin haterminado Para hacer lo anterior se debe usar una llamada porterminado. Para hacer lo anterior se debe usar una llamada porreferencia, que se realiza en C++ pasando un puntero al argumento.
Lenguaje C++Lenguaje C++Punteros
Punteros y funcionesPunteros y funcionesvoid intercambiar(a, b);main() {
int a = 1 b = 3;int a 1, b 3;cout
Lenguaje CLenguaje C++++Punteros
Arreglos de punteros
En C++ se pueden tener arreglos de apuntadores ya que, los apuntadores son variables
i t *di [7] d l d 7 t tint *dia[7] da: arreglo de 7 punteros a enteros
int *vector[]={ }vector: arreglo de n punteros aenteros definido por la cantidad deint vector[]={,,} enteros definido por la cantidad deelementos presentes en {}
int (*hora)[12] hora: puntero a un arreglo de 12 enteros( )[ ] p g
Lenguaje C++Lenguaje C++Punteros
Arreglos de punteros : ejemplo
Se desea ordenar las lneas de un texto de diferente longitud como semuestra en la figura. Escriba las lneas de cdigo que realizan estaoperacin.
SolSol
MaraMara
SolSol
LuisLuisMaraMara
LuisLuis
LuisLuis
MaraMara
Lenguaje C++Lenguaje C++Punteros
Arreglos de punteros : ejemplo
1.- Guardar todas las lneas en un arreglo de tipo char grande.2 Guardar los apuntadores en un arreglo diferente donde cada puntador2.- Guardar los apuntadores en un arreglo diferente donde cada puntadorapunta al primer carcter de cada lnea3. Comparar dos lneas usando la funcin de la biblioteca estndarstrcmp().
S lS l
4. Si dos lneas estn desacomodadas intercambiar los apuntadores (no eltexto).
p[0] p[0]SolSol
MaraMara
p[0]
p[1]
p[0]
p[1]
strcmp
LuisLuisp[2] p[2]