You are on page 1of 26

FUNDAMENTOS DE PROGRAMACION

1 Semestre

LENGUAJE DE PROGRAMACION
Es un conjunto de smbolos, caracteres y reglas necesarias que permitan al ser humano
comunicarse con la computadora.
Cada lenguaje debe aceptar ciertos tipos de instrucciones escritas, que permitan a la
computadora realizar un nmero de operaciones conocidas.
Todo lenguaje de programacin debe tener instrucciones comprendidas entre las siguientes
categoras:
Instrucciones de entrada / salida.
Instrucciones de clculo.
Instrucciones de lgica / comparacin e
Instrucciones de almacenamiento / consulta y movimiento.
Los niveles de lenguaje de programacin son:
Lenguajes de maquina.
Lenguajes ensambladores y
Lenguajes de alto nivel.
LENGUAJES DE MAQUINA
Son lenguajes que consisten de una cadena de nmeros binarios y es lo nico que el CPU
entiende directamente.
Cualquier programa esta formado de instruccin, las instrucciones tiene como mnimo las
siguientes dos partes:
El comando y
El operando.
El comando u operacin le dice a la computadora cual es la funcin que realizara.
El operando le dice a la computadora donde encontrar o almacenar los datos o instrucciones.
LENGUAJES ENSAMBLADORES
Utilizan cdigos operativos mnemnicos y direccionamiento simblico y adems son diseados
para un modelo especfico de computadora.
Al igual que el lenguaje mquina, cada instruccin consta de un comando y un operando.
La palabra mnemnico se refiere a una ayuda a la memoria humana para recordar con facilidad
las operaciones o comandos, en lugar de un conjunto de ceros y unos, como en el lenguaje maquina.
LENGUAJES DE ALTO NIVEL
Se les llama lenguaje de alto nivel, porque son fciles de entender, es decir, son de alto nivel
de entendimiento humano, porque sus instrucciones son palabras o frases propias del lenguaje
humano.
Los lenguajes de alto nivel permiten resolver tanto problemas cientficos como comerciales.
Su principal ventaja es que su construccin gramatical (sintaxis) se basa en verbos y palabras
del idioma ingles y en el uso de notaciones algebraicas lo cuales hace muy sencillos de escribir.
Un ejemplo de un programa de alto nivel es el siguiente:
/* Ejemplo de un programa en lenguaje C++ */
#include stdio.h
#include conio.h
int main( )
{
int base, altura;
float area;
printf (teclee la base);
scanf (%d, &base);
printf (teclee la altura);
scanf (%d, &altura);

FUNDAMENTOS DE PROGRAMACION

1 Semestre

rarea = base*altura/2;
printf (\n El area del triangulo es %f, area);
getch ( );
}
Los lenguajes de alto nivel se clasifican en:
Compiladores e
Intrpretes.
COMPILADOR
Un compilador es un programa para generar programas ejecutables, a travs de los siguientes
tres pasos:
I.- Captura del programa fuente: En esta fase, a travs de un editor de textos, captura las
instrucciones que forman el programa fuente, colocando las instrucciones en forma lgica.
II.- Proceso de compilacin: Una vez que ha terminado de capturar el programa fuente, puede
iniciar el proceso de compilacin, el cual consiste en tomar cada una de las instrucciones del programa
fuente y generar sus correspondientes instrucciones pero en lenguaje mquina.
Si en este
proceso no se generaron errores, entonces se crea un programa con este cdigo generado, dicho
programa se le conoce como programa objeto.
III.- Proceso de liga (link): En este proceso se toma el programa objeto y se liga o se une a una
estructura general para producir el programa ejecutable.
Si el proceso de link termina en forma
exitosa, entonces se genera finalmente el programa ejecutable.
LENGUAJE INTERPRETE
Este tipo de lenguaje en vez de traducir el programa fuente y almacenarlo permanentemente
como un cdigo objeto, que es producido durante una corrida de compilacin, para su uso futuro en la
produccin, el programador simplemente carga el programa fuente en la computadora, y al invocar al
lenguaje interprete, toma una instruccin del programa fuente y la convierte a lenguaje maquina y la
ejecuta y antes de convertir una nueva instruccin, desecha este cdigo de maquina de la instruccin
anterior y as sucesivamente por cada instruccin, de tal forma que la siguiente vez que se utilice la
instruccin, debe una vez mas ser interpretada y traducida al lenguaje maquina.
PROGRAMA FUENTE
Es la codificacin (escritura) de un programa usando un lenguaje de programacin, por ejemplo
un lenguaje de programacin de alto nivel.
PROGRAMA OBJETO
Es el resultado de la compilacin de un programa fuente.
PROGRAMA EJECUTABLE
Es el resultado de tomar un programa objeto y ligarlo con las libreras del compilador en que
fue codificado el programa fuente.
Para producir un programa ejecutable se requiere seguir los siguientes pasos:
1.- Teclear el programa fuente usando un editor de textos.
2.- Compilar el programa fuente, de tal forma que si no hay errores se crea un programa objeto.
3.- Ligar (link) el programa objeto con las libreras del compilador y si no hay errores se crea el
programa ejecutable.

ANALISIS Y DISEO DE LA SOLUCION


Para resolver un problema, la primera fase es analizarlo, es decir, se debe examinar
cuidadosamente el problema, con la finalidad de obtener una idea clara sobre lo que se esta
requiriendo, as como los datos necesarios para conseguir la solucin.
Este anlisis nos lleva al planteamiento de un algoritmo que nos conduce a la solucin del
problema.
Todo algoritmo debe poderse representar en un diagrama de flujo.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

ALGORITMO
Es la secuencia ordenada de una serie de pasos escritos, sin ambigedades, que conducen a la
solucin de un problema.
Para establecer un buen algoritmo debe cumplir con las caractersticas siguientes:
DEBE SER PRECISO: Es decir, debe de indicar claramente el orden de ejecucin de cada uno
de los pasos.
SIN AMBIGUEDAD: Si ejecuta varias veces los mismos pasos, proporcionando los mismos
datos, los resultados siempre deben ser los mismos.
FINITO: Debe tener siempre un fin en un tiempo determinado, siempre debe ejecutarse un
nmero determinado de pasos.
Todo algoritmo debe contener como mnimo tres partes:
ENTRADA DE DATOS: Es la informacin que requiere el algoritmo.
PROCESO DE LA INFORMACION: Son las operaciones necesarias para encontrar la solucin al
problema.
SALIDA DE RESULTADOS: Son las respuestas parciales o finales del problema.
Los pasos que se describen en cada algoritmo son exclusivos por programador, porque cada
persona realiza su algoritmo dependiendo del grado de detalle descriptivo que cada uno le quiera
poner. Esta es la razn por lo cual en programacin, cada persona hace un programa diferente para
resolver el mismo problema.
DIAGRAMA DE FLUJO
El diagrama de flujo es la forma mas tradicional para representar grficamente los detalles
algortmicos de un proceso.
El diagrama de flujo utiliza una serie de smbolos grficos y cada uno de
ellos tiene un significado especial.
El objetivo de un diagrama de flujo es facilitar la comprensin de un algoritmo o simplificar el
anlisis de un proceso.
SIMBOLOS:
INICIO: Este smbolo se utiliza para sealar el comienzo de un diagrama.
Tiene una lnea con flecha de salida.
FIN: Este smbolo se utiliza para sealar la terminacin de un diagrama.
Tiene una lnea con fecha de entrada.

ENTRADA DE DATOS: Este smbolo se utiliza para indicar la entrada de


datos al proceso.
Los datos pueden ser introducidos, por ejemplo
desde el teclado.
Este smbolo debe tener al menos una conexin
de entrada y una de salida.
PROCESO DE DATOS: Este smbolo se utiliza para sealar expresiones
matemticas o procesos especficos utilizando los datos obtenidos en
pasos anteriores, dentro del cuadro se puede describir brevemente la
operacin o una expresin matemtica.
Este smbolo
debe tener al menos una conexin de entrada y una de salida.
DE DECISION: Este smbolo representa una decisin lgica.
En el
interior del smbolo se anota una pregunta que ser evaluada como
cierta o falsa y que va a determinar el sentido del flujo del programa.
Este smbolo es el nico que puede tener dos salidas, en cada salida se
debe indicar con un letrero si es salida verdadera (SI), o si es una salida
falsa (NO), indicando con esto cual de las salidas se tomara en base al
resultado de evaluacin de la expresin que se encuentra colocada
dentro del smbolo de decisin.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

DESPLEGADO DE INFORMACION: Este smbolo se utiliza para desplegar


informacin ya sea en el monitor de la computadora o en papel va
impresora.
Esta informacin puede ser el resultado parcial o
final del problema que se est resolviendo a travs del diagrama de
flujo. Dentro del interior del smbolo se anota la variable que contiene
el resultado o el mensaje que representa el resultado. Este smbolo al
menos debe tener una conexin de entrada y una de salida.
DE FLUJO: Son los smbolos que se representan con flechas, las que
indican la direccin que debe seguir la computadora para ejecutar la
secuencia de instrucciones de acuerdo a la lgica del programa .
CARCTER DE SALTO: Este smbolo representa un salto dentro del
diagrama de flujo.
La utilidad es para evitar los cruces de lneas a
travs del diagrama de flujo. Se utilizan dos conectores, uno
representa la puerta de salida y el otro la puerta de entrada .

CONECTOR DE PGINA: Este conector es para indicar un salto de una


pgina a otra. Utilizan letras para diferenciarse de los conectores
anteriores que usan nmeros.

Diagrama de flujo para calcular y mostrar el rea del trapecio:

INICIO
B, b, h
A=((B+b)*h)/2
A

FIN
Diagrama de flujo que captura desde el teclado 3 nmeros: x, y, z, distintos entres si y el
resultado del diagrama de flujo debe decir cual es el mayor de los 3.
INICIO
X, Y, Z
NO

Z>Y
SI

Y ES MAYOR

Z ES MAYOR

NO

X>Y

SI

X>Y

NO

SI
X ES MAYOR

Z ES MAYOR

FUNDAMENTOS DE PROGRAMACION

1 Semestre

FIN

Diagrama de flujo que acepta desde el teclado 3 nmeros: a, b, c, los cuales corresponden a las
medidas de los lados de un triangulo, determinar en base a los valores capturados si se trata de un
triangulo equiltero, issceles, o escaleno.
Recordando que el triangulo equiltero tiene todos sus
lados iguales, el issceles tiene dos lados iguales y uno desigual y el escaleno tiene sus tres lados
desiguales.
INICIO
A, B, C

NO

A=B,
A=C,
B=C

NO
Y

SI
ESCALENO

A=B
B=C
SI

ISOSCELES

EQUILATERO

FIN

ESTRUCTURA DE UN PROGRAMA EN C
/*Mi primer programa en C */

#include stdio.n
#include conio.h

LINEA DE COMENTARIOS:
Los comentarios empiezan con los simbolos /* y acaban
con */.
El compilador ignora todo lo escrito
entre este par de simbolos.
ARCHIVO DE CABECERA:
Le indica al compilador que traiga el cdigo de
programa almacenado en este archivo y lo una a
nuestro cdigo de nuestro programa.
Aqu se declaran los archivos de cabecera, Los signos
, <>, Significa que los archivos de cabecera stdio.h y
conio.h se encuentran almacenados en el subdirectorio \
+C\include.

Int main ( )

FUNCION MAIN ( ) (ARCHIVO PRINCIPAL):


Todo programa en C debe tener una llamada a
main( ).La ejecucin de un programa empieza con la
funcin main ( ) y a veces termina con la funcin return
( ).

CUERPO DE LA FUNCION main ( ):


Las llaves { } definen el cuerpo de una funcin o
definen un bloque lgico de sentencias.
La llave abierta { indica el inicio del bloque de
sentencias.
La llave cerrada } indica el fin del bloque de la
sentencia.

printf (HOLA);
getch ( );

INSTRUCCIN DEL PROGRAMA:

FUNDAMENTOS DE PROGRAMACION

1 Semestre

printf (HOLA); es la nica sentencia en el cuerpo del


programa.
Lo que indica, es que la frase entre
comillas se imprima en la pantalla.
}
ESTRUCTURA GENERAL DE UN PROGRAMA EN C
El siguiente programa muestra la estructura den un programa en C. La explicacin se
centrara sobre la estructura del programa.
ARCHIVOS DE CABECERA
Los archivos de cabecera, son archivos fuentes en C/C++, que contienen grupos de funciones y
datos, que definen operaciones bsicas que requiere todo lenguaje de programacin.
Cuando se realiza el proceso de instalacin de DEV/C++, en forma automtica se almacenan
los archivos de cabecera en el disco duro, en el directorio include.
Estos archivos de cabecera,
siempre su nombre termina con la extensin h, que significa headers (encabezados).
DEV/C++, contiene todos los archivos de cabecera definidos por el estndar ANSI C (American
National Standars Institute).
Por lo que el transporte del cdigo fuente a otros entornos esta
asegurado.
Estos archivos de cabecera, se declaran usando directivas #include, que permite incluir en el
mismo programa, archivos de cabecera.
El orden en que se escriban en el programa los archivos de cabecera, no importa, con tal de
que se incluyan antes de que se utilicen las funciones que tienen definidas internamente.
Ejemplo:
#include <stdio.h>
Archivos de Cabecera
#include <conio.h>
int x;
Zona de Declaraciones Globales para Variables y Funciones
int imprime ( );
main ( )
{
int y;

Nombre de la Funcin Principal


Zona de Declaracin Local para Variables y Funciones

clrscr ( );
x = 7;
y = 15;
printf (x = %d, y = %d, x,y);
imprime ( );
getch ( );
return ( 0 );
}
Int imprime ( )
{
X = 38;
printf (\n x = %d, x);
}

Bloque de Sentencias

Funcin Definida por el Usuario

ZONA DE DECLARACIONES GLOBALES

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Las funciones propias del programador y las variables declaradas en esta zona, indican al
compilador, que son comunes a todas las funciones del programa, por lo que, significa que cualquier
funcin del programa, incluyendo main ( ), puede utilizar esta variable o funcin.
Las declaraciones de una funcin en esta zona, se denominan prototipos y dependiendo del
tipo de funcin es la cantidad de parmetros que debe tener declarada la funcin.
Por ejemplo:
int potencia (int a, int b);
El prototipo de esta funcin dice:
1.- Que el nombre de la funcin es potencia, y que regresa un valor entero.
2.- Que esta funcin potencia tiene dos parmetros enteros (int a, int b).
Lo que quiere decir, que cuando se invoque (se llame) esta funcin potencia, desde cualquier
punto del programa o cuando se construya la funcin potencia, debe cumplir con esta estructura que
se ha declarado en esta zona de declaracin global.
NOMBRE DE LA FUNCION PRINCIPAL main ( )
Cada programa en C debe tener un solo main ( ).
Este es el punto de inicio del
programa, por lo que, si se coloca mas de una funcin main ( ) en el programa se producir un error,
porque solo puede tener un nico punto de entrada el programa.
BLOQUE DE SENTENCIAS { }
Las sentencias que se encuentran entre las llaves { }, las llamaremos bloque de
sentencias, o instrucciones dentro de un programa.
En un programa pequeo, por lo general, dentro de la funcin main ( ), se pueden colocar todas
las sentencias, y se le puede dar seguimiento a la lgica del programa sin ningn problema.
Pero en un programa grande, las sentencias son demasiadas, como para colocarlas todas
dentro de la funcin main ( ), adems, darle seguimiento a la lgica del programa es muy complicado.
Por lo que, para los programas grandes en C, se recomienda construirlos en base ha llamado
a funciones.
Adems cada sentencia debe acabar con el carcter punto y coma ( ; ) de lo contrario el
compilador marcara error.
ZONA DE DECLARACION LOCAL
Las variables y constantes que se declaren en esta zona, solo pueden ser reconocidas
nicamente dentro de la funcin main ( ).
En general, las variables que se declaren dentro de una funcin cualquiera, solo son
reconocidas por la funcin donde fueron declaradas, es decir, son variables locales de la funcin donde
fueron declaradas.
Las variables locales se pueden declarar en el cuerpo o bloque de la
funcin principal, en cualquier punto, pero antes de ser utilizadas.
FUNCIONES DEFINIDAS POR EL USUARIO (HECHAS POR EL PROGRAMADOR)
Todo programa en C es un conjunto de funciones, que estructuradas en forma lgica
construyen una aplicacin.
Cada vez que requiera hacer una tarea especifica dentro de un
programa, es recomendable realizarla a travs de una funcin.
Toda funcin esta construida por
una serie de sentencias estructuradas en forma lgica.
Las funciones definidas por el
usuario, se pueden declarar antes o despus de la funcin principal main ( ).
Tambin se
pueden colocar varias funciones en un archivo fuente tipo texto externo al archivo donde se encuentra
el programa principal y nicamente desde el programa principal hacer el llamado de estas funciones.
Las funciones son llamadas a travs de la invocacin de su nombre, y si tienen variables
asociadas, tambin es necesario colocarlas a la hora del llamado.
El control de la ejecucin se
traslada a la funcin llamada, para ejecutar las sentencias agrupadas en dicha funcin llamada.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Una vez que las sentencias de la funcin llamada terminaron de ejecutarse, el control de
ejecucin regresa automticamente a la funcin llamadora.
A las funciones se les puede asignar cualquier nombre, as como, los parmetros opcionales
que pueden tener.
Se recomienda, que el nombre de la funcin y la de sus parmetros, se les
asigne un nombre que describa el propsito de la tarea.
Ejemplo: El siguiente programa muestra el uso de llamada de una funcin que regresa un valor.
#include <stdio.h>
#include <conio.h>
int imprime ( );
float calculo_iva (float importe);
main ( )
{
int cantidad;
float precio, importe, neto, iva;
clrscr ( );
cantidad = 7;
precio = 15.90;
printf (cantidad = %d, cantidad);
printf (precio = %f, \n, precio);
importe = cantidad * precio;
iva = calculo_iva (importe);
neto = importe + iva;
printf (\n Importe = %f, importe);
printf (\n IVA = %f, iva);
printf (\n NETO = %f, neto);
getch ( );
return ( 0 );
}
float calculo_iva (float importe)
{
float w;
w = 0.15 * importe;
Return ( w );
}

DECLARACION DE LA FUNCION

LLAMADO DE LA FUNCION

PRINCIPIA LA FUNCION
SENTENCIAS DE LA FUNCION
FIN DE LA FUNCION

Toda funcin antes de usarse se requiere una declaracin.


Si la funcin no se declara, el
compilador enviara un error.
La declaracin debe ir antes de usarse, es decir, la declaracin debe ir
antes de main ( ).

FUNDAMENTOS DE PROGRAMACION
Una de las partes bsicas de la programacin es saber como estructurar un programa, como
colocar comentarios en el programa, con la finalidad de documentarlo dentro del mismo cdigo fuente,
de tal manera que, sea ms fcil entender que hace un programa.
Tambin una de las partes bsicas es como desplegar informacin en la pantalla, as como,
pedir datos desde el teclado, para tales propsitos existen en C funciones estndares de
Entrada/Salida, es decir, funciones que le dan al programador facilidades para pedir y escribir
informacin a su gusto sobre la pantalla, de tal manera, que el programador pueda distribuir a lo largo
y a lo ancho de la pantalla, tanto letreros como datos, as como usar colores para dar una mejor
presentacin a sus resultados.
Otro de los puntos bsicos es saber que tipos de datos maneja C, por lo tanto, que tipos de
variables existen, y sus capacidades de almacenamiento de informacin que tienen las variables de
acuerdo a su tipo.
As como, el uso de las operaciones aritmticas bsicas que se emplean entre
variables.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Iniciaremos con la explicacin de los elementos bsicos de programacin, y que un


programador debe tener presente al inicio.
#include stdio.h
#include conio.h
main ( )
{
clrscr ( );
printf (Bienvenidos a Programacin);
getch ( );
}
#include stdio.h e #include conio.h.- Es la declaracin de los archivos de cabecera, los
signos o < > significan que los archivos de cabecera stdio.h y conio.h se encuentran almacenados
en el subdirectorio\tc\include.
main ( ).- Todo programa en C, debe empezar con esta funcin principal y significa el inicio
del programa, solo debe de existir un llamado a main ( ).
{ .- La llave abierta indica el inicio del bloque de sentencias.
} .- La llave cerrada indica el fin del bloque de sentencias.
clrscr ( ); .- Limpia la pantalla de resultados del programa y coloca el cursor en la parte superior
izquierda de la pantalla.
printf ( ); .- Esta funcin despliega en la pantalla el letrero que se encuentra dentro de las
comillas.
Esta funcin esta definida en el archivo de cabecera stdio.h.
getch ( ); .- Funcin para detener el programa antes de que termine, y asi poder ver el
resultado.
COMENTARIOS DENTRO DE UN PROGRAMA
Un comentario es un texto que se agrega al cdigo fuente.
El compilador ignora los
comentarios, es decir, no realiza ninguna accin.
El uso de comentarios es opcional, pero
es muy recomendable colocar comentarios en el programa, ya que es mas fcil entender un programa
que tiene comentarios.
En C++ los comentarios se pueden colocar de dos formas: Estilo Estndar o Estilo C++.
Si se est utilizando nicamente el compilador C++, puede utilizar el estilo C++, para colocar
comentarios. Pero si su programa ser compilado, adems por otros compiladores C, se recomienda
usar el estilo estndar para colocar comentarios.
COMENTARIOS ESTILO C ESTNDAR
Los comentarios en C estndar inician con la secuencia de caracteres /* y termina el
comentario con la secuencia */.
El texto que se coloca dentro de estas dos secuencias de
caracteres es ignorado por el compilador.
/* este es un comentario */
Es posible que el comentario contenga ms de una lnea de texto.
/* Primer Programa
En DevC++ */
Tambin es posible colocar comentarios en una lnea de sentencias.

ESPECIFICADORES DE FORMATO

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Los especificadores de formato de entrada se distinguen por el signo % y le dice a la funcin


scanf ( ) que tipo de datos espera recibir.
Ejemplo:
Int main ( )
{
Int i,j ;
printf (\n teclee dos nmeros enteros separndolos);
printf (\n con un espacio en blanco o capturar un numero);
printf (\n pulsar la tecla <enter> y capturar el segundo);
scanf (%d, %d, &i, &j);
printf (\n el primer dato tecleado fue: %d, i);
printf (\n el segundo dato tecleado fue: %d, j);
printf (\n\n realice ambas capturas);
getch ( );
}
CARCTER DE ESPACIO EN BLANCO
Un carcter de espacio en blanco en la cadena de control la dice a la funcin scanf ( ) que salte
sobre uno o mas caracteres de espacio en blanco que recibe desde el teclado.
Los caracteres de espacio en blanco pueden ser:
Un espacio en blanco.
Un tabulador.
Una nueva lnea.
Lo anterior quiere decir, que un carcter de espacio en blanco en la cadena de control, hace
que la funcin scanf ( ), lea pero no almacene cualquier numero de caracteres de espacio en blanco
hasta el primer carcter de no espacio en blanco.
Ejemplo: Este programa muestra que la funcin scanf ( ), puede contener en su formato un carcter
salto de lnea ( \n ), por lo que, para pedir el segundo dato, primero se requiere pulsar la tecla <enter>
y despus teclear el segundo dato.
Int main ( )
{
Int i,j ;
printf (\n\n CAPTURE DE LA FORMA SIGUIENTE);
printf (\n teclee un numero entero);
printf (\n pulse la tecla <enter> dos veces);
printf (\n y teclee el segundo numero \n);
scanf (%d\n\n%d, &i, &j);
printf (\n el primer numero es: %d, i);
printf (\n el segundo numero es: %d, j);
printf (\n\n observe si existe alguna diferencia);
printf (\n entre este programa y el anterior);
getch ( );
}
CARCTER DE NO ESPACIO EN BLANCO
Son por ejemplo la coma o cualquier otro carcter que desee utilizar para separar sus datos al
estar teclendolos, y para que la funcin scanf ( ) lea y descarte un carcter especificado entre dato y
dato.
Para que esto sea posible, es necesario codificarlo en la parte del formato, por ejemplo: %d,
%d, lo que hace aqu la funcin scanf ( ) es, leer un entero, en seguida lee pero no almacena una coma
y finalmente lee otro entero.
Nota importante: Si en los datos dados desde el teclado no se encuentra el carcter
especificado en el formato, por ejemplo: la coma en este caso, la funcin scanf ( ) hasta ah termina la
asignacin de datos a las variables.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Ejemplo:
Int main ( )
{
Int i,j ;
printf (\n teclee dos nmeros enteros separados por coma:);
scanf (%d, %d, &i, &j);
printf (\n el primer numero tecleado es: %d, i);
printf (\n el segundo numero tecleado es: %d, j);
getch ( );
}
Como se observa, todas las variables usadas para recibir valores a travs de scanf ( ) deben de
codificarse con el carcter AMPERSAND ( & ), por la razn que deben pasarse los datos por su
direccin, es decir, scanf ( ) es una funcin que pasa valores por llamada de referencia.
Ejemplo: Elaborar programa para calcular el permetro de un circulo, dado un radio r.
/*Programa para calcular el permetro de un circulo*/
#include stdio.h
#include conio.h
Int main ( )
{
float p, r, pi=3.1416 ;/*variables*/
printf (\n programa para calcular el permetro de un circulo \ dado un radio r \n);
printf (\n Introduzca el radio del circulo en cm: );
scanf (%f, &r);
/*captura desde el teclado el radio r*/
p=pi * r
/*calculamos el permetro*/
printf (\n El permetro del circulo de radio %f cm, es %f \ unidades \n, r,p);
getch ( );
}
Una caracterstica de la cadena de control, es que si colocamos un asterisco ( * ) entre el
carcter % y el cdigo de formato, la funcin scanf ( ) lee datos desde el teclado del tipo especificado
en el formato, pero no realizara la asignacin a la variable correspondiente.
Ejemplo:
Int main ( )
{
int w, z ;
char x ;
printf (\n teclee los siguientes datos tal como se lee);
printf (\n indica 50 hola 100 );
scanf (%d%*c%d, &w, &z);
printf (\n El primer valor tecleado es: %d, w);
printf (\n El segundo valor tecleado es: %d, z);
getch ( );
}
SALIDA:
Teclee los siguientes datos tal como se lee
Indica 50 hola 100
50 hola 100
El primer valor tecleado es: 50
El segundo valor tecleado es: 100
En la funcin scanf ( ), podemos indicar la longitud mxima del dato capturar, esto es posible,
si colocamos un numero entero que indicara la longitud de caracteres a capturar entre el % y el cdigo
de formato, adems de que la variable donde se almacenaran los datos debe ser declarada como un
arreglo de caracteres, por ejemplo: char [ x ], donde x es el numero de elementos del arreglo de
caracteres a almacenar en la variable n. Hay que tomar en cuenta que en una cadena ( string ) el
carcter espacio es delimitador de cadena.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Ejemplo:
Int main ( )
{
char [ 10 ] ;
clrscr ( ) ;
printf (\n teclea mas de 10 caracteres);
scanf (%10s, &n);
printf (\n los caracteres almacenados son: %s, n);
getch ( );
/* has la prueba con los siguientes datos */
Dato 1: 123456789012345
Dato 2: EDGAR JAVIER
}
SALIDA 1:
Teclea ms de 10 caracteres
1234567890122345
Los caracteres almacenados son: 1234567890
SALIDA 2:
Teclea ms de 10 caracteres
EDGAR JAVIER
Los caracteres almacenados son: EDGAR
Ejemplo:
Int main ( )
{
char i[ 5 ], j [ 5 ], k [ 5 ] ;
clrscr ( ) ;
printf (\n teclee lo siguiente: HOLA AMIGA MAGDALENA);
scanf (%5s%5s%5s, &i, &j, &k);
printf (\n el contenido de i es: %s, i);
printf (\n el contenido de j es: %s, j);
printf (\n el contenido de k es: %s, k);
getch ( );
}
SALIDA:
teclee lo siguiente: HOLA AMIGA MAGDALENA
el contenido de i es: HOLA
el contenido de j es: AMIGA
el contenido de k es: MAGDA
NOTA: Observa que el programa nicamente termina si se teclean las tres cadenas, pero sise
pulsa la tecla <enter>, sin dar las cadenas, el programa no termina, porque la funcin scanf() con el
formato %s descarta los caracteres espacios y fines de lnea <enter>.
Ahora bien, si la captura es de un nico carcter ( %c ), los caracteres espacio y fin de lnea si
son almacenados, puesto que son considerados como simples caracteres.
Ejemplo:
Int main ( )
{
char I, j, k, h ;
clrscr ( ) ;
printf (\n teclee lo siguiente: a b,);
scanf (%c%c%c%c, &i, &j, &k, &h);
printf (\n el contenido de i es: %c, i);
printf (\n el contenido de j es: %c, j);
printf (\n el contenido de k es: %c, k);

FUNDAMENTOS DE PROGRAMACION

1 Semestre

printf (\n el contenido de h es: %c, h);


getch ( );
}
SALIDA:
teclee lo siguiente: a b,
el contenido de i es: a
el contenido de j es:
el contenido de k es: b
el contenido de h es:
NOTA: Observa que el programa termina si pulsas 4 veces la tecla <enter> o 4 espacios y una
vez la tecla <enter>.

OPERADORES Y EXPRESIONES
Los operadores son smbolos que indican en una expresin como deben ser manejados los
datos que contienen los operandos que forman la expresin, por ejemplo: en la expresin a+b, los
operandos son a y b unidos por el operador matemtico suma +.
Los operadores se clasifican en: Operadores de Asignacin, Operadores Aritmticos,
Operadores de Relacin y Operadores Lgicos.
Las expresiones son una secuencia de operandos y operadores, que especifican un valor, por
ejemplo: en la expresin, 7 + 2, esta expresin utiliza el operador suma sobre dos operandos, que son
dos constantes enteras, 7 y 2, por lo que la expresin 7 +2 tendr el valor de 9.
Las expresiones son combinaciones de constantes, variables, operadores y llamadas a funcin,
por ejemplo:
a+b
7+2
6.5 * x 8.67552
3.1416 + sin (2.5 * x -5.233)
i=4
Esta ultima es una expresin de asignacin, ya que el signo de igualdad ( = ), es el operador
bsico que se usa en una expresin de asignacin.
Entonces cuando la expresin lleva enseguida un punto y coma, se convierte en una Sentencia.
OPERADOR DE ASIGNACION

FUNDAMENTOS DE PROGRAMACION

1 Semestre

La sentencia de asignacin simple tiene la forma siguiente:


VARIABLE = EXPRESION;
SIGNO DE ASIGNACION
Entonces se calcula el valor de la expresin que esta a la derecha del signo de asignacin ( = )
y el resultado obtenido del calculo de la expresin, se le asigna a la variable que esta a la izquierda del
signo de asignacin.
PROGRAMA No.
/* Operador de Asignacin*/
#include stdio.h
#include conio.h
Int main( )
{
Int a, b, c;
clrscr ( );
a=2, b=5;
c=a+b;
/*asignacin*/
printf (\n valor de la variable a = %d, a);
printf (\n valor de la variable b = %d, b);
printf (\n valor de la variable c = %d, c);
getch ( );
}
SALIDA:
Valor de la variable a = 2
Valor de la variable b = 5
Valor de la variable c = 7
Se declara que las variables a, b y c son del tipo Int ( enteras ), tambin se le asigna el valor de
2 a la variable a y el valor de 5 a la variable b. El resultado de la expresin a + b se le asigna a la
variable c, por lo que, el valor de la variable c debe ser 7.
NOTA IMPORTANTE:
No se debe confundir las sentencias de asignacin con las ecuaciones matematicas, ya que son
dos conceptos diferentes, por ejemplo:
x + 8 = 10
ERROR DE ASIGNACION, por que el lado izquierdo del signo de asignacin ( = ) es una
expresin y debe ser una variable, por lo que, a una expresin no se le puede asignar ningn valor.
En cambio, es valido establecer una asignacin de la forma siguiente:
x=x+1
Esta sentencia de asignacin indica que primero debe ejecutar la suma que esta a la derecha
del signo de asignacin, es decir, el valor que tenga la variable x, se suma con el valor uno y el
resultado se deposita en la misma variable x.
En lenguaje de programacin C, la operacin de asignacin es la principal forma para
cambiar el valor de una variable.
El operador de asignacin se puede cambiar para formar sentencias de asignacin compuestas
como:
a = b= c= 0
Esta expresin se evala de derecha a izquierda, es decir, se asigna o a la variable c, en
seguida se asigna el valor de la variable c, que es cero, a la variable b y as hasta terminar.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Tambin es posible utilizar el signo de asignacin en el momento de la declaracin de una


variable, con el objeto de asignar un valor inicial a una variable dada en el momento en que se declara,
por ejemplo:
float pi = 3.1416;
Aqu se esta definiendo a la variable pi como float y con un valor inicial de 3.1416.
PROGRAMA No.
/* Operador de Asignacin*/
#include stdio.h
#include conio.h
Int main( )
{
float pi = 3.1416;
/* la variable toma un valor inicial */
float = x;
int a, b, c;
a = b= c= 10;
/* las tres variables toman el mismo valor */
a = pi;
/* se pierde la fraccin */
x = b;
/* se agrega la parte decimal como ceros */
clrscr ( );
printf (\n valor de la variable pi = %f, pi);
printf (\n valor de la variable a = %d, a);
printf (\n valor de la variable b = %d, b);
printf (\n valor de la variable c = %d, c);
printf (\n valor de la variable x = %f, x);
getch ( );
}
SALIDA:
Valor de la variable pi = 3.1416
Valor de la variable a = 3
Valor de la variable b = 10
Valor de la variable c = 10
Valor de la variable x = 10.0000
Los operadores de asignacin son los siguientes:
(
(
(
(
(
(
(
(
(

=)
Asignacin simple
int z = 1, x =20, i = 1
++ ) Incremento
x++
incrementa el valor de x en 1
-- )
Decremento
x-decrementa el valor de x en 1
*= ) Multiplicacin mas asignacin z* = x 5;
realiza la operacin z = z * ( x 5 )
/= ) Divisin mas asignacin
z/ = x 5;
realiza la operacin z = z / ( x 5 )
%= ) Modulo mas asignacin
z = x % 5;
asigna el modulo de x entre 5
+ = ) Suma mas asignacin
i+ = 4;
realiza la operacin i = i + 4
- = ) Resta mas asignacin
i- = 4;
realiza la operacin i = i 4
<<= )Desplazamiento a izquierda mas asignacin
z<<=1
realiza la operacin
z=z<<1, lo cual desplaza el contenido de z
un bit a la izquierda
( >>= )Desplazamiento a derecha mas asignacin
z>>=1
realiza la operacin
z=z>>1, lo cual desplaza el contenido de z
un bit a la derecha
OPERADOR DE INCREMENTO Y DECREMENTO CON DATOS ENTEROS ( int )
Los operadores de incremento ++ y de decremento - - es una notacin concisa para
incrementar o decrementar en uno el valor de una variable, por lo que se le conoce como valores
unarios.

FUNDAMENTOS DE PROGRAMACION

-.

1 Semestre

El operador de incremento y decremento se pueden utilizar como prefijo, por ejemplo: z++ o zTambin estos operadores se pueden utilizar como sufijos, por ejemplo: ++z o --z.

Las expresiones z++ o ++z provocan que z se incremente en uno, y tambin z- -o - -z,
provocan que z se decremente su valor en uno.
Pero en una expresin el efecto que causa z++ o ++z no es el mismo, porque al usar ++z en
una expresin, el valor de z se aumenta antes de evaluar la expresin, mientras que en z++, la
expresin se evala con el valor actual de z, incrementado el valor de z, despus de evaluar la
expresin.
Por lo que, si el operador se utiliza como prefijo, es decir, precede al operando, por ejemplo +
+z o - -z, el valor del operando se modifica antes de utilizarlo, tambin se les conoce como
predecremento o preincremento.
Si el operador se utiliza como sufijo, es decir, esta despus del operando, por ejemplo: z++ o z-, el valor del operando se modifica despus de utilizarlo, tambin se les conoce como postincremento
y postdecremento.
PROGRAMA No.
/* Incremento y Decremento*/
#include stdio.h
#include conio.h
Int main( )
{
int x, y, z;
clrscr ( );
x = y = z 0;
x = ++y + ++z;
printf (\n x = %d y = %d z =
x = y++ + z++;
printf (\n x = %d y = %d z =
x = ++y + z++;
printf (\n x = %d y = %d z =
x = y-- + --z;
printf (\n x = %d y = %d z =
getch ( );
}
SALIDA:
x=2 y
x=2 y
x=5 y
x=5 y

=
=
=
=

1
2
3
2

z
z
z
z

=
=
=
=

%d, x, y, z);
%d, x, y z);
%d, x, y z);
%d, x, y z);

1
2
3
2

PROGRAMA No.
/* PostIncremento y PreIncremento*/
#include stdio.h
#include conio.h
Int main( )
{
int x = 1;
clrscr ( );
printf (\n x = %d, x);
printf (\n x = %d, ++x);
/*incrementa y despus imprime*/
printf (\n x = %d, x++);
/*imprime y despus incrementa*/
printf (\n x = %d, x);
getch ( );
}
SALIDA:

FUNDAMENTOS DE PROGRAMACION
x
x
x
x

=
=
=
=

1 Semestre

1
2
2
3

Los operadores de incremento y decremento es una forma abreviada de expresar la suma o


resta de la unidad a la misma variable, como se muestra en las siguientes dos operaciones.
Sentencia de asignacin

Forma abreviada ( Incremento / Decremento )

x=x+1
x=x1

x++
x--

En operaciones sencillas, las operaciones usando ++ o se consideran como operaciones muy


practicas y concisas. Pero se debe tener cuidado y no abusar de estas anotaciones, porque pueden
confundir el calculo del resultado en expresiones que contengan notaciones de incremento y
decremento, por ejemplo:
Si asignamos a las variables k, w, x, y, z, los valores siguientes:
k = 0;
w = 25;
x = 5;
y = 21;
z = 10;
en donde:
k = ( (--y z)/2) * ( w x ++ );

Como se podr dar cuenta no es tan fcil deducir cual seria el resultado.
eso que se recomienda no abusar de este tipo de notaciones.

Es por

Se debe de tomar en cuenta al evaluar una expresin, que los operadores de incremento y
decremento tienen ms prioridad que los operadores aritmticos y se evalan en las expresiones de
derecha a izquierda.
PROGRAMA No.
/* Abuso de Operadores ++ y - -*/
#include stdio.h
#include conio.h
Int main( )
{
float k, w, x, y, z;
clrscr ( );
k = 0; w = 25; x = 5; y = 21; z = 10;
k = ( ( - - y z) / 2 ) * ( w x ++);
printf (\n k = %f \n y = %f \n x = %f, k, y, x);
getch ( );
}
SALIDA:
k = 100.0000
y = 20.0000
x = 6.0000
Se recomienda de que si es posible, es mejor usar las notaciones de incremento y decremento
fuera de las expresiones, ya que la lectura del cdigo de un programa se puede simplificar, por
ejemplo: el programa anterior se puede codificar de la forma siguiente, con la finalidad de que pueda
ser mas fcil de deducir el resultado.
PROGRAMA No.
/* Uso Adecuado de Operadores ++ y - -*/
#include stdio.h
#include conio.h

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Int main( )
{
float k, w, x, y, z;
clrscr ( );
k = 0; w = 25; x = 5; y = 21; z = 10;
y - -;
/* o bien - - y */
k = ( (y z) / 2 ) * ( w x );
x ++;
printf (\n k = %f \n y = %f \n x = %f, k, y, x);
getch ( );
}
SALIDA:
k = 100.0000
y = 20.0000
x = 6.0000
OPERADORES ARITMETICOS
El nombre de operadores aritmticos binarios, es porque cada operador requiere dos operandos
para realizar su funcin, por ejemplo x + y.

Los operadores aritmticos binarios son:


Operador

+
*
/
%

Funcin

Suma
Resta
Multiplicacin
Divisin
Modulo ( residuo de la divisin )

Estos operadores aritmticos son los correspondientes a las operaciones matemticas de


Suma, Resta, Multiplicacin y Divisin.
Adems de estos operadores binarios C tiene tambin el operador unitario -, para indicar el
signo de su operando, por ejemplo: -5, indica que el valor 5 tiene signo negativo, otro ejemplo: -x,
indica que el contenido de la variable x, se toma con signo negativo. La expresin x, es similar si
escribimos -1*x.
Este operador unitario, se debe de aplicar a un solo operando, por lo que, si codificamos en un
programa x, estamos indicando que cambie de signo el contenido del valor de la variable x. Lo que
hace C, es calcular el complemento a dos, es decir, el complemento a 1 ms 1.
Una forma de
usarlo es por ejemplo: x = -z, donde x tomara el valor de z pero con signo negativo.
Hay que tomar en cuenta que NO hay un operador unitario mas.
Los operandos de los operadores aritmticos binarios suma, resta, multiplicacin y divisin,
pueden se cualquier expresin, cuyo valor puede ser entero o real (con punto decimal).
Los operandos del operador mdulo requiere que los dos operendos sean enteros.
del resultado es del primer operando (dividendo).

El signo

Consideraciones que se deben tomar en cuenta al hacer uso de los operadores aritmticos.
1.- Cuando el operador de la divisin se aplica sobre nmeros enteros, el resultado obtenido es
otro numero entero, es decir, se trunca el resultado, por ejemplo: 7 entre 2, el resultado es 3, y la parte
de la fraccin ( .5 ) se pierde.
2.- Para la divisin o mdulo, toda la divisin entre cero, el resultado es una indefinicin, por
ejemplo: x entre w o z % w, si el valor de w es cero, la operacin es una indefinicin.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

3.- En una suma, por ejemplo: x + z, donde x es del tipo float y z es del tipo int.
El
valor del entero z es convertido a float, del mismo tipo de x. No se modifica z, si no que su valor es
convertido a float solo para realizar la suma.
4.- En una divisin, por ejemplo: c = x / w donde x y w son float y c es int, el resultado de la
divisin es float, pero el resultado al ser asignado a c, solo se almacenar la parte entera, por lo que se
pierde la parte fraccionaria.
Por lo general los compiladores mandan un aviso al programador, que
habr una perdida de precisin al pasar de float a int, por si el programador no lo haba notado.
5.- Cuando en una operacin aritmtica de divisin, si los dos operandos son enteros, el
resultado ser entero, aunque el resultado sea asignado a una variable float.
6.- Si en una divisin, el resultado es real y es redondeado, como se observa en la ultima lnea
del programa # xx, donde el resultado es 0.666666, pero es redondeado a 0.666667, porque la cifra
suprimida es 6, es decir, cuando la cifra a suprimir es 5 o mayor, la ultima cifra que se mantiene antes
del redondeo se debe incrementar una unidad.
PROGRAMA No.
/* Operaciones Aritmticas Bsicas*/
#include stdio.h
#include conio.h
Int main( )
{
int x, y, z;
clrscr ( );
y = 7; z = 2;
x = y + z;
printf (\n %d
x = y z;
printf (\n %d
x = y * z;
printf (\n %d
x = y / z;
printf (\n %d
x = y % z;
printf (\n %d
getch ( );

+ %d = %d, y, z, x);
- %d = %d, y, z, x);
* %d = %d, y, z, x);
/ %d = %d, y, z, x);
%% %d = %d, y, z, x);

}
SALIDA:
7+2=9
72=5
7 * 2 = 14
7/2=3
7/2=1
PROGRAMA No.
/* Operadores con Operandos de Diferentes Tipos*/
#include stdio.h
#include conio.h
Int main( )
{
float w, x, y, p, q;
int a, b, c;
clrscr ( );
a = 9; b = 2; x = 4.5; w = 2.5;
p = 2; q = 3;

y = x + b;

FUNDAMENTOS DE PROGRAMACION
printf (\n
y = a / w;
printf (\n
y = w / b;
printf (\n
c = a / w;
printf (\n
c = w / b;
printf (\n
y = a / b;
printf (\n
y = p / q;
printf (\n
getch ( );

1 Semestre

%f + %d = %f, x, b, y);
%d / %f = %f, a, w, y);
%f * %d = %f, y, w, b);
%d / %f = %d, c, a, w);
%f / %d = %d, w, b, c);
%d / %d = %f, y, a, b);
%f / %f = %f, p, q, y);

}
SALIDA:
4.500 + 2
9 / 2.500000
2.500000 / 2
9 / 2.500000
2.500000 / 2
9/2
2.000000 / 3.000000

=
=
=
=
=
=
=

6.500000
3.600000
1.250000
3
1
4.000000
0.666667
OPERADORES ARITMETICOS SOBRE DATOS TIPO char

Los datos tipo char se consideran como enteros, y el valor corresponde con el cdigo ASCII del
carcter que representan.
Para asignar un valor a una variable tipo char, es de la forma siguiente:
PROGRAMA No.
/* Operadores Aritmticos con Operandos Tipo Char */
#include stdio.h
#include conio.h
Int main( )
{
char a, b c, x;
clrscr ( );
c = A;
printf (\n c=%c c=%d, c, c);
x = 66;
printf (\n x=%c x=%d, x, x);
b = x + 1;
printf (\n b=%c b=%d, b, b);
a = c - 1;
printf (\n a=%c a=%d, a, a);
getch ( );
}
SALIDA:
c=A
x=B
b=C
a=@

c = 65
x = 66
b = 67
a = 64

SENTENCIAS DE CONTROL
Las sentencias de control de un programa, son las que definen el orden de ejecucin de las
sentencias (instrucciones) dentro de un programa.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Cuando los problemas a resolver son sencillos, es posible crear programas donde el orden de
ejecucin de las sentencias sea secuencial, es decir, la ejecucin comienza en la primera sentencia
hasta llegar a la ltima, ejecutndose una tras otra, donde cada una de las sentencias se ejecuta una
sola vez.
Por lo general los problemas a resolver a travs de programas no son sencillos, por lo que se
requiere tener la capacidad de controlar el orden de ejecucin de las sentencias, as como de cuantas
veces se requiere que una o un grupo de sentencias debe ejecutarse.
Para controlar el orden de la ejecucin de las sentencias o un bloque de sentencias, se requiere
del uso de las estructuras de control en un programa.
Las estructuras de control de programacin, adems de controlar la secuencia o flujo de
ejecucin de las sentencias, dan la facilidad de agrupar las sentencias individuales en una simple
unidad lgica con un punto de entrada y un punto de salida.
Las estructuras de control de programacin, se dividen en tres tipos:
A.- ESTRUCTURA DE PROGRAMACION DE EJECUCION SECUENCIAL: En un flujo de
ejecucin secuencial, las instrucciones o sentencias se ejecutan una tras otra de acuerdo al orden en
que fueron escritas.
Si se requiere formar secuencias de ms de una sentencia, es necesario
crear bloques de sentencias. Los bloques de sentencias tambin se conocen como sentencias
compuestas.
BLOQUES DE SENTENCIAS
Los bloques de sentencias deben empezar con el delimitador { y terminar con el delimitador },
por ejemplo:
{
int x, z;
clrscr ( );
x = 5; z = 7;
printf (\n x & z = %d, x & z);
printf (\n x && z = %d, x && z);
getch ( );
}
Recordar que una sentencia o instruccin en C debe finalizar con ; , por ejemplo: x = 5;
BLOQUES VACIO
Es posible hacer bloques sin ninguna instruccin, es decir, una secuencias de instrucciones
vacias, por ejemplo:
{
}
Este tipo de bloque vacio de instrucciones, es til cuando se esta resolviendo un problema, y la
sintaxis de una instruccin que se esta usando, requiere de un bloque, pero en ese bloque no se
requiere de ninguna accin, esto sucede por lo general cuando se usan las instrucciones if, for, switch,
while.
Nota: Un bloque de sentencias puede estar formado por una sola sentencia, en este caso, no es
necesario iniciar y terminar el bloque con delimitadores { }.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

BLOQUES PARALELOS
Esto es cuando dos bloques aparecen uno despus del otro en el mismo nivel, cuando esto
sucede y existen variables declaradas en los bloques, el segundo bloque no reconoce las variables
declaradas en el primer bloque.
PROGRAMA No.

Bloque 1 Interno

Bloque Externo Bloque 2 Interno

Bloque 3 Interno

/* Bloques Paralelos */
#include stdio.h
#include conio.h
Int main( )
{
clrscr ( );
int z;
{
int x = 6, w = 2;
z = x * w;
printf (\n z=%d, z);
}
{
int a = 4, b = 8;
z = a * b;
printf (\n z=%d, z);
}
{
int k;
k = 3;
z = k * x;
z = k * b;
}
getch ( );
}

Nota 1: Los bloques internos 1, 2 y 3, son bloques paralelos porque los tres bloques estn al
mismo nivel.
Nota 2: El bloque 2 interno, desconoce las variables x, w, que fueron declaradas en el bloque 1
interno.
Nota 3: El bloque 3 interno, desconoce las variables x, w, a, b, que fueron declaradas en el
bloque 1 y 2. Por lo que, en este bloque 3 hay DOS ERRORES, porque las variables x y b que se estn
usando en este bloque 3, no son reconocidas.
Nota 4: La variable z, esta declarada en el bloque mas externo, por lo que dicha variable z, si es
reconocida por los tres bloques internos.
BLOQUES ANIDADOS O BLOQUE EXTERNO
Esto es cuando un bloque contiene otros bloques.
El bloque que contiene otros bloques se
le llama bloque externo.
Las variables que se declaren en el bloque externo, sern reconocidas
por los bloques internos.
Como el ejemplo anterior, donde la variable z es reconocida por los
bloques internos 1, 2 y 3.

FUNDAMENTOS DE PROGRAMACION

1 Semestre

La estructura de control secuencial de programacin se puede representar de la forma


siguiente.

Bloque 1

Sentencia 1;
Sentencia 2;
Sentencia N:

Bloque 2

Sentencia 1;
Sentencia 2;
Sentencia N;

Bloque M
Estructura Secuencial
NOTA: Un bloque de sentencias puede estar formado por una sola sentencia.
Cuando un bloque de sentencias esta formado por una sola sentencia NO es necesario
escribir los delimitadores { }.
B.- ESTRUCTURA DE PROGRAMACION DE EJECUCION DE DECISION: En un flujo de
ejecucin de decisin, esta basado sobre una sentencia de decisin, la cual su resultado es verdadero o
falso, por lo tanto, dependiendo de este resultado se ejecutar uno u otro bloque de instrucciones.
La representacin grafica es la siguiente:

falso

verdadero
Sentencia
De Decisin

Sentencia 1;
Sentencia 2;

Sentencia 1;
Sentencia 2;

Sentencia N;

Sentencia N;

Estructura de Decisin

C.- ESTRUCTURA DE PROGRAMACION DE EJECUCION DE REPETICION: En un flujo de


ejecucin de repeticin, esta basado sobre una sentencia de decisin, la cual tiene solo dos resultados,
ya sea verdadero o falso.
El bloque de instrucciones se ejecutara en forma repetida, siempre y
cuando el resultado de la decisin sea verdadero, en el momento en que el resultado de la decisin sea
falso la repeticin termina.

falso
Sentencia
De Decisin
verdadero

FUNDAMENTOS DE PROGRAMACION

1 Semestre

Sentencia 1;
Sentencia 2;
Sentencia N;

Estructura de Decisin

Las sentencias (instrucciones) de control son las que distinguen de un lenguaje a otro, ya que
determinan el flujo de ejecucin de las instrucciones de un programa. En el lenguaje C las sentencias
de control son muy poderosas, por lo que es una razn de la popularidad del lenguaje.
Las sentencias del tipo selectivas o condicionales o de decisin son: if y switch.
Las sentencias del tipo repeticin o de control de bucle son: for, while y do-while.
Las sentencias de bifurcacin de control son: goto, break y continue.
Estas instrucciones de flujo de control determinan el orden en que se deben de ejecutar las
instrucciones de un programa. Por lo general, el flujo de ejecucin de las instrucciones en un programa
es secuencial, es decir, una tras otra, tal como se escribieron, a menos que se efectu un cambio
explicito de la secuencia, a travs de una instruccin de control.
Los problemas en la vida real en su mayora no se resuelven con programas donde las
instrucciones se ejecutan secuencialmente, ya que los datos y clculos que intervienen en el problema
requieren y producen diferentes caminos de accin.

SENTENCIA switch ( )
La sentencia switch permite seleccionar una opcin de entre mltiples opciones.
La aplicacin tpica de switch es para resolver problemas donde exista un men de opciones y
se requiera seleccionar una opcin de entre muchas.
Sintaxis:
Switch (expresin) {
case const1: sentencia_1.1
sentencia_1.2
..
break;
case const2: sentencia_2.1
sentencia_2.2
..
break;
default:

Donde:
Expresin:
float o string.
const1:
const2:

sentencia_d.1
sentencia_d.2
..
break;

Es una variable tipo int, char o una expresin tipo boolena, pero no puede ser

Es un valor nico y constante, por lo que deben ser diferentes entre ellos.

sentencia_1.1
sentencia_1.2 Sentencias que se ejecutan, cuando el valor de la expresin es igual a la
const1.
sentencia_2.1

FUNDAMENTOS DE PROGRAMACION

1 Semestre

sentencia_2.2 Sentencias que se ejecutan, cuando el valor de la expresin es igual a la


const2.
sentencia_d.1
sentencia_d.2 Sentencias que se ejecutan, cuando el valor de la expresin no es igual a
ninguno de las constantes const1, const2, etc.
break:

Esta sentencia termina la ejecucin de la sentencia switch.


FUNCIONAMIENTO

El valor de la expresin que esta en el switch, se compara con las constantes const1 y const2,
etc, de cada uno de los case. Si el valor de la expresin es igual a alguna constante (const1, const2,
.), de alguna case, entonces inicia la ejecucin delas sentencias que estn asociadas a este case,
hasta encontrar una sentencia break (romper, quebrantar), o hasta que se encuentre el final del switch.
Si el valor de la expresin no es igual a alguna constante (const1, const2, ..), de alguna case,
entonces se ejecutan las sentencias que se encuentran en el default.
RECOMENDACIONES PARA EL USO DEL SWITCH
1.- El tipo de cada constante (const1, const2, ..) debe ser igual al tipo de la expresin.
2.- Aunque la etiqueta default es opcional, se recomienda su uso, al menos de que este
totalmente seguro de que todos los valores posibles de la expresin estn listados en los case.
Porque si omite el default, y si en algn momento la expresin toma un valor que no esta en
algn case, el switch no va a hacer nada, pero no hay error, y cuando esto sucede, por lo general es un
error lgico difcil de localizar en los programas.
3.- No olvidar escribir un break: Cada bloque de sentencias de cada case debe terminar con un
break.
Si en algn case se omite poner la sentencia break, no hay error de programa, pero la
ejecucin continua con las sentencias del siguiente case, y asi sucesivamente hasta que encuentre un
break o llegue al final del switch.
DIAGRAMA DE FLUJO DE LA SENTENCIA switch

switch (
case const1:
Sentencia 1.1
Sentencia 1.2
..
break

NO
SI
Expresin = const1

case const2:

Sentencia 2.1
Sentencia 2.2
..
break

NO

SI
Expresin = const2

case const n:

Sentencia n1
Sentencia n2
..
break

expresin

NO

SI
Expresin = constn

){

FUNDAMENTOS DE PROGRAMACION

1 Semestre

SENTENCIAS DE CONTROL DE BUCLES: while, do-while y for ( )


El lenguaje C proporciona sentencias de control de tareas repetitivas, a continuacin
seestablecen algunos conceptos:
BUCLE, LOOP O CICLO: Es repetir una sentencia o grupos de sentencias un numero de veces
hasta que se cumpla cierta condicin.
CUERPO DEL BUCLE: Es la sentencia o grupo de sentencias que se repiten.
ITERACION O REPETICION: Es cada repeticin del cuerpo del bucle.
SENTENCIAS DE CONTROL DE BUCLES: while, do-while y for.
CICLOS, BUCLES Y LOOPS: Durante la explicacin de las sentencias de control de bucles,
continuamente se utilizaran estos tres nombres, pero realmente se habla de lo mismo.
La
intencin de usar diferentes trminos para decir lo mismo, es con la intencin de que se familiaricen
con la terminologa comnmente usada en programacin.
CUANDO USAR UN BUCLE: Se debe usar una tarea de repeticin cuando se tenga una gran
cantidad de datos a los cuales se le tenga que aplicar el mismo mecanismo de procesamiento.
EJEMPLO DE UN BUCLE: Imagina la rutina que hace el sistema de una caja registradora en un
centro comercial para elaborar cada uno de los tickets de compra.
Por cada ticket que elabore la
caja registradora, tiene que capturar uno por uno los productos del cliente y hasta que el cajero indica
que ha finalizado la captura, con esa condicin pasa a imprimir el total del ticket e inicia un nuevo ciclo
de captura de otro ticket y as sucesivamente.
BUCLES INFINITOS: Los bucles son de mucha utilidad, pero tambin pueden peligrosos
porque se puede caer en un bucle infinito.
Se puede caer en un bucle infinito