curso de lenguaje c

124
Curso Curso T T é é cnicas de programaci cnicas de programaci ó ó n n Ciclo Superior de Desarrollo de Productos Electrónicos Instituto Río Duero Departamento de Electricidad-Electrónica Compilador empleado = Estandar C y C++ Santiago J. Martín

Upload: instituto-rio-duero

Post on 01-Mar-2016

224 views

Category:

Documents


0 download

DESCRIPTION

curso de lenguaje c

TRANSCRIPT

Page 1: curso de lenguaje c

Curso Curso TTéécnicas de programacicnicas de programacióónn

Ciclo Superior de Desarrollo de Productos Electrónicos

Instituto Río DueroDepartamento de Electricidad-Electrónica

Compilador empleado = Estandar C y C++

Santiago J. Martín

Page 2: curso de lenguaje c

LENGUAJES DE PROGRAMACILENGUAJES DE PROGRAMACIÓÓNN

PASCAL - JAVA

UNIX - C

BASIC - FORTRAN

COBOL - DELPHI

SQL - HTML

ORACLE - EIFFEL

RUBY - WAP

HASKELL - APL

ALGO - PROLOG ……………

Page 3: curso de lenguaje c

Principios fundamentales Programación en C

INTRODUCCIÓN

El lenguaje C es actualmente uno de los más utilizados por aquellos programadores que buscan la estructura de un lenguaje de alto nivel con la potencia y eficacia de un lenguaje ensamblador.

Es utilizado para prácticamente cualquier tarea de programación.C

Page 4: curso de lenguaje c

OrOríígenes del Cgenes del C

El lenguaje C fue inventado por Dennis Ritchie en 1972 cuando trabajaba, junto con Ken Thompson, en el diseño del sistema operativo UNIX.

El lenguaje C deriva del lenguaje B de Thompson, el cual, a su vez, deriva del lenguaje BCPL desarrollado por Martin Richards.

Durante muchos años el estándar de C fue la versión proporcionada con el sistema operativo UNIX versión 5. Pero pronto empezaron a surgir muchas implementaciones del C a raíz de la popularidad creciente de los microordenadores.

Por este motivo, se hizo necesario definir un C estándar que está representado hoy por el ANSI C.

Page 5: curso de lenguaje c

CaracterCaracteríísticas del lenguaje Csticas del lenguaje C

- Este lenguaje se ha utilizado para el desarrollo de aplicaciones tan dispares como: hojas de cálculos, gestores de bases de datos, compiladores, sistemas operativos, ...

- Es un lenguaje de medio nivel. Este lenguaje permite programar a alto nivel (pensando a nivel lógico y no en la máquina física) y a bajo nivel (con lo que se puede obtener la máxima eficiencia y un control absoluto de cuanto sucede en el interior del ordenador).

Page 6: curso de lenguaje c

CaracterCaracteríísticas del lenguaje Csticas del lenguaje C

- Es un lenguaje portátil. Los programas escritos en C son fácilmente transportables a otros sistemas.

- Es un lenguaje potente y eficiente. Usando C, un programador puede casi alcanzar la eficiencia del código ensamblador junto con la estructura del Algol o Pascal.

Como desventajas habría que reseñar que es más complicado de aprender que otros lenguajes como Pascal o Basic y que requiere una cierta experiencia para poder aprovecharlo a fondo.

Page 7: curso de lenguaje c

LENGUAJE C LENGUAJE C

Basado en el Sistema Operativo UNIX.C

Parte del lenguaje BCPL (Martin)

Mejorado por Thompson (lenguaje B)

Lo inventó Dennis Ritchie 1972

En 1989 se crea el estándar ANSI de C

Lenguaje de medio nivel

Software de sistemas

Multitud de compiladores :

Turbo C / C++Borland C / C++ Microsoft C / C++Etc……..

Page 8: curso de lenguaje c

COMPONENTES DE UN PROGRAMA EN CTodos los programas en C comparten unas características comunes. Para familiarizarse con estos elementos se propone el siguiente programa:

/* Primer programa en lenguaje C */

#include "stdio.h"

main()

{

printf("Este es el primer programa en C");

}

Una vez compilado y ejecutado, el programa muestra en pantalla el texto:

Este es el primer programa en C

Page 9: curso de lenguaje c

En C estándar de ANSI no se pueden anidar comentarios (uno dentro de otro), como muestra el siguiente comentario dentro de un comentario, que generará un error de compilación:

/* esto es /* un error */ */

Turbo C tiene una opción de anidar, pero haciendo esto se convierte en no transportable (el código fuente no se puede llevar a otro compilador de C o a otro ordenador).

COMENTARIOS

Page 10: curso de lenguaje c

#include "stdio.h"Si se encierra el archivo entre comillas,

se busca el archivo primero en el directorio de trabajo actual.

Si no se encuentra, se busca en cualquier directorio especificado en la línea de órdenes.

Finalmente, si el archivo todavía no se ha encontrado, el compilador busca los directorios estándar.

INCLUSIÓN DE LIBRERIAS

Page 11: curso de lenguaje c

#include <stdio.h>En caso de encerrarse el archivo entre menor mayor, el compilador buscará primero en el archivo en los directorios que se especifican en la línea de órdenes de compilador.

Si no se encuentra el compilador busca en los directorios estándar.

En ningún momento el compilador busca el directorio actual de trabajo.C

INCLUSIÓN DE LIBRERIAS

Page 12: curso de lenguaje c

Todas las sentencias de C terminan en punto y coma (;).

C no reconoce el final de línea como un límite.

Esto significa que no hay restricciones sobre la posición de las sentencias dentro de una línea.

Se pueden situar dos o más sentencias en una línea.

La forma más simple de una función de C:

nombre_de_función()

{

secuencia de sentencias;

}

SENTENCIAS

Page 13: curso de lenguaje c

Aunque un programa en C puede contener diversas funciones, la única función que DEBE tener es main() ("principal"), la función main() es la función en la que comienza la ejecución de un programa.

Es decir, cuando el programa comienza a operar, empiezan ejecutando las sentencias que hay dentro de la función main(), empezando por la primera sentencia que hay después de la llave de apertura.

La ejecución del programa termina cuando se alcanza la llave de cierre.

mainmain ( )( )

Page 14: curso de lenguaje c

IDENTIFICADORESIDENTIFICADORESLos operadores manipulan variables y constantes para formar expresiones. Estos cuatro -variables, constantes, operadores y expresiones- son el abecedario del lenguaje C.

NOMBRES DE IDENTIFICADORES

El lenguaje C define IDENTIFICADORES como los nombres que se utilizan para referenciar variables, funciones, etiquetas y otros objetos definidos por el usuario.

En C un identificador puede tener de uno a varios caracteres.

El primer carácter DEBE ser una letra o un subrayado, los restantes caracteres pueden ser cualquier combinación de caracteres alfabéticos y numéricos (incluido el símbolo de subrayado).

Page 15: curso de lenguaje c

DECLARACIDECLARACIÓÓN DE VARIABLES Y ASIGNACIN DE VARIABLES Y ASIGNACIÓÓN DE N DE VALORESVALORES

Una VARIABLE es una posición de memoria con nombre que puede guardar distintos valores. En C, a diferencia de otros lenguajes de computadora, todas las variables se deben declarar antes de poder utilizarlas.

C soporta 5 tipos diferentes básicos:

char, int, float, double, void.

Para declarar una variable se utiliza esta forma general:

tipo nombre_de_variable;

Por ejemplo a continuación se declara que contador es de tipo int:

int contador;

Page 16: curso de lenguaje c

En C una declaración de variable es una sentencia y debe terminar con un punto y coma.

Se puede declarar más de una variable del mismo tipo utilizando una lista separada por comas. Por ejemplo:

float x, y, z;

En C se pueden dar valores a la mayoría de las variables a la vez que se declaran poniendo un signo igual y una constante después del nombre de la variable, el formato general de la inicialización es:

tipo nombre_de_variable = valor;

Page 17: curso de lenguaje c

Estudio de la sentencia Estudio de la sentencia printfprintf

printf (“%d”, num);

sentencia

especificador de formato

nombre de la variable

Page 18: curso de lenguaje c

Muestra en pantalla los caracteres contenidos entre las comillas dobles de inicio y fin (las comillas dobles no se muestran en pantalla).

printf ("cadena-a-mostrar");

En C uno o más caracteres encerrados entre comillas dobles se llama CADENA.

A la cadena entre comillas que hay entre los paréntesis de printf() se la llama ARGUMENTO.

La función printf()

Page 19: curso de lenguaje c

funcifuncióón n printfprintf()()

Su prototipo es:

int printf(char* cadena de control, lista de argumentos);

Este prototipo de función está en el fichero de cabecera stdio.h.

La CADENA DE CONTROL consta de 2 tipo de elementos:

1º Los caracteres que se imprimirán en la pantalla.

2º Órdenes de formato que definen la manera en que se visualizarán los argumentos

Page 20: curso de lenguaje c

En C, la llamada a una función de biblioteca es una sentencia; por eso debe terminar con un punto y coma.

Para llamar a una función, se especifica su nombre seguido de la lista de argumentos que se va a pasar, entre paréntesis. Si la función no requiere ningún argumento, no se especificarán argumentos -y la lista entre paréntesis aparecerá vacía-. Si hay más de un argumento, los argumentos deben estar separados por comas.

La función printf()

Page 21: curso de lenguaje c

printf - secuencias de escape

Permite escribir por el dispositivo de salida estándar---- Caracteres y secuencias de escape como \n .

Ejemplo = printf (“ Instituto Río Duero \n “);

\b Retroceso \f Alimentador de hojas

\n Nueva línea \r Retorno de carro

\t Tabulador horizontal \" Doble comilla

\’ Comilla simple \0 Nulo (para cadenas)

\\ Barra invertida \v Tabulador vertical

\a Alerta \o Constante octal

\x Constante hexadecimal

Page 22: curso de lenguaje c

---- Especificadores de conversión, empiezan por % .Ejemplo =

printf (“hoy estamos a %d º de temperatura “, temp);

d = decimal o = octal x = hexadecimalf = float e = exponencial c = carácters = cadena de caracteres

especificadores de conversión

Page 23: curso de lenguaje c

Estudio de los Estudio de los especificadoresespecificadores de formatode formato

/* muestra valores de punto flotante en *//* formato regular y exponencial */main(){

float A = 2500.125;float B = 0.0033;float C = -50.99;float D = 0.6664655555555555456;float E = 666;printf("\n%f\t %e\n\n", A,A);printf("%f\t %e\n\n", B,B);printf("%f\t %e\n\n", C,C);printf("%f\t %e\n\n", D,D);printf("Marca mi numero es el %f \n\n",E);

}

Page 24: curso de lenguaje c

Ejemplos Ejemplos con con printf

main()

{

char hola='h',adios=104;

int i=97;

unsigned long l=12345678;

float f=9876.54321;

double d=66.6e+088;

unsigned int acedo=65432;

unsigned int suave=55434;

printf("%c tipo char en caracter\n",hola);

printf("%d tipo char en decimal\n",hola);

printf("%c tipo char en caracter\n",adios);

printf("%d tipo char en decimal\n",adios);

printf("%c tipo int como caracter\n",i);

printf("%d tipo int en decimal\n",i);

printf("%x tipo int como hexadecimal\n",i);

printf("%lc tipo long como caracter\n",l);

printf("%ld tipo long como decimal\n",l);

printf("%lx tipo long como hexadecimal\n",l);

printf("%lc tipo float como caracter\n",f);

printf("%f tipo float como decimal\n",f);

printf("%e tipo float como exponencial\n",f);

printf("%f tipo double como decimal\n",d);

printf("%e tipo double como exponencial\n",d);

}

Page 25: curso de lenguaje c

Estudio de variables tipo Estudio de variables tipo charchar

/* muestra algunas variables de tipo */

/* char como caracteres y como enteros. */

main()

{

char plus = 'A' , ultra = 99;

char b=98;

char c=99,e=101,d=100,o=111;

printf("El caracter %c tiene el codigo ASCII %d\n", plus,plus);

printf("si se opera (A+10)-10 obtendra %c\n",(plus+10)-10);

printf("El caracter %c tiene el codigo ASCII %d\n", ultra, ultra);

printf("el caracter %c tiene el codigo ASCII = %d\n" ,b,b);

printf("El caracter %c tiene el codigo ASCII = %d\n" ,c,c);

printf("mi nombre es = %c%c%c%c%c\n",plus, c, e, d, o);

}

Page 26: curso de lenguaje c

Formas de imprimir con Formas de imprimir con printfprintf

main()

{

/* Muestra como printf() sigue en la misma linea. */

printf("\nEn realidad");

printf(" esta linea ");

printf(" sale de tres distintas.\n");

printf("Esta linea es como es.\n");

printf("Esta introduce mi nombre que es %s.",“Jose Luis");

/* Estudio y utilizacion del \a \n \t */

printf (" \n\n \a\a\a \n\nLos programadores \t%s ","\somos todos\nsolo tienes\

\t\

que aplicarte\n\

\

adios \

");

}

Page 27: curso de lenguaje c

Distintos formatos de Distintos formatos de floatfloat

main()

{

int i = 12;

long l = 1234;

float f = 123.45;

printf(" Entero: %d \n", i);

printf(" Entero de tipo long: %ld\n\n", i); /* cuidado */

printf(" Entero: %d \n", l); /* ojo */

printf(" Entero de tipo long: %d\n", l);

printf(" Exponencial: %e\n", l);

printf(" Float: %f \n\n", l);

printf("%12.6f\n", f);

printf("%8.4f\n", f);

printf("%8.3f\n", f);

printf("%8.2f\n", f);

printf("%1.0f\n", f);

} PROGRAMA 4

Page 28: curso de lenguaje c

EjemplosEjemplos

n = 65; b = d; hola = 2000;

printf (“ el número %d es impar. \n”,n);

printf (“ el número %c es impar. \n”,95);

printf (“ el número %f es impar. \n”, n);

printf (“ la resultante es =%d \n”,5+5);

printf (“ el número %d es impar.\n”,a);

printf (“ el número %c es impar. \n”,b);

printf (“ el número %ld es impar.\n”,n);

printf (“ si se suma 2+2 = %d \n”,2+6);

printf (“ %d %c %d %d \n”,n,b,n,b,j);

printf (“ %c %d %d %c \n”,n,b,hola,adiós);

Page 29: curso de lenguaje c

Son conocidas a lo largo de todo el programa y las puede utilizar cualquier trozo de código del programa. Además, mantendrán su valor durante toda la ejecución del programa. Por ejemplo:

# include "stdio.h"

int max; /* Esta es una variable global */

main()

{

max = 10;

f1();

}

f1()

{

int i; /* Variable local */

for(i = 0; i < max; i++)

printf("%d",i);

}

Variables

globales

Page 30: curso de lenguaje c

VARIABLES GLOBALES Y LOCALESVARIABLES GLOBALES Y LOCALESHay dos lugares básicos donde se declara una variable: dentro de una función y fuera de todas las funciones. Estas variables se llaman variables LOCALES y variables GLOBALES, respectivamente.

Las variables locales (declaradas dentro de una función) sólo las pueden referenciar las sentencias que estén dentro de esa función.

No son conocidas fuera de su propia función.

Una de las cosas más importantes que hay que entender sobre las variables locales es que solamente existen mientras se está ejecutando la función en la que están declaradas.

Es decir, una variable local se crea al llamar a su función y se destruye cuando se sale por lo que no pueden mantener sus valores entre llamadas.

Page 31: curso de lenguaje c

ÁÁmbito de las variablesmbito de las variables

La declaración de las variables lleva asociado un ámbito, dentro del cual la variable es visible:

– Ámbito global: La variable es visible para todas las funciones del programa.

– Ámbito local: La variable es visible sólo dentro de la función. (Tiene prioridad sobre el ámbito global)

Page 32: curso de lenguaje c

En C, una variable local y una variable global pueden tener el mismo nombre. Por ejemplo:

# include "stdio.h"

int contador; /* contador como variable global */

main()

{

contador = 10 ;

f1() ;

printf ("contador en main(): %d\n", contador") ;

}

f1()

{

int contador; /* contador como variable local */

contador = 100;

printf("contador en f1() : %d", contador);

}

El programa muestra esta salida de pantalla: contador en f1() : 100 contador en main() : 10

Page 33: curso de lenguaje c

Las variables globales son muy útiles cuando muchas funciones del programa utilizan los mismos datos.

Sin embargo, se deberían utilizan variables locales donde se pueda, ya que un uso excesivo de variables globales tiene algunas consecuencias negativas:

Primero, las variables globales utilizan memoria todo el tiempo que el programa está en ejecución, no sólo cuando se necesitan. En situaciones en las que la memoria es un recurso escaso, esto podría suponer un problema.

Segundo, la utilización de una variable global donde serviría una variable local hace a una función menos general, ya que confía en algo que se debe definir fuera de sí misma.

Page 34: curso de lenguaje c

TIPOS DE DATOSTodas las variables en C se deben declarar antes de usarlas. Es necesario porque el compilador debe saber qué tipo de datos es una variable antes de poder compilar cualquier sentencia en la que se use. En C hay cinco tipos básicos:

carácter (character)

entero (integer)

punto flotante (floating-point)

doble punto flotante (double-floating-point)

sin valor (valueless)

Las palabras claves para declarar variables de estos tipos son :

char, int, float, double y void

Page 35: curso de lenguaje c

DeclaraciDeclaracióón de variablesn de variables

Declaración simple:– char c;

– unsigned int i;

Declaración múltiple:– char c,d;

– unsigned int i,j,k;

Declaración y asignación:– char c=’A’;– unsigned int i=133,j=1229;

Page 36: curso de lenguaje c

Tipo bit Rango

char 8 - 128 a 127

int 16 - 32768 a 32767

float 32 - 3.4E-38 a 3.4E+38

double 64 - 1.7E-308 a 1.7E+308

void 0 - sin valor

Los tipos de datos básicos excepto el tipo void se pueden modificar utilizando modificadores de tipo de C para que se ajusten más adecuadamente a las necesidades específicas surgidas en un programa.

Estos modificadores de tipo son:

Signed unsigned long short

Page 37: curso de lenguaje c

Tipo bits Rango

char 8 -128 a 127

unsigned char 8 0 a 255

Signed char 8 -128 a 127

int 16 -32.768 a 32.767

unsigned int 16 0 a 65.535

signed int 16 -32.768 a 32.767

short int 16 -32.768 a 32.767

unsigned short int 16 0 a 65.535

signed short int 16 -32.768 a 32767

long int 32 -2147483648 a 2147483647

signed long int 32 -2147483648 a 2147483647

float 32 3,4 E -38 a 3,4 E +38

double 64 1,7 E -308 a 1,7 E +308

long double 64 1,7 E -308 a 1,7 E +308

Page 38: curso de lenguaje c

CCÓÓDIGO FORMATODIGO FORMATO

%c Un sólo carácter %d Entero decimal con signo%f Punto flotante %i Idem%e Notación científica (minúscula) %E Notación científica (mayúscula)%o Octal sin signo %s Cadena de caracteres%u Entero decimal sin signo %x Hexadecimal sin signo (letra minúscula)

%p Muestra un puntero %X Hexadecimal sin signo (letra mayúscula)

%ld Muestra un long %lo Muestra un long%lx Muestra un long %lf Muestra un double%le Muestra un double %lg Muestra un double%Ld Muestra un long double %Lf Muestra un long double%Le Muestra un long double

Page 39: curso de lenguaje c

Lo primero es conocer el tamaño en bytes de ese tipo de dato.Vamos a ver un ejemplo con el tipo INT.

#include <stdio.h>int main() { Int num1;printf( "El tipo int ocupa %i bytes\n", sizeof(int) ); }

En mi ordenador el resultado es: El tipo int ocupa 4 bytes. Ahora para calcular el máximo número debemos elevar 2 al número de bits obtenido.

En nuestro ejemplo: 2^32=4.294.967.296.

Cálculo del máximo valor que admite un tipo

Page 40: curso de lenguaje c

Operador Operador SizeofSizeofTambién nos permite conocer el tamaño en bytes de una variable. De esta manera no tenemos que preocuparnos en recordar o calcular cuanto ocupa. Además el tamaño de una variable cambia de un compilador a otro, es la mejor forma de asegurarse. Se usa poniendo el nombre de la variable después de sizeof y separado de un espacio:

#include <stdio.h>

int main()

{

int variable;

printf( "Tamaño de la variable: %i\n", sizeof variable );

}

Page 41: curso de lenguaje c

overflowoverflowEl overflow es lo que se produce cuando

intentamos almacenar en una variable un número mayor del máximo permitido.

El comportamiento es distinto para variables de números enteros y para variables de números en coma flotante.

Page 42: curso de lenguaje c

-- Direcciones de las variables Direcciones de las variables --

Para ello utilizamos el carácter “&” seguido del nombre de la variable.

El valor se imprimirá normalmente en hexadecimal.

El especificador que emplearemos no depende del tipo de variable de la cual obtendremos la dirección .

El valor numérico de la dirección de las variables siempre será de la misma longitud ( puede variar de un sistema a otro ).

Ejemplos =

printf (“ variable cuya dirección es = %d \n”, &ciclo);

printf (“ variable cuyo valor es = %d \n”, ciclo);

Page 43: curso de lenguaje c

OPERADORES ARITMOPERADORES ARITMÉÉTICOSTICOS

Los operadores aritméticos son:

- Resta y menos

+ Suma

* Multiplicación

/ División

% Módulo división (no float o double)

++ Incremento

-- Decremento

Page 44: curso de lenguaje c

INCREMENTOS Y DECREMENTOS DE INCREMENTOS Y DECREMENTOS DE FORMA COMPACTAFORMA COMPACTA

main()

{

int a=50;

printf("a ES %d\n",a);

printf("++a ES %d\n",++a);

printf("--a ES %d\n",--a);

printf("a++ Es %d\n",a++);

printf("a ES %d\n",a);

printf("a-- Es %d\n",a--);

printf("a ES %d\n\n",a);

}

PROGRAMA 6

++

--

Page 45: curso de lenguaje c

x++ ; /* equivale a x = x + 1 */

x-- ; /* equivale a x = x - 1 */

Estos operadores pueden preceder o seguir su operando:

x++ ; o ++x ; x-- ; o --x ;

Hay diferencia cuando se usa en una operación. Cuando un operador incremento o decremento precede a su operando, C realiza la operación de incremento o de decremento antes de usar el valor del operando. Cuando el operador sigue al operando, C usa el valor del operando antes de incrementar o decrementarlo. Ejemplo:

x = 10 ; y = ++x ;

y = x++ ;

En ambos casos el valor final de x es 11, la diferencia es cuando lo hace.

Page 46: curso de lenguaje c

Operador mOperador móódulo : %dulo : %

Proporciona el resto de una división

Ejemplo 13 % 5 es 3

Utilizando este operador realiza un programa que nos pida que introduzcamos segundos y nos informe los minutos que son y los segundos que sobran.

Page 47: curso de lenguaje c

Precedencia de operadores en las Precedencia de operadores en las expresionesexpresiones

main()

{

int a = 15, b = 21, c = 7, d = 43;

printf("87 + 13 = %d\n",87 + 13); /* Enteros. */

printf("65 + 12 - 9 = %d\n",65 + 12 - 9);

printf("8.9 + 5.3 - 7 = %f\n",8.9 + 5.3 - 7); /* Flotantes. */

printf("1 + 2 * 3 = %d\n", 1 + 2 * 3);

printf("5 * (8 - 5) = %d\n", 5 * (8 - 5));

printf("a * a - c + b = %d\n", a * a - c + b);

printf("a * (a - (c + b)) = %d\n", a * (a - (c + b)));

printf("Tipo entero: 10 / 3 = %d\n", 10 / 3);

printf("Tipo float: 10 / 3 = %2.12f\n", 10.0 / 3.0);

}

Page 48: curso de lenguaje c

OPERADORES ARITMOPERADORES ARITMÉÉTICOS DE ASIGNACITICOS DE ASIGNACIÓÓNN

main() {

float b=4,l=5;

int a=20,n=10;

printf("VALORES INICIALES a=%d n=%d l=%f b=%f\n",a,n,l,b);

/*DISTINTAS OPERACIONES MATEMATICAS*/

printf("a+=5 HACE QUE a SEA %d\n",a+=5);

printf("a-=n HACE QUE a SEA %d\n",a-=n);

printf("l*=2 HACE QUE a SEA %f\n",l*=2);

printf("l/=n HACE QUE a SEA %f\n",l/=n);

printf("b+=5 HACE QUE a SEA %f\n",b+=5);

printf("l+=l HACE QUE a SEA %f\n",l+=l);

printf("l+=5 HACE QUE a SEA %f\n",l+=5);

printf("n+=b HACE QUE a SEA %d\n",n+=b);

printf("n+=l*b HACE QUE a SEA %d\n",n+=l*b);

/*DISTINTAS FORMAS DE INCREMENTAR*/

printf("a=a+3 HACE QUE a SEA %d\n",a=a+3);

printf("a+=1 HACE QUE a SEA %d\n",a+=1);

printf("a=a*2 HACE QUE a SEA %d\n",a=a*2);

printf("a=a*2 HACE QUE a SEA %d\n",a=a*2);

printf("b=b*2+l/n HACE QUE a SEA %f\n",b=b*2+l/n);

printf("l=l/3 HACE QUE a SEA %f\n",l=l/3);

printf("n=n*5 HACE QUE a SEA %d\n",n=n*5);

}

+=

-=

*=

/=

%=

Page 49: curso de lenguaje c

Valor de retorno de Valor de retorno de printfprintf ()()

1. #include <stdio.h>2. main()3. {4. int n = 100;5. int rv;6. rv = printf("El punto de ebullici¢n del agua es %d grados.\n", n);7. printf("La función printf() ha impreso %d caracteres.\n", rv);8. }

Page 50: curso de lenguaje c

Anchura de los camposAnchura de los campos

#include <stdio.h>#define PAGINAS 336main(){printf("/%d/\n", PAGINAS);printf("/%2d/\n", PAGINAS);printf("/%10d/\n", PAGINAS);printf("/%-10d/\n", PAGINAS);

}

#define RENTA 1234.56

main()

{

printf("/%f/\n", RENTA);

printf("/%e/\n", RENTA);

printf("/%4.2f/\n", RENTA);

printf("/%3.1f/\n", RENTA);

printf("/%10.3f/\n", RENTA);

printf("/%10.3e/\n", RENTA);

printf("/%+4.2f/\n", RENTA);

printf("/%010.2f/\n", RENTA);

}

Page 51: curso de lenguaje c

estudio de la sentencia estudio de la sentencia scanfscanf

scanf (“%d”,&num);

dirección de “nombre de la variable”

Sentencia

especificador de formato

PROGRAMA 5

Page 52: curso de lenguaje c

Ejemplos Ejemplos con con

scanfscanf

main()

{

int partidos, ganados, empatados, perdidos;

int ptos_ganar, ptos_empatar, ptos_perder,ptos_total,puntosg,puntose,puntost;

ptos_ganar= 3;

ptos_empatar=1;

ptos_perder=0;

printf("\n\n\n\t Zamora CF \n");

printf("Partidos que ha ganado: ");

scanf("%d", &ganados);

printf("Partidos que ha empatado: ");

scanf("%d", &empatados);

printf("Partidos que ha perdido: ");

scanf("%d", &perdidos);

partidos= ganados + empatados + perdidos;

puntosg=ptos_ganar * ganados;

puntose=ptos_empatar * empatados;

puntost=puntosg + puntose;

printf("\n\n\n");

printf("\t\tRelaci¢n al equipo de futbol Zamora CF\n\n\n ");

printf("\t\t\t\t Partidos\t Puntos\n");

printf("\t Partidos ganados =\t\t %2d\t\t%2d\n",ganados,puntosg);

printf("\t Partidos empatados =\t\t %2d\t\t%2d\n",empatados,puntose);

printf("\t Partidos perdidos =\t\t %2d\t\t___\n\n",perdidos);

printf("\t Total =\t\t %2d\t\t%2d\n\n",partidos, puntost);

}

PROGRAMA 5

Page 53: curso de lenguaje c

OPERADORES RELACIONES Y LOPERADORES RELACIONES Y LÓÓGICOSGICOSLos operadores relacionales comparan 2 valores y devuelven un resultado verdadero o falso, basado en la comparación.

Los operadores lógicos agrupan valores de verdadero/falso.

En C, verdad es cualquier valor distinto de cero, mientras que falso es cero.

Los operadores relacionales y lógicos son:

RELACIONALES LRELACIONALES LÓÓGICOSGICOS

> Mayor que && AND

>= Mayor o igual que || OR

< Menor que ! NOT

<= Menor o igual que

== igual que

!= Distinto que

Page 54: curso de lenguaje c

OPERADORES DE RELACIOPERADORES DE RELACIÓÓNN

main ()

{

int a=20, b=15, c=10;

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

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

printf("Es a<b %d\n",a<=b);

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

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

}

>

<

>=

<=

!=

= =Programa 7

Page 55: curso de lenguaje c

Los operadores lógicos se usan para soportar las operaciones básicas lógicas AND, OR y NOT de acuerdo con la siguiente tabla de verdad que usa "1"para verdad y "0" para falso.

OPERADOR &&.-

El resultado es verdadero si los dos operandos son verdadero.

OPERADOR ||.-

El resultado es verdadero si al menos uno de los operandos es verdadero.

OPERADOR !.-

El resultado es verdadero si el operando el falso y viceversa.

Operadores lógicos

Page 56: curso de lenguaje c

Operadores lOperadores lóógicosgicos

main()

{

printf("1 AND 1 es %d\n", 1 && 1);

printf("1 AND 0 es %d\n", 1 && 0);

printf("0 AND 1 es %d\n", 0 && 1);

printf("0 AND 0 es %d\n\n", 0 && 0);

printf("1 OR 1 es %d\n", 1 || 1);

printf("1 OR 0 es %d\n", 1 || 0);

printf("0 OR 1 es %d\n", 0 || 1);

printf("0 OR 0 es %d\n", 0 || 0);

}

&& = AND

| | = OR

! = NOT

PROGRAMA 8PROGRAMA 8

Page 57: curso de lenguaje c

Diagramas de flujoDiagramas de flujo

operación en generaloperación de entrada / salidainicio - finalmodificación/inicializaciónoperación auxiliarsubprograma o subrutina

comentarios

Page 58: curso de lenguaje c

OPERADORES A NIVEL DE BITOPERADORES A NIVEL DE BITC contiene diversos operadores especiales que incrementan enormemente su poder y flexibilidad especialmente para su programación a nivel del sistema que realizan sus operaciones bit a bit.

Como C fué diseñado para reemplazar el lenguaje ensamblador en la mayoría de las tareas de programación, tenía que poseer la habilidad de soportar todas (o al menos muchas) operaciones que pueden realizarse en lenguaje ensamblador.

Las operaciones sobre bits se refieren a la comprobación, configuración o desplazamiento de los bits reales contenidos en un byte o una palabra.

Estos operadores trabajan con los tipos caracter y entero.

Page 59: curso de lenguaje c

La lista de estos operadores es:La lista de estos operadores es:

& AND

| OR

^ OR EXCLUSIVA (XOR)

~ Complemento a 1 (NOT) (unario)

>> Desplazamiento a la derecha

<< Desplazamiento a la izquierda

Page 60: curso de lenguaje c

FUNCIONES CON ARGUMENTOSFUNCIONES CON ARGUMENTOSUn argumento de una función es un valor que se pasa a la función en el momento que se realiza la llamada. Se pueden crear funciones que toman argumentos. Por ejemplo:

/* Ejemplo de los argumentos de una función */

# include <stdio.h>

main()

{

mul(10,11);

}

mul(a, b)

int a, b;

{

printf("%d", a * b);

}

Page 61: curso de lenguaje c

FUNCIONES QUE DEVUELVEN VALORESFUNCIONES QUE DEVUELVEN VALORES

En C, una función devuelve un valor a la rutina que la llama usando la clave return.

# include <stdio.h>

main()

{

int respuesta;

respuesta = mul(10 , 11);

printf("la respuesta es %d \n", respuesta);

}

/* Esta función devuelve un valor */

mul(int a , int b)

{

return a * b ;

}

Page 62: curso de lenguaje c
Page 63: curso de lenguaje c
Page 64: curso de lenguaje c
Page 65: curso de lenguaje c
Page 66: curso de lenguaje c
Page 67: curso de lenguaje c

buclesbuclesfor

whilewhile

do .............do .............whilewhile

Page 68: curso de lenguaje c

Bucle Bucle forfor

El formato del bucle for es el siguiente:

valores iniciales condiciones incrementos

{

conjunto de intrucciones

a ejecutar en el bucle

.

.

.

.

.}

Page 69: curso de lenguaje c

Bucle Bucle

FORFOR

VALORES INICIALES

CONDICIÓN

ACTUACIONES

SENTENCIAS DEL BUCLE

RESTO DEL PROGRAMA

SENTENCIAS

SI

NO

Page 70: curso de lenguaje c

Ejemplo de bucle Ejemplo de bucle forformain() { int

i;

for

( i=0 ; i<100 ; i++ ) {

printf( “instituto " ); printf( “río " ); printf( “duero

\n" );

} }

/* cuidado con ;*/

PROGRAMA 9PROGRAMA 9

Cuando solo hay una sentencia Cuando solo hay una sentencia se puede poner de forma se puede poner de forma compactacompacta

mainmain() () {{

forfor

( i=0 ; i<100 ; i++ )( i=0 ; i<100 ; i++ )printf( "Holaprintf( "Hola\\n" ); n" );

}}

Page 71: curso de lenguaje c

Bucle Bucle

WHILEWHILE

CONDICIÓN

ACTUACIONES

RESTO DEL PROGRAMA

SENTENCIAS

SINO

Page 72: curso de lenguaje c

Ejemplos del bucle Ejemplos del bucle whilewhile• main()

• {

• int contador = 1;

• while (contador <51)

• {

• printf("%d\n", contador);

• contador++ ;

• }

• printf("-Hecho!\n");

• }

Page 73: curso de lenguaje c

BucleBucle

DO DO

WHILEWHILE

CONDICIÓN

ACTUACIONES

RESTO DEL PROGRAMA

SENTENCIAS

SI NO

Page 74: curso de lenguaje c

Ejemplo del bucle Ejemplo del bucle do do ............whilewhile

1. main()2. {3. int i=1;4. do5. {6. printf("%d\n",i);

i++;

7. }8. while (i<11);9. printf ("-Hecho!\n");10. }

PROGRAMA 11PROGRAMA 11

Page 75: curso de lenguaje c

1. main()

2. {

3. int contador =100;

4. printf("\n\n ¿qué hace este bucle ? \n\n");

5. while (contador >50)

6. {

7. printf("\t\t%d\t\t\t ",contador);

8. contador=contador-3;

9. }

10. printf("\n\n\n");

11. }

ejemplos de contadores

Page 76: curso de lenguaje c

1. main()

2. {

3. int i=1;

4. do

5. {

6. printf("%d\n",i);

7. i++;

8. }

9. while (i<11);

10. printf ("-Hecho!\n");

11. }

ejemplos de contadores

Page 77: curso de lenguaje c

1. #include <stdio.h>

2. #define PI 3.14159

3. main()

4. {

5. float area, circun, radio;

6. printf("¨Cuál es el radio de su pizza?\n");

7. scanf("%f", &radio);

8. area = PI * radio * radio;

9. circun = 2.0 * PI * radio;

10. printf("Los par metros b sicos de su pizza son:\n");

11. printf("circunferencia = %1.2f, rea = %1.2f\n",circun, area);

12. }

Preprocesador

definiendo

constantes

Page 78: curso de lenguaje c

Campos de salida de ancho variableCampos de salida de ancho variable1. #include <stdio.h>2. main()3. {4. unsigned anchura, precision;5. int numero = 256;6. double peso = 242.5;7. printf("¨Cuál es el ancho?\n");8. scanf("%d", &anchura);9. printf("El número es :%*d:\n", anchura, numero);10. printf("Ahora introduzca el ancho y la precisión:\n");11. scanf("%d %d", &anchura, &precision);12. printf("Peso = %*.*f\n", anchura, precision, peso);13. }

Page 79: curso de lenguaje c

Ejemplo de Ejemplo de preprocesadorpreprocesador con con

buclesbucles

#include <stdio.h>#define TOPE 0.933#define ESCALA 0.6167main(){float zapato, pie;printf("Número zapato en centímetros pie\n");zapato = 30.0;while (zapato < 48.5) /* empieza bucle while */

{ /* comienzo del bloque */pie = ESCALA*zapato + TOPE;printf("%10.1f %16.2f cm.\n", zapato, pie);zapato = zapato + 1.0;

} /* final del bloque */printf("Usted sabe dónde le aprieta el zapato.\n");

}

Page 80: curso de lenguaje c

#include <stdio.h>

main()

{

int num = 1;

while (num < 21)

{

printf("%10d %10d\n", num, num*num);

num = num + 1;

}

}

Page 81: curso de lenguaje c

Tipo de DatosTipo de DatosTipo de dato Bits Rango

(con signo)Rango 

(sin signo)char 8 ‐128 a +127 0  a  255

int 16 ‐32768  a  +32767 0  a  65535 

float 32 ‐3.2x10+38 a +3.2x10+38

double 64 ‐1.7x10+308

a +1.7x10+308

void 0 sin valor sin valor

Page 82: curso de lenguaje c

operadoresoperadores

Operador Significado

+ Suma

‐ Resta

* Multiplicación

/ División

% Resto de la  división

++ Incremento

‐‐ Decremento

Operadores aritméticosOperador Significado

> Mayor

>= Mayor o igual

< Menor

<= Menor o igual

== Igual

¡= Distinto

Operadores relacionales

Page 83: curso de lenguaje c

operadoresoperadores

Operador Significado

&& AND

| | OR

¡ NOT

Operadores lógicos Operadores a nivel de bitOperador Significado

& AND

| OR

^ OR Exclusive

~ Complemento a 1

>> Desplazamiento a la  derecha

<< Desplazamiento a la  izquierda

Page 84: curso de lenguaje c

Diagrama de flujoDiagrama de flujo

Desarrolla un diagrama de flujo para el siguiente problema:– Programa que pida al usuario un número de cinco dígitos, dicho

número se dividirá entre el resto de la división del número entre 2000 y se multiplicará por 8, al final al número resultante le sumaremos 2345.

– Al usuario le pediremos que introduzca el número resultante de las operaciones realizadas en el programa, informándole si el número introducido es mayor o menor que el número resultante, también contará los intentos realizados.

– Dejará realizar un máximo de 20 intentos.– Si se localiza el número resultante antes de 10 intentos, imprimirá

en pantalla el progrma “ es usted un buen matemático”– Si se localiza entre 10 y 20 intentos imprimirá el mensaje “es usted

un torpe”,– Más de 20 imprimirá “no hay más intentos”.

Page 85: curso de lenguaje c
Page 86: curso de lenguaje c
Page 87: curso de lenguaje c
Page 88: curso de lenguaje c
Page 89: curso de lenguaje c
Page 90: curso de lenguaje c
Page 91: curso de lenguaje c
Page 92: curso de lenguaje c
Page 93: curso de lenguaje c
Page 94: curso de lenguaje c
Page 95: curso de lenguaje c
Page 96: curso de lenguaje c
Page 97: curso de lenguaje c
Page 98: curso de lenguaje c
Page 99: curso de lenguaje c

Estructura SWITCHEstructura SWITCH

Esta estructura se suele utilizar en los menús, de

manera que según la opción seleccionada se ejecuten una serie de sentencias.

switch (variable)

{

case contenido_variable1:

sentencias;

break;

case contenido_variable2:

sentencias;

break;

default:

sentencias;

}

Page 100: curso de lenguaje c

/* Uso de la sentencia condicional SWITCH. */

#include <stdio.h>

main() /* Escribe el día de la semana */

{

int dia;

printf("Introduce el día: ");

scanf("%d",&dia);

switch(dia){

case 1: printf("Lunes");

break;

case 2: printf("Martes");

break;

case 3: printf("Miércoles");

break;

.

.

.

}

Page 101: curso de lenguaje c

#define LIMITE 15

main()

{

int cont;

float suma, x;

for (suma=0.0, x=1.0, cont=1; cont <= LIMITE; cont++, x *= 2.0)

{

suma += 1.0/x;

printf("suma = %f en la etapa %d.\n", suma, cont);

}

}

Page 102: curso de lenguaje c

/* Uso de la sentencia condicional IF. */

#include <stdio.h>

main() /* Simula una clave de acceso */

{

int usuario,clave=18276;

printf("Introduce tu clave: ");

scanf("%d",&usuario);

if (usuario==clave)

printf("Acceso permitido");

else

printf("Acceso denegado");

}

Dibuja

el

diagrama

de

flujo

Page 103: curso de lenguaje c

/* Uso de la sentencia condicional ELSE...IF. */

#include <stdio.h>

main() /* Escribe bebé, niño o adulto */

{

int edad;

printf("Introduce tu edad: "); scanf("%d",&edad);

if (edad<1)

printf("Lo siento, te has equivocado.");

else

if (edad<3)

printf("Eres un bebé");

else

if (edad<13)

printf("Eres un niño");

else

printf("Eres adulto");

}

Dibuja el diagrama de flujo

Page 104: curso de lenguaje c

1. main()

2. {

3. int n = 3;

4. while (n)

5. printf("%d\n", n--);

6. n = -3;

7. while (n)

8. printf("%2d\n", n++);

9. }

Page 105: curso de lenguaje c

1. #include <stdio.h>

2. main()

3. {

4. char ch;

5. do

6. {

7. scanf("%c", &ch);

8. printf("%c", ch);

9. } while (ch != '#');

10. }

Page 106: curso de lenguaje c

#define FILAS 6

#define CARS 6

main()

{

int fila;

char ch;

for (fila = 0; fila < FILAS; fila++)

{

for (ch = 'A'; ch < ('A' + CARS); ch++)

printf("%c", ch);

printf("\n");

}

}

Page 107: curso de lenguaje c

1. #define FILAS 6

2. #define CARS 6

3. main()

4. {

5. int fila;

6. char ch;

7. for (fila = 0; fila < FILAS; fila++)

8. {

9. for (ch = ('A' + fila); ch < ('A' + CARS); ch++)

10. printf("%c", ch);

11. printf("\n");

12. }

13. }

Page 108: curso de lenguaje c

#include <stdio.h>

main()

{

printf("El tipo int ocupa %d bytes.\n", sizeof(int));

printf("El tipo char ocupa %d bytes.\n", sizeof(char));

printf("El tipo long ocupa %d bytes.\n", sizeof(long));

printf("El tipo double ocupa %d bytes.\n", sizeof(double));

}

Operador sizeof

PROGRAMA 13PROGRAMA 13

Page 109: curso de lenguaje c

LECTURA de un carLECTURA de un caráácter desde tecladocter desde tecladogetchar()

Acepta un carácter y lo imprime por pantalla.Su prototipo es: int getchar (void);Tiene el inconveniente de esperar a que se pulse la tecla de retorno para que el dato sea enviado a la computadora.

getche()Espera a pulsar una tecla y después devolver su valor. La función también hace "eco" de la tecla pulsada automáticamente en la pantalla. Su prototipo es: int getche (void);

getch()Es una variación de getche(); funciona de la misma maneraexcepto que getch() no hace "eco" de los caracteres tecleados.

Page 110: curso de lenguaje c

LECTURA de un carLECTURA de un caráácter desde tecladocter desde teclado

kbhit()Esta función se utiliza para determinar si se ha pulsado unatecla o no. Si el usuario ha pulsado una tecla, esta función devuelve"verdadero" (distinto de 0), pero no lee el carácter. Si hay una pulsación de tecla esperando se puede utilizar una de las funciones vistas anteriormente.Si no hay pendiente ninguna pulsación de tecla,kbhit() devuelve "falso". Su prototipo es: int kbhit(void);

Page 111: curso de lenguaje c

LECTURA de un carLECTURA de un caráácter desde tecladocter desde teclado

Un ejemplo para la utilización de kbhit() es:# include <conio.h>int tecla_pulsada, ch;main(){tecla_pulsada = kbhit();if(tecla_pulsada = =0)ch = getch;}Es muy útil cuando se quiere permitir que el usuario interrumpa unarutina sin forzar realmente al usuario a responder continuamente a unindicador como "¿continuar?".

Page 112: curso de lenguaje c

VISUALIZACIVISUALIZACIÓÓN de un carN de un carááctercter

putchar()Esta función muestra un sólo carácter en lapantalla. Su prototipo de función es: int putchar(int ch);

clrscr()Limpia la pantalla en modo texto. Su prototipo de función es: void clrscr(void);

Page 113: curso de lenguaje c

#include <stdio.h>

#include "jerga.h“

programa

begin

entero tuyo, mio vale

suelta("Escribe un entero\n") vale

traga("%d", &tuyo) vale

mio = tuyo por DOS vale

suelta("-%d es el doble de tu número!", mio) vale

end

/* jerga.h -- una forma estúpida de usar el preprocesador */

#define programa main()

#define begin {

#define end }

#define vale ;

#define traga scanf

#define suelta printf

#define DOS 2

#define por *

#define entero int

Se suelen utilizar como llaves de programa, enmascaramientos, criptación……..

Page 114: curso de lenguaje c

#define NL 10

#define CR 13

#define BLANCO 32

#define ARRIBAIZQ 201

#define ARRIBADER 187

#define ABAJOIZQ 200

#define ABAJODER 188

#define LINEA 205

#define LADO 186

main()

{

int i, j, altura, anchura;

printf("Que altura de caja quiere = ");

scanf("%d", &altura);

printf("Como la quiere de ancha? =);

scanf("%d", &anchura);

putch(ARRIBAIZQ);

for (i = 0; i < (anchura - 2); i++)

putch(LINEA);

putch(ARRIBADER);

putch(NL);

putch(CR);

for (i = 0; i < altura - 2; i++)

{

putch(LADO);

for (j = 0; j < (anchura - 2); j++) {

putch(BLANCO);

} putch(LADO); putch(NL); putch(CR);

}

putch (ABAJOIZQ);

for (i = 0; i < (anchura - 2); i++)

putch(LINEA);

putch(ABAJODER);

putch(NL);

putch(CR);

}

Page 115: curso de lenguaje c

#define ESPACIO ' '

int main(void)

{

char ch;

ch = getchar();

while (ch != '\n')

{

if (ch == ESPACIO)

putchar(ch);

else

putchar(ch + 1);

ch = getchar();

}

return 0;

}

Page 116: curso de lenguaje c

/* convierte segundos en minutos y segundos */

#include <stdio.h>

#define SM 60 /* segundos en un minuto */

main()

{

int seg, min, resto;

printf("Convierte segundos en minutos y segundos.\n");

printf("Introduzca segundos a convertir.\n");

scanf("%d", &seg); /* se lee el numero de segundos */

min = seg / SM; /* número truncado de minutos */

resto = seg % SM; /* número de segundos de resto */

printf("%d segundos son %d minutos, %d segundos.\n", seg, min, resto);

}

Page 117: curso de lenguaje c

#define ESCALA "Centigrados"

#define CONGELA 0

int main(void)

{

float temperatura;

int congelado = 0;

int dias = 0;

printf("Introduzca la lista de temperaturas minimas diarias.\n");

printf("Use grados %s, y pulse s para terminar.\n", ESCALA);

while (scanf("%f", &temperatura) == 1)

{

dias++;

if (temperatura < CONGELA)

congelado++;

}

if (dias != 0)

printf("%d d¡as en total: %.1f%% bajo cero.\n", dias, 100.0 * (float) congelado / dias);

if (dias == 0)

printf("-No se han introducido datos!\n");

return 0; /* programa terminado correctamente */

}

Sentencia

if

Page 118: curso de lenguaje c

#include <stdio.h>

#define ESPACIO ' '

int main(void)

{

char ch;

while ((ch = getchar()) != '\n')

{

if (ch == ESPACIO) /* deja car cter espacio */

putchar(ch); /* sin modificar */

else

putchar(ch + 1); /* cambia los dem s caracteres */

}

return 0;

}

Page 119: curso de lenguaje c

#define TARIFA1 5.418 /* tarifa de los primeros 240 kwh */

#define TARIFA2 7.047 /* tarifa de los siguientes 300 kwh */

#define TARIFA3 9.164 /* tarifa por encima de 540 kwh */

#define LIMITE1 240.0 /* primer bloque de tarifa */

#define LIMITE2 540.0 /* segundo bloque de tarifa */

#define BASE1 (TARIFA1 * LIMITE1)

#define BASE2 (BASE1 + (TARIFA2 * (LIMITE2 - LIMITE1)))

int main(void)

{

float kwh;

float recibo;

printf("Introduzca el gasto en kwh.\n");

scanf("%f", &kwh);

if (kwh <= LIMITE1)

recibo = TARIFA1 * kwh;

else if (kwh <= LIMITE2) /* kwh entre 240 y 540 */

recibo = BASE1 + (TARIFA2 * (kwh - LIMITE1));

else

recibo = BASE2 + (TARIFA3 * (kwh - LIMITE2));

printf("La cuenta total por %.1f kwh es %.0f pts.\n", kwh, recibo);

return 0;

}

Page 120: curso de lenguaje c

#define NO 0

#define SI 1

main()

{

long num, div; int primo;

printf("Introduzca el numero deseado; ");

printf("pulse s para salir.\n");

while (scanf("%ld", &num) == 1)

{

for (div = 2, primo = SI; (div * div) <= num; div++)

{

if (num % div == 0)

{

if ((div * div) != num)

printf("%ld es divisible por %ld y %ld.\n", num, div,num/div);

else

printf("%ld es divisible pro %ld.\n", num, div);

primo = NO;

}

}

if (primo == SI)

printf("%ld es primo.\n", num);

printf("Introduzca otro n£mero para analizar; ");

printf("pulse s para salir.\n");

} }

Page 121: curso de lenguaje c

Programa de aplicaciPrograma de aplicacióónn

Programa que cuente caracteres, palabras de un texto.

Se entenderá que el texto se ha terminado cuando se introduzca el carácter |

Page 122: curso de lenguaje c

#define STOP '|'

#define SI 1

#define NO 0

main()

{

char c;

long nc = 0L;

int nl = 0, np = 0,palabra = NO;

while ((c = getchar()) != STOP)

{

nc++;

if (c == '\n')

nl++;

if (c != ' ' && c != '\n' && c != '\t' && palabra == NO)

{

palabra = SI;

np++;

}

if ((c == ' ' || c == '\n' || c == '\t') && palabra == SI)

palabra = NO;

}

printf("caracteres = %ld, palabras = %d, l¡neas = %d\n",

nc, np, nl);

}

Page 123: curso de lenguaje c

#include <stdio.h>

#define PROFESOR “pesado y aburrido!"

main()

{

char nombre[50];

printf(“¿Cómo se llama tu profesor?\n");

scanf("%s", nombre);

printf(“%s es un tanto %s\n", nombre, PROFESOR);

}

Page 124: curso de lenguaje c

#include <stdio.h>

#define ELOGIO "-Por Júpiter, qué gran nombre!"

main()

{

char nombre[50];

printf("¨Cómo te llamas?\n");

scanf("%s", nombre);

printf("Hola, %s. %s\n", nombre, ELOGIO);

printf("Tu nombre de %d letras ocupa %d celdas de memoria.\n", \

strlen(nombre), sizeof nombre);

printf("La frase de elogio tiene %d letras ", strlen(ELOGIO));

printf("y ocupa %d celdas de memoria.\n", sizeof ELOGIO);

}

Función strlen

PROGRAMA 14PROGRAMA 14