martes, 20 de noviembre de 2007

CONCEPTOS PREVIOS IMPORTANTES

  • LENGUAJE
    Conjunto de símbolos que sirven para transmitir un mensaje.



  • LA COMUNICACIÓN
    Proceso que requiere una serie de reglas para transmitir el mensaje y existen 4 elementos importantes: Emisor, Receptor, Medio de comunicación y mensaje.


¿QUÉ ES LA COMPUTADORA?



Es una maquina electrónica digital capaz de procesar datos a partir de un grupo de instrucciones denominado programa, proporcionando una información resultante.


¿QUÉ ES UN DATO?

Es un conjunto de símbolos utilizados para expresar: un valor numérico, un hecho, un objeto o una idea, para ser objeto de tratamiento.

¿QUÉ ES INFORMACIÓN?

  • Es la transformación de los elementos procesados.
  • Los datos de entrada se convierten en información significativa

Organización Física de la Computadora - HARDWARE

Una computadora necesita:

•Aceptar la entrada y visualizar la salida.
•Almacenar la información en un formato consistente.
•Ejecutar las operaciones aritméticas o lógicas.
•Monitorizar, controlar y dirigir las operaciones del sistema.

Periférico o Dispositivos de Entrada/Salida

•Estos dispositivos permiten al usuario comunicarse con la computadora. Algunos dispositivos típicos de E/S son el teclado, la impresora, monitor, etc.









Memoria Central

•La información procesada por la UCP se almacena normalmente en la memoria central hasta que se terminan los cálculos.

Dispositivos de Almacenamiento Secundario

•Usados para almacenar grandes cantidades de información.

•Los datos se guardan en dispositivos de almacenamiento auxiliar y luego para ser procesados por la CPU, tienen que llevarse a la memoria central.


LENGUAJE DE PROGRAMACIÓN

Es un conjunto de símbolos, caracteres y reglas (programas) que permiten a las personas comunicarse con la computadora.

CLASES DE LENGUAJE DE PROGRAMACION:

1. LENGUAJE DE MAQUINA.- Instrucciones que son entendidas directamente por el computador.

2. LENGUAJE DE BAJO NIVEL (ENSAMBLADOR) .- Son código alfabéticos conocidos como mnemo-técnicos para las operaciones y direcciones simbólicas.


3. LENGUAJE DE ALTO NIVEL (APLICATIVOS) .- Son instrucciones o sentencias mas próximos al humano normal, lo que facilita la comunicación con el computador estos pueden ser (BASIC, Pascal, Delphi, Visual Basic, Visual Foxpro, etc.) ´


HISTORIA DE LOS ALGORITMOS

La palabra algoritmo proviene del nombre del matemático llamado Muhammad ibn Musa al-Jwarizmi que vivió entre los siglos VIII y IX. Su trabajo consistió en preservar y difundir el conocimiento de la antigua Grecia y de la India. Sus libros eran de fácil comprensión, de ahí que su principal logro no fuera el de crear nuevos teoremas o corrientes de pensamiento, sino el de simplificar la matemática a punto tal que pudieran ser comprendidas y aplicadas por un mayor número de personas. También estudió la manera de reducir las operaciones que formaban el cálculo. Es por esto que aun no siendo el creador del primer algoritmo, el concepto lleva aunque no su nombre, sí su pseudónimo.

DEFINICIÓN DE ALGORITMO

-Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.
-Un algoritmo puede definir una secuencia finita de instrucciones cada una de las cuales tiene un significado claro y puede ser efectuada con una cantidad finita de esfuerzo en una longitud de tiempo también finito.

Estructura Básica de un Algoritmo:
  • inicio
  • datos de entrada (operaciones básicas)
  • procesamiento de los datos
  • datos de salida
  • fin

DISEÑO DE LENGUAJES ALGORITMICOS

  • Grafica: Diagramas de Flujo, N-S
  • Narrativa: Pseudo Código
  • Código: Programa

DIAGRAMA DE FLUJO

Un Diagrama de flujo es la representación detallada en forma gráfica de un algoritmo.

VENTAJAS:

  • Permite Visualizar mejor en la complejidad de un algoritmo.

  • Fácil de Entender.


SIMBOLOGIA PARA DIAGRAMAS DE FLUJO(ISO): INTERNATIONAL ORGANIZATION FOR STANDARDIZATION-ANSI:AMERICAN NATIONAL STANDARS INSTITUTE.



PSEUDOCÓDIGO

Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar.

VENTAJAS DE USAR PSEUDOCÓGIGOS
  • Ocupa menos espacio en una hoja de papel.
  • Permite representar en forma fácil operaciones repetitivas complejas.
  • Es muy fácil pasar de pseudo código a un programa en algún lenguaje de programación.
  • Si se siguen las reglas se puede observar claramente los niveles que tiene cada operación.

EJERCICIOS

  • Realizar un algoritmo que permita hallar la suma de dos números ingresados por teclado.

    Nota: Los algoritmos se expresan en Pseudocodigo y Diagramas de Flujo.
    Pseudocodigo:

    Inicio
    Variables:
    A,B,S: Entero
    Leer (A)
    Leer (B)
    R=A+B
    Escribir (R)
    Fin


  • Realizar un algoritmo que permita hallar el área de un círculo :
    Pseudocodigo:
    Inicio
    Variables:
    R, AC: Real
    Leer (R)
    AC=3.1416*R*R
    Escribir (AC)
    Fin


  • Realizar un Algoritmo que permita leer Nombre del cliente, Producto, Precio, Cantidad, luego calcular y presentar el Total, Igv y el Neto

    Pseudocodigo:
    Inicio
    Variables
    NomCli, Prod : Cadena
    Cantidad : Entero
    Precio, Total, Igv, Neto : Real
    Leer (NomCli)
    Leer (Prod)
    Leer (Precio)
    Leer (Cantidad)
    Total = Precio * Cantidad
    Igv = Total * 0.19
    Neto = Total + Igv
    Escribir (Total)
    Escribir (Igv)
    Escribir (Neto)
    Fin

EJERCICIO PRÁCTICA Nº1

1. Realizar un algoritmo que permita leer 2 números, luego mostrar la Suma, Resta y Multiplicación.

#include
void main ()
{
float A,B,S,R,M;
cout<<"Leer A:";cin>>A;
cout<<"Leer B:";cin>>B;
S=A+B;
R=A-B;
M=A*B;
cout<<"la suma es:"<cout<<"la resta es:"<cout<<"el producto es:"<}

2. Realizar un algoritmo que permita hallar el área de un Rectángulo.

#include
void main ()
{
float A,B,D;
cout<<"Leer A:";cin>>A;
cout<<"Leer B:";cin>>B;
D=A*B;
cout<<"el área es:"<}

3. Realizar un algoritmo que permita hallar la longitud de una circunferencia

#include
void main ()
{
float R,LC;
cout<<"Leer R:";cin>>R;
LC=2*3.14*R;
cout<<"la longitud de la circunferencia es:"<}

4. Realizar un algoritmo que permita hallar el área de un Triángulo.

#include
void main ()
{
float B,A,D;
cout<<"Leer B:";cin>>B;
cout<<"Leer D:";cin>>D;
A=B*D/2;
cout<<"el area de un triangulo es:"<}

5. Realizar un algoritmo que permita leer 3 notas, luego calcular el Promedio.

#include
void main ()
{
float P,A,B,C;
cout<<"Leer A:";cin>>A;
cout<<"Leer B:";cin>>B;
cout<<"Leer C:";cin>>C;
P=(A+B+C)/3;
cout<<"el promedio es:"<}

HISTORIA DEL COMPUTADOR

En 1670 el filósofo y matemático alemán Gottfried Wilhelm Leibniz perfeccionó esta máquina e inventó una que también podía multiplicar.
El inventor francés Joseph Marie Jacquard, al diseñar un telar automático, utilizó delgadas placas de madera perforadas para controlar el tejido utilizado en los diseños complejos. Durante la década de 1880 el estadístico estadounidense Herman Hollerith concibió la idea de utilizar tarjetas perforadas, similares a las placas de Jacquard, para procesar datos. Hollerith consiguió compilar la información estadística destinada al censo de población de 1890 de Estados Unidos mediante la utilización de un sistema que hacía pasar tarjetas perforadas sobre contactos eléctricos.
También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro.
Los ordenadores analógicos comenzaron a construirse a principios del siglo XX. Los primeros modelos realizaban los cálculos mediante ejes y engranajes giratorios. Con estas máquinas se evaluaban las aproximaciones numéricas de ecuaciones demasiado difíciles como para poder ser resueltas mediante otros métodos. Durante las dos guerras mundiales se utilizaron sistemas informáticos analógicos, primero mecánicos y más tarde eléctricos, para predecir la trayectoria de los torpedos en los submarinos y para el manejo a distancia de las bombas en la aviación.
Durante la II Guerra Mundial (1939-1945), un equipo de científicos y matemáticos que trabajaban en Bletchley Park, al norte de Londres, crearon lo que se consideró el primer ordenador digital totalmente electrónico: el Colossus. Hacia diciembre de 1943 el Colossus, que incorporaba 1.500 válvulas o tubos de vacío, era ya operativo. Fue utilizado por el equipo dirigido por Alan Turing para descodificar los mensajes de radio cifrados de los alemanes. En 1939 y con independencia de este proyecto, John Atanasoff y Clifford Berry ya habían construido un prototipo de máquina electrónica en el Iowa State College (EEUU). Este prototipo y las investigaciones posteriores se realizaron en el anonimato, y más tarde quedaron eclipsadas por el desarrollo del Calculador e integrador numérico electrónico (en inglés ENIAC, Electronic Numerical Integrator and Computer) en 1946. El ENIAC, que según se demostró se basaba en gran medida en el ordenador Atanasoff-Berry (en inglés ABC, Atanasoff-Berry Computer), obtuvo una patente que caducó en 1973, varias décadas más tarde.
El ENIAC contenía 18.000 válvulas de vacío y tenía una velocidad de varios cientos de multiplicaciones por minuto, pero su programa estaba conectado al procesador y debía ser modificado manualmente. Se construyó un sucesor del ENIAC con un almacenamiento de programa que estaba basado en los conceptos del matemático húngaro-estadounidense John von Neumann. Las instrucciones se almacenaban dentro de una llamada memoria, lo que liberaba al ordenador de las limitaciones de velocidad del lector de cinta de papel durante la ejecución y permitía resolver problemas sin necesidad de volver a conectarse al ordenador.
A finales de la década de 1950 el uso del transistor en los ordenadores marcó el advenimiento de elementos lógicos más pequeños, rápidos y versátiles de lo que permitían las máquinas con válvulas. Como los transistores utilizan mucha menos energía y tienen una vida útil más prolongada, a su desarrollo se debió el nacimiento de máquinas más perfeccionadas, que fueron llamadas ordenadores o computadoras de segunda generación. Los componentes se hicieron más pequeños, así como los espacios entre ellos, por lo que la fabricación del sistema resultaba más barata.
A finales de la década de 1960 apareció el circuito integrado (CI), que posibilitó la fabricación de varios transistores en un único sustrato de silicio en el que los cables de interconexión iban soldados. El circuito integrado permitió una posterior reducción del precio, el tamaño y los porcentajes de error. El microprocesador se convirtió en una realidad a mediados de la década de 1970, con la introducción del circuito de integración a gran escala (LSI, acrónimo de Large Scale Integrated) y, más tarde, con el circuito de integración a mayor escala (VLSI, acrónimo de Very Large Scale Integrated), con varios miles de transistores interconectados soldados sobre un único sustrato de silicio.

ESTRUCTURA DE UN SISTEMA DE COMPUTO

Un sistema de computo es un conjunto de elementos fisicos y electronicos (hardware), los cuales funcionan ordenadamente bajo el control de programas (software); ambos componentes se comportan como un todo es posible establecer contacto con ellos gracias al usuario o persona que maneja el sistema.


ELEMENTOS DE UN SISTEMA DE COMPUTO:


ESTRUCTURA DEL C.P.U


LOS ELEMENTOS BASICOS CONSTITUTIVOS DE UN PROGRAMA O ALGORITMO SON:

  • PALABRAS RESERVADAS (INICIO,FIN, SI-ENTONCES,…ETC.)

  • IDENTIFICADORES (NOMBRES DE VARIABLES, Procedimientos,FUNCIONES,..ETC)

  • CARACTERES ESPECIALES (COMA, APOSTROFO,ETC)

  • CONSTANTES

  • VARIABLES

  • EXPRESIONES

  • INSTRUCCIONES

OTROS ELEMENTOS DEL PROGRAMA:

  • BUCLES

  • CONTADORES

  • ACUMULADORES
  • INTERRUPTORES

  • ESTRUCTURAS
    1. SECUENCIALES
    2. SELECTIVAS
    3. REPETITIVAS


DEFINICION DE COMPILADOR

UN COMPILADOR ES UN PROGRAMA QUE TRADUCE UN PROGRAMA EN LENGUAJE DE ALTO NIVEL, TAL COMO C / C++ /JAVA , ETC EN UN PROGRAMA DE UN LENGUAJE MAS SENCILLO QUE LA COMPUTADORA PUEDE COMPRENDER.

PARTES DEL COMPILADOR:

  • ESCANER
    Conocido también como analizador léxico, es el componente que clasifica cada instrucción y los somete a un diccionario nos dice si hay expresiones escritas incorrectamente.
  • PARSER
    También conocido como analizador sintáctico, es el componente que verifica el orden adecuado de las instrucciones de un programa, nos avisa si hay alguna incoherencia en la secuencia de las instrucciones.
  • SINTETIZADOR
    Es el modulo que genera el codigo binario (0011101001) que sera ejecutado por el ordenador o computadora.


PROGRAMA OBJETO (.OBJ)

  • Es el programa traducido por el compilador interprete (necesita del programa de alto nivel) a lenguaje de bajo nivel.


ENLAZADOR O LINKEADOR

  • Es el programa que pasa el programa objeto a programa ejecutable.


PROGRAMA EJECUTABLE (.EXE)

  • Es el programa traducido por el compilador traductor (no necesita del programa de alto nivel) para pasar a lenguaje de bajo nivel.

OPERADORES ARITMETICOS




•Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operándos numéricos y proporcionan resultados numéricos.


•En caso de realizar mas de una operación aritmética, utilizar los paréntesis para agrupar las operaciones que se realizarán primero.

Por ejemplo:
•4 + 12 /2 = 10 (sin agrupar)
•(4 + 12) /2 = 8 (con agrupador)


OPERADORES DIV Y MOD

El símbolo / se utiliza para la división real, y el operador div representa la división entera.


OPERADORES RACIONALES

•Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.

OPERADORES LÓGICOS




•Son aquéllos que permiten la combinación de condiciones para formar una sola expresión lógica.
•Proporcionan resultados lógicos.





CONSTANTES Y VARIABLES


Una Constante es aquélla que no cambia de valor durante la ejecución de un programa (o comprobación de un algoritmo en este caso). Se representa en la forma descrita para cada categoría.

Las Variables son aquéllas que pueden modificar su valor durante la ejecución de un programa.


EJEMPLO:

  • Calcular el salario de un trabajador, conociendo el número de horas trabajadas, el precio de la hora de trabajo y considerando unos descuentos fijos al sueldo por concepto de impuestos del 20%.


Pseudocodigo
Inicio
Var: nh,ph,neto,desc,pago:Real
Escribir (“Ingresar horas trabajadas”)
Leer (nh)
Escribir (“Ingresar precio por hora”)
Leer (ph)
neto nh * ph
desc neto * 0.20
pago neto - desc
Escribir (“El salario es:”, pago)


Código C++
#include
Void main( )
{
float nh,ph,neto,desc,pago;
cout<<“Ingresar horas trabajadas”< cin>> nh;
cout<<“Ingresar precio por hora”< cin>>ph;
neto = nh * ph;
desc = neto * 0.20;
pago = neto – desc;
cout<<“ El salario es:”<}

EJERCICIO PRÁCTICA Nº2

1. Sean los datos a, b, c, d. Haga diagramas de flujo independientes para leer los datos, resolver e imprimir el resultado de cada uno de los siguientes incisos:

a) Escribir los datos en orden inverso.

b) Escribir los datos en orden inverso, omitiendo el segundo dato.

c) Calcular: (a + b-c)/d

d) Calcular: ( (a - b)2 )/c ((a - b)3)/d


#include
void main ()
{
int a,b,c,d;
double r1, r2;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"c=";cin>>c;
cout<<"d=";cin>>d;
r1=(a=b=c)/d;
r2=((a-b)*(a-b)/c)-((a-b)*(a-b)*(a-b)/d/a);
cout<<"inciso(a)="<cout<<"inciso(b)="<cout<<"inciso(c)="<cout<<"inciso(d)="<}

2. Construir un algoritmo que calcule el monto que adeuda un cliente que compra al crédito, sabiendo que el monto de compra recibe un incremento del 18% de impuesto, así como, de S/.5.00 por cada letra que fracciona mensual.
#include
void main ()
{
int p,nl;
float R;
cout<<"p=";cin>>p;
cout<<"nl=";cin>>nl;
R=1.18*p+5*nl;
cout<<"el monto es:"<}
3. En el sistema de numeración ingles la estatura de una persona esta dada por la suma de los pies y pulgadas que tiene. Así por ejemplo una persona puede medir 5 pies con 4 pulgadas. Construir un algoritmo que exprese una medida dada en pies y pulgadas a metros. Se sabe que: 1 pie = 12 pulgadas, 1 pulgada = 2.54 cm y 1 metro = 100 cm.
#include
void main()
{
float Npies,Npulg,Nmetros;
cout<<"Npies=";cin>>Npies;
cout<<"Npulg=";cin>>Npulg;

Nmetros=Npies*12*2.54/100+Npulg+2.54/100;
cout<<"La estatura de metros es="<}
4. Diseñe un algoritmo para convertir una cantidad dada en pulgadas a pies, yardas y centímetros. Se sabe que:
1 yarda = 3 pies
1 pie = 12 pulgadas
1 pulgada = 2.54 centímetros
1 metro = 100 centímetros
#include
void main ()
{
float Npulg,Npies,Nyardas,Ncenti;
cout<<"Npulg";cin>>Npulg;
Npies=Npulg/12;
Nyardas=Npulg/36;
Ncenti=Npulg*2.54;

cout<<"el numero de pies"<cout<<"el numero de yardas"<cout<<"el numero de centi"<}
5. Diseñe el algoritmo que sirva para determinar el valor de la hipotenusa de un triangulo rectángulo aplicando el teorema de Pitágoras, el perímetro y el área conociendo el valor de sus catetos.
#include
#include
void main()
{
float a,b,c,p,A;
cout<<"Cateto a:"; cin>>a;
cout<<"Cateto b:"; cin>>b;
c=sqrt(a*a+b*b);
p=a+b+c;
A=b*a/2;
cout<<"La hipotenusa es:"<cout<<"El perimetro es:" <cout<<"El area es:" <}
6. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas invierte una cantidad distinta. Diseñe el algoritmo que sirva para obtener el porcentaje que cada quien invierte con respecto a la cantidad total invertida.
#include
void main()
{
float D,a,b,c,Ca,Cb,Cc;
cout<<"Leer: a" ; cin>>a;
cout<<"Leer: b" ; cin>>b;
cout<<"Leer: c" ; cin>>c;
Ca=(100*a)/D;
Cb=(100*b)/D;
Cc=(100*c)/D;
cout<<"Elproducto es (Ca):"< cout<<"Elproducto es(Cb):"< cout<<"Elproducto es(Cc):"< }
7. Dado un número natural de 4 cifras diseñe una algoritmo que permita obtener el revés del número. Así, si se lee el numero 2358, el algoritmo deberá imprimir 8532.
#include
voidmain()
{
int N,a,b,c,d,inv;
cout<<"leer numero=";cin>>N;
a=N/1000;
N=N%1000;
b=N/100;
N=N%100
c=N/10;
d=N%10;
inv=d*1000+c*100+b*10+a;
cout<<"el numero invertido es=";<}
8. Un hospital a recibido una donación especial que será repartida de la siguiente manera: 45% para Medicina General, 30% para Cardiología, 15% para Pediatría y el resto para Traumatología. Diseñe un algoritmo que determine cuanto recibirá cada área.
#include
void main()
{
float C,Mg,A,Pe,Tr;
cout<<"Leer: C" ; cin>>C;
Mg=(45*C)/100
A=(30*C)/100
Pe=(15*C)/100
Tr=(10*C)/100
cout<<"el producto es:"< cout<<"el producto es:"< cout<<"el producto es:"< cout<<"el producto es:"< }

9. Diseñe un algoritmo que determine el porcentaje de varones y de mujeres que hay en un salón de clase.
#include
void main()
{
float a,v,m,pv,pm
cout<<"Leer: a" ; cin>>a;
cout<<"Leer: v" ; cin>>v;
cout<<"Leer: m" ; cin>>m;
pv=(v*100)/a
pm=(m*100)/a
cout<<"inciso(pv):"< cout<<"inciso(pm):"< }

EVOLUCION DE LOS LENGUAJES DE PROGRAMACION

  • COBOL (1960)
  • FORTRAN IV (1961)
  • BASIC (1964)
  • LOGO (1967)
  • PASCAL (1971)
  • C (1972) -à PLATAFORMA DE UNIX,SOLARIS
  • ADA (1979)
  • C++ (1980) à PLATAFORMA DE LINUX, MacOS
  • JAVA (1995)
  • C# (2000) -à presentado por MICROSOFT



ESTRUCTURAS BASICAS DE PROGRAMACIÓN

  • Secuenciales (Accion por Accion)
  • Selectivas (Con Condiciones)
  • Repetitivas o Iterativas (Con Bucles de Retroalimentación)


Solo se necesita estas tres estructuras para hacer cualquier programa informático.


SENTENCIAS DE PROGRAMACION


SELECTIVA
IF (SI)
ELSE (SINO)
SWITH (SEGÚN SEA)


REPETITIVA
FOR (DESDE)
WHILE (MIENTRAS)
DO WHILE (HACER MIENTRAS)


BIFURCACION
BREAK (ROMPER)
RETURN (VOLVER)

LENGUAJE C


C es un lenguaje de programación de propósito general que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. Es un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema operativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se pueden desarrollar cualquier tipo de aplicación.

La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. El primer compilador de C fue escrito por Dennis Ritchie.

CARACTERISTICAS DEL LENGUAJE C:
El lenguaje C se conoce como un lenguaje compilado.
Existen dos tipos de lenguaje:
interpretados y compilados.
Los interpretados son aquellos que necesitan del código fuente para funcionar (Por ejem: Basic).
Los compilados convierten el código fuente en un fichero objeto y éste en un ejecutable. Este es el caso del lenguaje C.

Podemos decir que el lenguaje C es un lenguaje de nivel medio, ya que combina elementos de lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador. Es un lenguaje estructurado, ya que permite crear procedimientos en bloques dentro de otros procedimientos. Hay que destacar que el C es un lenguaje portable, ya que permite utilizar el mismo código en diferentes equipos y sistemas informáticos: el lenguaje es independiente de la arquitectura de cualquier máquina en particular.

ESTRUCTURA DE UN PROGRAMA EN C

Todo programa en C consta de una o más funciones, una de las cuales se llama main. Todo programa en C debe contener al menos la función main(), desde la cual es posible llamar a otras funciones.
Cada función se designa con una cabecera, compuesta por el nombre de la misma y la lista de argumentos (si los hubiese), la declaración de las variables a utilizar y la secuencia de sentencias a ejecutar.

Ejemplo:
directivas
constantes
declaraciones de funciones
declaraciones de variables globales
main( )
{
declaración de variables locales
cuerpo de la función principal
}
funcion_1( )
{
declaración de variables locales
cuerpo de la función_1
}

TIPOS DE DATOS

Tipos
Básicamente existe cuatro tipos de datos, de los cuales se puede definir otros tipos de datos

TIPO : Tamaño Rango de valores
char 1 byte - 128 a 127
lint 2 bytes - 32768 a 32767
lfloat 4 bytes 3'4 E-38 a 3'4 E+38
ldouble 8 bytes 1'7 E-308 a 1'7 E+308
FUNCIONES MATEMATICAS #include
TRIGONOMETRICAS
acos(x) devuelve el arco del coseno de x
asin(x) devuelve el arco del seno de x
atan(x) devuelve el arco tangente de x
cos(x) devuelve el coseno de x en radianes
sin(x) devuelve el seno de x en radianes
tan(x) devuelve la tangente de x en radianes
cosh(x) devuelve el coseno hiperbólico de x
sinh(x) devuelve el seno hiperbólico de x
tanh(x) devuelve la tangente hiperbólica de x
hypot(x,y) devuelve la longitud de la hipotenusa de un triángulo donde x e y son los catetos

ALGEBRAICAS
exp(n)
devuelve e (2,7182818) elevado a la n.
pow(b,n) devuelve b elevado a la n
log(n) devuelve el logaritmo natural de x
logio(x) devuelve el algoritmo decimal de x
sqrt(x) devuelve la raíz cuadrada de x
ceil(x) devuelve el menor entero de los enteros mayores a x
floor(x) devuelve el mayor entero de los enteros menores a x
abs(x) devuelve el valor absoluto de x
labs(x) igual al anterior pero x está dado en entero longint
fabs(x) igual al anterior pero x está dado en double
modf(n&x) devuelve la parte fraccionaria de n y la parte entera la guarda en x.
rand( ) devuelve un entero en el rango comprendido entre 0 y 32767
srand(exp) produce la generación aleatoria del número.
randomize( ) utiliza el reloj del computador para generar el número aleatorio (time.h, stdlib.h)
random(n) devuelve un número entero aleatorio dentro del rango de 0 an-1. (stdlib.h)


FUNCIONES NUMERICAS #include
setw(n) determina un ancho n del dato numérico
setprecision(n) determina n cantidad de decimales

FUNCIONES DE CADENA #include
PARA COPIAR
strcat(c1,c2) concatena y copia c2 en c1
strncat(c1,c2) concatena y copia los n primeros caracteres de c2 en c1.
strcpy(c1,c2) copia el contenido de c2 en c1.
strncpy(c1,c2,n) copia el contenido de los n primeros caracteres de c2 en c1.
strdup(c1, c2) proporciona un duplicado de c2.


PARA BUSCAR CARACTERES EN UNA CADENA

strchr(c,ch) devuelve los caracteres de la cadena desde donde encontró por primera vez el carácter ch.
strrchr(c,ch) devuelve los caracteres de la cadena desde donde encontró por última vez el carácter ch.
strpbrk(c1,c2) devuelve los caracteres de c1 desde donde encontró el primer carácter de c2.
strspn(c1,c2) devuelve el número de caracteres comunes de c1 y c2.
strcspn(c1,c2) devuelve el número de caracteres que están en c1 y no en c2 hasta el primer carácter común.
strstr(c1,c2) devuelve los caracteres desde donde encontró c2 en caso que no sea una subcadena devuelve el puntero nulo.

PARA COMPARAR
strcmp(c1,c2) devuelve un número luego de efectuar la comparación entre c1 y c2.
strncmp(c1,c2,n) igual al anterior pero hace la comparación de los n primeros caracteres. (0 si son iguales, >0 si c1>c2, >0 si c1>c2)


OTRAS
strlen(c) devuelve la longitud sin contar el delimitador nulo.
strlwr(c) devuelve la cadena en minúscula excepto la ñ.
strupr(c) devuelve la cadena en mayúscula excepto la ñ.
strnset(c,ch,n) coloca ch en los primeros n caracteres de c.
strrev(c) invierte la cadena, el único carácter que respeta es el delimitador nulo.
memset(d,c,n) fija los primeros n caracteres de la cadena d con el carácter c.

FUNCIONES DE CARACTER #include
tolower(ch) devuelve el carácter en minúscula o el mismo si no es carácter.
toupper(ch) devuelve el carácter en mayúscula o el mismo si no es carácter.

FUNCIONES PARA CONVERSION DE DATOS #include
latof(c) convierte la cadena c a una cantidad en doble precisión.
latoi(c) convierte la cadena c en un entero.
latol(c) convierte la cadena c en un entero largo.

ARCHIVOS DE CABECERA

En la programación en C es posible utilizar funciones que no estén incluidas en el propio programa. Para ello utilizamos la directiva #include, que nos permite añadir librerías o funciones que se encuentran en otros ficheros a nuestro programa.
  • #include
  • #include
  • #include
  • #include
  • #include


FUNCIONES DE ENTRADA/SALIDA
#include
cout cout<< “cadena de caracteres”<cin cin>> variables;
#include
printf printf (“formato”, lista de datos);
scanf scanf (“formato”, lista de direcciones de variables);
puts puts(“cadena”);
gets gets(cadena);
#include
getch a = getch();
putch putch(caracter);


FUNCIONES DEL SISTEMA
#include
System(“CLS”)
System(“PAUSE”);
return 0;

OPERADORES ARITMETICOS Y DE ASIGNACION

Permiten realizar operaciones matemáticas en lenguaje C.
Existen dos tipos de operadores aritméticos:

  • Los binarios:
    + Suma - Resta
    * Multiplicación
    / División
    % Módulo (resto)
  • y los unarios:
    ++ Incremento (suma 1) -- Decremento (resta 1)
    - Cambio de signo

Operadores de asignación

La mayoría de los operadores aritméticos binarios tienen su correspondiente operador de asignación:
  • = Asignación simple
  • += Suma
  • -= Resta
  • *= Multiplicación
  • /= División
  • %= Módulo (resto)

Con estos operadores se pueden escribir, de forma más breve, expresiones del tipo:

  • n=n+3 se puede escribir n+=3
  • k=k*(x-2) lo podemos sustituir por k*=x-2

Jerarquía de los operadores

Es importante tener en cuenta la precedencia de los operadores a la hora de trabajar con ellos:
  • ( ) Mayor precedencia
  • ++, --
  • *, /, %
  • +, - Menor precendencia

OPERADORES RELACIONALES

Utilizados para comparar el contenido de dos variables. En C existen seis operadores relacionales básicos:

  • > Mayor que
  • <>
  • >= Mayor o igual que
  • <= Menor o igual que
  • == Igual que
  • != Distinto que

El resultado que devuelven estos operadores es 1 para Verdadero y 0 para Falso. Si hay más de un operador se evalúan de izquierda a derecha. Además los operadores == y != están por debajo del resto en cuanto al orden de precedencia.

OPERADORES LOGICOS

Los operadores lógicos básicos son tres:
  • && AND
  • OR
  • ! NOT (El valor contrario)


Estos operadores actúan sobre expresiones lógicas. Permiten unir expresiones lógicas simples formando otras más complejas.

  • V = Verdadero F = Falso


EJERCICIO: PRACTICA Nº3

,

ESTRUCTURA SELECTIVA O CONDICIONAL

Los controles que se manejan en esta estructura son:
  • IF (Si)
  • ELSE (Según Sea)


Este tipo de sentencias permiten variar el flujo del programa en base a unas determinadas condiciones. Existen varias estructuras diferentes:


Estructura: IF...ELSE
Sintaxis:
if (condición es verdad)
acción1;
else
acción2;

La estructura selectiva permite la realización de una instrucción u otra según un criterio o condición, y solo una de estas instrucciones se ejecutará.


Su estructura es:


Si (condición es Verdadera) entonces
Acción A
sino
Acción B
Finsi


Donde: Acción A ó Acción B, puede ser una o varias acciones.

EJEMPLOS

Si (a > b) entonces
Escribir (“a es mayor que b”)


sino
Escribir (“a no es mayor que b”)
finsi

  • Hallar el algoritmo que ordene de forma ascendente dos numeros a,b


#include
void main()
{
int a,b;
cout<<"Ingrese valor de a: "; cin>>a;
cout<<"Ingrese valor de b: "; cin>>b;
if (a < b) { cout<<"Orden ascendente: "; cout< cout<<", ";
cout< }
else
{
cout<<"Orden ascendente: ";
cout< cout<<", ";
cout< }
}

  • Elaborar un algoritmo que indique si un numero ingresado es positivo o negativo, asumiendo que 0 es positivo.


Inicio
Var: n:entero
Escribir (“Ingresar número”)
Leer (n)
Si (n >=0) entonces
Escribir (“Positivo”)
Sino
Escribir (“Negativo”)
Finsi
Fin

  • Indicar si un numero ingresado es positivo, negativo o cero.

Inicio
Var: n:entero
Escribir (“Ingresar número”)
Leer (n)
Si (n > 0) entonces
Escribir (“Positivo”)
Sino Si (n < 0) entonces
Escribir (“Negativo”)
Sino
Escribir (“Es cero”)
Finsi
Finsi
Fin

  • Obtener el mayor de 3 números ingresados.


#include
void main( )
{ int a, b, c, aux;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"c=";cin>>c;
if (a>b)
{ if (a>c)
{ cout<<"El Mayor es ="< else
{aux=a;a=c;c=aux;
cout<<"El Mayor es ="<}
else
{ aux=a;a=b;b=aux;
if (a>c)
{ cout<<"El Mayor es ="<else
{aux=a;a=c;c=aux;
cout<<"El Mayor es ="< }
}

ESTRUCTURAS SELECTIVAS DE ALTERNATIVA MÚLTIPLE

C++ le permite anidar enunciados if-else para crear una forma de alternativa múltiple, que le proporciona gran poder y flexibilidad a sus aplicaciones.

SINTAXIS:


If (Condicion 1)
{
Else if (condicion 2)
accion 1
Else if (condicion 3)
accion 2
Else if (condicion n)
accion n
Else
{
Accion x
}

EJEMPLOS

  • Elaborar un algoritmo que muestre un mensaje según los datos de la tabla :


Nota Mensaje
18 - 20 Felicitaciones
16 - 17 Tu nota es buena
13 - 15 Tu nota es regular
11 - 12 Tu nota es baja
0 - 10 Desaprobaste


#include // para cin y cout
void main( )
{
int nota;
cout << "Ingrese nota: ";
cin >> nota;
if(nota >= 18)
cout << "¡Felicitaciones!" << endl;
else if(nota >= 16)
cout << "¡Tu nota es buena!" << endl;
else if(nota >= 13)
cout << "¡Tu nota es regular!" << endl;
else if(nota >= 11)
cout << "¡Tu nota es baja!" << endl;
else
cout << "¡Desaprobaste!" << endl;
} //Fin de main()

  • Haga un algoritmo para que, dados dos números enteros a, b y una clave, realice la operación aritmética indicada por medio de la clave a los números dados. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma de 8 + 4. Las claves válidas son: + - * /.


#include // para cin y cout
void main( )
{ char op; int ok = 0;float x, y, z;
cout << "Introduzca operando1, operador y operando2: ";
cin >> x >> op >> y;
if (op == '+')
z = x + y;
else if (op == '-')
z = x - y;
else if (op == '*')
z = x * y;
else if (op == '/' && y != 0)
z = x / y;
else
{
cout<<"el operador no existe"<ok = 1;
}
if (ok!=1)
cout<<"la "<}

SINTAXIS: SWITCH

switch( Variable )
{ case ‘N1’:
Accion 1;
break;
case ‘N2’:
Accion 2;
break;
case ‘Nn ’:
Accion n;
break;
default:
Accion x;
}

EJEMPLOS

  • Haga un algoritmo para que, dados dos números enteros a, b y una clave, realice la operación aritmética indicada por medio de la clave a los números dados. Por ejemplo, si los datos son: 8 4 +, el algoritmo debe calcular la suma de 8 + 4. Las claves válidas son: + - * /.

#include // para cin y cout
void main(void)
{ char op; int ok = 0; float x, y, resultado;
cout << "Introduzca operando1, operador y operando2: ";
cin >> x >> op >> y;
switch(op)
{
case ‘+’:
resultado = x + y;
break;
case ‘-’:
z = x - y;
break;
case ‘*’:
resultado = x * y;
break;
case ‘/’:
if (y != 0)
{resultado = x / y;}
else
{cout< ok = 1;}
break;
default:
cout<<"el operador no existe"< ok = 1;
}
if (ok!=1)
cout<<"la "<}

  • Construir un algoritmo que al ingresar una fecha, valide si la fecha ingresada es correcta. Considerar dd / mm / aa

#include // para cin y cout
void main(void)
{int d,m,a,md;
cout<<"Ingresar fecha, indicando día mes y año"; cin>>d>>m>>a;
switch(m)
{case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
md = 31;
break;
case 4:
case 6:
case 9:
case 11:
md = 30;
break;
case 2:
if ((a%4)== 0)
md = 29;
else
md = 28;
}
if (m>0 && m<13>0 && d0)
cout<<"Fecha correcta"< else
cout<<"Fecha incorrecta"<}


EJERCICIOS PRÁCTICA Nº5

1. Construya una algoritmo que al ingresar un numero entero imprima el día de la semana que le corresponde. Por ejemplo: al ingresar 1 debe imprimir lunes.

#include // para cin y cout
void main( )
{
int nota,numero;
cout << "Ingrese numero:";
cin >>numero;
if(numero== 1)
cout << "dia lunes" << endl;
else if(numero== 2)
cout << "dia martes" << endl;
else if(numero== 3)
cout << "dia miercoles" << endl;
else if(numero== 4)
cout << "dia jueves" << endl;
else if(numero== 5)
cout << "dia viernes" << endl;
else if(numero== 6)
cout << "dia sabado" << endl;
else if(numero== 7)
cout << "dia domingo" << endl;
else if(numero>=8)
cout << "¡No regristado!" << endl;
}//Fin de main()

2. Una empresa de carga brinda servicio a todo el continente americano, la tarifa que cobra por cada tonelada se muestra en el siguiente cuadro:

Destinos ($/tonelada)
Medio de transporte Norte Sur Centro
Aéreo 30 25 20
Marítimo 25 20 15
Terrestre 20 15 10


Asimismo, si la carga que se transporta es perecible, se le incrementa el 7% del pago total de acuerdo a las toneladas.


#include
void main ()
{
int opc,q;
float precio;
char p;
cout<<"(1)aereo-norte"<cout<<"(2)aereo-sur"<cout<<"(3)aereo-centro"<cout<<"(4)maritimo-norte"<cout<<"(5)maritimo-sur"<cout<<"(6)maritimo-centro"<cout<<"(7)terrestre-norte"<cout<<"(8)terrestre-sur"<cout<<"(9)terrestre-centro"<cout<<"Escoger Tarifa:";cin>>opc;
cout<<"Alimento esperecible:";cin>>p;
cout<<"cantidad=";cin>>q;
if (opc==1&&p=='s' )
precio=(30*q)*1.07;
else if (opc==1&&p=='n' )
precio=30*q;
else if (opc==2&&p=='s' )
precio=(25*q)*1.07;
else if (opc==2&&p=='n' )
precio=25*q;
else if (opc==3&&p=='s' )
precio=(20*q)*1.07;
else if (opc==3&&p=='n' )
precio=20*q;
else if (opc==4&&p=='s' )
precio=(25*q)*1.07;
else if (opc==4&&p=='n' )
precio=25*q;
else if (opc==5&&p=='s' )
precio=(20*q)*1.07;
else if (opc==5&&p=='n' )
precio=20*q;
else if (opc==6&&p=='s' )
precio=(15*q)*1.07;
else if (opc==6&&p=='n' )
precio=15*q;
else if (opc==7&&p=='s' )
precio=(20*q)*1.07;
else if (opc==7&&p=='n' )
precio=20*q;
else if (opc==8&&p=='s' )
precio=(15*q)*1.07;
else if (opc==8&&p=='n' )
precio=15*q;
else if (opc==9&&p=='s' )
precio=(10*q)*1.07;
else if (opc==9&&p=='n' )
precio=10*q;
cout<<"el precio es:"<}

3. Un banco realiza el pago de intereses a sus clientes por un deposito a plazo fijo de acuerdo a la siguiente información: Tipo de moneda, Tiempo de deposito y monto depositado. Los intereses serán aplicados según el siguiente cuadro:

Meses Soles (%) Dólares (%)
0 – 5 0 0
6 – 12 6 4
13 –maS 9 7
Mostrar el interés y el monto total a recibir.


#include
void main ()
{
int tm,td;
float mt,md;
cout<<"Monto depositado";cin>>md;
cout<<"Tiempo de deposito";cin>>td;
cout<<"Tipo de moneda";cin>>tm;

if (td==1&&tm==1 )
mt=md;
else if (td==1&&tm==2 )
mt=md;
else if (td==2&&tm==1 )
mt=md+0.06*md;
else if (td==2&&tm==2 )
mt=md+0.04*md;
else if (td==3&&tm==1 )
mt=md+0.09*md;
else if (td==3&&tm==2 )
mt=md+0.07*md;
cout<<"el monto total es:"<}

4. Un supermercado ofrece a sus clientes descuentos de acuerdo al monto de compra, como se muestra en el siguiente cuadro:

Compra (S/.) Descuento (%)
0 – 250 0

251 – 500 5
501 – 1000 10
1001 – más 15

Para recibir los beneficios de descuento un cliente solo puede comprar dentro de un determinado rubro, así mismo dependiendo del rubro de la compra, se le aplica el siguiente impuesto sobre la compra descontada.
Rubro Impuesto (%)
Comestibles 15
Juguetes 20


Construir un algoritmo que calcule el pago total que hará un determinado cliente.

#include
void main ()
{
float mc;
int rubro;
cout<<"Monto de compra:";cin>>mc;
cout<<"Rubro:";cin>>rubro;
if (mc>=0&&mc<=250&&rubro==1 )
mc=mc+0.15*mc;
else if (mc>=251&&mc<=500&&rubro==1 )
mc=1.15*0.95*mc;
else if (mc>=501&&mc<=1000&&rubro==1 )
mc=1.15*0.90*mc;
else if (mc>=1001&&rubro==1 )
mc=1.15*0.85*mc;
else if (mc>=0&&mc<=250&&rubro==2)
mc=mc+0.20*mc;
else if (mc>=251&&mc<=500&&rubro==2 )
mc=0.95*1.20*mc;
else if (mc>=501&&mc<=1000&&rubro==2 )
mc=0.90*1.20*mc;
else if (mc>=1001&&rubro==2 )
mc=0.85*1.20*mc;
cout<<"Monto de compra es:"<}

5. Un centro comercial ofrece ventas financiadas por 3 tipos de tarjetas de crédito como indica a continuación:

Max. Letras Tipo de Tarjeta Interés (%)
12 A 5
8 B 10
6 C 15


El cliente solo puede financiar una compra hasta el máximo de letras que se indica en el cuadro anterior, en caso contrario la venta no debe proceder. Calcular el monto de cada letra por pagar así como el monto total.

#include
void main ()
int Nl;
char tipo;
float consumo,Ml,interes,monto;
cout<<"Monto de compra:";cin>>consumo;
cout<<"Tipo de letra:";cin>>tipo;
cout<<"Numero de letra:";cin>>Nl;
if (tipo=='A'&&Nl<=12)
interes=1.05*consumo;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='B'&&Nl<=12)
interes=1.10*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='C'&&Nl<=12)
interes=1.15*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='A'&&Nl<=8)
interes=1.05*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='B'&&Nl<=8)
interes=1.10*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='C'&&Nl<=8)
interes=1.15*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='A'&&Nl<=6)
interes=1.05*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='B'&&Nl<=6)
interes=1.10*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
else if (tipo=='C'&&Nl<=6)
interes=1.15*consumo ;
monto=consumo+interes;
Ml=monto/Nl;
cout<<"Monto de letra:";cin>>Ml;
cout<<"Monto de compra:";cin>>monto;
}

6. Una empresa aérea realiza ofertas de pasajes a 3 destinos diferentes, de acuerdo a la cantidad de pasajes que se compra, como se muestra en el siguiente cuadro:

Destino Precio ($) Menos de 5 pasajes (%) De 5 a más Pasajes (%)
París 184.00 10 15
Italia 139.70 15 20
Grecia 127.40 20 25

Un cliente solo puede comprar pasajes para una ciudad. Calcular el total que tiene que pagar un determinado cliente.

#include
void main ()
{
int dest;
char tipo;
float precio,interes;
cout<<"precio=";cin>>pre;
cout<<"tipo de tarjeta=";cin>>tipo;
cout<<"destino=";cin>>dest;

if (tipo=='P' && pre==184.00 && pasaje <=5 )
{
interes=0.10*precio;
monto = consumo + interes;
}
else if (tipo=='I' && precio==139.70 && pasaje <= 5)
{
interes=0.15*precio;
monto = consumo + interes;
}
else if (tipo =='G' && precio==127.40 && pasaje <=5)
{
interes=0.20*consumo;
monto = consumo + interes;
}
else if (tipo=='P' && pre==184.00 && pasaje >=5 )
{
interes=0.15*precio;
monto = consumo + interes;
}
else if (tipo=='I' && precio==139.70 && pasaje >= 5)
{
interes=0.20*precio;
monto = consumo + interes;
}
else if (tipo =='G' && precio==127.40 && pasaje >=5)
{
interes=0.25*consumo;
monto = consumo + interes;
}
cout<<"el monto es="<cout<<"el monto de la letra="<}

7. Un club social a clasificado a sus socios en 3 categorías, como se muestra en el siguiente cuadro:

Categoria Cant. Boletos Pago Mensual (S/.) Dscto (%)
A 25 200 4
B 20 150 3
C 15 100 2

Dicho club realiza mensualmente un tipo de evento (rifas, almuerzos, etc.)., de esta manera, un socio esta obligado a vender la cantidad de boletos que se indican en el cuadro anterior, pero si un socio vende más de los boletos indicados, se le descuenta S/.2.00 por cada boleto vendido. Además si el socio tiene más de 55 años recibe un porcentaje de descuento de su pago mensual. Calcular el monto total que paga un socio en un mes.
#include
#include
void main()
{
int nsoci=0;
char ncate;
float nbven=0.0;
int nedad=0;
float monto=0.0;
float descuento=0.0;
float nporc=0.0;

cout<<" Ingrese Numero de Socio : ";
cin>>nsoci;
cout<<" Ingrese Categoria (A/B/C) : ";
cin>>ncate;
cout<<" Ingrese Boletos Vendidos : ";
cin>>nbven;
cout<<" Ingrese Edad del Socio : ";
cin>>nedad;
switch(ncate)
{
case 'A': if(nbven>25) monto=200-(2*nbven);
else monto=200; break;
case 'B': if(nbven>20) monto=150-(2*nbven);
else monto=150; break;
case 'C': if(nbven>15) monto=100-(2*nbven);
else monto=100; break;
default: cout<<"\n";
cout<<" Categoria no es A B C , se cancela programa ";
exit(1);
}
switch(ncate)
{
case 'A': nporc=4; break;
case 'B': nporc=3; break;
case 'C': nporc=2; break;
}
if(nedad > 55)
{
descuento=monto*nporc/100;
monto=monto-descuento;
}

cout<<" El Monto Calculado es : "<cout<<"\n";
cout<<"\n";
}

8. Calcular el pago de un obrero que trabaja al destajo. El pago que recibe el obrero por cada unidad producida depende de su categoría y del tipo de producto que produce, como se muestra en el siguiente cuadro:

Tarifa (S/. x unidad)
Categoría Tejas Losetas
A 2.50 2.00
B 2.00 1.50
C 1.50 1.00
Así mismo, el obrero recibe una bonificación especial de acuerdo a la cantidad que produce:
Unidades Producidas Bonificación (%)
1 – 250 0.00
251 – 500 50.00
501 – 1000 100.00
1001 – mas 150.00
Además del total de ingresos se descuenta 75 por seguro.
#include
#include
void main()
{
int nobre=0;
char ncate;
float nteja=0.0;
float nlose=0.0;
float wmonto=0.0;
float wmontot=0.0;
float wmonto1=0.0;
float wtotal=0.0;
float bonif=0.0;

cout<<" Ingrese Numero de Obrero : ";
cin>>nobre;
cout<<" Ingrese Categoria (A/B/C) : ";
cin>>ncate;
cout<<" Ingrese Tejas Producidas : ";
cin>>nteja;
cout<<" Ingrese Losetas producidas : ";
cin>>nlose;

switch(ncate)
{
case 'A': wmonto=(nteja*2.50)+(nlose*2.00);
break;
case 'B': wmonto=(nteja*2.00)+(nlose*1.50);
break;
case 'C': wmonto=(nteja*1.50)+(nlose*1.00);
break;
default: cout<<"\n";
cout<<" Categoria no es A B C , se cancela programa ";
exit(1);
}
wtotal=nteja+nlose;
if(wtotal<251) bonif=0.00;
else if(wtotal<501) bonif=50.00;
else if(wtotal<1001) bonif=100.00;
else if(wtotal>1000) bonif=150.00;

wmontot=wmonto+bonif;
if(wmontot < 75)
{
cout<<" monto calculado es menor que 75 del seguro, se cancela ";
exit(1);
}
else
{
wmonto1 = wmontot - 75;
}

cout<<" El Monto Calculado es : "<cout<<"\n";
cout<<"\n";
}

9. En una empresa, los salarios van a aumentar en base al contrato actual del trabajador:
Contrato Aumento %
De 0 a 1500 soles 20
De 1501 a 3000 soles 10
De 3001 a 6000 soles 5
De 6001 soles a más 0

Además el trabajador recibirá una bonificación especial de acuerdo a su condición civil.
Estado civil Bonificación
Soltero 100.00
Casado 150.00
Se pide mostrar cuanto es la bonificación del trabajador y cual es su sueldo neto.

#include
#include
void main()
{

// nempl = numero Empleado, nsuel = sueldo, neciv = estado civil
int nempl=0;
float nsuel=0.0;
char neciv;

float wmonto=0.0;
float wmontot=0.0;
float wmonto1=0.0;
float wtotal=0.0;
float aumento=0.0;

cout<<" Ingrese Numero de Empleado : ";
cin>>nempl;
cout<<" Ingrese Sueldo del Empleado : ";
cin>>nsuel;
cout<<" Ingrese Estado Civil (S/C) : ";
cin>>neciv;


switch(neciv)
{
case 'S': wmonto=100.00;
break;
case 'C': wmonto=150.00;
break;
default: cout<<"\n";
cout<<" Estado Civil errado se cancela programa ";
exit(1);
}

if(nsuel<1501) aumento=20.00;
else if(nsuel<3001) aumento=10.00;
else if(nsuel<6001) aumento=5.00;
else if(nsuel>6000) aumento=0.00;

wmontot=nsuel+wmonto+(nsuel*aumento/100);

cout<<" El Monto Calculado es : "<cout<<"\n";
cout<<"\n";
}

ESTRUCTURAS REPETITIVAS

ITERACION : CICLO
La iteración simplemente significa hacer algo en forma repetida. En programación a esto se le llama ciclo porque la estructura de control iteración ocasiona que el programa fluya entrando en un ciclo.

ESTRUCTURAS DE CONTROL REPETITIVO:
  • WHILE
  • DO…WHILE
  • FOR( inicialización; condición; incremento)

SENTENCIA WHILE

Con esta sentencia se controla la condición antes de entrar en el bucle. Si ésta no se cumple, el programa no entrará en el bucle. Naturalmente, si en el interior del bucle hay más de una sentencia, éstas deberán ir entre llaves para que se ejecuten como un bloque.

SENTENCIA: WHILE

SINTAXIS:
WHILE (CONDICION)
{
SENTENCIAS;
}

EJEMPLO:

CONSTRUYA UN ALGORITMO QUE CALCULE E IMPRIMA LOS 20 PRIMEROS NUMEROS DE LA SERIE DE FIBONACCI.
0,1,1,2,3,5,8,13,21,34,…..

#include
void main()
{ long int a=0, b=1,i=3;
long int t, tmp;
cout<<"Fibonacci 1: "< cout<<"Fibonacci 2: "<while(i<=20)
{
t=a+b;
cout<<"Fibonacci "< tmp=a;
a=b;
b=t;
i++;
}
}

SENTENCIA: DO…WHILE

Con esta sentencia se controla la condición al final del bucle. Si ésta se cumple, el programa vuelve a ejecutar las sentencias del bucle. La única diferencia entre las sentencias while y do...while es que con la segunda el cuerpo del bucle se ejecutará por lo menos una vez.

SINTAXIS:
DO
{
SENTENCIAS;
}
WHILE (CONDICION)

EJEMPLO: DO…WHILE
  • ALGORITMO QUE CUENTA DEL 0 AL 10
INT X
DO
{
COUT< X=X+1;
}
WHILE (X<=10)

SENTENCIA: FOR



SINTAXIS:

FOR (inicialización; condición; incremento)
{
sentencias;
}

EJEMPLO: SENTENCIA FOR

  • HACER EL ALGORITMO QUE CALCULE EL FACTORIAL DE UN NUMERO N.
  • Si N=5
  • FACTORIAL DE 5 ES= 1*2*3*4*5=120

    #include
    void main()
    { int n;
    cout<<"Ingresar n= ";cin>>n;
    if(n>=0)
    { int i, fac=1;
    for (i=1;i<=n;i++)
    { fac=fac*i;
    }
    cout<<"El Factorial es: "<}else
    { cout<<"Error..."<}
    }

EJERCICIOS: PRÁCTICA Nº6

1. Haga un Algoritmo que dado un valor n entero positivo, calcule e imprima los elementos correspondientes a la conjetura de Ullman (en honor al matemático S. Ullman) que consiste en lo siguiente:
· Empiece con cualquier entero positivo.
· Si es par, divídalo entre 2; si es impar multiplíquelo por 3 y agréguele 1.
· Obtenga enteros sucesivamente repitiendo el proceso.



#include
void main ()
{
int n;
cout<<"Ingrese el numero: ";cin>>n;
while (n!=1)
{
if(n%2==0)
{
n=n/2;
cout< }
else
{
n=3*n+1;
cout< }
}
}

2. Elabore un Algoritmo para leer una serie de enteros positivos, contar los valores introducidos y calcular su promedio. El final de los datos se indicará con un número negativo.



#include
void main ()
{
int n,contador=0,suma=0;
float promedio;
cout<<"Ingresa el numero: ";cin>>n;
while(n>0)
{
suma=suma+n;
contador++;
cout<<"El siguiente numero es: "; cin>>n;
}
promedio=suma/contador;
cout<<"El promedio es:"< cout<<"El numero de valores ingresados es: "<}

3. Elabore un Algoritmo, que dada una n entera, con 1 n 100, imprima los primeros n números naturales en orden ascendente.



#include
void main()
{
int n, i=1;
cout<<"Ingrese el numero: ";cin>>n;
if (n>=1 && n<=100) while( i<=n) { cout<

4. Elabore un Algoritmo, que dada una n entera, con 1 n 100, imprima los primeros n números naturales en orden descendente.



#include
void main()
{
int n, i=1;
cout<<"Ingrese el numero: ";cin>>n;
if(n>=1 && n<=100) while(i<=n) { cout<

5. Elabore un Algoritmo para leer una serie de n enteros, calcular e imprimir su suma y su promedio.



#include
void main ()
{
float n,suma=0, i =1, N;
float promedio;
cout<<"Ingresar el # de enteros: ";cin>>N;
while(i<=N) { cout<<"El siguiente numero es: "; cin>>n;
suma=suma+n;
i++;
}
promedio=suma/N;
cout<<"El promedio es :"<cout<<"La suma es: "<}

6. Elabore un Algoritmo, que calcule m x n (m ³ 0 , n ³ 0, ambos enteros) sin utilizar la operación de multiplicación.



----->> 1ra Forma



#include
void main ()
{
int i=1,s=0,m,n;
cout<<"El numero M es: ";cin>>m;
cout<<"El numero N es: ";cin>>n;
while (i<=n) { s=s+m; i++ ; } cout<<"La multiplicacion de M y N es: "<}

--->> 2da Forma

#include
void main()
{
int n,m,suma=0;
cout<<"Ingrese el primer numero: "; cin>>m;
cout<<"Ingrese el segundo numero: "; cin>>n;
while (m>=0 && n>=0)
{
suma=suma+m;
n--;
}
cout<<"La multiplicacion es: "<}

7. Elabore un Algoritmo, que calcule mn (n > 0 y entero) sin utilizar potencia.



#include
void main()
{
int n,m,multi=1;
cout<<"Ingrese el numero M: "; cin>>m;
cout<<"Ingrese el numero N: "; cin>>n;
if (n>0)
{
while (n>0)
{
multi=multi*m;
n--;
}
cout<<"M elevado a la N es: "<

}

else
{
cout<<"¡¡El programa no ejecuta esta operacion!!";
}
}

8. Haga un programa que dado un número n entero positivo, imprima todos sus divisores.

#include
void main ()
{
int n,i=1;
cout<<"Ingrese el numero: ";
cin>>n;
while (i<=n)
{
if (n%i==0)
{
cout< i++;
}
else
{
i++;
}
}
}

9. Ingresar números enteros y calcular la suma de dichos números. El algoritmo termina cuando se ingresa el numero cero.

#include
void main()
{
int n, suma=0;
while (n!=0)
{
cout<<"Ingrese el numero: "; cin>>n;
suma=suma+n;
}
cout<<"La suma de los numeros es: "<}

10. Se quiere ingresar las calificaciones de los alumnos. Y realizar un algoritmo para calcular el promedio de las calificaciones ingresadas. El algoritmo termina cuando se ingresa una nota negativa.

#include
void main()
{
float n, suma=0, cont=0, prom;

while (n>=0)
{
cout<<"La nota es: "; cin>>n;
suma=suma+n;
cont++;
}

prom=(suma-n)/(cont-1);
cout<<"El promedio es: "<}

11. En un proceso repetitivo se ingresan las edades de las personas, se desea saber cuantas personas mayores de edad hay y cuantas menores de edad. El proceso termina cuando se ingresa el cero.

#include
void main()
{
int n, contmay=0,contmen=0;
while (n!=0)
{
cout<<"La edad de la persona es: "; cin>>n;
if (n>0 && n>=18 && n<100)
{contmay++; }
else if (n>0 && n<18)
{ contmen++;}
else if (n<0>100)
{contmay=contmay-1;
contmen=contmen-1;}
}
cout<<"El numero de personas mayores de edad es: "<cout<<"El numero de personas menores de edad es: "<}

12. Una persona debe realizar un muestreo con N personas para determinar el promedio de peso de los niños, jóvenes y adultos que existen en su zona habitacional. Se determinan las categorías con base en la siguiente tabla:


Categoría Edad
Niños 0 – 12
Jóvenes 13 – 29
Adultos 30 – más

#include
void main ()
{
int n,contn=0,contj=0,conta=0;
while (0<=n)
{
cout<<"Ingrese la edad: ";
cin>>n;
if (n>=0 && n<=12)
{
contn++;
}
else if (n<=29 && n>=13)
{
contj++;
}
else if (n>=30)
{
conta++;
}
}
cout<<"El numero de niños es: "<cout<<"El numero de jovenes es: "<cout<<"El numero de adultos es: "<}

13. En un examen el tipo de calificación es el siguiente:


Puntaje Calificación
100 – 70 A
69 – 30 B
29 – 0 C
Escribe un algoritmo que encuentre:
a) El número de estudiantes que rindieron el examen.
b) El número de estudiantes que obtuvieron A, B y C.
El algoritmo termina cuando se le ingresa un puntaje negativo.

#include
void main()
{
int p,total;
int conta=0,contb=0,contc=0;

while (p>=0)
{
cout<<"El puntaje es: ";cin>>p;
if(p>=0 && p<=29)
{
contc=contc+1;
}
else if (p>=30 && p<=69)
{
contb=contb+1;
}
else if (p>=70 && p<=100)
{
conta=conta+1;
}
else if (p>100)
{
cout<<"¡¡Tu puntaje no se encuentra en ninguna de las categorias!!"< }
}
total=conta+contb+contc;
cout<<"Los alumnos que rindieron el examen son: "<cout<<"Los alumnos que estan en la categoria A son: "<cout<<"Los alumnos que estan en la categoria B son: "<cout<<"Los alumnos que estan en la categoria C son: "<}

SEGUNDA UNIDAD


FUNCIONES Y PROCEDIMIENTOS

  • Las funciones generan retorno de un valor. Una función es una colección independiente de declaraciones y sentencias, generalmente enfocadas a realizar una tarea específica.

  • Los procedimientos realizan parte del proceso de un programa.

  • El C++, no diferencia entre ambas las trabaja igual.

MÓDULO PRINCIPAL

  • Se trabaja con un modulo principal, el cual contiene las llamadas a las funciones y/o procedimientos a realizar.



EJEMPLO DE FUNCIÓN

  • Trabajando con funciones programa una función que calcule la suma de 2 números.


El pseudocodigo será:

Módulo Principal
Inicio:
Var: a,b,s: real
Escribir (“Ingresar primer numero”)
Leer (a)
Escribir (“Ingresar segundo numero”)
Leer (b)
s ß suma (a,b)
Escribir (“La suma es: ” , s)

Fin

Función :
Funcion suma (x:real , y:real)
Var: suma: real
suma <- x + y
retornar (suma)
Fin-función

EJEMPLO: VISIÓN COMPLETA

#include
float suma(float,float); ------------->>> //variable Global

//Programa Principal

void main( )
{
float a,b,s; ------------->>> //variables locales
cout<<"ingrese 1 numero: ";cin>>a;
cout<<"ingrese 2 numero: ";cin>>b;
s=suma(a,b); ------------->>> //Uso de la Función
cout<<"El resultado es: "<
}

//Función (Módulo)
float suma(float x, float y)
{
float ss; -------------->>> //variable local
ss = x + y;
return ss; --------------->>> //Retorno del Resultado
}

EJEMPLO: PROMEDIO DE NOTAS

#include

void main()
{
float Funcion_1 (int x), z1=0;
int n=0;
cout<<"Ingrese la cantidad de alumnos:"; cin>>n;
z1=Funcion_1(n);
cout<<"El Promedio es: "< }

float Funcion_1 (int x)
{
int s=0, nota=0, d=0, p=0;

for (int i=0;i {
cout<<"Ingrese la nota: ";cin>>nota;
s=s+nota;
d=d+1;
}
p=s/d;
return(p);
}

EJEMPLO: Selecciona la Mayor Talla


#include
void main( )
{
float Funcion_Mayor (int x);
int n=0;
float z1=0.0;
cout<<"Ingrese la cantidad de alumnos:";cin>>n;
z1=Funcion_Mayor(n);
cout<<"La Mayor talla es: "< z1;
}
float Funcion_Mayor (int x)
{
float talla=0.0, mayor=0.0;
for (int i=0;i {
cout<<"Ingrese la Talla: "; cin>>talla;
if (talla > mayor)
mayor=talla;
}
return(mayor);
}

VECTORES

Son conjuntos de datos homogéneos
* Tipos de datos:
- Simples:
char, int, long, float, double.
- Compuestos:
Vector.- Los datos almacenados son todos del mismo tipo.
- Pueden numerarse.
- Permiten tratamiento homogéneo e implícito
Estructura.- Los datos almacenados son de tipos distintos.
- Tratamiento explícito.
Combinaciones de ambos.

* Tipificación:
– Elemento: Cada uno de las unidades que forman el vector.
– Rango: Cantidad de elementos que contiene
– Índice: Número identificativo del elemento. Siempre comienza por 0


EJERCICIO SOBRE VECTORES

  • Programa que almacena 10 números enteros leídos desde
    teclado sobre un vector y lo visualiza una vez creado.


#include
#define RANGO 10
main () {
int numeros[RANGO], i;
for (i=0;RANGO>i;i++) {/*Se leen todos y cada uno de los nº uno a uno*/
printf ("\n Introduce el valor nº %d“, i+1);
scanf ("%d",&numeros[i]);
}
for (i=0 ; RANGO>i ; i++)
printf("\nEl valor del elemento %d es %d", i+1, numeros[i]);

}

MATRICES

Una Matriz es un arreglo de valores, ordenadas por medio de filas y columnas.
En el lenguaje C, los arreglos se inicializan en 0,0 y las filas son horizontales y las columnas verticales.


EJERCICIOS SOBRE MATRICES

  • En una matrix de dimensiones mxn hallar el mayor valor y el menor valor del arreglo.

DESARROLLO:

leer(matriz [x] [y])
mayor=0; menor=1000;
for(x=0; xfor (y=0; x{
if (matriz [x] [y]> mayor)
mayor= matriz [x] [y];
if (matriz [x] [y]< menor)
menor= matriz [x] [y];
}
}
escribir(mayor, menor)

Concluciones

BIBLIOGRAFIA

  • Luis Joyanes Aguilar.-

-Fundamentos de la Progradación, Algoritmos y Estructura de datos. McGraw Hill Interamericana de España 1995.

-Fundamentos De la Programación. McGraw Hill Interamericana de España 1995.

  • Javier Gálvez.-

-Algoritmica: Diseño y análisis de algorítmico Funcionales e Imperactivos.

  • Leobardo López.-

-Programación estructurada: Un enfoque algorítmico.

  • Mark Allen Weiss.-

-Estructuras de Datos y Algoritmos.

  • Dennis M. Ritchie.-

-The C Programming Language. Prentice Hall, 1988.