Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de...

23
Sede Regional Orán UNIVERSIDAD NACIONAL DE SALTA Programación TÉCNICO UNIVERSITARIO EN PROGRAMACIÓN 1 Programación Unidades 2 y 4 Resumen Teórico Sede Regional Orán UNIVERSIDAD NACIONAL DE SALTA Programación TÉCNICO UNIVERSITARIO EN PROGRAMACIÓN 2 El Lenguaje C (1) El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell. Es evolución de un lenguaje más antiguo: B (a su vez basado en BCPL). A su vez, hay otros lenguajes populares que derivan de él (como el C++) o se inspiran en él (como el JAVA). Aunque no fue estandarizado hasta 1988 (ANSI C) y en 1990 fue ratificado como estándar ISO. Sede Regional Orán UNIVERSIDAD NACIONAL DE SALTA Programación TÉCNICO UNIVERSITARIO EN PROGRAMACIÓN 3 El Lenguaje C (2) Es un lenguaje imperativo estructurado que posee estructuras de alto nivel, pero que también permite programación de bajo nivel. Inicialmente muy utilizado para desarrollar sistemas operativos. Por ejemplo, LINUX está desarrollado en C. Se ha usado de manera intensiva también en entornos científicos. Junto con el FORTRAN ha sido posiblemente el lenguaje de programación más popular. Sede Regional Orán UNIVERSIDAD NACIONAL DE SALTA Programación TÉCNICO UNIVERSITARIO EN PROGRAMACIÓN 4 El Lenguaje C (3) Algunas de sus características son: Pequeño: Sólo 32 palabras reservadas. De propósito general: Es aplicable a diversos tipos de problemas. Portable: Funciona en cualquier máquina. Conciso: Genera programas reducidos (compactos). Eficiente: En el uso de los recursos de la máquina. Modular: Permite la Programación Modular. Potente: Se utiliza en el desarrollo de software de base.

Transcript of Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de...

Page 1: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

1

Programación

Unidades 2 y 4Resumen Teórico

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

2

El Lenguaje C (1)• El C es un lenguaje de programación creado en 1972

por Dennis Ritchie en los Laboratorios Bell.

• Es evolución de un lenguaje más antiguo: B (a su vezbasado en BCPL). A su vez, hay otros lenguajespopulares que derivan de él (como el C++) o seinspiran en él (como el JAVA).

• Aunque no fue estandarizado hasta 1988 (ANSI C) y en1990 fue ratificado como estándar ISO.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

33

El Lenguaje C (2)• Es un lenguaje imperativo estructurado que posee

estructuras de alto nivel, pero que también permiteprogramación de bajo nivel.

• Inicialmente muy utilizado para desarrollar sistemasoperativos. Por ejemplo, LINUX está desarrollado en C.

• Se ha usado de manera intensiva también en entornoscientíficos. Junto con el FORTRAN ha sidoposiblemente el lenguaje de programación máspopular.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

4444

El Lenguaje C (3)• Algunas de sus características son:

Pequeño: Sólo 32 palabras reservadas.

De propósito general: Es aplicable a diversos tipos deproblemas.

Portable: Funciona en cualquier máquina.

Conciso: Genera programas reducidos (compactos).

Eficiente: En el uso de los recursos de la máquina.

Modular: Permite la Programación Modular.

Potente: Se utiliza en el desarrollo de software de base.

Page 2: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

5555

Historia del Lenguaje C• En 1964 se desarrolló el sistema operativo MULTICS,

en donde trabajaron Ken Thomson y Dennis Ritchie.

• En 1969 Thompson desarrolló el sistema operativoUNIX (en ensamblador). Luego lo reescribió en ellenguaje B (que aún dependía del hardware).

• En 1970 el lenguaje B fue revisado por Ritchie, quien loindependizó del hardware, obteniendo una nuevaversión al que denominó lenguaje C.

• En 1973 Thompson y Ritchie reescribieron casitotalmente (en un 95%) UNIX con este lenguaje.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

6

Genealogía del Lenguaje C

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

7

El Modelo de Compilación de C

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

88888

El Preprocesador (1)• El preprocesador del lenguaje C consiste en un sencillo

procesador de textos que, previamente a lacompilación de un programa, realiza funciones deinclusión de archivos, sustitución de macros einclusión condicional de textos. Todas las sentenciasdel preprocesador comienzan con el carácter numeral.

1. La inclusión de archivos se realiza con la sentencia:#include <archivo>

• De esta manera el preprocesador incluirá el contenidode un archivo dentro de un programa.

Page 3: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

999999

El Preprocesador (2)2. Sustitución de macros, definidos mediante la

sentencia:#define <macro> <texto>

• Todas la apariciones de <macro> serán reemplazadaspor el <texto>. La macro tiene la misma forma que unnombre de variable, mientras que el texto dereeemplazo es arbitrario. Por ejemplo:

#define PI 3.1416#define N 100#define repitesiempre for(;;)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

101010101010

Librerías del Lenguaje C• C es un lenguaje muy pequeño que no tiene, por

diseño, instrucciones especiales para muchas de lasoperaciones tradicionales, que otros lenguajes deprogramación sí las tienen ya incorporadas, tales comolas operaciones de entrada/salida, las funcionesmatemáticas, etc.

• En lugar de ello, todas las operaciones utilizadasfrecuentemente están "encapsuladas" en librerías (óbibliotecas).

• Es decir, las librerías son funciones que pueden serenlazadas opcionalmente, con código C compilado.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

1111

Estructura General de un Programa

#include <stdio.h>

main(){

printf("!Hola Mundo!\n");getch();

}

Librería para entrada y salida

Sentencia de salida

Espera una tecla

Función principal

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

12121212

Declaración de Variables• Las variables permiten almacenar valores de diferentes

tipos. Sus características son:

Nombre: un identificador válido. Tipo: int, float, double, char, etc. Valor: el valor almacenado.

• En C es necesario definir todas las variables que seutilicen, con la siguiente sintaxis: tipo var;

• Por ejemplo: int a, b, c; float r, s;

Page 4: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

13

Sensible a Mayúsculas/Minúsculas• C distingue entre mayúsculas y minúsculas (case

sensitive en inglés).

• Los identificadores Pepito, pepito y PEPITO son

diferentes.

• Todas las palabras reservadas del lenguaje van en

minúsculas.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

14

Comentarios• Existen dos formas de introducir comentarios:

1) Comentario de una línea:// Comentario de una línea

2) Comentario en una o más líneas:/* Comentario

de másde una línea

*/

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

15

• Son los nombres de las variables, constantes, tipos dedatos, funciones, etc.

• No tienen una longitud máxima, pero sólo son válidoslos primeros 32 caracteres.

• El primer carácter del identificador debe ser: A–Z, a–z,_, $, y el resto debe ser: A – Z, a – z, _, $, 0 – 9.

• No se permiten vocales acentuadas ni la letra eñe (Ñ, ñ).

• No se permite utilizar palabras reservadas comoidentificadores.

Identificadores

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

16

La disposición de los elementos dentro del código es libre.

• Sentencias: Línea simple de código terminada en ;.x = y + z + w;

• Bloque de código: Conjunto de sentencias agrupadasentre llaves.

{x = x + y;c = c +1;

}

Lenguaje de Formato Libre

Page 5: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

17

• Una variable es un zona de memoria cuyos valores vana cambiar durante la ejecución del programa.

• Declaración:

<tipo> <identificador>; ó<tipo> <identificador>, <identificador>;

Por ejemplo:int a, b, c;

float x,y;

Variables

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

18

• Una constante es una zona de memoria cuyos valoresno varían durante la ejecución del programa.

• Las constantes simbólicas favorecen la realización demodificaciones en los programas (Modificabilidad).

• Declaración:

#define <identificador> = <valor>;

• Por ejemplo:#define PI = 3.1416;

Constantes Simbólicas

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

19

auto break case char

const continue default do

double else enum extern

float for goto if

int long register return

short signed sizeof static

struct switch typedef union

unsigned void volatile while

Palabras Reservadas

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

20

• Se utiliza el operador de asignación =:<variable> = <expresión>;

• La parte izquierda siempre debe ser una variable.

• La parte derecha puede ser un literal, una variable, unafunción o una combinación de todos.

• Se puede asignar un valor a una variable en el momentode declararla. Por ejemplo:

int s = 0;

Asignación de Variables

Page 6: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

21

Operadores (1)• Operadores unarios: + , –

• Operadores aritméticos: +, –, *, /, % (resto de ladivisión entera)

• Operadores de asignación: =, +=, *=, /=, %=. Porejemplo, <var> += <expresión> es equivalente a<var> = <var> + <expresión>.

• Por ejemplo:x += 3; x = x + 3;

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

2222

• Operadores incrementales: ++, ––

Precediendo a la variable: ++<var> , --<var> Siguiendo a la variable: <var>++ , <var>--

Por ejemplo:• {i=1;j=i++;} i=1;j=i;i=i+1; ≡ i=2,j=1

• {i=1;j=++i;} i=1;i=i+1;j=i; ≡ i=2,j=2

• {x = ((++z ) – (w--) % 100 ;} equivale a:{z = z+1; x= (z – w) % 100 ; w = w – 1;}

Operadores (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

23

• Operadores relacionales: == (igual), != (distinto),> (mayor que), < (menor que), >= (mayor ó igual que),<= (menor ó igual que).

• Operadores lógicos: && (AND) || (OR) ! (NOT) & (AND bit a bit) | (OR bit a bit)

Operadores (3)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

2424

Operadores (4)• Operadores condicional:

<exp1> ? <exp2> : <exp3>;

• Se evalúa como <exp2> si <exp1> es cierto ó como<exp2> en caso contrario. Por ejemplo:

x = (y > 10) ? z + 1 : 30;

equivale a:

si (y > 10) entonces x ← z + 1

sino x ← 30

Page 7: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

252525

Operadores (5)• Operadores de tamaño:

sizeof <tipo> ó sizeof(<expresión>)

• El operador sizeof informa del espacio (en bytes)que el <tipo> ó la <expresión> ocupan en lamemoria.

• Por ejemplo: sizeof(int) = 4 sizeof(2.5) = 8 sizeof("Pepito") = 7

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

2626

PRIORIDAD OPERADOR

Operadores sufijos (más alta) [] (argumentos)->

Operadores unarios ~ ! -- - (tipo) * & sizeof

Multiplicativos * / %

Aditivos + -

Desplazamiento << >>

Relacional < > <= >=

Igualdad == !=

AND (bits) &

OR exclusivo (bits) ^

OR inclusivo (bits) |

AND lógico &&

OR lógico ||

Condicional ? :

Asignación = += -= *= /= %=

Coma (más baja) ,

Jerarquía de los Operadores

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

2727

La biblioteca math.h contiene la definición de variasfunciones matemáticas útiles. Algunas de ellas son lassiguientes:

• ceil(x): Redondea al menor entero mayor ó igualque x.

• cos(x): Coseno de x.

• exp(x): ex.

• fabs(x): Valor absoluto de x.

Funciones Matemáticas (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

282828

• floor(x): Redondea al mayor entero menor ó igualque x.

• log(x): Logaritmo natural de x.

• log10(x): Logaritmo en base 10 de x.

• pow(x,y): xy.

• sin(x): Seno de x.

• sqrt(x): Raíz cuadrada de x.

• tan(x): Tangente de x.

Funciones Matemáticas (2)

Page 8: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

29

• La función scanf(), (de «scan" = leer y "f" = formato)disponible al incluir stdio.h, permite leer datos porteclado. La función scanf se usa de un modo similar aprintf: su primer argumento es una cadena decontrol con formatos que indican de qué tipo es el valorque vamos a leer, y a éste le siguen la dirección dememoria en donde se almacenará el valor leído.

• La forma general de utilizarla es la siguiente:

scanf(<cadena_de_formato>, &<variable>);

Entrada Estándar (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

30

• Observemos que la variable cuyo valor se lee porteclado va obligatoriamente precedida por el operador&: es así como se obtiene la dirección de memoria en laque se almacena el valor de la variable.

• Por ejemplo, la siguiente sentencia de lectura lee unvalor entero, y lo deposita en la dirección de memoriaen donde se encuentra la variable x :

scanf("%d", &x);

Entrada Estándar (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

3131

• Los caracteres de conversión que se utilizan para darleformato a los valores que se ingresan por teclado son:

Entrada Estándar (3)

Carácter de Conversión Tipo

c chard intf floatlf doubles cadena

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

3232

• La función printf() (de "print" = imprimir y "f" =formato) sirve para escribir datos en el dispositivo desalida estándar (generalmente la pantalla) con unformato determinado por el programador. La formageneral de utilizarla es la siguiente:

printf(<cadena_de_formato>, <variables>);

• El primer argumento especifica el modo en el que sedeben mostrar los datos que aparecen a continuación.

Salida Estándar (1)

Page 9: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

333333

• Esta cadena se compone de una serie de códigos deformato que indican a C qué tipo de datos son los quese desean imprimir. Todos los códigos estánprecedidos del símbolo de porcentaje (%). Por ejemplo,el código %d indica a la función que se desea escribir unnúmero de tipo int, y el código %f, que se deseaescribir un número real de tipo float. Por ejemplo:

printf("%d \t %d \n",a,b);

Salida Estándar (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

3434

• Algunos de los caracteres de conversión para darleformato a los valores que se muestran por teclado son:

Salida Estándar (3)

Carácter de Conversión Tipoc chard intf floats cadenao Octalx hexadecimal

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

35353535

• Si observamos la tabla de caracteres ASCII, veremosque algunos caracteres no son imprimibles. ¿Cómopodemos escribir un carácter que no se puede teclear?El lenguaje C permite dos formas de hacerlo:

1. La primera forma es utilizar el propio código ASCII.Simplemente se usa el número de código en octal,precedido por una diagonal invertida. Por ejemplo:

NUL = '\0'; pitido = '\07';

Secuencias de Escape (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

3636363636

2. La segunda forma que utiliza C para representarcaracteres “raros” es usar secuencias especiales desímbolos, denominadas “secuencias de escape”.Algunas de ellas son:

Secuencias de Escape (2)

Nueva Línea NL \n

Tabulación Horizontal HT \t

Diagonal Invertida \ \\Apóstrofe ‘ \’Comillas ‘’ \’’

Page 10: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

3737

• Las sentencias de control del flujo de ejecución,permiten tomar decisiones y realizar un procesorepetidas veces.

• Hay dos tipos principales de sentencias de control deflujo:

Condicionales: if, switch Iteración: for, while, do - while

• Otras sentencias que permiten interrumpir el flujonormal de ejecución son break y continue.

Estructuras de Control

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

38

La Sentencia if – else (1)

if (<expresión>){<sentencias_1;}

else {<sentencias_2>;}

• Por ejemplo:

if (x < min) x = min else i = i + 1;

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

39

La Sentencia if – else (2)• Por definición, el valor numérico de una expresión de

relación o lógica es 1 (uno) si la relación es Verdadera, y0 (cero) si la relación es Falsa.

• En un sentido amplio, el lenguaje C consideraverdadera una expresión si es distinta de 0 (cero), yfalsa en caso contrario.

• Por ejemplo:if (x--) y = a else y = b;

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

4040

La Sentencia switch (1)switch (<variable>){

case valor1: [<grupoSentencias1>;][break;]

...case valorN: [<grupoSentenciasN>;]

[break;]

[default: <grupoSentencias>;]}

Page 11: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

414141

La Sentencia switch (2)• Opciones de un menú:

1) Altas 2) Bajas 3) Modificaciones 4) Salir

switch (opcion){ case 1: altas(); break;case 2: bajas(); break;case 3: modificaciones(); break;case 4: default: salir();

}

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

42

• Permite la ejecución repetida un número de vecespredeterminado, de un grupo de sentencias.

La Sentencia for (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

4343

for (<inicializa>;<exprLógica>;actualiza>){

<grupoSentencias>;}

• <inicializa>: Asignación del valor inicial de lasvariables que intervienen en la expresión.

• <exprLógica>: Condición lógica (booleana).

• <actualiza>: Asignación del nuevo valor de lasvariables.

La Sentencia for (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

4444

• En <inicializa> y en <actualiza> pueden ir másde una asignación, separadas por comas.

• Por ejemplo, el siguiente código:for (i=0, j=10; i < j; i++, j -= 3)

printf("%d \t %d \n",i,j);

produce la siguiente salida:

0 101 72 4

La Sentencia for (3)

Page 12: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

45

• El grupo de sentencias se ejecuta mientras se cumpla laexpresión booleana.

while (<exprBooleana>){<grupoSentencias>;

}• Por ejemplo:

i = 0;while (i < 10){printf ("%d", i);i += 1;

}

La Sentencia while

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

4646

• El grupo de sentencias se ejecuta mientras se cumpla laexpresión booleana.

do {<grupoSentencias>;

} while (<exprLógica>)

• Por ejemplo:i = 0;do {

printf ("%d", i); i++;} while (i < 10);

La Sentencia do-while

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

4747

• La sentencia break provoca la terminación inmediatade un ciclo ó de una sentencia switch (quedando sinejecutar el resto de las sentencias).

• Es válida para for, while, do – while y switch.

• La sentencia continue provoca la terminacióninmediata de una iteración en un ciclo.

• Es válida para for, while y do – while.

Sentencias break y continue

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

48

Tipos de Datos Simples en C

Page 13: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

494949494949

Tipos de Datos NuméricosTipo Longitud Rango

unsigned int 16 bits 0 a 65.535

short int 16 bits -32.768 a 32.767

int 16 bits -32.768 a 32.767

unsigned long 32 bits 0 a 4.294.967,295

long 32 bits -2.147.483.648 a 2.147.483.647

float 32 bits 3,4*(10^-38) a 3,4*(10^+38)

double 64 bits 1,7*(10^-308) a 1,7*(10^+308)

long double 80 bits 3,4*(10^-4932) a 1,1*(10^+4932)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

505050

• En C un carácter es un valor entero representado por sucorrespondiente código ASCII, y encerrado entrecomillas.

• Para definir una variable de tipo carácter podemosescribir:

char c = ‘A’;

• Internamente, los caracteres se almacenan comonúmeros . Por ejemplo, la letra A se almacenainternamente como el número 65, la letra B es 66, etc.

Tipos de Datos Carácter (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

51515151515151

• Dado que el tipo char representa valores en el rango -128 a +I27 y se asocian con el código ASCII, Cproporciona el tipo unsigned char para representarvalores de 0 a 255 y así poder representar a todos loscaracteres ASCII.

• Como el tipo char es un subconjunto del tipo int, sepuede asignar un carácter a un entero.

• Para leer un carácter: getchar(c);

• Para escribir un carácter: putchar(c);

Tipos de Datos Carácter (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

52525252

• En C existe un tipo de dato especial, denominado void

("nada").

• Por ejemplo, se utilizan para definir funciones que nodevuelven un valor, ó que no necesitan argumentos.

• También se lo utiliza para definir punteros genéricos, esdecir, que apuntan a lugares de memoria pero no estánrelacionados con un tipo de dato específico.

El Tipo de Dato void

Page 14: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

53535353

• Una cadena de caracteres es un conjunto de caracteresque se almacena en localidades contiguas de memoria.En C se representa como un vector de caracteres, endonde cada elemento del vector representa un carácterde la cadena. Por ejemplo:

char nombre[7] = "Pepito";

• Toda cadena termina con el carácter nulo (‘\0’).

Tipos de Datos Cadena (1)

‘P’ ‘e’ ‘p’ ‘i’ ‘t’ ‘o’ ‘\0’

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

5454545454

• Leer una cadena del teclado: Leer una frase: gets(nombre); Leer una palabra: scanf("%s", nombre);

• Mostrar una cadena en pantalla: puts(nombre); printf("Nombre: %s \n", nombre);

• Asignar un valor a una cadena:strcpy(nombre, "Pepito");

Tipos de Datos Cadena (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

555555555555

• Arreglo de cadenas:#define LON_MAX 80

#define CAN_MAX 100

main(){

typedef char Cadena[LON_MAX];

typedef Cadena VectorCadenas[NRO_ELEMS];

VectorCadenas V; int i;

for(i = 0; i < NRO_ELEMS; i++){

printf("Cadena Nro %i", i); scanf("%s",V[i]);}

}

Tipos de Datos Cadena (3)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

5656

• Una enumeración es una lista de nombres que almacenanvalores enteros constantes. El primer nombre de la listatiene el valor 0, el siguiente 1, etc. La declaración adoptala forma siguiente:

enum <nombre_tipo> {<lista_de_identificadores>};

• Una vez hecha una definición como esta, se puedenemplear variables del tipo de esta enumeración, que sese declaran en de la siguiente manera:

enum <nombre_de_tipo> <var_1>, ..., <var_n>;

Tipos de Datos Enumerados (1)

Page 15: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

575757

• Por ejemplo:

main(){enum dias {Lu, Ma, Mi, Ju, Vi}; enum dias x, y, z;

x = Lu; y = Vi;for (z = x; z <= y; z++)

printf("z vale %d\n", z);}

Tipos de Datos Enumerados (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

585858

• Podemos dar un nombre nuevo a cualquier tipo de datosmediante typedef. La sintaxis es:

typedef <declaración>;

• En donde declaración tiene la forma de unadeclaración de variable, sólo que estamos definiendo unnuevo tipo de datos. Por ejemplo:typedef enum {Lu, Ma, Mi, Ju, Vi} dias;

• Y luego podemos declarar variables de este tipo:dias x, y, z;

Declaración de Nuevos Tipos de Datos

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

59

• La conversión de tipos se denomina "moldeo" (casting)y se realiza anteponiendo a la expresión a moldear, elnombre del tipo requerido entre paréntesis:

(<tipo>) <expresión>

• El conjunto de paréntesis y tipo recibe el nombre de"operador de moldeo" (cast). Por ejemplo, si n es unint, entonces: (double)n forzará al valor de n paraque la expresión tenga el tipo double, permaneciendoinalterable el valor que tiene en la memoria.

Conversión de Tipos

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

6060

Tipos de Datos Compuestos en C

Page 16: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

6161616161

• Un arreglo (array) una colección homogénea de datossimples ó compuestos, que se referencian con un nombrecomú, y cuyos elementos son accedidos mediante uníndice.

• Se utilizan los corchetes ([]) para declarar el arreglo ypara acceder a sus elementos. La sintaxis es:

<tipo> <variable>[<dimensión>];

• Por ejemplo:int V[100];

Arreglos (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

626262626262

• Los índices de un arreglo comienzan siempre en 0 (cero).

• Para acceder a los elementos de un array:V[6] = 9;

• Para recorrer un array:

for (i = 0; i<5; i++){V[i] = i;printf("V[%d] = %d \n", i, V[i]);

}

Arreglos (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

63636363636363

• En C todos los arreglos son unidimensionales.

• Si queremos tener arreglos multidimensionales (de másde una dimensión), necesitamos un conjunto de corchetespor cada una de ellas.

• Por ejemplo:

int X[10]; // 1 dimensiónint Y[10][20]; // 2 dimensionesint Z[10][50][100]; // 3 dimensiones

Arreglos (3)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

64646464

• Un registro ó estructura es una colección heterogénea dedatos simples ó compuestos, cuyos elementos sondenominados campos ó miembros. Por ejemplo, unalumno contiene una colección de datos diversos, comopor ejemplo, entre otros:

Número de Libreta: Un tipo entero largo. Carrera: Un tipo enumerado con los valores (TUP,

TIG, TEU, etc.). Fecha de Nacimiento: Una fecha también es del tipo

estructura: DD/MM/AAAA.

Estructuras (1)

Page 17: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

65

Estructuras (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

6666666666

• Es decir que el esquema de una estructura es la siguiente:

Estructuras (3)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

676767676767

• Siendo la sintaxis en el lenguaje C, para definir unaestructura la siguiente:

Estructuras (4)

struct <nombre>{

<tipo_1> <miembro_1>;

<tipo_2> <miembro_2>;

...

<tipo_N> <miembro_N>;

} <variables>;

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

68686868686868

• Por ejemplo:

struct nroComplejo{

int pteReal;

int pteImag;

} z;

• Y para acceder a cada uno de los miembros de laestructura anterior, utilizamos el operador punto:

z.pteReal = 1; z.pteIm = 0;

Estructuras (5)

Page 18: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

6969696969696969

• También podemos almacenar un conjunto de estructurasen un arreglo. Por ejemplo, sean las declaraciones:

typedef struct {

char nombre[30];

int nota;

} alumno;

alumno V[N]; char nroAux[5];

Estructuras (6)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

707070707070707070

• Entonces, para ingresar cada uno de los valores quetienen los elementos de las estructuras del arregloescribiremos:

for (i=0;i<N;i++){

gets(V[i].nombre);

gets(nroAux);

sscanf(nroAux,"%d",&V[i].nota);

}

Estructuras (7)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

71717171717171717171

• Con respecto al código anterior debemos hacer lasiguiente aclaración:

Es "peligroso" mezclar órdenes gets y scanf, porque sileemos un número con scanf, la pulsación de la teclade "Entrada" posterior queda almacenada en el bufferdel teclado, lo que puede provocar que despuésintentemos leer con gets un texto, pero sólo leamos esapulsación de la tecla "Entrada". Para evitarlo, losnúmeros los leeremos "en dos etapas": primero leeremosla cadena nroAux con gets y luego la convertiremos alnúmero nota con sscanf.

Estructuras (8)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

7272727272727272727272

• La función sscanf (string scanf) obtiene la entrada quese va a analizar, de una cadena de caracteres dada. Lasintaxis de dicha función es la siguiente:

sscanf(cadena, formato, &variable);

Estructuras (9)

Formato Lectura Ejemplo%d Como un entero 123%f Como un real 123.400%g Como un real 123.4

Page 19: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

73737373737373

• Es una estructura compuesta por bits, siendo la formageneral de declararla la siguiente:

Campos de Bits (1)

struct <nombre>{

<tipo_1> <miembro_1>: <longitud_1>;

<tipo_2> <miembro_2>: <longitud_2>;

...

<tipo_N> <miembro_N>: <longitud_N>

} <variables>;

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

74

• En donde:

tipo: Puede declararse como char, int, signed óunsigned.

longitud: Define la longitud en bits de cada campo,pudiendo variar entre 1 y el máximo número de bits, deacuerdo al tipo del campo. Por ejemplo, si es del tipochar, entonces podrá valer entre 1 y 8 bits. Y si lalongitud es 1, sólo podrá ser el campo del tipounsigned.

Campos de Bits (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

7575757575757575

• Por ejemplo:

Campos de Bits (3)

struct naipe{

unsigned valor: 4;

unsigned palo: 2;

}carta;

carta.valor = 10;

carta.palo = 3;

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

7676767676

• Una unión es una posición de memoria que escompartida por varias variables, que pueden ser de tiposdiferentes. Por ejemplo, en la siguiente declaración x esuna variable, que podrá alojar tanto un entero como uncarácter:

union IntChar{int num;

char car;

} x;

Uniones (1)

Page 20: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

77777777777777

• En la variable x, tanto el entero num como el carácter carcomparten la misma posición de memoria. Y elcompilador asigna el suficiente espacio de memoria, paraque se pueda almacenar al más grande de los miembrosespecificados. Y si escribimos la siguiente porción decódigo:x.num = 4427;printf("Int = %d – Char = %c \n", x.num, x.car);

x.car = ‘M’;printf("Int = %d – Char = %c \n", x.num, x.car);

Uniones (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

78787878787878

• Produciéndose como salida:

Int = 4427 ; Char = KInt = 4429 ; Char = M

• Recordemos que el tipo int ocupa dos bytes, y el charun byte; por lo tanto:

Uniones (3)

int = B1 B0 char = B0

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

7979797979797979

• Primeramente tenemos:

• Y a continuación:

Uniones (4)

B1 = 0 0 0 1 0 0 0 1

B0 = 0 1 0 0 1 0 1 1 = 75

B0 = 0 1 0 0 1 1 0 1 = 77

B1 = 0 0 0 1 0 0 0 1

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

8080808080808080

• Podemos usar las uniones con los campos de bits parapoder modificar una variable, tanto a nivel de los bytescomo a nivel de los bits. Por ejemplo:

union puerto{unsigned char valor;struct{

unsigned bit_0: 1;..................unsigned bit_7: 1;

};}byte;

Uniones (5)

Page 21: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

818181818181818181

• Hemos declarado una unión, que internamente contieneuna estructura anónima, porque no posee nombre.

• Entonces si queremos escribir un valor en byte,utilizamos la variable de la siguiente forma:

byte.valor = 0xFE;

• Y si queremos acceder a los bits de esa variable,escribiremos:

byte.bit_0 = 1;byte.bit_4 = byte.bit_7;

Uniones (6)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

828282828282

• Una variable del tipo puntero es aquella que almacenauna dirección de memoria en donde se almacena unvalor de un determinado tipo.

• Los punteros se se definen mediante la siguiente sintaxis:

<tipo> * <puntero>;

• Por ejemplo, int *p declara que p es una variable quealmacena una dirección de memoria, en donde se puedealmacenar un entero. Por lo tanto se dice que p"apunta" a una variable de tipo entero.

Punteros (1)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

83838383838383

• Los operadores asociados a punteros:

&: Devuelve la dirección que una variable tiene enmemoria (operador de dirección) . Por ejemplo:

& <variable>;

*: Devuelve el contenido que tiene una dirección dememoria (operador de indirección). Por ejemplo:

* <puntero>;

Punteros (2)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

8484848484848484

• La aritmética de punteros consiste básicamente en tratara los punteros como variables numéricas (que contienendirecciones), é incrementar ó disminuir estas variablespara acceder a las direcciones de memoria contiguas a ladirección original. Por ejemplo, si tenemos la declaracióndel siguiente puntero a una variable entera: char *p;

• Entonces la siguiente sentencia hace que el puntero papunte a la dirección de memoria contigua (posterior) :

p = p + 1;

• Cuando sumamos 1 a un puntero, el incremento seadecúa al tamaño en memoria de la variable apuntada.

Punteros (3)

Page 22: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

858585858585858585

• Existe una estrecha relación entre punteros y arreglos,tanto que pueden ser usados en forma casi indistinta.Esto es, una variable de tipo arreglo puede considerarsecomo un puntero al tipo del arreglo.

• Por ejemplo, sean las siguientes declaraciones:int V[N],*p;

• Entonces podemos hacer las siguientes asignaciones:p = V ó p = &V[0]

*(p + i) = valor ó V[i] = valor

Punteros (4)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

86868686868686868686

• Por ejemplo, sea el siguiente ciclo:for (i = 0; i < N; i++)

s = s + V[i];

• El mismo podría ser escrito también como:for (i = 0; i < N; i++)

s = s + *(V + i);

• Que es equivalente a:for (p = V; p < &V[N]; p++)

s = s + *p;

Punteros (5)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

87878787878787878787

• Así también, como una cadena de caracteres es unarreglo, podemos definir un puntero a una cadena decaracteres de la forma:

char *cadena;

• Por ejemplo, podemos escribir:char *nombre = "Pepito", *p;p = nombre;while (*p != '\0') p++;printf("Largo: %d", p - nombre);

Punteros (6)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

8888888888888888888888

• En el ejemplo, asignamos a la variable nombre ladirección de comienzo de la cadena de caracteres(Pepito). El compilador añade al final de ella elcarácter nulo, para poder detectar el final de la misma.

• Luego copiamos la dirección de inicio de la cadena en elpuntero p, y al incrementarlo en uno, vamos tomandocarácter por carácter, hasta llegar al carácter nulo.

• Siendo la diferencia p – nombre la longitud de lacadena.

Punteros (7)

Page 23: Resumen Teórico - Cátedra de Programación · El Lenguaje C (1) • El C es un lenguaje de programación creado en 1972 por Dennis Ritchie en los Laboratorios Bell.

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

898989898989898989898989

• Puesto que la sentencia while sólo comprueba si laexpresión:

*p != '\0'• es distinta de cero, en lugar de hacer la comparación

explícita se puede hacer ímplicitamente de la siguientemanera:

while (*p) p++;

• Y como ahora la expresión está formada únicamente por*p, podemos por lo tanto escribir finalmente:

while (*p++);printf("Largo: %d", p – nombre - 1);

Punteros (8)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

90909090909090909090909090

• También podemos tener punteros a estructuras. Porejemplo, supongamos que tenemos las siguientedeclaraciones:

typedef struct{int re, im;

}complejo;

complejo x, y, *z;

• El puntero z apunta a una estructura del tipocomplejo.

Punteros (9)

Sede Regional OránUNIVERSIDAD NACIONAL DE SALTA

ProgramaciónTÉCNICO UNIVERSITARIO EN PROGRAMACIÓN

9191919191919191919191919191

• Ahora surge la pregunta: ¿Cómo asignamos a laestructura apuntada por z, la suma de los campos re éim, respectivamente? La respuesta inicial sería:

(*z).re = x.re + y.re;(*z).im = x.im + y.im;

• Y para facilitar la notación, utilizaremos el operadorflecha (->), que permite a un puntero acceder a undeterminado campo:

z->re = x.re + y.re;z->im = x.im + y.im;

Punteros (10)