Beruflich Dokumente
Kultur Dokumente
CONCEPTOS BSICOS.
1. Introduccin.
Este curso esta basado en un lenguaje de programacin estructurada de propsito general.
Se pueden utilizar muchos lenguajes para programar una computadora. El ms bsico es el lenguaje de
maquina una coleccin de instrucciones muy detallada que controla la circuiteria interna de la maquina. Este
es el dialecto natural de la maquina. Muy pocos programas se escriben actualmente en lenguaje de maquina
por dos razones importantes: primero, porque el lenguaje de maquina es muy incomodo para trabajar y
segundo por que la mayora de las maquinas se pide programar en diversos tipos de lenguajes que son
lenguajes de alto nivel, cuyas instrucciones son ms compatibles con los lenguajes y la forma de pensar
humanos como los es el lenguaje c que adems es de propsito general.
Debido a que los programas diseados en este lenguaje se pueden ejecutar en cualquier maquina , casi sin
modificaciones. Por tanto el uso del lenguaje de alto nivel ofrece tres ventajas importantes, sencillez,
uniformidad y portabilidad.
1.1. Lenguaje de programacin: Sistema de smbolos y reglas que permite la construccin de programas con
los que la computadora puede operar as como resolver problemas de manera eficaz.
Estos contienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada / salida,
calculo, manipulacin de textos, lgica / comparacin y almacenamiento / recuperacin.
Los lenguajes de programacin se clasifican en:
Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la
computadora y no necesitan traduccin posterior para que la CPU pueda comprender y ejecutar el
programa. Las instrucciones en lenguaje maquina se expresan en trminos de la unidad de memoria
ms pequea el bit (dgito binario 0 1).
Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en cdigos
alfabticos conocidos como mnemotcnicos para las operaciones y direcciones simblicas.
Lenguaje de Alto Nivel: Los lenguajes de programacin de alto nivel (BASIC, pascal, cobol, fortran,
etc.) son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras
similares a los lenguajes humanos (en general en ingles), lo que facilita la escritura y comprensin del
programa.
1.2. Algoritmo. La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe alkhowarizmi,
nombre de un matemtico y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y
ecuaciones en el siglo IX.
La solucin a cualquier problema de cmputo involucra la ejecucin de una serie de acciones en orden
especifico. Un procedimiento para resolver un problema en trminos de: a) Las acciones a ejecutarse y b) el
orden en el cual estas acciones deben ejecutarse se llama algoritmo.
Un ejemplo de un algoritmo para llegar a la escuela
Salir de la cama
1
Quitarse la pijamas
Darse un bao
Vestirse
Desayunar
Utilizar el transporte ( autobs, carro , bicicleta, etc)
1.3 Programa.
Secuencia de instrucciones mediante las cuales se ejecutan diferentes
acciones de acuerdo con los datos que se estn procesando.
Es un algoritmo desarrollado para ser utilizado por la computadora
Expresin de un algoritmo en un lenguaje preciso que puede llegar a entender
una mquina de cmputo.
2. Fases para la creacin de un programa.
2.1 Definicin del Problema
Esta fase est dada por el enunciado del problema, el cual requiere una definicin clara y precisa. Es
importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo
no tiene mucho caso continuar con la siguiente etapa.
2.2 Anlisis del Problema
Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:
Los datos de entrada.
Cual es la informacin que se desea producir (salida)
Los mtodos y frmulas que se necesitan para procesar los datos.
Una recomendacin muy practica es el que nos pongamos en el lugar de la computadora y analicemos que es
lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.
2.3 Diseo del Algoritmo
Las caractersticas de un buen algoritmo son:
Debe tener un punto particular de inicio.
Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayora de las variantes que se puedan presentar en la definicin del
problema.
Debe ser finito en tamao y tiempo de ejecucin.
2.4 Codificacin
La codificacin es la operacin de escribir la solucin del problema (de acuerdo a la lgica del diagrama de
flujo o pseudocdigo), en una serie de instrucciones detalladas, en un cdigo reconocible por la computadora,
2
la serie de instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un lenguaje de
programacin o lenguaje de alto nivel.
2.5 Prueba y Depuracin
Los errores humanos dentro de la programacin de computadoras son muchos y aumentan considerablemente
con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solucin sin
errores se le llama depuracin.
La prueba consiste en la captura de datos hasta que el programa no presente errores (los ms comunes son los
sintcticos y lgicos).
2.6 Documentacin
Es la gua o comunicacin escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o
diagramas.
A menudo un programa escrito por una persona, es usado por otra. Por ello la documentacin sirve para
ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
La documentacin se divide en tres partes:
Documentacin Interna
Documentacin Externa
Manual del Usuario
Documentacin Interna: Son los comentarios o mensaje que se aaden al cdigo fuente para hacer
mas claro el entendimiento de un proceso.
Documentacin Externa: Se define en un documento escrito los siguientes puntos:
Descripcin del Problema
Nombre del Autor
Algoritmo (diagrama de flujo o pseudocdigo)
Diccionario de Datos
Cdigo Fuente (programa)
Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el
usuario obtenga el resultado deseado.
2.7 Mantenimiento
Se lleva acabo despus de terminado el programa, cuando se detecta que es necesario hacer algn cambio,
ajuste o complementacin al programa para que siga trabajando de manera correcta. Para poder realizar este
trabajo se requiere que el programa este correctamente documentado.
CAPITULO II.
3
Donde tipo_de_dato puede ser cualquiera que est permitido por el lenguaje y Variable un identificador que
designemos para recibir datos.
Entero a, b, c pseudocdigo
int a, b, c; en C
No hay cantidad mxima de caracteres (letras o palabras) que podamos utilizar para crear variables pero si hay
dos que tengan los primeros 6 caracteres significativos iguales, C las tomar como si fuesen la misma.
Tampoco podemos utilizar como variables aquellos trminos que ya han sido definidos previamente por el
propio lenguaje (palabras reservadas) o por el usuario como variables de otro tipo.
Las variables de tipo cadena se declaran como un conjunto de caracteres. Por ejemplo:
char nombre[30]; en Lenguaje C
carcter nombre[30] en pseudocdigo
donde : carcter es el tipo de dato
nombre[30] es el identificador de la variable solicitando 30 espacios
5. INICIALIZACIN DE VARIABLES
Inicializar una variable es el darle un valor despus que se ha declarado pero antes de que se ejecuten las
sentencias en las que se emplea.
En Lenguaje C, se les puede dar un valor a la vez que se declaran. nicamente se coloca el signo igual y una
constante despus del nombre de la variable. La forma general de inicializacin es:
Tipo_dato nombre_variable = valor;
Entero x=1 int x=1;
real pi=3.1416 float pi=3.1416;
caracter resp='s'; char resp='s';
6. CONSTANTES. Constantes son los valores que no pueden ser modificados. En C, pueden ser de cualquier
tipo de datos.
Adems de los ejemplificados anteriormente, Podemos crear constantes de caracteres con barra invertida.
Estos corresponden a los caracteres que son imposibles introducir desde el teclado.
7. O P E R A D O R E S
Un operador es un smbolo que indica al compilador que realice manipulaciones lgicas o matemticas
especficas.
7.1 Operadores Aritmticos
T AND T T
TFF
FTF
FFF
Operador Or
Operando1 Operador Operando2 Resultado
T OR T T
TFT
FTT
FFF
Operador Not
Operando Resultado
TF
FT
Ejemplos:
(a < b) and (b < c)
(10<20) and (20<30)
T and T
T
Prioridad de los Operadores Lgicos
Not
And
Or
Prioridad de los Operadores en General
1. ( )
2. ^
3. *, /, Mod, Not
4. +, , And
5. >, <, > =, < =, < >, =, Or
Ejemplos:
a = 10 b = 12 c = 13 d =10
1) ((a > b)or(a < c)) and ((a = c) or (a > = b))
FTFF
TF
F
2) ((a > = b) or (a < d)) and (( a > = d) and (c > d))
FFTT
FT
F
3) not (a = c) and (c > b)
FT
T
T
Los operadores relacionales son los que determinan la forma de vinculacin entre dos valores. A su vez, los
lgicos evalan la forma de relacionarse dos valores.
> mayor que
< menor que
>= mayor igual
<= menor igual
== igual
=! Diferente
y and &&
o or | |
9
no not
7.5 Operadores de Asignacin. Los operadores de asignacin se utilizan para formar expresiones de
asignacin, en las que se asigna el valor de una expresin a un identificador. ***** Por definir el operador de
asignacin** .
7.6 Operadores de Condicin. Se pueden efectuar operaciones condicionales con el operador ? : . Se puede
escribir una instruccin de este tipo en lugar de la instruccin Ifelse, una expresin condicional se escribe de
la forma siguiente:
Expresin 1 ?Expresin 2 : Expresin 3
La Expresin 1 es evaluada primero , si es cierta (si su valor es no nulo), entonces Expresin 2 es evaluada y
ste es el valor de la expresin condicional. Sin embargo si Expresin 1 es falsa (si su valor es 0) entonces se
evala Expresin 3 y ste es el valor de la expresin condicional.
El operador condicional tiene su propia precedencia, justamente superior a los operadores de asignacin. La
asociatividad es de derecha a izquierda.
7.7 Prioridad de los operadores
1. parntesis
2. elevar a potencias
3. multiplicacin y divisin
4. suma y resta
8. EXPRESIONES. Las expresiones son combinaciones de constantes, variables, smbolos de operacin,
parntesis y nombres de funciones especiales. Por ejemplo:
a+(b + 3)/c
Cada expresin toma un valor que se determina tomando los valores de las variables y constantes implicadas y
la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de datos que manipulan, se clasifican las
expresiones en:
Aritmticas
Relacinales
Lgicas
9. PALABRAS RESERVADAS.
Son palabras que tienen un significado especial para el lenguaje y no se pueden utilizar como identificadores.
10. COMENTARIOS.
Los comentarios pueden aparecer en cualquier parte del programa, mientras estn situados entre los
delimitadores /* comentario */. Los comentarios son tiles para identificar los elementos principales de un
10
2. Pseudocdigo
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que se emplea, dentro de la
programacin estructurada, para realizar el diseo de un programa. En esencial, el pseudocdigo se puede
definir como un lenguaje de especificaciones de algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema
determinado. El pseudocdigo utiliza palabras que indican el proceso a realizar.
El pseudocdigo se concibi para superar las dos principales desventajas del Diagrama de Flujo: el diagrama
de flujo es lento de crear y difcil de modificar sin un nuevo redibujo. Por otra parte el pseudocdigo es mas
fcil de utilizar ya que es similar al lenguaje natural.
Al contrario de los lenguajes de programacin de alto nivel como Pascal o Basic no existe un conjunto de
reglas que definan con precisin lo que es y lo que no es pseudocdigo. Varia de un programador a otro.
El pseudocdigo requiere de ciertos smbolos que ya tienen significado preciso y establecido a los que se les
conoce como palabras clave. Es necesario que exista una palabra clave para la seleccin y otra para la
iteracin condicional, as como para las instrucciones adicionales y otras estructuras de control.
Propuesta Diccionario Pseudocdigo.
instrucciones en c.
main
{
}
/* .... */
printf
scanf
break
continue
dowhile
for (I=VI; I<=VF; I++)
goto
if else
if
return
switch
case
while
do while
int
char
float
double
string
pseudocodigo
principal
inicio
fin
comentarios
imprimir
leer
interrumpir
continuar
hacer mientras
desde I=VI, I<=VF, Inc I
ir a
si entonces sino
si
regresar
segn sea
en caso
mientras
hacer mientras
Entero
Carcter
Real
Doble
Cadena
12
13
escribe('Espaol')
sino si opcion='B'
escribe('Matemticas')
sino si opcion='C'
escribe('Historia')
sino si opcion='D'
escribe('Biologia')
sino
escribe('una asignatura inexistente')
fin
Nota: Es importante utilizar sangras para identificar la parte verdadera y falsa de cada condicin
Codificndolo en C:
#include<stdio.h>
menu()
{
char opcion;
printf("A)Espaol\n");
printf("B)Matemticas\n");
printf("C)Historia\n");
printf("D)Biologia\n");
printf("Opcin: ");
scanf("%c",&opcion); printf("Escogi ");
if (opcion=='A')
printf("espaol");
else if (opcion=='B')
printf("matamticas");x
else if (opcion=='C')
15
printf("historia");
else if (opcion=='D')
printf("biologia");
else printf("una asignaturainexistente.");
}
En el programa anterior, despus de haber mandado a pantalla las opciones, leemos la respuesta. Para
determinar la opcin que se elige, se recurre a las sentencias if. Cuando la evaluacin sea verdadera es decir,
cuando encontremos el valor que lemos en opcion, ejecutaremos en este caso la funcin correspondiente.
Las condiciones se codifican en orden de importancia es decir, la condicin ms importante se evala primero,
enseguida la que le sigue en importancia y as sucesivamente hasta llegar a la menos importante. En este caso,
todas las condiciones eran igualmente importantes por lo que no importa el orden en que se evalen.
Selectiva mltiple. se elige una opcin entre muchas posibles y segn sea la esta se ejecuta la accin o
acciones.
13
2
Nota: Se utiliza salir para decirle al programa que si ya eligi esa opcin realice la instruccin o
instrucciones y se salga de lo contrario pasar tambin por las siguientes opciones.
Cuando se anidan muchos Sis l cdigo puede volverse difcil e entender an para el autor. Para darle mayor
transparencia, en C utilizamos la sentencia de decisin mltiple switch.
switch es utilizada cuando una variable es sucesivamente comparada con una lista de enteros o de caracteres.
Cuando se encuentra la correspondencia, se ejecuta
una sentencia o el bloque de sentencias. La forma general de una sentencia es:
switch(expresin)
{
case constante1:
secuencia de sentencias;
break;
case constante2:
secuencia de sentencias;
break;
case constente3:
secuencia de sentencias;
break;
default: secuencia de sentencias;
}
Nota : La diferencia entre switch e if es que la primera slo puede comprobarla igualdad, mientras que
if puede evaluar expresiones relacionales o lgicas.
16
No puede haber dos constantes case que tengan los mismos valores slo en el caso de que la sentencia switch
este anidada (que haya una dentro de otra).
Ejemplifiquemos el switch optimizando el ejemplo anterior.
Ejemplo en pseudocdigo
Inicio
caracter opcion
imprimir("A)Espaol")
imprimir("B)Matemticas")
imprimir("C)Historia)
imprimir("D)Biologa")
imprimir("Opcin: ")
leer opcion
segn_sea opcion
inicio
caso 'A':imprimir("espaol")
salir
caso 'B':imprimir("matemticas")
salir
caso 'C': imprimir("historia")
salir
caso 'D': imprimir("biologia")
salir
otro: imprimir("escogiste una asignatura inexistente")
fin
fin
Nota: Ntese que el pseudocdigo no necesita de puntos y coma, parntesis o comillas si se utilizan es solo
para darle mejor entendimiento al programa.
Ejemplo codificado en C
Void main()
{
char opcion;
printf("A)Espaol\n");
printf("B)Matemticas\n");
printf("C)Historia\n");
printf("D)Biologa\n");
printf("Opcin: ");
scanf("%c",&opcion);
17
switch(opcion)
{
case 'A':printf("espaol");
break;
case 'B':printf("matemticas");
break;
case 'C': printf("historia");
break;
case 'D': printf("biologia");
break;
default: printf("escogiste una asignatura inexistente");
}
}
ESTRUCTURA DE CONTROL REPETITIVA O DE ITERACIN CONDICIONADA
Esta se basa en una parte del programa que se repite un numero de veces o mientras que la condicin sea
valida. Existen tres tipos de estructuras de repeticin
desde (for)
mientras (while)
hacer_mientras (do_while)
Estructura de control desde (for)
Esta estructura le permite especificar al programador que se repita una accin o acciones por un nmero de
veces establecido.
Donde:
I Variable de control
VI Valor inicial de la variable de control
VF Valor final de la variable de control
Inc I El incremento de la variable de control
Caractersticas del desde
Se debe conocer por anticipado el valor de la variable inicial y final antes de entrar al ciclo.
No se debe cambiar el valor de la variable de control, del valor inicial ni del valor final dentro del ciclo.
Se puede incrementar o decrementar la variable de control segn se requiera.
El incremento o decremento de la variable de control es automtico.
Si solo tiene una instruccin o accin no se necesita marcarlos con inicio y fin, en caso contrario si.
Ejemplo. Sumar los nmeros pares entre 1 y el 50, imprimir el resultado
Nota: Solo existe una instruccin dentro del ciclo desde as que no fue necesario el inicio y fin, adems la
variable de control I se inicializ dentro del ciclo, S se inicializo con 0 ya que va a almacenar el total de la
suma.
18
Nota: En el programa primero entra al ciclo y despus revisa si la condicin es verdadera, hasta que esta se
hace falsa se sale del ciclo e imprime el valor de la suma S.
Nota Importante: Cada programa se forma al combinar tantos de cada tipo de estructura de control como
sean apropiados, en relacin con el algoritmo que resuelve el programa.
Las estructuras de control pueden ser agregadas unas a otras, conectando el punto de salida de una estructura
de control con el punto de entrada a la siguiente.
En el lenguaje C existe siete estructuras de control
Una secuencial
Tres selectivas
Tres repetitivas.
CAPITULO # 4 ARREGLOS
Definicin
Un arreglo es un conjunto de elementos del mismo tipo agrupados en una sola variable. Para ingresar a un
elemento en particular, utilizamos un ndice y se almacenan en memoria continua.
Existen arreglos unidimensionales, bidimensionales y tridimensionales.
Su uso ms comn es en la implementacin de cadenas de caracteres. Recuerda que en C no existen variables
de tipo cadena por lo cual se utiliza un arreglo de caracteres.
Fsicamente, un arreglo es un conjunto de localidades de memoria contiguas donde la direccin ms baja
corresponde al primer elemento y la direccin ms alta al ltimo.
En un arreglo de n elementos, stos ocuparan desde la casilla 0 hasta la n1.
Por si mismo, el nombre del arreglo apunta a la direccin del primer elemento del arreglo.
Arreglos Unidimensionales
La forma general para definir un arreglo de slo una dimensin es la siguiente:
tipo_de_dato nombre_variable[tamao]
tipo_de_dato se refiere al tipo de dato de cada elemento del arreglo.
tamao es la cantidad de elementos agrupados en la misma variable.
Ejemplo: Entero x [10]
Entero tipo de dato
x nombre de la variable que representa a todo el arreglo
tamao del arreglo
20
x
0
1
2
3
4
5
6
7
8
9
13
24
35
12
78
53
71
29
30
83
10
11
12
Caracter cadena[12]
La cadena programacin necesita 11 caracteres ms 1 para indicarle fin de cadena.
Tambin podemos accesar a cada elemento del arreglo
Cadena[4]= r
21
Cadena[7]= a
Cadena[11]= n
No es necesario aadir explcitamente el caracter nulo de las constantes de cadena porque el compilador de C
lo hace automticamente.
Algunas de las principales funciones que soporta C para el manejo de cadenas de caracteres son las siguientes:
Nombre
Definicin
strcpy(s1,s2)
Copia s2 en s1
strcat(s1,s2)
Concatena s2 al final de s1
strlen(s1)
Devuelve la longitud de s1
strcmp(s1,s2) Compara la cantidad de elementos de s1 y s2 Si son iguales, devuelve 0; menor que cero si s1
menor que s2 y mayor que 0 si s1>s2.
Arreglos bidimensionales
Un arreglo bidimensional es un arreglo de arreglos unidimensionales. Constituyen la forma ms simple de los
arreglos multidimensionales.
Su forma general de declaracin es
tipo_dato
0
1
2
0
52
24
35
1
85
47
15
2
26
48
36
3
49
53
24
Por ejemplo, una funcin que recibe un arreglo bidimensional de 5,9 se declara as:
funcion(intmatriz[][9])
{
.
.
}
No es necesario especificar la primera dimensin pero la segunda s ya que el compilador de C la necesita
para saber donde empieza la segunda fila.
Tambin podemos utilizar arreglos bidimensionales para crear arreglos de cadenas. El primer ndice indicara
el nmero de cadenas y el segundo la longitud mxima de las cadenas.
char mensajes[5][20];
En la declaracin anterior se especifica que tenemos un arreglo llamado mensajes el cual contiene 5 cadenas
de 20 caracteres cada una.
Para acceder a una cadena en especial, slo especificamos el nmero de cadena (de 0 al nmero de cadenas
menos 1). Ejemplo:
imprime(mensajes[3])
Aqu mandamos imprimir la cadena nmero 3 de la variable mensajes. Esto sera equivalente a
imprimir(mensajes[3][0]) aunque es ms comn utilizar la primera forma.
Inicio
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
fin
Instruccin 1
Instruccin 2
Instruccin 3
Inicio
solicita dos valores y los guarda en a y b
23
24
Si condicin
Inicio
Inst1
Inst2
Instn
fin
sino
Inst3
Condicin?
Inst3
Inst1
Inst2
Indtn
Inicio
Entero x
Leer x
Si x >0
Imprimir Es positivo
Sino
Imprime Es negativo
fin
x
x>0
Es ....
Es ....
Segun_sea opcion
25
inicio
Caso 1: Inst4
Salir
Caso 2: Inst5
Salir
Caso 3: Inst1
Inst2
Inst3
Otro Imprime opcion inexistente
fin
Opcion
Inst4
Inst1
Inst2
Indt3
Inst5
desde I=VI, I<=VF, Inc I
Inicio
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
fin
I=VI hasta VF
26
Instruccin 1
Instruccin 2
Inicio
Entero I, S=0
desde I =2, I<=50, I=I+2
S=S+I
Imprimir S
Fin
S=0
desde I=VI, I<=VF, Inc I
Inicio
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
fin
I=2 hasta 50
S
S= S+I
Mientras condicin
Inicio
Instruccin 1
Instruccin 2
.
27
.
.
Instruccin n
fin
Cond?
Instruccin 1
Instruccin 2
Inicio
Entero I=2, S=0
Mientras I < = 50
Inicio
S=S+I
I=I+2
fin
Imprimir S
Fin
I=2
S=0
I <= 50
S
S=S+I
I=I+2
hacer
Inicio
Instruccin 1
Instruccin 2
28
.
.
.
Instruccin n
Fin
mientras condicin
Instruccin 1
Instruccin 2
Cond?
Inicio
Entero I=2, S=0
hacer
Inicio
S=S+I
I=I+2
fin
Mientras I < = 50
Imprimir S
Fin
I=2
S=0
S=S+I
I=I+2
I <= 50
S
Ejemplo
29
x[5] = 53
x[9] = 83
Recuerde que el arreglo almacena desde la casilla 0. Por tanto, en un arreglo de 10 casillas, stas estn
numeradas del 0 al 9
Ejemplo
x[1][3] = 53
x[2][0] = 35
I=VI hasta VF
30