Vous êtes sur la page 1sur 43

LENGUAJE “C”

INTRODUCCIÓN
El lenguaje de programación C es un lenguaje de programación de "bajo nivel".
“C” maneja los elementos básicos del ordenador como caracteres, números y direcciones de
memoria.
Dispone de Librerías de funciones externas al lenguaje, la cual cosa lo convierte en portable
independientemente de la maquina que ejecuta el programa.
La descripción del lenguaje se realiza siguiendo las normas del ANSI C, por lo tanto, todo lo
expresado será utilizable con cualquier compilador.

ESTRUCTURA DE UN PROGRAMA
Librerías Diferentes librerías a utilizar
Variables globales; Variables del programa
Main () Inicio del programa
{
Variables locales; Cuerpo del programa
Sentencias;
} Fin del programa

LIBRERÍAS
• Conjunto de funciones que se identifican con un nombre y que tenemos que llamar al principio
del programa para utilizar unas funciones concretas.
• Lista de librerías usuales:
Stdio.h à funciones de entrada-salida
Conio.h à mas funciones de entrada-salida
Math.h à funciones matematicas
Stdlib.h à mas funciones matematicas
Ctype.h à funciones de conversion de caracteres
String.h à funciones de cadena
Graphics.h à funciones graficas
VARIABLES
Son combinaciones de letras y números que permiten almacenar cualquier valor en la memoria del
ordenador.
Estos valores los podremos utilizar en el programa haciendo referencia al nombre de la variable.
Al finalizar la ejecución del programa las variables se borran.
VARIABLES II
Tipos de variables: Dependiendo del valor a guardar tendremos que determinar el tipo de la variable.
Tipos:
char à valores caracter
int à valores numericos enteros
float à valores numericos grandes con decimales
double à valores numericos grandes con decimales
VARIABLES III
• Modificadores de variables: Son parámetros que permiten modificar los rangos de los tipos de
variables, principalmente del tipo (int)
• Modificadores:
– Signed

1
– Unsigned
– Long
– short
VARIABLES IV

Modificador à signed
Es el modificador por defecto que utiliza “C”, en el caso de una variable definida como:
signed int
almacenara valores entre -32000 y 32000
Modificador à unsigned
Este modificador en una variable INT se definira como :
unsigned int
almacenara valores entre o y 65000 (pasa todo el rango de números negativos a positivos)
Modificador à long
Este modificador en una variable INT se definirá como:
long int
almacenara valores entre -2000000000 y 2000000000

EJEMPLO DECLARACIÓN DE VARIABLES


Declaración de una variable como un entero
int variable;
int variable2;
int variable3;
Declaración de variables y asignación de valores en una línea
int variable = 1000, variable2 = 2, variable3;
Declaración de variables tipo texto
char variable ;
Con tamaño fijo de caracteres:
char variable[15];
Con asignación de valor
char variable = 'a' ;

SECUENCIAS DE ESCAPE
• Las secuencias de escape se utilizan para representar caracteres o acciones especiales.
• Lista de secuencias:
\” à Comillas dobles
\’ à Comilla simple
\? à Interrogante
\b à Retrocede un caracter
\n à Efectua un salto de linea
\r à Coloca el cursor al principio de la linea
\t à Representa el tabulador desplazando una serie de espacios
OPERADORES
• Los operadores son simbolos que utilizamos para realizar operaciones y comparaciones.
• Tipos de operadores:
• Operadores aritmeticos
• Operadores relacionales
• Operadores logicos

2
OPERADORES II
• Operadores aritmeticos
+ à suma
- à resta
* à multiplica
/ à divide
++ à incrementa un valor
-- à decrementa un valor
% à obtiene el resto de una division entera

OPERADORES III
• Lista de operadores relacionales:
== à igual que
> à mayor que
>= à mayor o igual que
< à menor que
<= à menor o igual que
!= à diferente que

OPERADORES IV
• Lista de operadores logicos:
&& à significa y (and)
|| à significa o (or)
! à significa negacion no (not)

LIBRERAS
• Las librerias son grupos de funciones que permiten realizar determinadas operaciones, al
principio de los programas tendremos que llamar a las librerias necesarias según las acciones que
debe realizar el programa.
• La orden que llama a las librerias es,
#include <nombre de la libreria>

EJEMPLO DE LLAMADAS A LIBRERIAS


• Dependiendo de las acciones a realizar por el programa tendremos que llamar a una o varias
librerias.
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stdlib.h>

CONSTANTES
• Podemos definir una constante con un valor determinado mediante el parametro #define.
#define FIN 'F'
#define MAX 1000
• A partir de este momento al hacer referencia a FIN el valor que cogera el programa sera la “F”, de
la misma forma al hacer referencia a MAX entendera “1000”

3
FUNCIÓN: PRINTF
• Esta función permite mostrar por pantalla los mensajes del programa, así como los resultados de
las operaciones que realiza el mismo.
• La estructura del PRINTF es …
printf(“códigos”,variables);
• Los códigos que expresamos entre comillas dentro de la función indican que tipo de datos va a
mostrar la función.
• Lista de códigos:
%c à carácter
%s à cadena de caracteres
%d à numero entero
%u à numero sin signo
%f à valor float
%x à valor hexadecimal
%o à valor octal
%% à signo tanto por ciento %
%ld à numero de tipo long
EJEMPLOS DE PRINTF
printf(“tu nombre es %s”,nombre);
printf(“Tienes %d años”,edad);
printf(“La factura nº %d asciende a %ld euros”,nfac,neto);
printf(“\n El numero introducido es %d”,numero);

FUNCIÓN: SCANF
• La orden SCANF se utiliza para introducir datos a un programa en “C”. Mediante esta orden el
usuario podra introducir valores a las preguntas propuestas por el programa.
• La estructura del scanf es:
scanf(“codigo”,&variable);
• Los códigos permiten especificar que tipo de valores vamos a introducir desde el teclado. El tipo
de datos a introducir estará relacionado con el tipo de la variable en la que se almacenara el valor.
• La lista de códigos es la misma que utiliza la función PRINTF explicada en diapositivas
anteriores.

Ejemplos del SCANF


scanf (“%d”,&numero);
scanf (“%s”,&frase);
scanf (“%c”;&letrasola);
scanf (“%lf”,&numero);
FUNCIONES DE ENTRADA / SALIDA
• Son funciones de “C” que permiten la introducción y visualización de un carácter.
• Funciones entrada/salida:
Getch()
Getche()
Getchar()
Putchar()
Gets()
Puts()

4
FUNCIONES E/S
• Getch()
– Para introducir un carácter, no necesita pulsar intro y el carácter no se visualiza en
pantalla.
• Getche()
– Para introducir un valor, sin necesidad de pulsar intro y se visualiza en pantalla.
• Getchar()
– Necesita el intro después de introducir el carácter, este se visualiza por pantalla.
• Putchar()
– Muestra por pantalla un carácter.
• Gets()
– Es para introducir una cadena de caracteres
• Puts()
– Muestra por pantalla una cadena de caracteres

CONDICIONALES
 Los condicionales permiten al programa escoger entre varios posibles resultados
dependiendo de la evaluación de una condición.
 Un condicional solo puede retornar el valor de verdadero o falso.
 Un condicional siempre retorna un resultado.

CONDICIONALES II
 Si el condicional tiene que realizar una sola operación en el caso de ser verdadera o falsa, el
formato será:
if (condición) operación1;
else operación2;

CONDICIONALES III
Modo de ejecución:
if (condición) operación1;
else operación2;
Si la condición es cierta, se ejecutara la “operacion1” y finalizara el condicional.
Sino (else) es cierta la condición, se ejecutara la “operacion2” y finalizara el condicional
CONDICIONALES IV
 Si el condicional tiene que ejecutar varias operaciones, en el caso de ser cierta y/o falsa la
condición, el formato que utilizaremos es,
If (condición) {
grupo de operaciones1
}
else{
grupo de operaciones2
}

CONDICIONALES V
5
 Modo de ejecución:
If (condición) {
grupo de operaciones1
}
else{
grupo de operaciones2
}
Si la condición es verdadera se ejecutara el “grupo de operaciones1” y sino (else) es
cierta la condición, se ejecutara el “grupo de operaciones2”.

6
Estructuras de Control en C++

Las estructuras de control determinan la secuencia en la que se ejecutarán las


instrucciones de un programa.
Las estructuras de control se dividen en tres categorías en función del flujo de
ejecución:
Estructura secuencial.
Estructura alternativa o condicional.
Estructura iterativa o repetitiva.

1. ESTRUCTURA SECUENCIAL
La estructura secuencial está formada por una secuencia de instrucciones que se
ejecutan en orden una a continuación de la otra.
Cada una de las instrucciones están separadas por el carácter punto y coma (;). No
obstante, en algunos casos nos interesará agrupar en un bloque una serie de
instrucciones, como veremos al explicar las estructuras de selección y de iteración. El
bloque de sentencias se define por el carácter llave de apertura ({) para marcar el inicio
del mismo, y el carácter llave de cierre (}) para marcar el final.
En este primer ejercicio se muestra la base de todo programa, la escritura en pantalla,
para ello, hay que introducir la librería adecuada con instrucciones básica e indicarle al
programa donde empezar main ( )

Las funciones mas simples y utilizadas son


Printf escritura en pantalla
Scanf lectura de pantalla

Ejemplo-,
Realizar un ejercicio de calculo matemático
Aprenderemos a declarar valores int = números
Float = números decimales
Char, = caracteres
Y a pedir al ordenador que los lea mediante instrucción scanf . el cálculo de valores se
sitúa sin instrucciones.
Programa que calcule la suma de 2 numeros

7
2. ESTRUCTURA CONDICIONAL, SELECTIVA O ALTERNATIVA.
Las estructuras condicionales controlan si una sentencia o bloque de sentencias se
ejecutan, en función del cumplimiento o no de una condición o expresión lógica.
C++ tiene dos estructuras de control para la selección, if y switch.

2. 1 Instrucción IF
Esta instrucción hace que se ejecuten unas sentencias u otras dependiendo del valor
que toma una condición.
La instrucción if puede ser simple o doble:

Una de las estructuras mas utilizadas e c++ es el if sirve para el ordenador distinga
entre varios caminos posibles. Si hay mas de uno, se utilizara * else* para señalar el
restante , las condiciones van entre llaves.

Ejemplo.
Ingresar por teclado 2 numeros preguntar cual es el numero mayos

2.2 Instrucción switch

La sentencia switch selecciona una de entre múltiples alternativas.


La forma general de esta expresión es la siguiente:
switch (expresión)
{
case constante1:
instrucciones;
break;
case constante 2:
instrucciones;
break;
···
default:
instrucciones;
}

8
En una instrucción switch, expresión debe ser una expresión con un valor entero, y
constante1, constante2, ..., deben ser constantes enteras, constantes de tipo carácter o
una expresión constante de valor entero. Expresión también puede ser de tipo char, ya
que los caracteres individuales tienen valores enteros
Dentro de un case puede aparecer una sola instrucción o un bloque de instrucciones.
La instrucción switch evalúa la expresión entre paréntesis y compara su valor con las
constantes de cada case. Se ejecutarán las instrucciones de aquel case cuya constante
coincida con el valor de la expresión, y continúa hasta el final del bloque o hasta una
instrucción que transfiera el control fuera del bloque del switch (una instrucción break, o
return). Si no existe una constante igual al valor de la expresión, entonces se ejecutan
las sentencias que están a continuación de default si existe (no es obligatorio que
exista, y no tiene porqué ponerse siempre al final).

3. ESTRUCTURAS REPETITIVAS O ITERATIVAS.


C++ dispone de tres estructuras repetitivas:
while,
do-while
for.
3.1 Instrucción while.
while (condicion)
{
instrucción 1;
..............
instrucción N;
}
Ejecuta una instrucción o un bloque de instrucciones cero o más veces, dependiendo
del valor de la condición.
Se evalúa la condición, y si es cierta, se ejecuta la instrucción o bloque de instrucciones
y se vuelve a evaluar la condición; pero si la condición es falsa, se pasa a ejecutar la
siguiente instrucción después del while.

Ejemplo de instrucción while en C++. Programa que lee números enteros hasta que se
lee un número negativo. Se muestra la suma de todos los números leidos excepto el
número negativo.

9
3.3 Instrucción for.
Un bucle for hace que una instrucción o bloque de instrucciones se repitan un número
determinado de veces mientras se cumpla la condición.

for(inicialización; condicion; incremento/decremento)


{
instrucción 1;
...........
instrucción N;
}
A continuación de la palabra for y entre paréntesis debe haber siempre tres zonas
separadas por punto y coma:
zona de inicialización
zona de condición
zona de incremento ó decremento.
En alguna ocasión puede no ser necesario escribir alguna de ellas. En ese caso se
pueden dejar en blanco, pero los punto y coma deben aparecer.
El funcionamiento de un bucle for el siguiente:
1. Se inicializa la variable o variables de control.
2. Se evalúa la condición.
3. Si la condición es cierta se ejecutan las instrucciones. Si es falsa, finaliza la
ejecución del bucle y continúa el programa en la siguiente instrucción después del for
4. Se actualiza la variable o variables de control (incremento/decremento)
5. Se pasa al punto 2).
Esta instrucción es especialmente indicada para bucles donde se conozca el número
de repeticiones que se van a hacer.
Como regla práctica podríamos decir que las instrucciones while y do-while se utilizan
generalmente cuando no se conoce a priori el número de pasadas, y la instrucción for
se utiliza generalmente cuando sí se conoce el número de pasadas.
Ejemplo de instrucción for en C++. Programa que muestra los números del 1 al 10.

/* muestra los números de 1 a 10 */


#include <iostream>
using namespace std;
int main(void)
{
int n;
for (n = 1; n <= 10; n++)
{
cout << n << endl;
}

}
system("pause");
}
Ejemplo de instrucción for en C++. Programa que muestra los números del 10 al 1:
/* muestra los números de 10 a 1 */
#include <iostream>
using namespace std;
int main(void)
{
10
int n;
for (n = 10; n >=1; n--)
{
cout << n << endl;
}
system("pause");
}
Se ha de tener cuidado y al escribir el punto y coma (;) después del paréntesis final del
bucle for.
Por ejemplo el bucle:
#include <iostream>
using namespace std;
int main(void)
{
int i;
for (i = 1; i <= 100; i++);
{
cout << "Hola" << endl;
}
system("pause");
}
no muestra "Hola" 100 veces. En realidad se muestra una vez "Hola", ya que la
sentencia for es una sentencia vacía al terminar con un punto y coma (;).
La sentencia for en este caso hace que i empiece en 1 y acabe en 11 y tras esas iteraciones,
se ejecuta la sentencia cout.
BUCLES ANIDADOS.
Hablamos de bucles anidados cuando se incluyen instrucciones for, while o do-while unas
dentro de otras.
Ejemplo de bucles anidados en C++. Programa que muestra el primer número perfecto
mayor que 100. Un número es perfecto cuando la suma de sus divisores excepto él mismo
es igual al propio número. Por ejemplo 6 es perfecto ya que sus divisores son 1, 2 ,3 y
suman 6
#include <iostream>
using namespace std;
int main(void)
{
int numero, cont, suma;
bool encontrado;
encontrado = false;
numero = 101;
while (!encontrado)
{
suma = 1;
for (cont = 2; cont < numero; cont++)
{
if (numero % cont == 0)
{
suma = suma + cont;
}
}
if (suma == numero)
{
encontrado = true;
}
else
{
numero++;
}
}
11
cout << "El primero numero perfecto mayor que 100 = " << numero << endl;
system("pause");

12
MODO DE EJECUCION DE UN PROGRAMA
 Desde el editor de “C”, cuando tenemos el código copiado tendremos que “compilarlo” para
comprobar que no hay ningun error de sintaxis, etc…, ya que en el caso de haberlo, no se
podrá ejecutar.
 El “C” controla dos tipos de errores, los WARNINGS y los ERRORS.
 Un programa con WARNINGS se podrá ejecutar ya que son errores leves, pero con
ERRORS no podremos ejecutar el código.

PANTALLA PRINCIPAL DE C +

COMO COMPILAR EL CODIGO

13
14
EJERCICIO 2
En este ejercicio vamos introducir nuestro nombre, nuestro año de nacimiento y
el programa calculara aproximadamente la edad, para ello introduciremos el
siguiente codigo,

En el editor de “C” copiamos el código,


#include <stdio.h>
#include <conio.h>
#include <string.h>

main()
{
int nace, actual;
char nombre[35];
clrscr();
printf("Introduce tu nombre: ");
scanf("%s",&nombre);
printf("Introduce tu año de nacimiento: ");
scanf("%d",&nace);
printf("Introduce el año actual: ");
- scanf("%d",&actual);
printf("\n %s, Tienes %d años",strupr(nombre),(actual-nace));
getch();
}

Finalmente ejecutamos el código con CTRL-F9 y probamos el resultado del


código anterior.

15
EJERCICO 3

En este ejercicio vamos a crear un programa que permita introducir dos números
y que después nos muestre en pantalla el resultado de la suma, resta,
multiplicación y división.

En el editor de “C” introduciremos el siguiente código,

#include <stdio.h>
#include <conio.h>
main ()
{
double n1, n2, resultado;
clrscr();
printf("Introduce el primer número: ");
scanf("%lf",&n1);
printf("Introduce el segundo numero: ");
scanf("%lf",&n2);
resultado=n1+n2;
printf("%.3lf + %.3lf = %.3lf\n",n1,n2,resultado);
resultado=n1-n2;
printf("%.3lf - %.3lf = %.3lf\n",n1,n2,resultado);
resultado=n1*n2;
printf("%.3lf * %.3lf = %.3lf\n",n1,n2,resultado);
resultado=n1/n2;
printf("%.3lf / %.3lf = %.3lf",n1,n2,resultado);
getch();
}

Finalmente ejecutamos el código con CTRL-F9 y probamos el resultado del


código anterior.
16
Ejemplos
#include <stdio.h>
main()
{
Int a;
Printf(“Introduce un numero: “);
Scanf(“%d”,&a);
If (a==5) printf(“has introducido el numero 5”);
Else printf(“no has introducido el numero 5”);
}

Ejemplos
#include <stdio.h>
Int a,b;
Void main(){
printf”(“Introduce un numero: “);scanf(“%d”,&a);
Printf(“\n Introduce otro numero: “);scanf(“%d”,&b);
If (a>b) printf(“El primero es mayor que el segundo”);
Else printf(“El segundo es mayor que el primero”);
17
}

Ejemplos
#include <stdio.h>
#include <conio.h>
#include <string.h>
char palabra[15];
main()
{
clrscr();
printf("Pon una palabra, si pones FIN me acabo: ");
;scanf("%s",palabra);
if (strcmp(nombre,“FIN")==0){
printf(" Has puesto FIN y me acabo”);
}
else{
printf(“Has puesto la palabra %s“,palabra);}
getch();
}

Condicional VI
 El condicional IF – ELSE dispone de una variante que representa el condicional
anidado, es decir, un condicional dentro de otro. Este condicional se da, cuando
como resultado de un condicional se inicia uno nuevo.
 La sintaxis es,
If (condición)
código;
Else if (condición)
código;
Else if (condición)
código;
……

Ejemplos
#include <stdio.h>
18
#include <conio.h>
Int a;
Void main(){
Printf(“Introduce un numero: “);scanf(“%d”,&a);
If (a==1)
Printf(“has puesto el numero uno”);
Else if (a==2)
Printf(“has puesto el dos”);
Else
printf(“no conozco el numero introducido”);
}

BUCLES
 Los bucles permiten repetir la ejecución de un trozo de programa determinado
un numero de veces.
 Existen diferentes bucles, y cada uno de ellos dispone de unas cualidades
diferentes.

BUCLES - FOR

 El bucle “FOR” permite repetir un trozo de código un numero determinado de


veces, ya que el for es capaz de ir incrementando el valor de una variables hasta
que esta llege a un valor final.
 La sintaxis del for es,
For (valor inicial; condición; incremento/decremento)
{
Código
}

Ejemplo FOR
#include <stdio.h>
#include <conio.h>
Int a,b;
Void main(){
Printf(“Hasta que numero quieres que cuente:”);scanf(“%d”,&a);
For (b=1;b<=a;b++)
{
Printf(“ %d \n“,b);
}
}

BUCLES - WHILE
19
 Permite repetir un trozo de código mientras la condición sea cierta. El valor se
revisa desde la primera vez que entra al bucle.
 Sintaxis del While:
While (condición)
{
Código;
}

Ejemplo - While
#include <stdio.h>
#include <conio.h>
Void main(){
Int a=0;
While (a<=10)
{
Printf(“%d \n”,a);
a++;
}
Printf(“Fin del ejemplo del while”);
Getch();
}

BUCLES – DO WHILE
 Permite repetir un código un numero determinado de veces mientras la
condición sea cierta. A diferencia del bucle anterior While, este siempre entra la
primera vez dentro.
 Sintaxis,
Do
{
código;
}
While (condición);

DECLARACIÓN DE ARRAYS
Ejemplos,
Intmeses [12]={1,2,3,4,5,6,7,8,9,10,11,12};
Charcadena [20];
Charnombre [15]={null};
Inta[40];
Char meses [3][20]={“enero”,”febrero”,”marzo”};
Charfrase [15]=“hola que tal”;
Intb [5];

FUNCIONES DE TIPO CADENA

20
Las funciones de tipo cadena se encuentran en la librería string.h
Las funciones de cadena funcionan cuando el contenido de la cadena es superior a un
carácter.
Strcpy(A,B) à copia el contenido de B en A y el fin de cadena \0
Strcmp(A,B) à Compara cadenas, si son iguales devuelve un 0. Si a>b devuelve
valor>0, si a<b devuelve valor<0
Srtlen(A) à Cuenta el nº de caracteres de la cadena A
Strcat(A,B) à Añade la cadena B al final de la cadena A

EJEMPLO - ARRAYS
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
void main (void) {
char frase[25],reves[25];
int cont,cont2,col, len;
clrscr();
printf(“Introduce una frase de maximo 25 caracteres: \n");
gets(frase);
len=strlen(frase);
cont2=len;
for (cont=0;cont<=len;cont++){
cont2--;
reves[cont2]=frase[cont];
}
reves[cont-1]='\0';
col=ceil(len/2);
col=40-col;
clrscr();
_setcursortype(_NOCURSOR);
gotoxy(col,12);
puts(reves) ;
getch();
}

SWITCH
 Permite tomar decisiones y escoger entre varias opciones dependiendo del valor de
una variable.
 Este sentencia de control dispone del parámetro BREAK; para finalizar la orden
switch.
 Sintaxis:
Switch (variable){
case 0:
codigo;

21
break;
case 1:
codigo;
Break;
case 2:
codigo;
break;
default:
codigo;
}

Ejemplo Switch
#include <stdio.h>
#include <conio.h>
#include <string.h>
Void main(){
Int opcion,s,r;
Clrscr();
Printf(“Escoge entre el numero 1 y 2 “;scanf(“%d”,&opcion);
Switch(opcion)
{
Case 1: printf(“has escogido el numero 1”);
Case 2: prnitf(“has escogido el numero 2”);
Default: printf(“no entiendo el numero”);
}
Getch();
}

BIFURCACIONES - GOTO

 Permiten llevar la ejecución del programa a un punto determinado del código.


 Ejemplo,
#include <stdio.h>
#include <conio.h>
Void main(){
Int a=0;
Clrscr();
Voy:
Printf(“%d \n”,a);
A++;
Goto voy;
Getch()
}
FUNCIONES

 Las funciones permiten automatizar operaciones repetitivas dentro de un código. Nos evita tener que
copiar varias veces el mismo código dentro del programa.
 Las funciones tienen un nombre el cual no puede contener caracteres raros, ni espacios en blanco.
22
FUNCIONES II
 Estructura de una función:
Tipo función nombre_de_la_función ( argumentos/variables )
{
cuerpo de la función;
return;
}
Ejemplo Funcion
#include <stdio.h>
#include <conio.h>
int compara( int a, int b )
{
if ( a>b ) printf( "%i es mayor que %i\n" , a, b );
else
printf( "%i es mayor que %i\n", b, a );
return;
}
int main()
{
int num1, num2;
printf( "Introduzca dos números: " ); scanf( "%i %i", &num1, &num2 );
compara( num1, num2 );
}
PUNTEROS
 Los punteros se utilizan para conocer la dirección de memoria donde tenemos almacenado el valor de
una variable.
 Es decir, al declarar una variable, el ordenador utiliza una dirección de su memoria a la que le da el
nombre de la variable y en su interior guarda el valor.
 De forma que al declarar una variable estamos ocupando una dirección de memoria del ordenador, y
los punteros se utilizan para conocer y manipular estas direcciones.
 Para poder visualizar la dirección de memoria (puntero) tendremos que utilizar el parámetro,
 %p que sirve para escribir direcciones de punteros y variables. El valor se muestra en hexadecimal.
Y para obtener la dirección de memoria en lugar del valor que guarda tendremos que preceder la
variable del signo &

Ejemplo
#include <stdio.h>
Void main()
{
int a;
a = 10;
printf( "Dirección de a = %p, valor de a = %i\n", &a, a );
}

Punteros III
 Para declarar una variable para que sea de tipo puntero tendremos que preceder el nombre de la
variable con el “ * ”.
#include <stdio.h>

23
int main()
{
int a;
int *p;
a = 3;
p = &a;
printf( "Dirección de numero = %p, valor de numero = %i\n", p, a );
}

Punteros IV
 Es muy importante diferenciar entre el puntero (posición de memoria) y el valor de la variable.
 Cada asignación de una nueva variable gasta o utiliza una nueva posición de memoria.
Int a,b;
a=5;
b=5;
 Según las tres líneas anteriores las variables a y b son iguales (tienen el mismo contenido), pero los
punteros son diferentes ya que cada variable a utilizado una posición diferente de memoria.

ARRAYS
 Ya sabemos de lecciones anteriores que es un array y para que sirve, incluso como se declara.
 Veremos como introducir valores dentro de un array unidimensional, es decir que la variable tendrá
solamente un nivel de elementos.
Ejemplo
#include <stdio.h>
#include <conio.h>
int a[5];
int b;
void main(){
clrscr();
for (b=0;b<=5;b++){
printf(“Introduce el valor para el elemento %d",b);scanf("%d",&a[b]);
}
getch();
clrscr();
for (b=0;b<=5;b++){
printf(" \nEl valor introducido es %d",a[b]);
}
getch();
}

Ejemplo
 En el ejemplo anterior hemos declarado el array “a” con “5” elementos. Tambien hemos declarado
“b” que nos ayudara a recorrer el array.
 Después hemos realizado un bucle (for) para que nos pida tantos valores como posiciones tienen y se
almacene en una posición del array “a[b]”.
 Finalmente para visualizar la lista de valores introducidos en el array volvemos a realizar un (for) que
recorra el total del array visualizando los valores guardados.

24
PUNTEROS EN ARRAYS

 Evidentemente como los valores de un array se guardan en diferentes posiciones de memoria del
ordenador podríamos conocer mediante punteros la dirección de memoria donde se guardo cada
elemento.
 Si modificamos el código anterior y ponemos la línea siguiente visualizaremos la posición de
memoria.
printf(" \nEl valor introducido es %d",a[b]);
Printf(“\n El valor introducido es %d y el puntero %p”,a[b],&a[b];

CADENAS DE TEXTO (STRINGS


 Para utilizar las funciones que explicaremos a continuación tendremos que inicializar la librería
<string.h>.
 Estas funciones permiten manipular el contenido de variables de texto.
#include <string.h>

FUNCIONES DE TEXTO - STRLEN


 Esta función nos devuelve el número de caracteres que tiene la cadena, sin contar el final de
cadena (\0).
 Por ejemplo, indicamos un trozo de código,
……
char texto[]=“hola";
int longitud;
longitud = strlen(texto);
……
El resultado de longitud será 4

FUNCIÓN - STRCPY
 Copia el contenido de una cadena en otra.
 Tendremos en cuanta que el tamaño de la cadena que recibe el contenido tenga espacio suficiente.
 Ejemplo,
char texto1[] = “Hola que tal";
char destino[30];
strcpy( destino, texto1,4 );
El resultado será que dentro de la variable “DESTINO” tendremos el contenido de los 4 primeros
caracteres de texto1.(HOLA)

FUNCIÓN - STRCAT
 Es parecida a la anterior, con la diferencia que copia el contenido de la segunda cadena al final de la
primera. (concatena textos).
 Ejemplo,
Strcat (cadena1,cadena2)

FUNCIÓN - STRCMP
 Compara cadena1 y cadena2. Si son iguales devuelve 0. Un número negativo si cadena1 va antes que
cadena2 y un número positivo si es al revés.
 Ejemplo,
strcmp(nombre1,nombre2);
25
FUNCIONES DE “CARÁCTER”
 Estas funciones las utilizaremos activando previamente la librería <ctype.h>
 Mediante las funciones de esta librería podemos analizar el contenido de una cadena de caracteres o
de un array, para saber si existen determinados caracteres.
#include <ctype.h>
 Isalpha(carácter): Esta función detecta si existen los caracteres alfabéticos (a-z), si el resultado de la
función es diferente a 0 es que ha localizado un carácter.
 Isdigit(carácter): Detecta si existen valores numéricos del (0 al 9), si es así retorna un valor diferente
de 0

FUNCIONES CARÁCTER II
 Isalnum(carácter): Detecta caracteres alfanuméricos, si es así retorna diferente de 0.
 Islower(carácter): Detecta caracteres en minúsculas. Si los detecta retorna un valor diferente a 0.
 Isupper(carácter): Detecta mayúsculas.
 Isspace(carácter): Localiza espacios en blanco.
 Ispunct(carácter): Localiza signos de puntuación, si los localiza retorna un valor diferente de 0.

Ejemplo funciones “Carácter”


#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
Void main(){
Char frase[20];
Int mas=0,a;
Printf(“Introduce una palabra:”);gets(frase);
For (a=0;a<strlen(frase);a++)
If (isdigit(frase[a])!=0)
Mas++;
Printf(“El numero de caracteres numéricos es %d “,mas);
Getch();
}

FUNCIONES VARIAS

 Correspondientes a la librería <dos.h>


Sleep(segundos); àRealiza un retardo de x segundos
Delay(milisegundos); à Retardo de x milisegundos
Sound(frecuencia); à Emite un sonido correspondiente a la frecuencia.
Nosound(frecuencia); à Elimina el sonido correspondiente.
 Correspondientes a la librería <conio.h>
Wherex(); à Indica el numero de la columna horizontal) donde se encuentra situado El cursor.
Wherey(); à Indica el numero de la fila (vertical) donde se encuentra el cursor.

FUNCIONES DE IMPRESIÓN
 Para volcar por impresora información, tendremos que utilizar funciones de la librería <stdio.h>.
 Función: fprintf à stdprn
Ejemplo
26
Fprintf(stdprn,”texto”+codigos+secuencias de escape”, variables);
Fputs(“cadena”,stdprn);

MODO “GRAFICO”
 El lenguaje “c” nos permite utilizar una librería <graphics.h>, la cual contiene funciones para trabajar
de forma grafica.
Una de las principales diferencias del trabajo en modo grafico es que la pantalla del ordenador no se
medirá en filas y columnas, sino que se utilizaran píxel.

INICIALIZACIÓN MODO GRAFICO


 Para que “C” sepa que el programa se va a ejecutar en modo grafico, tendremos que inicializar este
modo, para ello,
Int tipo=DETECT; à esta linea detecta automaticamente el tipo de pantalla.
Int modo; à Variable numerica.
Initgraph (&tipo,&modo,”c:\\tc”); à la funcion initgraph inicia el modo grafico dependiento del
tipo detectado, tambien hay que indicar en que directorio del ordenador se encuentran los
archivos,BGI y CHR.

FUNCIONES
Setcolor(color); à Determina el color.
Setbkcolor(color);à Determina el color de fondo.
Getmaxx(); à Numero de píxel horizontales
Getmaxy(); à Numero de píxel verticales
Getmaxcolor(); à Determina el numero de colores.
Outtext(cadena); à Muestra mensajes en pantalla
Outtextxy(cadena); à Muestra mensajes en pantalla en cordenadas x,y

FUNCIONES II
Graphresult(); à Detecta errores.
Settextstyle(fuente,direccion,tamaño); à Define un tipo de letra con el tamaño y la direccion.
Tipos de letra: 0,1,2,3,4,5,6,7,8,9
Direcciones: 0-horizontal / 1-vertical
Tamaño: del 1 al 10

FUNCIONES III
Cleardevice(); à Borra la pantalla en modo grafico.
Restorecrtmode(); à Regresa a modo texto
Getx(); à Obtiene la coordenada X
Gety(); à Obtiene la coordenada Y
Moveto(); à Determina las coordenadas X,Y
Closegraph(); à Igual que “restorecrtmode()”, cierra el modo texto.

FUNCIONES IV
Circle(x,y,radio); à Dibuja un circulo
Rectangle(x,y,x2,y2); à Dibuja un rectángulo
Line(x,y,x2,y2); à Dibuja una linea con origen y fin según coordenadas.
Bar(x,y,x2,y2); à Dibuja un rectángulo pero con color blanco como relleno.
Bar3d(x,y,x2,y2,fondo,1); Dibuja rectángulo en 3 dimensiones.

27
FUNCIONES V
Putpixel(x,y,color); à Dibuja un pixel.
Ellipse(x,y,a1,a2,radiox,radioy); à Dibuja un arco.
Fillellipse(x,y,radiox,radioy); à Dibuja elipse con color blanco de fondo.
Pieslice(x,y,a1,a2,radio); à Dibuja un trozo de circunferencia.

Ejemplo
#include <graphics.h>
#include <conio.h>
#include <stdlib.h>
void main(){
int adaptador=DETECT;
int m,color,iz,de;
float x;
initgraph(&adaptador,&m,"C:\\tc");
cleardevice();
while (!kbhit())
{
color=random(getmaxcolor()+1);
setcolor(color);
setfillstyle(random(11),color);
iz=random(getmaxx());
de=random(getmaxy()-20);
bar(iz,de,random(getmaxx()),random(getmaxy()-20));
setcolor(14);settextstyle(2,0,7);
outtextxy(10,460,"tecla");
}
cleardevice();getch();
while(!kbhit())
{
color=random(getmaxcolor()+1);
setcolor(color);
setfillstyle(random(11),color);
iz=random(getmaxx());
de=random(getmaxy());
bar3d(iz,de,random(360),random(360),random(100),random(100));
setcolor(14);settextstyle(2,0,7);
outtextxy(0,460,"tecla");
}
closegraph();
}

EJERCICIO DE “C”

En este ejercicio vamos a crear un programa que permita introducir un numero


que después el programa nos muestre un mensaje con el numero introducido.

28
En el editor de “C” introduciremos el siguiente código,

#include <stdio.h>
#include <conio.h>
main ()
{
int numero=0;
clrscr();
printf("Introduce un numero entero: ");
scanf("%i",&numero);7
printf("El nº introducido es %d",numero);
getch();
}

Finalmente ejecutamos el código con CTRL-F9 y probamos el resultado del


código anterior.

En este ejercicio vamos a crear un programa en el que introduciremos tres


números y queremos que el programa nos indique el valor más grande y el más
pequeño.

En el editor de “C” introduciremos el siguiente código,

#include <stdio.h>
#include <conio.h>
main ()
{
int n1,n2,n3;
clrscr();
29
printf("Introduce el primer numero: ");
scanf("%d",&n1);
printf("Introduce el segundo numero: ");
scanf("%d",&n2);
printf("Introduce el tercer numero: ");
scanf("%d",&n3);

if ((n1>n2)&&(n1>n3))
printf("%d es el mas grande\n",n1);
else if (n2>n3)
printf("%d es el mas grande\n",n2);
else
printf("%d es el mas grande\n",n3);
if ((n1<n2)&&(n1<n3))
printf("%d es el mas pequeño\n",n1);
else if (n2<n3)
printf("%d es el mas peqjueño\n",n2);
else
printf("%d es el mas pequeño\n",n3);

getch();
}

Finalmente ejecutamos el código con CTRL-F9 y probamos el resultado del


código anterior.
Si el código es correcto y el programa funciona bien, procederemos a grabarlo
en el ordenador.
En este ejercicio vamos a crear un programa que permita introducir dos numeros
y que despues nos muestre en pantalla el resultado de la suma, resta,
multiplicacion y division.

30
En el editor de “C” introduciremos el siguiente código,

#include <stdio.h>
#include <conio.h>
main ()
{
double n1, n2, resultado;
clrscr();
printf("Introduce el primer numero: ");
scanf("%lf",&n1);
printf("Introduce el segundo numero: ");
scanf("%lf",&n2);
resultado=n1+n2;
printf("%.3lf + %.3lf = %.3lf\n",n1,n2,resultado);
resultado=n1-n2;
printf("%.3lf - %.3lf = %.3lf\n",n1,n2,resultado);
resultado=n1*n2;
printf("%.3lf * %.3lf = %.3lf\n",n1,n2,resultado);
resultado=n1/n2;
printf("%.3lf / %.3lf = %.3lf",n1,n2,resultado);
getch();
}

Finalmente ejecutamos el código con CTRL-F9 y probamos el resultado del


código anterior.
Si el código es correcto y el programa funciona bien, procederemos a grabarlo
en el ordenador.

En este ejercicio vamos a crear un programa en el que introduciremos tres


numeros y queremos que el programa nos indique el valor mas grande y el mas
pequeño.

En el editor de “C” introduciremos el siguiente código,

#include <stdio.h>
31
#include <conio.h>
main ()
{
int n1,n2,n3;
clrscr();
printf("Introduce el primer numero: ");
scanf("%d",&n1);
printf("Introduce el segundo numero: ");
scanf("%d",&n2);
printf("Introduce el tercer numero: ");
scanf("%d",&n3);

if ((n1>n2)&&(n1>n3))
printf("%d es el mas grande\n",n1);
else if (n2>n3)
printf("%d es el mas grande\n",n2);
else
printf("%d es el mas grande\n",n3);
if ((n1<n2)&&(n1<n3))
printf("%d es el mas pequeño\n",n1);
else if (n2<n3)
printf("%d es el mas pequeño\n",n2);
else
printf("%d es el mas pequeño\n",n3);

getch();
}

Finalmente ejecutamos el código con CTRL-F9 y probamos el resultado del código anterior.
Si el código es correcto y el programa funciona bien, procederemos a grabarlo en el ordenador.

En este ejercicio vamos introducir nuestro nombre, nuestro año de nacimiento y el programa calculara
aproximadamente la edad, para ello introduciremos el siguiente codigo,

En el editor de “C” copiamos el código,


#include <stdio.h>
#include <conio.h>
#include <string.h>

void main(void)
{
int nace, actual;
char nombre[35];
clrscr();
printf("Introduce tu nombre: ");
scanf("%s",&nombre);
printf("Introduce tu año de nacimiento: ");
scanf("%d",&nace);
printf("Introduce el año actual: ");
scanf("%d",&actual);
printf("\n %s, Tienes %d años",strupr(nombre),(actual-nace));
32
getch();
}

En este ejercicio vamos introducir un numero y el programa nos tiene que indicar si ese valor esta dentro
del rando de entre 25 y 50.

En el editor de “C” copiamos el código,

#include <stdio.h>
#include <conio.h>
void main ()
{
int num;
clrscr();
printf("Introduce un numero: ");
scanf("%d",&num);

if ((num>=25)&&(numero<=50)){
printf("El numero introducido esta comprendido entre 25 y 50");
}else{
printf("El numero no esta entre los valores 25 y 50");
}
getch();
}

En este ejercicio vamos introducir un valor numerico y queremos que el programa nos indique si el
numero es par o impar.

En el editor de “C” introducimos el código,

#include <stdio.h>
#include <conio.h>
main ()
{
int numero;
clrscr();
printf("Introduce un numero: ");
scanf("%d",&numero);
if (numero%2==0)
{
printf("%d es par",numero);
}
else
{
printf("%d es impar",numero);
}
getch();
}
En este ejercicio vamos hacer un programa que pregunte cuantos valores queremos introducir, después
que empiece a pedirlos y finalmente que nos muestre un resumen de la cantidad de valores positivos,
negativos o valores cero que se han introducido.

En el editor de “C” introducimos el código,

#include <stdio.h>
#include <conio.h>
33
main ()
{
int cuantos,numero, positivos,negativos,cero,cont;
clrscr();
positivos=0;
negativos=0;
cero=0;
printf("Cuantos numeros vas a INTRODUCIR? );
scanf("%d",&ncuantos);
printf("Empieza a introducir los numeros?:\n");
for (cont=0;cont<ntotal;cont++) {
scanf("%d",&numero);
if (numero>0) {
positivos++;
}
if (numero<0) {
negativos++;
}
if (numero == 0) {
cero++;
}
}
printf("Hay %d numeros positivos\n",positivos);
printf("Hay %d numeros negativos\n",negativos);
printf("Hay %d ceros",cero);
getch();
}

En este ejercicio vamos hacer un programa que pida una frase y que después nos indique la cantidad de
letras vocales que tiene la misma.

En el editor de “C” copiamos el código siguiente,

#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
main ()
{
char frase[40];
int vocales,caracteres,num;
clrscr();
printf("Introduce una frase: \n");
gets(frase);
while (strlen(frase)>40)
{
printf("ATENCION, solo 40 caracteres \n");
gets(frase);
}
vocal=0;
caracteres=strlen(frase);
for (num=0;num<caracters;num++)
{
if((frase[cont]=='a')||(frase[cont]=='e')||(frase[cont]=='i')||(frase[cont]=='o')||(frase[cont]=='u'))
{
vocal++;
}
34
}
printf("\nLa cantidad de vocales es: %d",vocal);
getch();
}

En este ejercicio vamos hacer que un programa nos pida el nombre de un producto, el precio del mismo y
un porcentaje de descuento. El programa tendrá que calcular la cantidad a descontar del producto.

En el editor de “C” introducimos el código,

#include <conio.h>
#include <stdio.h>

main()
{

char producto[30];
float valor=0,porcen=0;

clrscr();
printf("Introduce el nombre del producto: ");gets(producto);
printf("\n");
printf("Introduce una valor numerico ");scanf("%f",&valor);
printf("\n");
printf("Introduce un tanto por ciento ");scanf("%f",&porcen);
printf("\n");
printf("%s, tiene un descuento de %.0f ",producto,((valor*porcen)/100));
printf("\n");
getch();
}

En este ejercicio vamos hacer que un programa en el cual introduciremos una cantidad de horas, de
minutos y de segundos, para que el programa pase esos datos a segundos.

En el editor de “C” introducimos el código,

#include <stdio.h>
#include <conio.h>

main()
{
int hh, mm, ss;
double calculo1;
double calculo2;
double calculo3;

clrscr();
printf("Introduce la cantidad de horas: ");
scanf("%i",&hh);
printf("Introduce la cantidad de minutos: ");

35
scanf("%i",&mm);
printf("Introduce la cantidad desegundos: ");
scanf("%i",&ss);

calculo1= hh * 60;
calculo2= (calculo1 + mm) * 60;
calculo3= calculo2+ ss;

printf(" el total es de %.0lf segundos",calculo3);


getch();
}

36
37
38
39
40
41
42
43

Vous aimerez peut-être aussi