INTRODUCCI - PowerPoint PPT Presentation

1 / 65
About This Presentation
Title:

INTRODUCCI

Description:

Vectores o Arreglos Unidimensionales Tipos de Datos: Matrices Matrices o Arreglos Bidimensionales Tipos de Datos: Strings Strings: Vector de caracteres, que ... – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 66
Provided by: nva5
Category:

less

Transcript and Presenter's Notes

Title: INTRODUCCI


1
INTRODUCCIÓN AL LENGUAJE C
2
Entrada y Salida
  • En C la Entrada y Salida de datos se realiza a
    través de operaciones de flujos (streams).
  • Estos flujos están definidos en la librería
    iostream.h que deberá ser incluída en el programa.

3
Salida cout
  • cout corresponde al flujo de SALIDA.
  • Normalmente corresponde a la pantalla del
    usuario.
  • El operador de insercción, ltlt, inserta datos en
    el flujo cout. Por ejemplo

coutltlt Mensaje de prueba coutltlt
500ltlt600ltlt700 int i5, j10,m100 coutltlt "El
valor de i es"ltlti ltlt j ltlt m
4
Salida Formato
  • cout.setf(iosfixed) Imprime en formato punto
    fijo (scientific es el estándar)
  • cout.setf(iosshowpoint) Imprime mostrando el
    punto decimal.
  • cout.precision(n) Cantidad de decimales de
    precisión
  • cout.width(n) Espacios para mostrar un valor.
  • cout.setf(iosright) Justifica el texto a
    imprimir a la derecha. (left)

5
Entrada cin
  • Proporciona un flujo de entrada.
  • El operador de extracción gtgt, extrae valores del
    flujo y lo almacena en variables.
  • Normalmente el flujo de entrada es el teclado.
  • int numero1, numero2
  • cingtgtnumero1
  • cingtgtnumero2

6
Ingresar 2 edades y determinar quién es mayor
Ejercicio
include ltiostream.hgt void main() cout ltlt
"Ingrese su edad " int miEdad cin gtgt
miEdad cout ltlt "Ingrese la edad de un amigo
" int suEdad cin gtgt suEdad if
(miEdad lt suEdad) cout ltlt "Yo soy menor
que mi amigo \n " else if (miEdad gt
suEdad) cout ltlt "Mi amigo es menor
que yo \n " else cout ltlt
"Mi amigo y yo tenemos la misma edad \n "
7
Tipos de DatosELEMENTALES
8
Tipos de Datos Numéricos
Tipo Ejemplo Bytes Rango
char a 1 0..255
short -15 1 -128..127
int 1024 2 -32768..32767
long 262144 4 -2147483648..2147483637
float 10.5 4 3.410E-38.3.410E308
double 0.00045 8 1.710E-308..1.710E308
9
Punteros
  • Una variable que puede almacenar una dirección de
    memoria se llama puntero.
  • Una variable de tipo puntero puede guardar
    direcciones de variables de un tipo determinado
    punteros a int, double, char, etc.

10
Declaración de punteros
  • tipo nombre_variable
  • int i3, p,r // p y r son punteros a entero
  • double d3.3,q // q es un puntero a double
  • char c'a', t // t es un puntero a carácter
  • pi
  • rp
  • p q es un ERROR porque son punteros de
    diferente tipo.

11
Otras operaciones con punteros
  • cingtgtp
  • if (pr)
  • coutltlt"El valor de i es "ltltp
  • pp3
  • pp3

12
Mostrar una dirección
  • Es posible mostrar el una dirección como valor de
    una variable de tipo puntero, o la dirección de
    cualquier variable, en la pantalla utilizando un
    cout.
  • cout ltlt p ltlt p ltlt endl
  • cout ltlt n ltlt n ltlt endl
  • cout ltlt p ltlt p ltlt endl

13
Ejemplo Ilustrativo
1. int p, q, a5
2. pa
a
a
5
a
a
14
Ejemplo Ilustrativo
a
a
b
NOTA a,b,p,q variables locales automáticas
15
Ejemplo 1
  • void main()
  • int x, y, p, q
  • p x
  • p 5
  • q y
  • q 23
  • cout ltlt p ltlt " ltlt q ltlt endl
  • q p
  • p 35
  • cout ltlt p ltlt " ltlt q ltlt endl
  • q NULL
  • cout ltlt x ltlt " ltlt y ltlt endl

16
Ejemplo 2
  • void main()
  • int p, q, x, y
  • p x
  • p 14
  • q p
  • cout ltlt p ltlt " " ltlt q ltlt endl
  • q NULL
  • cout ltlt x ltlt " ltlt y ltlt endl

17
Ejemplo 3
  • void main()
  • int x, y, p, q
  • p x
  • p 12
  • q y
  • q 23
  • cout ltlt p ltlt" "ltltqltltendl
  • p q
  • cout ltlt p ltlt" "ltltqltltendl
  • q NULL
  • coutltltpltltendl
  • coutltltxltlt" "ltltyltltendl

18
Ejemplo 4
  • void main()
  • int x, y, p, q
  • p x
  • p 14
  • q p
  • if ( p q) coutltlt"Mensaje 1"
  • q y
  • if ( p q) coutltlt"Mensaje 2"
  • q 14
  • if (p q) coutltlt"Mensaje 3"
  • if (p q) coutltlt"Mensaje 4"

19
Tipos enumerados
  • enum Frutas Manzana, Pera, Guinda, Kiwi,
  • enum Color Rojo10, Verde, Azul
  • enum Raza Pastor, Cooker, Poodle, Setter,
    Collie

void main() Color cVerde if
(cVerde) coutltlt"Color VERDE"
20

Tipos de DatosESTRUCTURADOS
21
Tipos de Datos Arreglos
  • Permite definir variables estructuradas
    homogéneas.
  • Vectores o Arreglos Unidimensionales

int v10
int v1041,23,87,19,-9
int v41,23,87,19,-9,91,103,25,11,22
coutltltv3
22
Tipos de Datos Matrices
  • Matrices o Arreglos Bidimensionales

0 1 2
float a53 int x5333,21,47,
82,91,95,
50,72,45, 36,79,63,
53,60,74

33 21 47
82 91 95
50 72 45
36 79 63
53 60 74
0 1 2 3 4
coutltlta32
23
Tipos de Datos Strings
  • Strings Vector de caracteres, que termina con el
    caracter NULO '\0'

char s5 char s15'h','o','l','a','\0' char
s25"hola" char s3"hola"
typedef char String5 String s
24
Tipos de Datos Strings
  • La lectura de un String
  • Lee del flujo de entrada un string.
  • Deja para la siguiente lectura el '\n'
  • No reconoce el espacio inicial en las entradas

cingtgts
Ingresar Este es un ejemplo
i1 do cingtgts coutltltiltlt" "ltltsltltendl i w
hile (ilt5)
25
Tipos de Datos Strings
  • La lectura de un String

cin.getline(s, largo)
  • Lee del flujo de entrada un string de largo
    caracteres.
  • La lectura termina
  • Con la línea ('\n'), si la cantidad de caracteres
    es menor que largo.
  • Cuando se extraído la cantidad largo de
    caracteres, aunque NO haya terminado la línea.

26
Tipos de Datos Strings
  • La lectura de un String

i1 do cin.getline(s,20) coutltltiltlt"
"ltltsltltendl i while (ilt5)
27
Tipos de Datos Strings
  • Funciones de strings
  • strlen(string)
  • strcpy(destino,origen)
  • strcmp(string1, string2)
  • 0 Si string1 string2
  • 1 Si string1 gt string2
  • -1 Si string1 lt string2

28
Tipos de Datos Strings
  • include ltiostream.hgt
  • include ltstring.hgt
  • void main()
  • char x5
  • char y"Hola"
  • strcpy(x,y)
  • coutltlt"x"ltltxltltendl
  • coutltlt"y"ltltyltltendl

29
Tipos de Datos Strings
  • include ltiostream.hgt
  • include ltstring.hgt
  • void main()
  • char x
  • char y"Hola"
  • xnew charstrlen(y)1
  • cin.getline(x,20)
  • coutltlt"x"ltltxltltendl
  • coutltlt"y"ltltyltltendl

30
Tipos de Datos Strings
  • include ltiostream.hgt
  • include ltstring.hgt
  • void Copiar(char a, char b)
  • strcpy(a,b)
  • void main()
  • char x
  • char y"Hola"
  • xnew charstrlen(y)1
  • Copiar(x,y)
  • coutltlt"x"ltltxltltendl
  • coutltlt"y"ltltyltltendl

31
Tipos de Datos Strings
  • include ltiostream.hgt
  • include ltstring.hgt
  • void Copiar(char a, char b)
  • strcpy(a,b)
  • void main()
  • char x
  • char y"Hola"
  • xnew charstrlen(y)1
  • Copiar(x,y)
  • coutltlt"x"ltltxltltendl
  • coutltlt"y"ltltyltltendl

32
Tipos de Datos Strings
  • include ltiostream.hgt
  • include ltstring.hgt
  • char Mayor(char a, char b)
  • if (strcmp(a,b)gt0)
  • return a
  • return b
  • void main()
  • char x
  • char y"Hola"
  • xnew charstrlen(y)1
  • cin.getline(x,20)
  • coutltlt"El mayor "ltltMayor(x,y)

33
Tipos de Datos Estructuras
  • Constructor de tipos de dato que permite agrupar
    elementos de diversos tipos de datos como UNA
    variable.

RUT nom prom
struct int RUT char nom10 float prom
Persona Persona a
a
coutltlt a.prom
34
Tipos de Datos Estructuras
struct int hh int mm int ss Hora Hora
h, v10, p h.hh8 ph v3.hh
5 v7(p).hh cout ltltp-gthh ltlt h.hhltltv7.hh
35
Nuevos Tipos de Datos
typedef int Vector10 Vector v
typedef float Matriz53 Matriz a
typedef enum Boolean FALSE, TRUE enum Color
Rojo, Verde, Azul, Amarillo
typedef struct Persona char paterno10 char
materno10 char nombre10
36
Nuevos Tipos de Datos
typedef union Numero int i float f
Vector v // int v10 Boolean sw
FALSE Persona alumno Numero x
37
OBJETOS CONSTANTES
38
Objetos Constantes
  • Se definen mediante el prefijo const.
  • Estos objetos NO puede ser modificada por
    asignación.
  • Sólo se permite su inicialización.

const int x // error x debe ser inicializada x
7 // error x no puede ser
modificada por asignación const int z 3
cout ltlt z ltlt '\n'
39
FUNCIONES
40
Definición
  • Tipo de retorno Nombre ( Parámetros )
  • declaraciones locales
  • Instrucciones
  • Las funciones no se pueden anidar.
  • Todas las funciones son externas, se pueden
    llamar desde cualquier punto del programa.

41
Prototipo de funciones
include ltiostream.hgt void f1() void
f2(void) void main() f1() f2()
void f1() cout ltlt "Función sin argumentos
\n" void f2(void) cout ltlt "Función también
sin argumentos \n"
42
Tipos de retorno
  • Si la función no devuelve un valor int, se debe
    especificar el tipo de dato devuelto
  • char, double, float
  • También puede retornar un UN PUNTERO.
  • Puede no retornar valores (void).
  • Puede retornar una referencia (ALIAS)

lttipogt Nombre(parámetros)
43
Declaración (prototipo)
  • Tipo_de_retorno Nombre ( Parámetros )
  • Se pueden omitir los nombres de los parámetros y
    dejar solamente los tipos.
  • No es necesario declarar las funciones si las
    definimos antes de usarlas.

44
Variables locales y globales
  • Una variable que se declara fuera de las
    funciones es una variable global y puede ser
    utilizada dentro de todas las funciones del
    programa.
  • Una variable que se declara dentro de una función
    es una variable local y solamente puede ser
    utilizada dentro de dicha función. Al terminar la
    ejecución de la función desaparece.

45
Parámetros
  • Parámetros Formales
  • Son los que se escriben al definir y/o declarar
    la función.
  • Parámetros Actuales
  • Son los que se escriben al llamar la función.
    Argumentos.
  • Los parámeros actuales se usan para dar valor
    inicial a los parámetros formales o para recibir
    valores desde las rutinas.

46
Parámetros actuales
  • Los parámetros actuales pueden ser
  • Valores
  • Variables
  • Expresiones.
  • Ejemplo

total CalcArea(20, 4)
L 30 A12 total CalcArea(L,A2)
47
Formas de Parametrización
  • Parámetros por Valor
  • Al llamar a la función se copia valor del
    parámetro actual en el parámetro formal.
  • El parámetro formal se inicializa con el valor de
    parámetro actual.
  • La función trabaja con una copia, por lo tanto

No modifica el valor de la variable o parámetro
actual.
LLAMADA DEFINICIÓN
Ejemplo(a) Ejemplo(a1) Ejemplo(4) void Ejemplo(int x)
48
Formas de Parametrización
  • Parámetros por Referencia
  • Se pasa la dirección del parámetro actual al
    parámetro formal
  • El parámetro actual es ALIAS del parámetro formal
  • La función puede cambiar su valor.

LLAMADA DEFINICIÓN
Ejemplo(a) void Ejemplo(intx)
49
Ejemplo Por referencia
void Ejemplo(int a, int b) void main( ) int x
2, y 4 Ejemplo(x, y) coutltltxltlt
ltltyltltendl void Ejemplo (int a, int b) a
5 b 8
50
Ejemplo
  • Escriba una función que calcule el cuadrado y el
    cubo de un número entero.
  • Éstos resultados se DEBEN retornar como
    parámetros.

51
Ejemplos Prototipos
include ltiostream.hgt int cuadPorVal(int) void
cuadPorInd(int ) void cuadPorRef(int )
52
Ejemplos
void main() int x 2, y 3, z 4 cout ltlt
"Por valor x " ltlt cuadPorVal(x) ltlt '\n'
cuadPorInd(y) cout ltlt "Por indirección y
" ltlt y ltlt '\n' cuadPorRef(z) cout ltlt "Por
referencia z " ltlt z ltlt '\n'
53
Ejemplos
int cuadPorVal(int a) return a aa void
cuadPorInd(int b) b (b) (b) void
cuadPorRef(int c) c cc
54
Prototipos de funciones
include ltiostream.hgt void f1() void
f2(void) main() f1() f2() return 0 void
f1() cout ltlt "Función sin argumentos \n"
void f2(void) cout ltlt "Función también sin
argumentos \n"

55
Funciones en línea
  • La cláusula inline sugiere al compilador la
    generación de una copia del código de esa función
    "in situ" (cuando sea apropiado), a fin de
    evitar una llamada.
  • Esta sugerencia es generalmente acogida en el
    caso de funciones pequeñas.

56
Funciones inline
  • inline float cubo(float x)
  • return xxx
  • void main()
  • cout ltlt "Ingrese el largo del lado de un cubo
    "
  • float lado
  • cin gtgt lado
  • cout ltlt "Volumen del cubo de lado "
  • ltlt lado ltlt " es " ltlt cubo(lado) ltlt '\n'

57
Memoria Dinámica
int p p new int delete p int
qnew int(3) float tnew float(2,2)
delete q  
58
Ejemplo Ilustrativo
1. int p, q
2. pnew int
?
59
Ejemplo Ilustrativo
. 6. p new ( int)
?
85
60
Ejemplo Ilustrativo
8. delete q
9. delete q
?
p q
p q
9
?
?
61
Memoria Dinámica
typedef struct int num float
saldo Cuenta  Cuenta c cnew Cuenta
62
Memoria Dinámica
  int v v new int 100 // crea un arreglo
dinámico de 100 int delete v
// libera la memoria dinámica ocupada por v
63
Resolución de alcance
Operador
float x 1.23 void main() int x 7 cout ltlt
"x local "ltlt x ltltendl cout ltlt "x global
" ltlt x ltlt endl
64
Sobrecarga de funciones
Funciones con igual nombre pero se diferencian, a
lo menos, en uno de los siguientes puntos
  • El tipo de dato de la función
  • La lista de parámetros
  • Cantidad de parámetros
  • Tipo de datos de los parámetros

65
Sobrecarga de funciones
float cuadrado(int k) return kk float
cuadrado(float x) return xx
void main() cout ltlt "El cuadrado del entero 7 es
" ltlt cuadrado(7) cout ltlt "El cuadrado del
real 1.2 es " ltlt cuadrado(1.2)
Write a Comment
User Comments (0)
About PowerShow.com