0% encontró este documento útil (0 votos)
25 vistas27 páginas

Apuntes de Informatica Segundo Cuatrimestre

El documento proporciona una introducción al lenguaje C, incluyendo su historia, estructura de un programa, tipos de datos, identificadores, variables, constantes, operadores, y funciones. Se detalla el proceso de edición, compilación y ejecución, así como las estructuras de control y la declaración de funciones. Además, se incluyen ejemplos prácticos de uso de funciones estándar y definidas por el usuario.

Cargado por

lourdesfilmann13
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
25 vistas27 páginas

Apuntes de Informatica Segundo Cuatrimestre

El documento proporciona una introducción al lenguaje C, incluyendo su historia, estructura de un programa, tipos de datos, identificadores, variables, constantes, operadores, y funciones. Se detalla el proceso de edición, compilación y ejecución, así como las estructuras de control y la declaración de funciones. Además, se incluyen ejemplos prácticos de uso de funciones estándar y definidas por el usuario.

Cargado por

lourdesfilmann13
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 27

UNIDAD 5: INTRODUCCIÓN AL LENGUAJE C

BIBLIOGRAFÍA

–C. Manual de referencia, 4ta. edición, Herbert Schildt, McGraw-Hill


–Cómo programar en C/C++, H.M. Deitel y P.J. Deitel, Prentice Hall
–Programación en C, Joyanes Aguilar y Zahonero Martínez, McGraw-Hill

HISTORIA DE C
1966  BCPL: Basic Combined Programming Language (Lenguaje de Programación Básico
Combinado). Martin Richards. Cambridge.
1969  B: Dennis Ritchie y Ken Thompson. Laboratorios Bell. Rescribir el UNIX que estaba en
ensamblador.
1972  C: Dennis Ritchie y Brian Kernighan
1983  Comité para la estandarización
1999  ANSI-ISO C99

2011  ISO/IEC 9899:201x

PROCESO DE EDICIÓN, COMPILACIÓN Y EJECUCIÓN

Proceso Herramienta Producto


Edición Editor de texto Código fuente
<nom_arch>.c
Compilación Compilador Archivo ejecutable
gcc.exe a.exe
o
. . . > gcc <nom_arch>.c [-o nom_arch] nom_arch.exe
Ejecución Archivo ejecutable Ejecución del programa
a.exe · Ingreso de datos
o · Procesamiento
nom_arch.exe · Salida de datos

1
ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C
1. /* Comentarios:
Los comentarios de varias líneas se escriben entre /* . . .*/
o con //...... hasta el final de la línea
*/
2. // Directivas al compilador:
#include <....>
3. // Declaraciones globales (funciones)
4. // Función principal
int main (int argc, char *argv [])
{
/* declaraciones locales */
/* sentencias* /
return 0;
}
5. // Definición de las funciones declaradas en el punto 3.-
TIPOS PRIMITIVOS DE DATOS

tipo bits rango


char 8 -128 a127
short int 16 -32768
a
32767
int/Long int 32 -2,147,483,648
a
2,147,483,647
float 32 ± 3.4 E-38 a ± 3.4 E+38
(mantisa de 7 dígitos)
double 64 ±1.7E-308 a ±1.7E+308
(mantisa de 15 dígitos)

IDENTIFICADORES
 Nombre que se les da a las constantes, variables y/o funciones.
 Está formado por una secuencia de caracteres alfanuméricos.
 NO puede tener espacios ni símbolos especiales.
 DEBE comenzar con un carácter alfabético.
 C es sensible al tipo de letra, diferencia entre mayúsculas y minúsculas.

2
 Se recomienda usar letras minúsculas para las variables y funciones, y mayúsculas para las
constantes.

IDENTIFICADORES: EJEMPLOS

var  Válido

años  Identificador no válido (símbolo ñ)

var_1  Válido

7dias  Identificador no válido (comienza con carácter numérico)

Cantidad  Válido

suma par  Identificador no válido (tiene espacio en blanco)

VARIABLES: CONCEPTO
Una variable es la representación simbólica de una dirección de memoria del computador. Tienen
un nombre llamado identificador que se escribe en minúsculas.
Las variables contienen valores que pueden ser asignados y/o modificados en cualquier momento
de la ejecución del programa.
En el lenguaje C las variables deben ser declaradas antes de ser usadas.

VARIABLES: SINTAXIS DE LA DECLARACIÓN


La sintaxis de la declaración de una variable es:

tipo_de_dato nomb_var1 [, nomb_var2, ...];

Donde:
tipo_de_dato: Es el tipo de dato que guardará la variable. Puede ser tipo de dato primitivo o definido
por el usuario.
nomb_var1: Identificador que representa la dirección de memoria de la variable.
Ejemplos:
char var;
int cont, suma;

ASIGNACIÓN
Es la acción mediante la cual una variable o constante (en el momento de la declaración) toma un
valor determinado.

El símbolo = representa la asignación en lenguaje C.

3
Sintaxis:
variable = expresión;

Ejemplos:
var = 'h';
cont = cont + 3;
suma = suma + 20;
promedio = suma / cont;

CONSTANTES: CONCEPTO
Una contante, como las variables, es la representación simbólica de una dirección de memoria del
computador. El identificador se escribe en mayúsculas.

Una constante toma un valor en el momento de la compilación y no puede ser modificado durante
la ejecución del programa.

Deben ser declaradas e inicializadas antes de ser usadas. Las constantes pueden ser:

1. Literales
2. Definidas o simbólicas:
3. Declaradas:

CONSTANTES

1.Literales: Son aquellas que se expresan a sí mismas


Ejemplos: 'm' 7 12.098 "clases".

2.Definidas o simbólicas: Son directivas al compilador


Ejemplos: #define R 0.082
#define DIAS 365
(El standard recomienda no usar constantes simbólicas)

1.Declaradas: Se declaran localmente en cualquier función.


Sintaxis:

const tipo_de_dato nomb_de_la_const = valor;

Ejemplos: const int DIAS = 365;


const float R = 0.082;

4
OPERADORES

Aritméticos
suma resta multiplicación división módulo
+ - * / %
Relacionales
igual que distinto que mayor que mayor o igual menor que menor o igual
que que
== != > >= < <=
Lógicos
NO (not) O (or) Y (and)
! || &&

OPERADORES UNITARIOS
Estos operadores se aplican sólo a un operando
dirección indirección Incremento Decremento unitario
unitario
& * ++ --

&x  dirección de la variable x


*p  contenido de la variable a la que apunta p
++x  incrementa y luego usa
x++  usa y luego incrementa
--x  decrementa y luego usa
x-- usa y luego decrementa

OPERADORES DE ASIGNACIÓN
variable = variable OPERADOR expresión

es equivalente a:

variable OPERADOR = expresión

Operador Forma abreviada Forma no abreviada


+= x += (a+b) x = x + (a+b)
-= x -= (a+b) x = x – (a+b)
*= x *= (a+b) x = x * (a+b)
/= x /= (a+b) x = x / (a+b)
%= x %= (a+b) x = x % (a+b)

5
SALIDA DE RESULTADOS Y/O INFORMACIÓN POR MONITOR
La función estándar más utilizada para mostrar información o resultados por monitor es:

printf ("cadena de control"[, lista de argumentos]); Los corchetes indican "opcional"

Para utilizar esta función debe incluirse en la compilación la librería stdio.h


#include <stdio.h>
La cadena de control contiene texto y/o especificadores de formato de tipo de datos.
Cuando se utiliza para mostrar sólo texto no hay lista de argumentos.
Códigos de formato de tipo de datos:

 Carácter %c
 Entero %d %i
 Entero largo %ld
 Float %f
 Double %lf
 Cadena o string %s

Secuencias de escape: Se denominan así las secuencias de caracteres dónde el primero es


siempre la barra invertida '\’.

\a señal sonora
\b retroceso (backspace)
\n salto de línea
\t tabulación horizontal
\\ barra invertida
\' apóstrofe o comilla simple
\" comillas dobles
\? signo de pregunta
\0 carácter nulo (fin de cadena)
\r retorno de carro

Ejemplos:
printf ("Este es un mensaje");
printf ("Uno es: %d, \t uno punto uno es: %f", 1, 1.1);

6
printf ("Un carácter: %c “, ‘m');
printf ("Una cadena de caracteres: %s", "Una cadena");

int cont = 6;
float prom = 0.0;
char letra = 'T';
printf ("Contador: %i, Promedio: %f", cont, prom);
printf ("Otro carácter es: %c”, letra);
printf ("Suma: %i + %i = %i”, cont, 3, (cont+3));

INGRESO DE DATOS POR TECLADO

La función estándar mas utilizada para este fin es: Scanf (“cadena de control”, dirección de
memoria)
Para utilizar esta función, también debe incluirse en la compilación la librería de entrada y salida
estándar stdio.h

INGRESO DE DATOS POR TECLADO: EJEMPLOS


La función estándar mas utilizada para este fin es: Scanf (“cadena de control”, dirección de
memoria)

Para utilizar esta función, también debe incluirse en la compilación la librería de entrada y salida
estándar stdio.h

Scanf ("%d", &cont);

Scanf ("%c", &letra);

Scanf ("%f", &nroReal);


UNIDAD 6
ESTRUCTURAS DE CONTROL
El lenguaje C es un lenguaje estructurado, por lo tanto, cumple con el Teorema Fundamental de la
Programación Estructurada (o teorema de Böhn-Jacopini), el cual establece que:
"toda función computable puede ser implementada en un lenguaje de programación que combine
sólo tres estructuras lógicas. Esas tres formas (también llamadas estructuras de control)
específicamente son:"
1. Secuencial
2. Selección
3. Repetición

7
SECUENCIAL
Las estructuras secuenciales corresponden a las acciones de:
1. Declaración de variables y/o constantes.
2. Llamada a funciones.
3. Asignaciones.
Ejemplo:
int z;
printf("Esto es un comentario");
z = 4 * 5 + 3 / 6;
SELECCIÓN
Ejecución de una de dos instrucciones (o conjunto de instrucciones o bloque de código) según el
resultado booleano de una expresión.
SELECCIÓN SIMPLE
if (expresión)
{
// bloque de código
}
Si el resultado de la expresión es VERDADERO se ejecuta el bloque de código, caso contrario
(resultado FALSO) el programa continúa con la instrucción siguiente.
SELECCIÓN DOBLE
if (expresión)
{
// bloque de código 1
}
else
{
//bloque de código 2
}
Si el resultado de la expresión es VERDADERO se ejecuta el bloque de código 1, caso contrario
(resultado FALSO) se ejecuta el bloque de código 2.

8
SELECCIÓN MÚLTIPLE (SWITCH OR CASE)
Esta estructura permite seleccionar, en función del resultado de una expresión, el conjunto de
instrucciones (o bloque de código) a ejecutar, de los n posibles.
En esta estructura el resultado de la expresión debe ser un tipo de dato ordinal (entero, carácter,
etc.).
Cada bloque de código debe terminar en la instrucción break para indicar la finalización del
bloque. Si esta sentencia no está en el bloque a ejecutar se ejecutarán todos los bloques que se
encuentran a continuación hasta encontrar:
• una instrucción break o
• el final de la estructura switch ... case

switch ( expresion)
{
case valor_1:
//bloque de código 1
break;
case valor_2:
//bloque de código 2
break;
...
case valor_N:
//bloque de código N
break;
default:
//bloque de código default
break;
}
REPETICIÓN
La repetición o iteración consiste en ejecutar reiteradamente un conjunto de instrucciones (o
bloque de código) con el objetivo de alcanzar un resultado. Antes de ingresar al proceso repetitivo
las variables deben tener asignados valores definidos.

9
El resultado de cada repetición se utiliza como punto de partida para la siguiente iteración. La
estructura debe contar con una condición de salida del proceso iterativo. Es por esto que debe
tener, al menos, una instrucción que pueda modificar el valor de la variable de control.
WHILE
while (expresión)
{
// bloque de código
}
DO WHILE
do {
// bloque de código
} while (expresión);
ESTRUCTURA FOR
for( valor_inicial; condición; incremento)
{
//bloque de código
}
SENTENCIAS
 break
 continue
PUNTEROS
Un puntero es una variable que contiene una dirección de memoria de otra variable.
Declaración:
tipo_de_dato *nombre_del_puntero;
Ejemplo:
int *ptr1, *ptr2;
float *pf1, *pf2;
char *pch;
Operadores:
- dirección: &
- indirección: *

10
UNIDAD 7
FUNCIONES

FUNCIONES: CONCEPTO
• Las funciones están constituidas por un bloque de instrucciones que realizan una tarea
específica.
• A las funciones se las identifican con un nombre. Debe ser un identificador válido de C.
• La función recibe datos a través de sus parámetros.
• Las funciones en lenguaje C devuelven un solo valor o ninguno.
• Las funciones pueden ser estándar y definidas por el usuario.

11
FUNCIONES ESTÁNDAR
Son las funciones de la biblioteca estándar de C. El lenguaje tiene 24 bibliotecas, las más usuales
son:
• ctype.h  funciones de caracteres.
• math.h:  funciones matemáticas.
• stdio.h:  funciones de entrada/salida estándar.
• stdlib.h:  funciones especiales.
• string.h:  funciones de cadenas de caracteres
• time.h:  funciones de tiempo, fecha y hora.
Para utilizar una función estándar hay que incluir en la compilación el archivo cabecera o header
de la biblioteca.
FUNCIONES DEFINIDAS POR EL USUARIO
• Un principio importante para resolver problemas es el de “dividir y vencer”. Separar el
problema en problemas más pequeños, para así enfrentarlos y resolverlos en un tamaño más
accesible y fácil de manejar.
• Este principio se aplica en la programación utilizando el modularidad. Los lenguajes permiten
escribir programas compuestos por módulos, también llamados subprogramas, subrutinas,
procedimientos o funciones. En todos los casos todos permiten separar un programa en partes
más pequeñas y reutilizar los módulos para resolver problemas similares.
Una aplicación en lenguaje C está compuesta por una o más funciones.
Siempre debe existir la función int main (...). En esta función comienza a ejecutarse la aplicación.
Las funciones definidas por el usuario deben:
• declararse (declaración)
• implementarse (definición)
• invocarse (llamada)
DECLARACIÓN DE UNA FUNCIÓN
Se declaran en la zona de declaraciones globales, antes de la función principal.
Sintaxis (cabecera de la función):
tipo_de_dato nombre (lista de parámetros);
tipo_de_dato:
• Es el tipo de dato que devuelve la función. Puede ser cualquier tipo de dato estándar de C o
definido por el usuario, EXCEPTO arreglos.
• Si la función no devuelve ningún valor se usa la palabra reservada void.

12
nombre:
• debe ser un identificador válido de C. Con este nombre se invoca o llama a la función.
lista de parámetros:
• Es una lista de nombres de variables, precedidas por el tipo de dato y separadas por coma. Los
parámetros reciben los valores de los argumentos cuando se llama la función.
• Puede no tener parámetros por lo que la lista estará vacía. Hay que poner los paréntesis aún
con lista vacía.
DEFINICIÓN DE UNA FUNCIÓN
Se definen luego del cierre de la llave de bloque de código de la función principal ( int main(...)).
Sintaxis:
tipo_de_dato nombre (lista de parámetros)
{
// declaraciones locales
// bloque de código
return expresión;
}
• declaraciones locales
declaración de constantes y/o variables. Tienen validez (ámbito) sólo dentro de la función.
• bloque de código
conjunto de instrucciones que realizan la tarea específica de la función.
• return expresión
el valor que devuelve la expresión es el valor que retorna la función. Si la función es void puede
omitirse la sentencia return. Una función puede tener más de un return.
La función termina su ejecución cuando encuentra una sentencia return o la llave de cierre de la
función.
LLAMADA DE UNA FUNCIÓN
• La función puede llamarse o invocarse desde cualquier otra función, excepto desde sí misma.
Para este caso existen las funciones recursivas.
• Se llaman con el nombre y la lista de argumentos.
• Las funciones que devuelven valor deben llamarse dentro de una expresión, a la derecha de
una instrucción de asignación o como parámetro de una función de salida de datos. No es
usual, pero puede llamarse como una sentencia aislada como si fuera una función void.
• Las funciones void se invocan o llaman como una sentencia secuancial sin formar parte de una
expresión.

13
PARÁMETROS DE LAS FUNCIONES
• Los parámetros formales reciben los valores de sus correspondientes argumentos reales
(llamada de la función).
• La transferencia de valores de los argumentos reales a los parámetros formales es
unidireccional.
• Los parámetros y los argumentos deben coincidir en cantidad, posición y tipo de dato.
• Los parámetros se comportan como variables locales de las funciones.
• La lista de parámetros en la cabecera de la función es una declaración implícita de variables de
la función.
EJEMPLO: DEVUELVE VALOR

EJEMPLO: NO DEVUELVE VALOR

14
BIBLIOTECA DE FUNCIONES DEL USUSARIO
El usuario puede crear sus propias bibliotecas con las funciones, por él definidas y que utiliza
habitualmente.
Uno de los procedimientos es el siguiente:
1. Declarar, definir y llamar la función que desea guardar.
2. Cuando la ejecución de la función sea correcta, copiar la definición de la función en un archivo
y guardarlo en la carpeta de trabajo con extensión .h (por ejemplo prueba.h).
3. Incluir en la compilación:
#include " prueba.h",
de esta manera se puede utilizar las funciones definidas en la biblioteca prueba.h
Inclusión de archivos cabecera o headers:
a. < prueba.h >
el compilador busca el archivo en el directorio por defecto
a. " prueba.h "
el compilador busca el archivo en el directorio de trabajo
a. "C:/ . . . / prueba.h"
el compilador busca el archivo en la carpeta especificada.
PARÁMETROS DE LAS FUNCIONES
Los parámetros pueden ser:
1. Parámetros por valor: Las modificaciones que se realizan en los valores de estos parámetros
NO modifican los valores de los correspondientes argumentos de la llamada. Hay una copia
unidireccional de los valores de los argumentos a los parámetros.
2. Parámetros por referencia: Las modificaciones que se realizan en los valores de estos
parámetros SI modifican los valores de los argumentos de la llamada. Hay comunicación
bidireccional entre los argumentos y los parámetros.
PARÁMETRO POR VALOR PARÁMETRO POR REFERENCIA

15
ÁMBITOS DE LAS VARIABLES
• Variables globales:
Se declaran en la zona de declaraciones globales. Tienen ámbito global, es decir tienen validez en
todo el programa, incluyendo funciones. Mantienen el valor que se les asigna durante la ejecución
del programa. Se incializan automáticamente en cero. El estándar recomienda NO UTILIZAR
variables globales, pueden producir efectos catastróficos.
• Variables locales:
Se declaran dentro de las funciones. Tienen ámbito local. No se inician automáticamente. Pierden
su valor al finalizar la ejecución de la función donde fueron declaradas.
ALMACENAMIENTO DE LAS VARIABLES
• automáticas (auto): Por defecto todas las variables locales son automáticas. Tienen las
características propias de las variables locales.
• estáticas (static): Estas variables tienen:
a) ámbito local: sólo tienen validez en la función donde fueron declaradas y
b) almacenamiento global: se inicializan en cero y mantienen sus valores hasta la finalización del
programa.
• register: Se almacenan en un registro del microprocesador. No tienen dirección de memoria. La
instrucción &x es inválida si x es una variable con el modificador register. Si los registros están
ocupados, la variable se guarda en la memoria pero no hay notificación.
• volátil (volatile): Indica al compilador que el valor de la variable puede cambiar por otra
instrucción que no sea la de asignación.
• externas (extern): Especifica que la variable está declarada en otro archivo perteneciente al
proyecto.
FUNCIONES RECURSIVAS
Recursividad: es la forma en la cual se especifica un concepto o proceso basado en su propia
definición.
Función recursiva: es aquella función que puede llamarse o invocarse a sí misma.

16
CÁLCULO DE PRODUCTO CON FUNCIÓN RECUSRIVA

CÁLCULO FACTORIAL DE UN NÚMERO CON FUNCIÓN RECURSIVA

ARREGLOS EN LENGUAJE C
DEFINICIÓN:
Dato estructurado estático, compuesto por un conjunto ordenados de valores homogéneos,
referenciados por una única variable, que se alojan en domicilios contiguos de memoria.
• A cada elemento se accede por medio de uno o más índices que indican la posición relativa del
elemento dentro del conjunto.
• Valores homogéneos: mismo tipo de datos.
• Los datos de un arreglo pueden ser tipos de dato estándar o definidos por el usuario.

17
• Unidimensional (vector o lista):
tipo_de_dato nombre[cantidad_de_elementos];
Ejemplos:
int vec [10];
float lista1 [8], lista2 [20];
char vectChar [12];
• Bidimensional (matriz o tabla):
tipo_de_dato nombre[nro_filas][nro_columnas];
Ejemplos:
char matriz1 [4][8]; matriz2 [6][10];
int tabla [6][6];
float mes [5][7];
Características de los arreglos en lenguaje C
1. El subíndice del primer elemento es siempre cero.
2. El nombre del arreglo es una constante puntero que contiene la dirección de memoria
del primer elemento.
vector  &vector[0]
El compilador no hace comprobación de límites.
INICIALIZACIÓN DE ARREGLOS EN LA DECLARACIÓN
Ejemplos para arreglos unidimensionales
int vect1[10] = { 1, 3, 5, 7, 9};
float vect2[12] = { 1.1, 7.3, -0.3, -2.9};
int vect3[7] = {};
float lista1[] = {};
char lista2[6], lista3[] ={'a', 'b'};
short int lista4[5];

18
Ejemplos para arreglos bidimensionales
Int matA[5][4] = {{-1, -2, -3, -4},{0, 5, 10}};
float matB[3][4] = {{1.1, -2.2, 3.3},{-1.2, 2.4},{}};
int matC[3][3] = {};
float tablaA[6][5] = {{},{},{},{},{1,2,3}};
char tablaB[4][4];
char tablaC[3][4] ={{'x', 'y'},{'P','Q'},{'A','E','I','O'}};
ASIGNACIÓN DE VALORES A LOS ELEMENTOS DE UN ARREGLO
Ejemplos para arreglos unidimensionales
vect1[1] = 125;
vect1[2] = vect1[1] / 20;
vect2 [11] = 3.3333;
lista2 [0] = 'R', lista2 [1] = 'S', lista2 [2] = 'T';
lista2 [3] = lista2 [2] + 2, lista2 [4] = lista2 [3] ++;
lista2 [5] = lista2 [3] + 3;
Ejemplos para arreglos bidimensionales
matA[0][0]= 3, matA[0][1] = matA[0][0] * 33;
matB[2][3] = 1.33, matB[2][2] = 2.66;
tablaB [0][0] = 'T', tablaB[0][1] = 'a';
tablaB [0][2] = 'b', tablaB[0][3] = 'l';
tablaB [0][4] = 'a', tablaB[1][0] = ':';
tablaB [1][1] = ' ', tablaB[1][2] = '7';
CARGA DE VALORES EN UN CICLO REPETITIVO
Ejemplo para arreglos unidimensionales:
for ( i = 0 ; i < sizeof(vect1)/sizeof(int) ; i++)
scanf("%d", &vect1[i]);
for ( i = 0 ; i < sizeof(vect2)/sizeof(float) ; i++)
scanf("%f", &vect2[i]);

19
for ( i = 0 ; i < sizeof(lista2)/sizeof(char) ; i++)
scanf("%c", &lista2[i]);
ASIGANCIÓN DE VALORES A LOS ELEMENTOS DE UN ARREGLO
Ejemplo para arreglos bidimensionales
for ( i = 0 ; i < nro_filas ; i++)
for ( j = 0 ; j < nro_columnas ; j++)
scanf("%d", &matA[i][j]);
for ( i = 0 ; i < nro_filas ; i++)
for ( j = 0 ; j < nro_columnas ; j++)
scanf("%f", &matB[i][j]);
FUNCIONES PARA CARGAR Y MOSTRAR UN ARREGLO UNIDIMENSIONAL
void cargarVect(int tam, int v[])
{
int i;
for(i=0; i < tam; i++)
scanf("%d", &v[i]);
}
void verVect(int tam, int v[])
{
int i;
for(i=0; i<tam; i++)
printf(" %5d", v[i]);
}
FUNCIONES PARA CARGAR Y MOSTRAR UN ARREGLO BIDIMENSIONAL
void cargarMat(int fil,int col,int m[20][20])
{
int i, j;
for(i=0; i < fil; i++)

20
for(j=0; j < col; j++)
scanf("%d", &m[i][j]);
}
void verMat(int fil,int col, int m[20][20])
{
int i, j;
for(i=0; i<fil; i++)
{
printf("\n");
for(j=0; j < col; j++)
printf(" %5d", m[i][j]);
}
}
ORDENAMIENTO Y BÚSQUEDA
Cuando se dispone de un conjunto de datos las tareas que se realizan, con frecuencia, sobre
ellos son:
Ordenamiento: proceso de reorganizar un conjunto de objetos en una secuencia
determinada dada por una relación de orden.
Búsqueda: es una operación que tiene por objeto la localización de un elemento dentro de
una estructura de datos.
El estudio y análisis de los métodos de búsqueda y ordenamiento no corresponden a esta
asignatura.
Sólo se estudiarán métodos simples a los fines didácticos.
MÉTODO DE LA BURBUJA
Método de la burbuja (uno contra el resto)
El método consiste en tomar cada elemento de referencia
i (con i = 0, 1, ..., n – 2 )
y compararlo con cada uno de los restantes los elementos
j ( con j = i+1, i+2, ..., n).
Si el elemento j < elemento i, se realiza en intercambio (ordenamiento ascendente).

21
La primera comparación es entre el primero y segundo elemento del vector.
La última entre el penúltimo y último elemento del vector

MÉTODOS DE BÚSQUEDA
Los dos métodos más usados para la búsqueda de un elemento en una estructura de datos
son:
1. Búsqueda lineal
2. Búsqueda binaria
Búsqueda lineal o secuencial: se puede realizar sobre un vector ordenado o desordenado.
Comienza desde el primer elemento y recorre el arreglo secuencialmente buscando la
coincidencia entre la clave de búsqueda (elemento a buscar) y algún elemento del vector.
La búsqueda finaliza con la primera ocurrencia o cuando se llega al final del arreglo y el
elemento a buscar no se encuentra.
BÚSQUEDA BINARIA
Este método sólo se puede utilizar cuando el arreglo está ordenado. Toma el elemento
central del arreglo y lo compara con la clave de búsqueda si esta es mayor la búsqueda se
realiza, de la misma manera, en la mitad "derecha" del vector, caso contrario la búsqueda
se realiza en la mitad "izquierda". Así sucesivamente hasta encontrar o no la coincidencia.
La búsqueda finaliza con la primera ocurrencia o cuando no se puede subdividir el arreglo y
el elemento a buscar no se encuentra.

22
DATOS TIPO CHAR
Es un dato simple ordinal. No tiene mucha utilidad como dato aislado pero sí formando
parte de una cadena de caracteres. Tal es así que existe una librería de funciones exclusiva
para caracteres:
ctype.h
En el lenguaje C los valores válidos que puede tomar un dato tipo char son los
correspondientes al conjunto 1 de caracteres ASCII.
Un literal del tipo carácter se indica entre comillas simples. Por ejemplo: 'm' , '5', etc.
DATOS TIPO CHAR: LIBRERÍA CTYPE

CADENA DE CARACTERES (STRING): DEFINICIÓN


• Es una sucesión finita de caracteres alfanuméricos.
• En lenguaje C no existe un tipo primitivo de datos que pueda contener una cadena de
caracteres.
• Una cadena de caracteres, en lenguaje C, se representa por un arreglos unidimensional
(vector) de caracteres.
• Un literal de cadenas de caracteres se representa entre comillas dobles.
Por ejemplo:
"casa" , "facultad" , etc.

23
CADENAS DE STRING: DECLARACIÓN E INICIALIZACIÓN
Sintaxis de la declaración
char nombre_de_la_cadena [tamaño];
Ejemplo:
char cadena1 [10], cadena2[12];
char calle [10];
Inicialización:
char cad1[10] = {'a', 'e', 'i', 'o', 'u'};
char cad2[10] = {};
char cad3[] = {'C', 'u', 'r', 's', 'o'};
char cad4[15] = "Universidad";
char cad5[8] = "clase";
char cad6[] = {};
LONGITUD FÍSICA
Es el espacio de memoria que se reserva en el momento de la declaración de la cadena.
Ejemplo:
char calle [10];

Se reservan 10 bytes para alojar 10 caracteres en total.


La longitud física se obtiene con el operador sizeof().
LONGITUD LÓGICA
Es el espacio que efectivamente ocupan los caracteres de la cadena.
Cuando se realiza la asignación de una cadena (en la declaración, por lectura o por copia),
automáticamente se inserta el terminador nulo ( '\0') en el espacio contiguo al último
caracter de dicha cadena.
El caracter nulo no cuenta en la longitud lógica, sí en la física. Por lo tanto la longitud lógica
de una cadena no debe ser mayor a la longitud física menos 1

24
LONGITUDES FÍSICAS Y LÓGICAS
Ejemplo:
char calle [10] = "Junin";
En el momento de la asignación la posición de los caracteres es la siguiente:

La inserción del terminador nulo es automática cuando se asigna una cadena, no así cuando
se asignan un conjunto de caracteres.
INGRESO POR TECLADO
Para el ingreso de cadena de caracteres se utilizan, entre otras, las siguientes funciones de la
librería stdio.h:
a) scanf("%s", char *s);
b) fscanf(stdin, "%s", char *s);
stdin: dispositivo estándar de entrada.
c) fgets (char *s, nro_char, stdin);
nro_char: es la cantidad de caracteres que se leerán.
SALIDA POR MONITOR
Para las cadenas de caracteres se utilizan, entre otras, las siguientes funciones de la librería
stdio.h:
- printf("%s", char*);
- fprintf(stdout, "%s", char*);
stdout: dispositivo estándar de salida (monitor)
- fputs (char*, stdout);

25
FUNCIONES STRING. H

STRING – ARREGLOS
Una cadena de caracteres se declara:
char nombre_cadena[long_Fisica];
La sintaxis para declarar un vector de cadenas de caracteres es:
char nombre_vector[nro_de_cadenas][long_Fisica];
Ejemplo:
char vectCad[10][15];
Este vector podrá contener hasta 10 cadenas de caracteres de una longitud lógica máxima de 14
caracteres.
PARÁMETROS DE main ()
La cabecera de la función main() es:
int main(int argc, char *argv[])
{
...
}
El primer prámetro, argc, es un contador de los argumentos que se escriben en la línea de
órdenes, cuando se ejecuta el programa.
El segundo, *argv[], es un arreglo de strings donde se guardan los argumentos de llamada.

26
ORDENAMIENTO Y BÚSQUEDA
Ordenamiento
• Método de la burbuja
Búsqueda:
• búsqueda lineal
búsqueda binaria

27

También podría gustarte