Académique Documents
Professionnel Documents
Culture Documents
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
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>
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.
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++
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 ( )
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
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).
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.
}
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 +
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,
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();
}
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.
#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();
}
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
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];
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
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];
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.
FUNCIONES VARIAS
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.
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”
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();
}
#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();
}
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();
}
#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,
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.
#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.
#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.
#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.
#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.
#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.
#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;
36
37
38
39
40
41
42
43