0% encontró este documento útil (0 votos)
10 vistas

C - Clase 2

Cargado por

Malik Saihara
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas

C - Clase 2

Cargado por

Malik Saihara
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 27

Principios y Herramientas

de Programación

Dra. Jessica Andrea Carballido


[email protected]

Dpto. de Ciencias e Ingeniería de la Computación


UNIVERSIDAD NACIONAL DEL SUR
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 1
Operadores de C
• Operadores básicos

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS)
Fuente: http://lsi.vc.ehu.es/pablogn/docencia/FdI/FdIc/labs/a1/htm/oper.html 2
Operadores abreviados de C
• Auto-operadores

Probar:
dato2=10;
Dato1=++dato2
Mostrar dato1, dato2
dato2=10
Dato1=dato2++
Puede usarse ++dato o dato++ Mostrar dato1, dato2
En ambos casos se incrementa “dato”
La semántica de esta operación cambia cuando se combina con una asignación.
Dra. Jessica //Andrea
Dato1=++dato2 Carballido
primero incremento dato2 y luego ese valor se asigna a Dato1
Dato1=dato2++
CONICET -//DCIC asigno dato2 a Dato1 y luego incremento dato2
(UNS) 3
Tipo de dato
Arreglos ESTRUCTURADO

• Un arreglo es un tipo de dato estructurado homogéneo cuyos


elementos son accedidos con un índice.
EL PRIMER ELEMENTO ESTA EN LA POSICION (INDICE) 0.
• Por ejemplo, la definición:
int A[10];
define un arreglo A de 10 componentes
llamadas A[0], A[1], …, A[9],
donde cada una puede contener un entero.

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 5
Indexación de arreglos
La asignación y recuperación de los valores
se hace mediante indexación de sus componentes.

Partiendo de la declaración de la variable A anterior, las


siguientes instrucciones modifican A como se muestra:
• A[2] = 37; A[7] = 12; A[9]=7;

37 12 7
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]

• A[1] = A[7]; A[3] = A[7]+A[9];


12 37 19 12 7
Dra. Jessica
A[0] A[1]Andrea
A[2]Carballido
A[3] A[4] A[5] A[6] A[7] A[8] A[9]
CONICET - DCIC (UNS) 6
Declaración e Inicialización de Arreglos

int v[ ] = {10, 3, 5, 2};


v es un arreglo de 4 enteros inicializado con 10, 3, 5 y 2.
int ar1[7] = {12, 13, 15};
ar1 es un arreglo de 7 elementos ar1[0]==12, ar1[1]==13,
ar1[2]==15, ar1[3]==0, …, ar1[6]==0.
float a[10];
a es un arreglo de 10 números reales (sin inicializar).
char arreglo1[4], arreglo2[10];
arreglo1 es un arreglo de 4 caracteres, arreglo2 de 10
caracteres (ambos sin inicializar).
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 8
Arreglos
Forma general para declararlos:

Tipo NOMBRE[cant]

Tipo de las componentes Cantidad de componentes

Nombre del dato

float arrR[100];
char arrCarac[20];
int a1[10], a2[20];
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 9
Manipulación de Arreglos

Suponga que se desea escribir un programa para:


ü leer un arreglo de 5 componentes desde el teclado,
y luego,
ü mostrar por pantalla el arreglo ingresado, sumar sus
componentes y mostrar el resultado.

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 10
Hay tres operaciones
bien diferenciadas que
podrían ser primitivas

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 11
Nueva versión
con primitivas

PRIMITIVAS

Los datos de tipos ESTRUCTURADOS


funcionan en el encabezado de las
primitvas como DATOS DE ENTRADA y
DATOS DE SALIDA a la VEZ.
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 12
Nueva versión
con primitivas

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 13
Se llama
“tARREGLOpeq”

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 14
NUMEROS ALEATORIOS
• stdlib.h
Cargar dos arreglos con
números aleatorios naturales
–srand() de hasta 2 dígitos.
Calcular el arreglo obtenido
–rand() de sumar elemento a
elemento los números
contenidos en la misma
posición de ambos arreglos.

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 15
Generamos el número
aleatorio de dos dígitos

Los datos de tipos ESTRUCTURADOS


funcionan en el encabezado de las
Dra. Jessica Andrea Carballido primitvas como DATOS DE ENTRADA y
DATOS DE SALIDA a la VEZ.
CONICET - DCIC (UNS) 16
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 17
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 18
Strings

• Un string es un arreglo de caracteres.


• Los strings A VECES se terminan internamente con
un caracter null è “\0”.
• Ejemplo: La cadena “Elefante” se representa en
memoria A VECES como:

E l e f a n t e \0

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 1919
Strings
• Declaración e inicialización
char s1[] = "Hello, world!";
/* En este ejemplo no necesito poner la dimensión porque el
compilador ASIGNA EL MAXIMO e inicializa a partir de la constante
con la que se ingresó. NO TERMINA EN “\0”

char s2[100]; scanf Para ingresar una palabra

/* Si no la inicializamos, como en este caso, debemos poner la


/* longitud máxima esperada
printf("Ingrese la cadena:\n"); La entrada se termina con un
scanf("%s", s2); espacio en blanco o un enter
Dra. Jessica Andrea Carballido
printf("La cadena es %s \n", s2);
CONICET - DCIC (UNS) 20
20
Strings
• Declaración e inicialización

fgets Para ingresar una línea


char s2[100];

fgets
printf("Ingrese la cadena:\n"); La entrada se termina con un
fgets(s2, 100, stdin); ENTER que se almacena junto
con la cadena. stdin significa
printf("La cadena es %s\n", s2); que lo lee de teclado.

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 21
21
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 22
FGETS:
La entrada se termina con un
ENTER que se almacena junto
con la cadena.

SCANF:
La entrada se termina con un
ENTER o un ESPACIO
Strings
• Declaración e inicialización
Definimos un NUEVO TIPO: tCadena

typedef char tCadena[100];


Declaramos variables de este tipo:
tCadena string1, string2;

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 24
24
Asignación
Strings
• Para cualquier operación que vayamos a llevar a cabo sobre
cadenas usaremos las funciones en las LIBRERIAS de C.
En este caso: string.h
No podemos asignar un string a otro usando el operador de
asignación.
#include <string.h> string1 = “PATO”;
string1 = string2;
typedef char tCadena[100];

tCadena string1 = "Hello, world! ", string2;
strcpy(string2, string1); /* a string2 le asignamos string1
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) https://es.wikipedia.org/wiki/String.h
25
25
Strings
No podemos comparar dos strings directamente con los
operadores de comparación.
tCadena string3 = "this is", string4 = "a test";
if (strcmp(string3, string4) == 0)
printf("strings are equal\n");
If (string3==string4)
else
printf("strings are different\n");
strcmp retorna 0 si son idénticas, un número negativo
si la 1ra es alfabéticamente menor que la 2da,
o un número positivo si la 1ra es mayor que la 2da.

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 26
26
Strings
Para concatenar dos strings:
tCadena string5 = "Hello, ", string6 = "world!";
printf("%s\n", string5);
strcat(string5, string6);
printf("%s\n", string5);
Se pegará el contenido de string6 al final de string5.
tCadena string7 = "abc";
len = strlen(string7); /* para obtener la longitud
printf("%d\n", len); /* muestra 3

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 27
27
¡No confundir strings (cadenas de caracteres) con caracteres!
#include <stdio.h>

int main()
{
char str[] = "Hola alumnos de PHP!";

char uncaracter = 'A';

printf(" El char es: %c\n El string es: %s\n\n", uncaracter, str);

uncaracter = "?"; // ES UN ERROR!! Convierte a entero y hace cualquier cosa. NO DA ERROR EL COMPILADOR
strcpy(str, “CHAU”); // RECUERDEN NO INTENTAR ASIGNAR DIRECTAMENTE
(solo se puede en la creación)
uncaracter=‘B’; // OK, USAR COMILLAS SIMPLES PARA CHAR!
return 0;
}

Dra. Jessica Andrea Carballido


CONICET - DCIC (UNS) 28
28
Dra. Jessica Andrea Carballido
CONICET - DCIC (UNS) 29

También podría gustarte