Sie sind auf Seite 1von 35

UNIVERSIDAD DEL BÍO-BÍO

Algoritmos y Programación para Ingeniería Industrial

Unidad 3:
Programación en C++, aspectos básicos

Profesor: Fernando Mella Clark


Contenido
Search

Share

Start

Devices

C++ Settings

Text Text Text Text Text


¿por qué son útiles los comentarios en un código?

#include "stdafx.h"

int main()
{
// esto es una línea de comentario
/* estas son
varias
líneas
de comentario
*/
system("pause");
return 0;
}
Palabras reservadas (keywords)

Estas palabras tienen un significado definido para C++.


El programador no puede utilizarlos para identificar variables.
alignas default noexcept template
alignof delete not this
and do not_eq thread_local
and_eq double nullptr throw
asm dynamic_cast operator true
auto else or try
bitand enum or_eq typedef
bitor explicit private typeid
bool export protected typename
break extern public union
case false register unsigned
catch float reinterpret_cast using
char for return virtual
char16_t friend short void
char32_t goto signed volatile
class if sizeof wchar_t
compl inline static while
const int static_assert xor
constexpr long static_cast xor_eq
const_cast mutable struct override
continue namespace switch final
decltype new
Elementos básicos

#include "stdafx.h" //solo en VS


int main()
{
-Define variables-
-Lectura datos entrada-
-Ejecuta Algoritmo-
-Salida/Reporte-

system("pause");
return 0;
}

Sentencias:
cada instrucción de un programa
Contenido
Search

Share

Start

Devices

C++ Settings

int float char string double


Tipos de datos

numéricos enteros
• Primitivos (son los que están definidos dentro del numéricos reales 5 ≠ 5,0
lenguaje) lógico
carácter (cadena)

• Derivados (se forman a partir de los tipos primitivos)

Todas las variables de un programa deben de ser declaradas.


tipo de variable valor de la variable
Cuando se declara una variable se está indicando al
identificador
compilador el tipo de información que será almacenando
en esa variable.

int x = 10;
Las variables permiten almacenar datos (valor
de la variable). Declaración de variables

int y,z,w=50;
Un identificador debe comenzar con una letra o
con el guion bajo ( _ ).
Tipos de datos C++: numéricos enteros

Número de
Tipo de Dato Descripción Rango
bytes
short entero corto 2 -32768 a 32767
int entero 4 -2147483648 a +2147483647
long entero largo 4 -2147483648 a +2147483647
char carácter 1 -128 a 127

unsigned Más capacidad long long x;


Número de
Tipo de Dato Descripción Rango
bytes
unsigned short entero corto 2 0 a 65535
unsigned int entero 4 0 a 4294967295
unsigned long entero largo 4 0 a 4294967295
unsigned char carácter 1 0 a 255

Int y long tienen el mismo rango por las plataformas actuales


Tipos de datos C++: numéricos reales

decimales

Tipo de Dato Descripción Número de bytes Rango


± 3.4E-38 a ± 3.4E38
float Real 4

Real doble ± 1.7E-308 a ± 1.7E308


double 8
precisión
long double
Real doble largo 10 ± 3.4E-4932 a 1± .1E4932
Tipos de datos C++: otros

lógico
Tipo de Dato Descripción Número de bytes Rango
bool lógico 1 bits 0 o 1

carácter
Número de
Tipo de Dato Descripción Rango
bytes
char carácter 1 -128 a 127

otros
wchar_t (carácter unicode)
Tipos de datos C++: Declaración e Inicialización de Variables

• En cualquier lugar

• Las variables definidas en un ciclo #include "stdafx.h"


solo pueden ser usadas en el ciclo #include "iostream"

int _tmain()
{
• Ejemplo: int numero_entero1, numero_entero2;
float numero_real;

for( int i = 1 ; i<=10 ; i++ ) numero_entero1 = 10;


numero_entero2 = 30;
numero_real = 3.14;

system("pause");
Temas a tratar: return 0;
}

Variables locales /*
int numero_entero1=10, numero_entero2=20;
Variables globales float numero_real=3.14;
*/
• Comparación: >, >=, <, <=, ==, !=
• Resultado: 0 (falso) ó 1 (cierto).
void main ()
{
char c=64;
int i;
c=c-1;
i=c;
c=i;
i = ‘A’> ‘B’; Tabla ASCII: toma como
c=‘A’+35; valor del carácter la
posición
} en la tabla ASCII.
i=0 (falso)
void main ()
{
char a=0, b, c, d, e; b =0
c = 97
b = a; (la letra ‘a’ está en la posición
c = ‘a’; 97
d = ‘ab’; Error de la tabla ASCII)
e = ‘\n’;
}
Reglas de Operadores y expresiones

• - No es válido poner un operador seguido de otro, usar paréntesis


• (10 / -3 ⇒ 10 / (-3)).

• - Nunca debe omitirse el signo de multiplicación


• (2n ⇒ 2*n).

• - En las expresiones lógicas, la expresión puede ir precedida por el


operador ! (negación).

• - En las expresiones aritméticas debe haber consistencia de tipos.


Definición de constantes

• Asignar símbolos a valores y usar


los símbolos en el programa en
lugar de utilizar los números.
#include "iostream"// permite usar cout cin
#include "string"//permite usar string
• Se permite cualquier cantidad y tipo, using namespace std;// usarlo por defecto
que pueda ser declarada como una
const double PI = 3.1415926;
constante. const double FI = 1.6180339887498948482045868343656;
const int LUZ = 299792458; //m/s

• No se permitirá que su valor sea int main()


{ char spc = ' ';
modificado durante la ejecución del
cout << PI << spc << FI << spc << LUZ << endl;
programa. }
Contenido
Search

Share

Start

Devices

C++ Settings

cout cin ifstream ofstream


Entrada y salida de datos: teclado y pantalla

• Interacción con personas u otros


sistemas.
• Personalización.
• Muchas veces el usuario induce errores. #include "stdafx.h"
#include "iostream"
#include "string"
• Necesidad de mecanismos de control. using namespace std;

– Tipos de datos int main()


{

– Capacidad de la variable usada int a, b;


string texto1 = "Ingresa tu nombre";
string texto2 = "Ingrese dos numeros enteros para realizar la suma";
string nombre;
system("color 0A");
• Librería externa estándar cout << texto1 << endl;
cin >> nombre;
cout << texto2 << endl;
#include <iostream.h> cin >> a >> b;
cout << a << "+" << b << "=" << a+b << endl;
cout << "bye " << nombre << endl;

system("pause");
• cin >> // induce una detención del flujo, return 0;
}
solicitando al usuario que proporcione un
valor a través del teclado

• En C, printf() y scanf()
Entrada y salida de datos: teclado y pantalla

• Revisar el siguiente código

• Ingresar un nombre completo


#include "iostream"// permite usar cout cin
#include "string"//permite usar string
using namespace std;// usarlo por defecto
int main()
{
float a, b;// se definen dos varibles de tipo flotante
float c;// esto se puede hacer en la línea anterior
string nombre;
• caracteres especiales system("color 0A");// cambiamos color de la consola

Nueva línea: “\n” cout << "Ingresa tu nombre: ";// pregunta por pantalla el nombre (una cadena)
cin >> nombre;// se almacena el nombre ingresado en la variable nombre (solo uno)
Tab: “\t” //getline(cin, nombre); //con esta linea se puede usar el nombre completo (hay que
borrar la linea anterior)
cout << endl << endl;// dos lineas espaciadoras

cout << "Tu nombre es " << nombre << endl;// pregunta dos numeros

system("pause");// para poder ver la consola


return 0;// por defecto (una función debe retornar un valor, en este caso un int)
}
Entrada y salida de datos: teclado y pantalla

• Considerar consumo de recursos.


• Bien definida.
• Útil. #include "stdafx.h"
#include <iostream>
• Resumen. using namespace std;

• Estado del Algoritmo. int main()


{
cout << "Linea N1";

– Leyendo cout << "Linea N2";


cout << "Linea N3";

– Iterando cout << "Linea N4\n";


cout << "Linea N5"<<"\n";
cout << "Linea N6 "<<endl;
– Resolviendo cout << "Linea N7" << endl << "Linea N8" << endl << "Linea N9" << endl;

– Imprimiendo system("pause");
return 0;

– Pensando }

– Etc.
Contenido
Search

Share

Start

Devices

C++ Settings

i++ ++i && || %


Operadores

Operadores Lógicos
AND V F OR V F
V V F V V V
F F F F V F if (exp1 <= exp2)
if (exp1 >= exp2)
Not if (exp1 < exp2)
V F if (exp1 > exp2)
F V if (exp1 != exp2)
if (exp1 <= exp2 && exp3 >= exp4)
if (exp1 <= exp2 || exp3 >= exp4)
if (!(exp1 <= exp2))
Operadores Aritméticos
Suma (+) if (exp1 < exp2 < exp3)
Resta (-) if (exp1 < exp2 && exp2 < exp3)
Multiplicación (x)
División (/)
Módulo (%)

Operadores Relacionales
≤ < ≥ > = ≠
Operadores Unarios (++ --)

• Operador prefijo: precede al operando (--x, ++x).


• Operador sufijo: detrás del operando (x--, x++).
• Cuando estos operadores se usan en una
instrucción aislada tiene el mismo efecto:
• ++x; ⇔ x++;
• --x; ⇔ x--;
• Cuando se usan en una expresión:
• Operador prefijo: primero el decremento o
incremento y después se opera con el resultado.
• Operador sufijo: primero se evalúa la expresión y
después se realiza el decremento o incremento.
void main ()
{
int X=5, Y=5, K, M;
K = --X; K=4 x=4
M = Y--;
} M=5 Y=4
Operadores Reducidos

x = x + 10; Es equivalente a x += 10;


x = x – 10; Es equivalente a x -= 10;
Operadores

Operadores de Incremento y Decremento


n++ ↔ n=n+1
n-- ↔ n=n-1
#include "iostream" #include "iostream"
(se aplican sobre variables enteras) using namespace std; using namespace std;

int main() int main()


{ {
int i = 1; int A = 0;
¿cuál es la diferencia entre i++ y ++i ? while (i <= 3) int i;
cout << i++ << " ";
cout << endl << endl; for (i = 1; i <= 5; i++, cout << A <<
i = 1; " ")
while (i <= 3) A += i;
cout << ++i << " ";
Acumuladores cout << endl << endl; cout << endl << endl;
system("pause"); system("pause");
A += n ↔ A = A + n return 1; return 1;
} }
Contenido
Search

Share

Start

Devices

C++ Settings

if else switch
Bifurcaciones: sentencias condicionales

No es necesario incluir la sentencia


else.

#include "iostream"
Estructura selectiva o condicional. using namespace std;

int main()
{
int edad;
true false cout << "Ingrese edad: ";
cin >> edad;

if (edad >= 18) cout << "\nPuede pasar.\n\n";


else cout << "\nLo debe acompañar un mayor de edad.\n\n";

system("pause");
return 1;
}

: es una expresión booleana (usa


operadores lógicos y de comparación)
Bifurcaciones: sentencias condicionales múltiples

switch(expresion_de_control)
{
case constante_1: #include "stdafx.h"
#include "iostream"
sentencias_del_caso_1: using namespace std;
int main()
{ int x;
break; cout << "Ingrese el Menu deseado: ";
cin >> x;
case constante_2: switch (x)
{
sentencias_del_caso_2: case 1: cout << "Menu Normal:" << endl;
break;
case 2: cout << "Menu Hipocalorico" << endl;
break; case 3:
break;
cout << "Menu Hipercalorico" << endl;


break;
default:
cout << "Error";
}
case constante_n: cout << endl;
system("pause");
sentencias_del_caso_n: }
return 0;

break;
default:
sentencias_caso_default;
}
int edad;
printf(“Dime tu edad: ”);
scanf(“%d”,&edad);
if (edad>=18)
if (edad<=65)
{
printf(“Trabajador.\n”);
printf(“Solicitar los datos del contrato.\n”);
}
else // de quien es el else?
printf(“Jubilado.\n”);
Contenido
Search

Share

Start

Devices

C++ Settings

for while do
Estructuras repetitivas

While

true
false

Do-While

true
false

For

true false
Estructuras repetitivas: while

#include "stdafx.h"
#include "iostream"
using namespace std;

int main()
{
int i=1 , ACUM=0 , n ;

cout << "Ingresa un numero: ";


cin >> n; Ingresar n=0
while (i <= n)
{
true ACUM = ACUM + i;
i++;
}

false cout << endl << "La Suma es: " << ACUM << endl;
system("pause");
return 0;
}
Estructuras repetitivas: do-while

#include "stdafx.h"
#include "iostream"
using namespace std;

int main()
{
int i=1 , ACUM=0 , n ;

cout << "Ingresa un numero: ";


cin >> n; Ingresar n=0
do
{
ACUM = ACUM + i;
i++;
} while (i <= n);

cout << endl << "La Suma es: " << ACUM << endl;
true system("pause");
return 0;
}
false
Estructuras repetitivas: for

#include "stdafx.h"
#include "iostream"
using namespace std;

int main()
{
int ACUM=0 , n ;

cout << "Ingresa un numero: "; Ingresar n=0


cin >> n;

for (int i = 1; i <= n; i++) //puede tener más elementos


ACUM = ACUM + i;

true cout << endl << "La Suma es: " << ACUM << endl;
system("pause");
return 0;
}
false

Tarea: Calcular un factorial


Estructuras repetitivas: uso de break

• En algunas ocasiones es necesario


terminar un ciclo antes de que éste
termine de forma normal.
#include "iostream"
using namespace std;

• También funciona en Estructuras int main()


{int i = 0, j;
repetitivas Anidadas.
for (; i <= 10; i++)
{
for (j = 0; j <= 10; j++)
• Ver ejemplo. { printf("(%d,%d) ", i, j);
if (i + j >= 10) break;
}
cout << endl;
}
cout << endl << endl;
system("pause");
return 1;
}

Das könnte Ihnen auch gefallen