Sie sind auf Seite 1von 40

Nivel: Principiante.

POR:

TEC. COMP:
COMP: VICTOR MANUEL TEJEDA LOPEZ
ESTUDIANTE DE LA CARRERA:
ING. EN SISTEMAS COMPUTACIONALES
EN EL
INSTITUTO TECNOLOGICO DE NUEVO
LAREDO

0
Tec.Victor Manuel Tejeda Lopez

Fundamentos del lenguaje.

Pág.:

• Estructura general de un programa……………………………….3


• Tipos de datos .…………………………………………………..4
• Palabras reservadas……………………………………………….4
• Códigos de formato……………………………………………….5
• Operadores relacionales…………………………………………..5
• Operadores lógicos………………………………………………..5
• Códigos de escape………………………………………………...6
• Creación de un programa………………………………………….7
o Entrada
o Salida
o Declaraciones.
• Operaciones dentro del programa…………………………………9
• Ejercicios………………………………………………………….11
• Sentencia if-else…………………………………………………..12
• if anidados………………………………………………………...14
• Estatuto switch…………………………………………………....15
• Bucles(ciclos)…………………………………………………….18
• Estatuto while…………………………………………………...18
• Estatuto do-while…………………………………………….....20
• Estatuto for…………………………………………………..…..22
• Ciclos anidados……………………………………………..…...24
• Funciones…………………………………………………..…….27
• Arrays…………………………………………………………….30
• Algoritmo de la burbuja………………………………………..33
• Array multidimencional………………………………………..35
• Registros………………………………………………………….37
• Bibliografía.

1
Tec.Victor Manuel Tejeda López

Comentarios de autor:

Solo puedo decir que espero que sea de gran utilidad este Manual para
aquellos que empiezan y desean aprender el lenguaje de programación
C/C++, este Manual es de nivel principiante. El aprender a programar C
depende del esfuerzo y de las ganas que uno le eche para aprender.
Este Manuel no asegura que aprenda o se experto programador en C.
Solo trato de mostrarles el comienzo y darles la chispa para que
adquieran conocimientos de lenguaje C.
Como ya se dije todo depende de que tanto esfuerzo que uno le dedique
y de las ganas que uno le ponga.

Échenle ganas y conozcan este maravilloso mundo de la programación.

atte.: Tec.Comp.Victor Manuel Tejeda López.

Cualquier tipo de duda o comentario escríbanme a este correo:

tejeda_siete@hotmail.com

2
Tec.Victor Manuel Tejeda Lopez

Para crear un programa


Se utiliza las siguientes etapas: Encabezados

1.-definir su programa
2.-definir directivas del procesador Declaración de
{ {Variables globales}
3.-definiciones de declaraciones globales variables.
4.-crear main ()
5.-crear el cuerpo del programa
6.-crear funciones definidas por usuario
Programa principal
7.-compilar, enlazar, ejecutar y
(subrutinas)
Comprobar su programa
8.-utilizar comentarios

Estructura Rutina 1
General
De un programa
Rutina 2

.
.
.
Rutina n

O bien:

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

void f1(void);
declaración de variables int a=1,b=2; {variables globales}

void main(void)
{
clrscr();
f1();
Programa principal printf(" = %d",a+b);
getch();
return;
}
void f1(void)
{
rutina printf("resultado");
return; }

3
Tec.Victor Manuel Tejeda Lopez

Tipos de datos:

int Numérico entero (2 bytes de int a,b,c,x;


memoria)+32767 a -32767 int num;
float Numérico real(4 bytes de float y;
memoria, 7 dígitos de float num=10;
precisión) 10-38 a 1038
char Carácter (1 bytes de memoria) char a;
-128 a 127 char b;
double Tipo double (8 bytes) double a,b,c;
10-308 a 10308
constantes double pi=3.141592

Palabras reservadas

Los siguientes identificadores están reservados para utilizarlos como palabras


reservadas, y no se deben emplear para otros propósitos.

asm enum signed continue long


auto extern sizeof default register
break float static do return
case for struct double short
char goto switch else union
const if typedef int unsigned
void volatile while

Una palabra reservada no puede usarse como nombre de identificador o función:

int int a: //error


float int x: //error

Prioridad y asociatividad.
Prioridad (mayor a menor) asociatividad
+, - (unitario) Izquierda-derecha
* , /, % Izquierda-derecha

4
Tec.Victor Manuel Tejeda Lopez

Códigos de formato:

Se usan para especificar en tipo de formato o dato que se va a capturar desde el


teclado o el tipo de formato que uno quiera que aparezca en la pantalla en un
programa.
Ejemplo:
scanf(“%d”,&entero);
printf(“el numero es: %d”,entero);

• %d El dato se convierte a entero decimal.


• %o El dato entero se convierte a octal.
• %x El dato entero se convierte a hexadecimal.
• %u El dato entero se convierte a entero sin signo.
• %e El dato se considera de tipo float. Se convierte a notación
científica. De la forma { - } n.mmmmmmE { +/- }dd.
• %f El dato se considera de tipo float. Se convierte a notación decimal,
con parte entera y los dígitos de presicion.
• %g El dato se considera de tipo float. Se convierte según el codigo %e
o %f dependiendo del cual sea la representación mas corta
• %s El dato ha de ser una cadea de carateres.
• %lf El dato se considera de tipo double.

Operadores relacionales.

operador significado Ejemplo


== Igual a A==b
!= No igual a A!=b
> Mayor que a>b
< Menor que A<b
>= Mayor o igual que a>=b
<= Menor o igual que A<=b

Operadores lógicos

operador operación logica ejemplo


negacion ( ! ) no logica !(x>=)
y logica (&&) operando_1 && m<n && i>j
operando_2
o logica || operando_1 || m=5 ||n!=10
operando_2

5
Tec.Victor Manuel Tejeda Lopez

Códigos de escape:

Código de Significado
escape
‘\n’ Nueva linea
‘\r’ Retorno de carro
‘\t’ Tabulacion
‘\v’ Tabulacion vertical
‘\a’ Alerta (pitido sonoro)
‘\b’ Retroceso de espacio
‘\f’ Avance de pagina
‘\\’ Barra inclinada
‘\’’ Comilla simple
‘\”’ Comilla doble
‘\?’ Signo de interrogación
‘\000’ Numero octal
‘\xhh’ Numero hexadecimal

Operadores de asignación

operador sentencia abreviada sentencia no abreviada


+= m+=n m=m+n
-= m-=n m=m-n
*= m*=n m=m*n
/= m/=n m=m/n
%= m%=n m=m%n
++ m++ m=m+1
-- m- - m=m-1

Encabezados

Standar input-ouput stdio.h

Console input-ouput conio.h

p/ funciones aritméticas math.h

p/ graficos graphics.h

p/ funiones dos dos.h

p/ funciones del sistema sys.h

6
Tec.Victor Manuel Tejeda Lopez

Los compiladores donde ejecutar los programas son:


• Turbo c++ versión 3.0
• Crimson Editor 3.60

Como opinión personal yo recomiendo el primero tiene muchas ventajas.

Creación de un programa

Crearemos un programa que imprima en la pantalla el siguiente enunciado:


Mi primer programa

Como primer paso incluiremos las librerías que usaremos.

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

Enseguida el programa

int main ()
{
clrscr();
printf(“Mi primer programa”);
getch();
return 0;
}

clrscr()…………se usa para limpiar pantalla


printf(“ “)………se usa para imprimir el mensaje (nótese que el mensaje a
. Imprimir esta encerrada con comillas).
getch()…………para capturar un carácter sin eco (o para que el programa se
. espere hasta que se oprima cualquier tecla).
return 0;………. es el retorno de la función main sin devolver algún valor.
{ }…………….. Se abren llaves después del main, el cual lleva todo lo que
. incluirá el cuerpo del programa.

**para agregar algún comentario se puede hacer de estas dos formas.

/* comentario */
// comentario

7
Tec.Victor Manuel Tejeda Lopez

Para la entrada de valores numéricos o caracteres se usan:

scanf(“%código de formato”,&declaración);
cin>>declaración;
gets(declaración)…..esta se usa para capturar una cadena de caracteres.

Nota: previamente se debe de declarar las variables a usar.

Para imprimir un mensaje o salida de carácter o valor se usan:

printf(“ “);
puts(“ ”);
cout<<” “;

Todo lo que se quiera imprimir debe de estar adentro de las comillas.

/*Programa que captura un numero entero e imprime el numero en la pantalla.*/

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

void main(void)
{
clrscr();
int num;
printf(“Teclee un numero entero: ”);
scanf(“%d”,&num);
printf(“\nEl numero tecleado es el: %d”,num);
getch();
return;
}

Con este ejemplo vemos que es facil capturar una variable de tipo entero,
igualmente se puede hacer con variables de tipo carácter y de otro tipo.

Ejercicios:

*Imprime en la pantalla tu nombre completo, pero que tus apellidos queden en la


segunda línea: ejemplo: Juan José
Pérez López. (usa solamente un printf ).

*Declara una variable cualquiera de tipo entero y una variable de tipo char e
imprímelo en la pantalla que quede en la misma línea de esta forma:
Letra= a numero= 1

8
Tec.Victor Manuel Tejeda Lopez

Operaciones dentro del programa:

Realizar operaciones dentro de un programa es sencillo y se puede hacer de


maneras distintas.

En c las operaciones básicas se hacen como toda operación,


Ejemplo:

printf (“%d”, 2+1);


O bien se declara una variable cualquiera y se hace de esta forma;
int r;
.
.
.
r=2+1;
printf(“%d”, r);

También se puede manejar de la misma forma el cout<<;

cout<<2+1; ó r=2+1;
cout<<r;

Recuerda que para manejar en cout<<; se debe incluir la librería iostream.h.

Para realizar otras operaciones como sacar exponentes, seno, coseno,


tangente…etc, se debe de incluir la librería math.h.

Para sacar exponente se hace de esta forma:

pow(variable, exponente); pow(x,2);


pow(x,3);

Debes declarar la variable que quieres sacarle exponente o bien hacerlo dentro de
una operación cualquiera.
Otras operaciones:

Raíz cuadrada sqrt(variable);


Seno sin(variable);
Coseno cos(variable);
…etc.

Recuerda que para manejar números con decimales de recomienda declararlos


doubles, float.

9
Tec.Victor Manuel Tejeda Lopez

Ejemplos:
*Programa que calcula el área de un triangulo:

#include<conio.h>
#include<stdio.h>
void main(void)
{
clrscr();
int base,altura;
printf("Dame la base: ");
scanf("%d",&base);
printf("Dame la altura: ");
scanf("%d",&altura);
printf("El area del rectangulo es: %d",base*altura);
getch();
return;
}
//Realiza este mismo programa utilizando el cout<<; y el cin>>;

**Programa que calcula el área de un círculo. area=pi*r2.

#include<conio.h>
#include<iostream.h>
#include<math.h>

void main(void)
{
clrscr();
float radio,area;
cout<<"Dame el radio del circulo: ";
cin>>radio;
area=3.1416*pow(radio,2);
cout<<"El area del rectangulo es: "<<area;
getch();
return;
}

// realiza este mismo programa utilizando printf(“”); y scanf();

Nota: cuando se utiliza el printf y se utilizan números flotantes o doubles se


puede acortar el número de decimales que se muestra en algún resultado.

Ejemplo: printf(“%f”,10/3); //el resultado es 3.333333


y
printf(“%.2f”,10/3); //el resultado es 3.33

10
Tec.Victor Manuel Tejeda Lopez

Nótese que se pone el .2 para mostrar solamente 2 decimales de la misma forma


se puede hacer 2.2,.3,.1,.5…etc. según uno quiera que aparezca.
Ejercicios:

a) Hacer un programa que calcule el área de un triangulo.

b)Hacer un programa que calcule esta operación: a=pow(5,2)+(10+2)/(5*4)/5)

c) Hacer un programa que calcule la expresión con los siguientes datos, muestre
el resultado con un formato adecuado en la pantalla.
A=5, b=0.3, c=-3.1, x=1.018, z=0.8514

2( a/b )x-1/(b-3c)1/z

d) Hacer un programa que convierta °f a °c. c=f-32*5/9

e) Hacer un programa que resuelva una ecuación cuadrática del tipo:


ax2+bx+c=0, encontrando los valores x1y x2; donde:
x=-b±√b2-4ac
2a.
f) Captura tres variables y saca el promedio de los 3.

Respuestas:

b)=300.

c)=0.147676

d)=100°f=37.777

e)= prueba el programa con los siguientes datos: a=1,b=5,c=2


x1=-0.44 x2=-4.56

f)= prueba el programa con los siguientes datos a=1,b=2,c=3 Prom=2

11
Tec.Victor Manuel Tejeda Lopez

Sentencia “if-else. “

La sentencia if funciona de la siguiente manera. Cuando se alcanza la sentencia if


dentro de un programa, se evalúa la expresión entre paréntesis que viene a
continuación de if. Si expresión es verdadera, se ejecuta Acción; en caso
contrario no se ejecuta Acción y ejecuta la siguiente sentencia o Acción2 que uno
quiere que realice.

Expresión Falsa

Verdadera
Acción

Acción2

if(Expresión) Acción.

if(Expresión) Acción, else Accion2.


En este formato Acción, y Acción2 son individualmente, o bien una única
sentencia que termina en un punto y coma (;) o un grupo de sentencias encerrado
entre llaves

Ejemplos:

*Programa que te dice si eres menor o mayor de edad;

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

void main(void)
{
clrscr();
int edad;
printf("Dame la edad: ");
scanf("%d",&edad);
if(edad>=18)
printf("Eres mayor de edad");
else
printf("Eres menor de edad");
getch();
return;
}

12
Tec.Victor Manuel Tejeda Lopez

*El mismo programa pero con más Acciones en cada condición:

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

void main(void)
{
clrscr();
int edad;
printf("Dame la edad: ");
scanf("%d",&edad);
if(edad>=18)
{
printf("Eres mayor de edad");
puts("\nEres una persona adulta");
}
else
{
printf("Eres menor de edad");
puts("\nTodavia eres un niño");
}
getch();
return;
}

/* Nótese que las acciones de cada condición se encierran en llaves, ya que se


tiene mas de una sentencia (acción), esto es siempre que se tenga 2 o mas
condiciones.

13
Tec.Victor Manuel Tejeda Lopez

Sentencia if – else anidadas

Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa es


a su vez una sentencia if anidada se puede utilizar para implementar dediciones con
varias alternativas o Mult.-alternativas.

Ejemplo:

Programa que te captura un numero entero y te dice si es positivo, negativo o cero.

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

void main(void)
{
clrscr();
int num;
printf("Dame un numero: ");
scanf("%d",&num);
if(num>0)
printf("El numero es positivo");
else
if(num<0)
printf("El numero es negativo");
else
printf("El numero es cero");
getch();
return;
}

Si tenemos el siguiente fragmento de codigo:

if (condicion 1)
if (condicion 2)
estatuto;
else //Este else pertenece al if de la condicion 2, pues se asocia al if al if más cercano
estatuto;

Si queremos que el else pertenezca al primer if debemos poner:

if (condicion 1)
{
if (condicion 2);
estatuto;
}
else // Con el uso de las llaves cerramos el if anidado y el else.
estatuto; //pertenécela primer if

14
Tec.Victor Manuel Tejeda Lopez

* Ejercicio: Realiza un programa que lea 3 números enteros y los despliege de


mayor a menor.

Estatuto Switch.

La sentencia switch es una sentencia C que se utiliza para seleccionar una entre
multiples alternativas. La sentencia switch es epecialmente util cuando la
selección se basa en el valor de una variable simple o de una expresión simple
denominada expresión de control o selector. El valor de esta expresión puede ser
de tipo int o char. Pero no de tipo float ni double.

Sintaxis:

switch ( variable ) //La variable de tipo entero o carácter.


{
case valor1: accion1; break;
case valor2: accion2;break;
.
.
.
case valor n: accion n;break;
default: accionD;
};

Ejemplo 1:
switch ( opcion )
{
case 0: puts(“Cero:”); break;
case 1: puts(“Uno:”); break;
case 2: puts(“Dos:”); break;
default: puts (“Fuera de rango”);
}

Ejemplo 2:
switch ( opcion )
{
case 0:
case 1:
case 2:
printf(“Menor de 3:”); break;
case 3:
printf(“Igual a 3:”); break
default: printf(“Mayor que 3:”);
}

15
Tec.Victor Manuel Tejeda Lopez

Comparación de la sentencia if-else-if y el switch. Se necesita saber si un


determinado carácter car es una vocal.

Solución con if-else-if:

#include<conio.h>
#include<iostream.h>

int main()
{
clrscr();
char car;
cout<<"Teclee un caracter: ";
cin>>car;
if ((car == 'a') || (car == 'A'))
printf("%c es una vocal\n",car);
else
if ((car == 'e') || (car == 'E'))
printf("%c es una vocal\n",car);
else
if ((car == 'i') || (car == 'I'))
printf("%c es una vocal\n",car);
else
if ((car == 'o') || (car == 'O'))
printf("%c es una vocal\n",car);
else
if ((car == 'u') || (car == 'U'))
printf("%c es una vocal\n",car);
else
printf("%c no es una vocal\n",car);
getch();
return 0;
}

Solucion con switch:

#include<conio.h>
#include<iostream.h>

int main()
{
clrscr();

16
Tec.Victor Manuel Tejeda Lopez

char car;
cout<<"Teclee un caracter: ";
cin>>car;

switch (car)
{
case 'a': case 'A':
case 'e': case 'E':
case 'i': case 'I':
case 'o': case 'O':
case 'u': case 'U':
printf("%c es una vocal",car);
break;
default:
printf("%c no es una vocal",car);
}
getch();
return 0;
}

Nótese que en la solución de switch el manejo de la solución es más clara y que


no se usan operadores de relacionales.

Ejercicios:

* Dada una nota de un examen mediante un código escribir el literal que le corresponde a
la nota. A-Excelente B- Muy bien C- Bien cualquier otro (“Suspendido”).

*Programa que pide un numero de mes y escribe la cantidad de días que tiene.

*Dada un fecha con numeros, muestra la fecha poniendo el mes con letras.

Ejemplo: 01:01:2005 debe mostrar. 01 de enero de 2005.

17
Tec.Victor Manuel Tejeda Lopez

Bucles. Ciclos

C soporta tres tipos de estructuras de control: los bucles while, for y do-while.
Estas estructuras de control o sentencias repetitivas controlan el número de veces
que una sentencia o listas de sentencias se ejecutan.

Estatuto While:

Sintaxis:

while ( condición )
estatuto;

Si se requiere realizar más de un estatuto se deben utilizar llaves.

while ( condición )
{
Bloque de estatutos;
}

Representación en diagrama del bucle while:

Condición Falsa.
_bucle

Verdadera.
Sentencia

Incremento

18
Tec.Victor Manuel Tejeda Lopez

*Programa que obtiene el promedio de calificaciones de 10 estudiantes:

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

int main()
{
clrscr();
int est,i=1;
float suma=0.0;
printf("Dame las calificaciones de los 10 estudiantes:\n");
while(i<=10)
{
printf("\nDame la calificacion del estudiante %d: ",i);
scanf("%d",&est);
suma=est+suma;
i++;
}
printf("\n\nEl promedio de los estudiantes es de: %.2f",suma/10.0);
getch();
return 0;
}

*Programa que muestra la serie de números que uno le asigne desde el teclado.

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

int main()
{
int contador,i=0;
printf("Dame un numero: "); scanf("%d",&contador);
while ( i<=contador)
{
printf("\n%d",i);
i++;
}
getch();
return 0;
}

19
Tec.Victor Manuel Tejeda Lopez

Estatuto do…while

La sentencia do-while se utiliza para especificar un bucle condicional que se


ejecuta al menos una vez. Esta situación se suele dar en algunas circunstancias en
la que se ha de tener la seguridad de que una determinada acción se ejecutara una
o varias veces, pero al menos una vez.

Sintaxis:
do
estatuto;
while ( condición );

Si se requiere realizar mas de un estatuto se deben a utilizar llaves.

do
{
Bloque de estatutos;
}while ( condición );

Representación en diagrama del bucle do-while.

Sentencia

Incremento

Verdadera Expresión

Falso.

20
Tec.Victor Manuel Tejeda Lopez

**Los mismos programas del estatuto anterior pero ahora con el estatuto
do-while.

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

int main()
{
clrscr();
int est,i=1;
float suma=0.0;
printf("Dame las calificaciones de los 10 estudiantes:\n");
do
{
printf("\nDame la calificacion del estudiante %d: ",i);
scanf("%d",&est);
suma=est+suma;
i++;
}while(i<=10);
printf("\n\nEl promedio de los estudiantes es de: %.2f",suma/10.0);
getch();
return 0;
}

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

int main()
{
int contador,i=0;
printf("Dame un numero: "); scanf("%d",&contador);
do
{
printf("\n%d",i);
i++;
}while ( i<=contador);
getch();
return 0;
}

21
Tec.Victor Manuel Tejeda Lopez

Estatuto for:

El bucle for de C es superior a los bucles for de otros lenguajes de programación


tales como BASIC, Pascal y Fortran ya que ofrece mas control sobre la
inicialización y el incremento de las variables de control del bucle.

Sintaxis:

for (inicialización; condición; incremento)


Estatuto;

Si se requiere realizar mas de un estatuto se debe utilizar llaves:

for (inicialización; condición; incremento)


{
Bloque de estatutos;
}

Representación en diagrama del estatuto for:

Falso.

Inicialización

Condición.

Incremento.

Verdadero.

Estatutos.

22
Tec.Victor Manuel Tejeda Lopez

*** Los mismos programas de los estatutos anteriores pero ahora con el estatuto
for.

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

int main()
{
clrscr();
int est,i;
float suma=0.0;
printf("Dame las calificaciones de los 10 estudiantes:\n");
for (i=1; i<=10; i++)
{
printf("\nDame la calificacion del estudiante %d: ",i);
scanf("%d",&est);
suma=est+suma;
}
printf("\n\nEl promedio de los estudiantes es de: %.2f",suma/10.0);
getch();
return 0;
}

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

int main()
{
int contador,i;
printf("Dame un numero: "); scanf("%d",&contador);
for (i=0; i<=contador; i++)
printf("\n%d",i);
getch();
return 0;
}

23
Tec.Victor Manuel Tejeda Lopez

Ciclos anidados:

Ejercicios con los ciclos, while, do-while y for:

Realizar una tabla de multiplicar de la forma:

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 54 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

Estatuto for:

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

int main()
{
clrscr();
int i,j;
printf("Tabla de multiplicar\n\n");

for(i=1; i<10; i++)


{
for(j=1; j<10; j++)
printf("%3d",i*j);
printf("\n");
}
getch();
return 0;
}

24
Tec.Victor Manuel Tejeda Lopez

Estatuto while:

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

int main()
{
clrscr();
int i=1,j=1;
printf("Tabla de multiplicar\n\n");

while(i<10)
{
while(j<10)
{
printf("%3d",i*j);
j++;
}
printf("\n");
j=1;
i++;
}
getch();
return 0;
}

Estatuto do while.

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

int main()
{
clrscr();
int i=1,j=1;
printf("Tabla de multiplicar\n\n");
do
{
do
{
printf("%3d",i*j);
j++;
}while(j<10);
printf("\n");
j=1;
i++;

25
Tec.Victor Manuel Tejeda Lopez

}while(i<10);
getch();
return 0;
}

Ejercicios de práctica:

Realiza los programas combinando los tres ciclos en el mismo programa.

Ejercicios:

a) Leer un entero positivo N y averiguar si es perfecto, Un número es perfecto cuando es


igual a la suma se sus divisores excepto el mismo.
Ejemplo: Si N = 6 sus divisores son, 1,2 y 3 si los sumamos nos da 6 por lo tanto es
perfecto.

b) realiza un programa que visualice una tabla de multiplicar que se le asigna desde el
teclado y preguntar si se quiere realiza otra tabla de multiplicar y salirse hasta que a
respuesta sea falsa.
1*1=1
1*2=2
1*3=3
.
.
.
Quiere realizar otra tabla de multiplicar s/n:

c) Realiza un programa que pida 10 números, calcula y muestra la suma de todos los que
fueron par.

d) Mostrar los 30 primeros números de la serie de fibonacci, la serie es 1, 1, 2, 3, 5,


8,13…

e) Realiza un programa que muestre el abecedario en mayúsculas y minúsculas.

26
Tec.Victor Manuel Tejeda Lopez

Funciones:

Una función es un mini programa dentro de un programa. Las funciones


contienen varias sentencias bajo un solo nombre, que un programa puede utilizar
una o mas veces para ejecutar dichas sentencias. Las funciones ahorran espacio,
reduciendo repeticiones y haciendo más fácil la programación, proporcionando
un medio de dividir un proyecto grande en módulos pequeños más manejables.

La estructura de una función en C es:

float suma (float num1,float num2)

{
float resp;
resp = num1 + num2;
return resp;
}
………………….
Tipo de retorno nombreFuncion (listadeParametros)
{
cuerpo de la función
return expresión
}

Tipo de retorno.…………….. Tipo de valor devuelto por la función o la palabra


. reservada void si la función no devuelve ningún . .
. valor.
nombreFuncion………………Identificador o nombre de la funcion.
listaDeParametros……………Lista de declaraciones de los parámetros de la . . . .
. funcion separados por comas.
Expresión……………………valor que devuelve la funcion.

Ejemplo de un programa que manda a llamar una función y devuelve un valor.

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

int resultado(int r,int a,int b);


void main(void)
{
clrscr();
int a,b,r;
printf("Dame los numero a sumar:\n");

27
Tec.Victor Manuel Tejeda Lopez

scanf("%d%d",&a,&b);
printf("El resultado de la suma es: %d",resultado(r,a,b));
getch();
return;
}
int resultado(int r,int a,int b)
{
r=a+b;
return r;
}

En este caso se manda a llamar una función resultado, el cual se le manda dos
valores a y b y se devuelve el valor r.

Ejemplo de una función sencilla que sirve para dos cosas diferentes que nosotros
queramos. Evitando así que se codifique doblemente.

Sacar el área de un rectángulo y el área de un triangulo.

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

float area1(float area,float altura,float base);


void main(void)
{ clrscr();
float base,altura,area;
printf("Area de un ractangulo y de un triangulo\n\n");
printf("Base: ");scanf("%f",&base);
printf("Altura: ");scanf("%f",&altura);
printf("EL area del rectangulo es: %.2f",area1(area,altura,base));
printf("\n\nEl area del triangulo es:%.2f",area1(area,altura,base)/2.0);
getch();
return;
}
float area1(float area,float altura,float base)
{
area=base*altura;
return (area);
}

En este ejemplo se ve claramente la función principal de las funciones, aunque


aparentemente es sencillo muestra claramente lo que una función.

28
Tec.Victor Manuel Tejeda López

La función máx. Devuelve el número mayor de dos enteros.

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

int max(int x,int y)


{
if(x < y)
return y;
else
return x;
}
void main(void)
{
int m, n;
do
{
clrscr();
printf("Introduce dos numeros: ");
scanf("%d %d",&m,&n);
printf("Maximo de %d,%d es %d\n",m,n,max(m,n));//llamada a max
getch();
}while(m!=0);
return;
}
Ejercicios:

• Realiza un programa que mande a una función el año de nacimiento y el


año actual y que regrese el la edad actual.

• Escribir una función que tenga un argumento de tipo entero y que


devuelva la letra P si el número es positivo, y la letra N si es cero o
negativo.

• Escribir una función que convierta una temperatura dada en grados


Celsius a grados Fahrenheit, La formula de conversión es:

F= 9/5*C+32

29
Tec.Victor Manuel Tejeda López

ARRAYS:

Los arrays (o matrices) son un tipo de variable que permiten tener más de un
elemento, (o valor en su interior), a los que se pueden acceder mediante un índice. Un
array también es el tipo en el que se basan todas las matrices o arrays.
Un array puede contener, por ejemplo, la edad de los alumnos de una clase, las
temperaturas de cada día de un mes en una ciudad determinada, las calificaciones de los
alumnos de un salón. Etc.
En C un array empieza con en valor de 0 y hasta donde nosotros le indiquemos:
.

a[0],a[1],a[2],a[3]… a[n-1].

Por ejemplo un array con seis elementos de tipo entero.

0 5
1 4
2 10
3 8
4 25
5 50

Y así este array de tipo entero contiene 6 elementos, A[0] contiene 5, A[1]
contiene 4, A[2] contiene 10, A[3] contiene 8, A[4] contiene 25, A[5] contiene
50.

La declaración de un array en C es la siguiente.

Tipo nombrearray [numerodeelementos];

int A[10]; int alumnos[10];


char A[10]; char alumnos[10];
float A[10]; float alumnos[10];

Ejemplo:

Rellenar un array de con números enteros enteros y después mostrarlos en la


pantalla.

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

void main(void)
{
int num[10];

30
Tec.Victor Manuel Tejeda López

clrscr();
printf("*Ingrese 10 numeros enteros*\n");
//En este ciclo se almacena los datos de el array.
for(int i=0; i<10 ;i++)
{
printf("%d.- ",i+1);
scanf("%d",&num[i]);
}
printf("\nNumero almacenados en el array.");
//En este ciclo se muestra en la pantalla.
for(int j=0; j<10 ;j++)
printf("\n%d",num[j]);
getch();
return;
}

Y así el array tendrá en cada espacio reservado el valor que se le asigno. Y se


podrá tener acceso al el cuando uno lo desee, siempre y cuando se mande a
llamar en la posición en la que se encuentra dentro del array.

Array de caracteres y cadenas de texto.

La diferencia entre una array de caracteresy una cadena de caracteres.Las


cadenas contienen un carácter nulo al final del array de caracteres.

Cad[0] A Cad[0] A

[1] b [1] b

[2] c [2] c

d d
[3] [3]
e e
[4] [4]
f \0
[5] [5]

Array de caracteres cadena.

El compilador inserta automáticamente un carácter nulo al final de la cadena.

31
Tec.Victor Manuel Tejeda López

Ejemplo de cómo capturar e imprimir una cadena de caracteres:

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

int main()
{
clrscr();
char nombre[15];
printf("Inserta un nombre: ");

gets(nombre);
printf("\n\n%s",nombre);
getch();
return 0;
}

Ejercicios:

*Declara un array de tipo entero de 10 elementos y muestra la suma de los


elementos que sean números pares.

*Realiza un programa que muestre el número menor y el número mayor de


una array de tipo entero.

32
Tec.Victor Manuel Tejeda López

Algoritmo de la burbuja.

El ordenamiento de datos es de gran utilidad, y este método de la burbuja es uno


de los métodos de más facilidad para ordenar. El valor más pequeño flota hasta la
parte superior del array y así sucesivamente hasta que todos los elementos se
queden acomodados.

El diagrama de flujo del método de la burbuja


seria.
Inicio

max 5
num[max],i,j,t

Fin
i
i < max-1
i++

F
r
j

r j < max

j++ V

num[i] V
t=num[i]
>
num[i]=num[j]
num[j]
num[j]=t

33
Tec.Victor Manuel Tejeda López

La codificación será:

#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#define MAX 5

void main(void)
{
clrscr();
int num[MAX],i,j,t;
printf("Dame 5 numero cuales quiera: \n");
for(i=0;i<MAX;i++)
cin>>num[i];
/*Metodo de la burbuja*/

for(i=0;i<MAX-1;i++)
{
for(j=i+1;j<MAX;j++)
if(num[i]>num[j])
{
t=num[i];
num[i]=num[j];
num[j]=t;
}
}
/*Se imprimen los numeros ya ordenados*/

for(int a=0;a<MAX;a++)
printf("\n%d",num[a]);
getch();
return;
}

Ejercicios: Realiza lo mismo pero que lo ordene de mayor a menor.

34
Tec.Victor Manuel Tejeda López

Array multidimencionales.

Este tipo de array se distingue por ser de dos dimensiones y se manejan de la


misma forma que una tabla o una matriz. Que equivale a una tabla con múltiples
filas y columnas.

Su estructura es la siguiente:

0 1 2 3 n

En C un array empieza en la posición (0,0) y sigue así según uno quiera.

La estructura para ver las posiciones del array será:

[0,0] [0,1] [0,2] [0,3]

[1,0] [1,1] [1,2] [1,3]

[2,0] [2,1] [2,2] [2,3]

35
Tec.Victor Manuel Tejeda López

Una estructura de do dimensiones en C se declara de la siguiente manera.

int A[2][2]; Esta es un array de 2 filas, 2 columnas.


char A[3][2]; Esta es un array de 3 filas, 2 columnas.

Los array son muy fácil de manejar siempre y cuando se visualice primero las
posiciones del mismo, y ver como se va controlando las posiciones filas,
columnas.

Ejemplo de cómo se llenaría de datos un array de dos dimensiones.

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

void main(void)
{
int A[3][3],i,j;
clrscr();
printf("Dame los datos:\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
printf("[%d,%d]= ",i,j);
cin>>A[i][j];
}
printf("\n\n\n");
//imprimir los datos.
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("[%d]",A[i][j]);
printf("\n\n");
}
getch();
return;
}

*Como se puede observar no es difícil el manejo de array de dos dimensiones.


Ahora realiza el diagrama de flujo para que quede mas claro.

36
Tec.Victor Manuel Tejeda López

Registros:

Un registro es un conjunto estático y heterogéneo de datos relacionados


pertenecientes a un mismo objeto. Manejar registros ó estructuras es de gran
utilidad ya que se puede manejar dentro de un arreglo diferentes tipos de datos,
ya sea enteros, carácter, flotantes

Una estructura se representa de la siguiente manera:

Clave nombre depto sueldo

Registros: 123 Victor A 1230.76

Básicamente esa es una estructura donde dentro del un mismo registro se


manejan diferentes tipos de datos como se muestra en la figura.

En C la declaración de un registro es de la siguiente manera.

Struct tipo_registro
{
Int clave;
Char nombre;
Char depto;
Flota sueldo;
}

Si se quiere que la variable sea empleado:

struct tipo_registro empleado;

Ejemplo de un llenado de registros.

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

#define MAX 10

struct tipo_registro
{
int clave;
char nombre[30];
char depto;
float sueldo;

37
Tec.Victor Manuel Tejeda López

};
void main(void)
{
clrscr();
struct tipo_registro Empleado[10];
int cantidad;
do
{
cout<<"Dame la cantidad de empleados a capturar: ";
cin>>cantidad;
}while(cantidad>=MAX);

/*Se capturan los arreglos*/

clrscr();
for(int i=0; i<cantidad; i++)
{
cout<<"\n\nClave: "; cin>>Empleado[i].clave;
cout<<"Nombre: "; gets(Empleado[i].nombre);
cout<<"Departamento: "; cin>>Empleado[i].depto;
cout<<"Sueldo: "; cin>>Empleado[i].sueldo;
}
/*Se imprimen los arreglos*/
clrscr();
for(int i=0;i<cantidad;i++)
printf("\n\nClave: %d ; Nombre: %s ; Depto: %c ; Sueldo:
%5.2f",Empleado[i].clave,Empleado[i].nombre,Empleado[i].depto,Empleado[i].s
ueldo);
getch();
return;
}

Copia la codificación y realiza el diagrama de flujo para que se entienda mejor el


concepto de registros.

Como buen Trabajo de práctica final Realiza un programa de una Factura, donde
contengan los puntos de que una factura debe tener.

38
Tec.Victor Manuel Tejeda López

Bibliografía:

• Programación en C (Metodología, estructura de datos y objetos)


Luis Joyanes Aguilar
Ignacio Zahonero Martínez.
Mc Graw Hill.
• Curso de Programación en Lenguaje C++ (ITESM).

• Ejercicios (Cortesía del Ing. Sergio Garza Carranza)

• PROGRAMACION EN *C* 2/E


Autor: GOTTFRIED

Se recomienda que se empiece a programar orientado a objetos y manejar la estructura


de datos.

Próximamente un Manuel de estructura de datos orientado a objetos.

39

Das könnte Ihnen auch gefallen