disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno:...

44
UNIVERSIDAD DE GUADALAJARA CENTRO UNIVERSITARIO DE LA COSTA LICENCIATURA EN INGENIERIA EN COMPUTACIÓN UNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ

Transcript of disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno:...

Page 1: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

UNIVERSIDAD DE GUADALAJARA

CENTRO UNIVERSITARIO DE LA COSTA

LICENCIATURA EN INGENIERIA EN COMPUTACIÓN

UNIDAD DE APRENDIZAJE: PROGRAMACIÓN

RESUMEN

CODIGO: 216706604

Alumno:

BIANCA PATRICIA GUADALUPE CAMACHO CRUZ

Puerto Vallarta, Jalisco, abril 30 del 2020

Page 2: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Índice:

Lenguaje de Programación C

Estructura General de un Programa

Cómo insertar comentarios

Palabras reservadas

Identificadores

Tipos de Datos en Lenguaje C

Calificadores de Datos

Variables - Declaración y ejemplos

Constantes - Directiva #define

Secuencias de escape

Inclusión de archivos #include

Operadores Aritméticos básicos

Funciones printf() y scanf()

Operadores relacionales <, >, ==

Condicionales if, elseif y switch

Operadores lógicos AND, OR, Not

Bucles While, Do While y For

Variables Locales y Globales en C

Funciones

Recursividad

Arrays

Matrices

Algoritmos de ordenación y búsqueda

Estructuras y uniones

Punteros (Apuntadores)

Asignación dinámica de memoria

Cadenas

Entrada y salida de archivos

Organización de datos en un archivo

Tipos de datos TAD/objetos

Listas enlazadas

Pilas y colas

Page 3: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Lenguaje de Programación C

Propósito general asociado de modo universal, al sistema operativo UNIX. Sin embargo, la

popularidad, eficacia y potencia de c, se ha producido porque este lenguaje no está

prácticamente asociado a ningún sistema operativo, ni a ninguna máquina, en especial. Esta

es la razón fundamental por la cual c, es conocido como el lenguaje de programación de

sistemas, por excelencia.

El lenguaje c es flexible, con órdenes, operaciones y funciones de biblioteca que se pueden

utilizar para escribir la mayoría de los programas que corren en la computadora.

C se utiliza por programadores profesionales para desarrollar software en la mayoría de los

modernos sistemas de computadora.

Se pude utilizar para desarrollar sistemas operativos, compiladores, sistemas de tiempo real

y aplicaciones de comunicaciones.

Puede ser escrito para un tipo de computadora y trasladarse a otra computadora con pocas o

ninguna modificación.

Page 4: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Estructura General de un Programa C y Cómo Insertar Comentarios

Para insertar comentarios solo se necesitan estas dos diagonales “//” cabe mencionar que no

se va imprimir en el programa.

Otra forma más práctica que se utiliza para insertar muchos comentarios es el “/*” este nos

evita estar insertando en cada comentario las diagonales. Se pone en el principal comentario

y se cierra en el último.

Page 5: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Palabras reservadas:

Estas palabras sirven para indicar al computador que realice una tarea muy determinada

(desde evaluar una comparación, hasta definir el tipo de una variable) y tienen un especial

significado para el compilador.

Identificadores para variables:

Un identificador es el nombre que se le asigna a una constante, variable, función o

argumento.

Existen dos tipos de identificadores; predefinidos (que forman parte del lenguaje c) y

definidos (que son por parte del programador).

Existen ciertas reglas para el uso de identificadores tales son:

1.- Solo se puede utilizar_ a.z A.Z 0.9

2.- No pueden contener espacios, Ñn ni acentos

3.- No se pueden comenzar con números

4.- No se pueden usar palabras reservadas como identificador

5.- No puede haber 2 identificadores en el mismo nombre

Page 6: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Tipos de Datos:

Tipos de Datos Descripción Memoria

int Cantidad entera 2 bytes o una palabra (varía según compilador).

char Carácter 1 byte.

float Almacena valores reales en punto flotantes. 1 palabra (4 bytes).

double Almacena valores reales en doble precisión. 2 palabras (8 bytes).

voidSe utiliza para definir una función que no devuelve ningún valor o declarar punteros genéricos (lo veremos más tarde).

El tipo de la variable nos indica el conjunto de valores que puede tomar y las

operaciones que pueden realizarse con ella. Existen cinco tipos de datos básicos en C:

Calificadores de Datos:

Signed Número con signoUnsigned Número natural (sin signo)Short Rango en formato cortoLong Rango en formato largo

Es posible combinar califacores entre si.

Signed long int = long int = long

unsigned long int = unsigned long 4 bytes 0 a 4.294.967.295 (El mayor entero permitido en

'C')

Page 7: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Variables:

Una variable es una zona de memoria en la que el compilador puede almacenar datos. El

tamaño de esta zona de memoria viene determinado por el tipo del que declaramos la

variable.

Al declarar una variable lo que hacemos es dar orden al compilador para que reserve una

zona de memoria del tamaño adecuado (según el tipo), dando un nombre en dicha zona.

[calificador] <tipo> <nombre> ;

Opcional

Obligatorio Obligatorio, será el identificador de la

variableIndica al compilador que

la línea de código ha terminado

Page 8: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Una variable declarada a la que no se le ha dado valor tiene un contenido indefinido.

Para colocar un valor en una variable hay que asignarlo:

Int iEdad; /*Reserva la memoria*/

iEdad=19; /*le asigna un valor*/

Es posible inicializarlo y declarar más de una variable del mismo tipo en la misma sentencia:

[calif] <tipo> <nombre>=<valor>, <nombre2>=<valor>;

Las variables pueden ser de dos tipos según el lugar donde se declaren: globales o locales.

Los globales se declaran fuera de las funciones. Pueden ser utilizadas en cualquier parte del

programa, desde su declaración y hasta el final de éste.

Las locales se declaran dentro de una función (se declaran antes de la primea instrucción del

bloque en que son declaradas {}).

Constantes directiva #define:

Una constante es un valor que no puede ser alterado/modificado durante la ejecución de un

programa, únicamente puede ser leído.

Un ejemplo seria; PI=3.1416 (Lo podemos declarar como una constante y durante el

programa no se va modificar ya que está definido)

Las constantes definidas con #define se denominan constantes simbólicas, y algunas de ellas

existen de forma predeterminada en el lenguaje.

Otro uso de #define es el de definir macros, equivalencias a ejecutar cuando se encuentre la

invocación a la macro. Por ejemplo:

Page 9: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Secuencias de escape:

Las más comunes son:

Ejemplo:

Inclusión de archivos de cabecera - Directiva #include:

La directiva #include, permite leer el teclado, escribir en la pantalla, manejar números,

realizar funciones matemáticas, añadir librerías o funciones que se encuentran en otros

ficheros a nuestro programa.

Para indicar al compilador que vamos a incluir ficheros externos podemos hacerlo de dos

maneras (siempre antes de las declaraciones).

Page 10: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

1. Indicándole al compilador la ruta donde se encuentra el fichero.

o #include "misfunc.h"

o #include "c:\includes\misfunc.h"

2. Indicando que se encuentran en el directorio por defecto del compilador.

o #include <misfunc.h>

Operadores Aritméticos básicos:

Son aquellos que permiten realizar cálculos con valores numéricos para obtener un

resultado. Los operadores aritméticos más habituales son la suma, resta, multiplicación y

división.

Los operadores aritméticos básicos en C son:

C no reconoce el operador ^ para el cálculo de potencias de un número, ni el operador div o

barra invertida para la obtención del cociente o división entera de una división.

Ejemplo:

Page 11: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Printf y Scanf:

printf() y scanf() son funciones que nos permitirán imprimir datos en pantalla o por el

contrario, obtener datos a través del teclado.

La rutina printf() permite la aparición de valores numéricos, caracteres y cadenas de texto

por pantalla.

Ejemplo:

scanf:

Permite leer varios tipos de datos de una sola vez, tales como enteros, números decimales o

cadenas de caracteres.

La principal característica de la sentencia scanf es que necesita saber la posición de la

memoria del ordenador en que se encuentra la variable para poder almacenar la información

obtenida.

La forma de usar ambos comandos depende del lenguaje de programación:

printf (“Introduce la variable: ”);

scanf(variable_en_la_que_se_introduzca_en_el_teclado);

Page 12: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Operadores relacionales o de comparación <, >, ==, !=Se llaman operadores relacionales o de comparación a aquellos que permiten comparar dos

valores evaluando si se relacionan cumpliendo el ser menor uno que otro, mayor uno que

otro, igual uno que otro, etc.

OPERADORES LÓGICOS EN C

Existen 3 operadores lógico, cuyos argumentos son expresiones relacionales, aunque

admiten cualquier tipo de operando entero:

Operador conjunción (y/and) &&

Operador disyunción (o/or) ll

Operador negación (no/not) !

Operador Y (&&)-AND lógico (operador binario que devuelve 0 (falso) si alguno de los

operadores es falso(0), y devuelve 1 (verdadero) en caso contrario.

Operador 0 (ll)- OR lógico (operador binario que devuelve 0 si los dos operadores se evalúan

a falso, y devuelve 1 en caso contrario).

Operador (!)-NOT lógico (operador unario que devuelve 1 si el operador se evalúa a falso(0),

y devuelve 0 (falso) en caso contrario.

Binarios

Unario

Operador Significado

Operador < Menor que

Operador <= Menor o igual que

Operador > Mayor que

Operador >= Mayor o igual que

Operador == Igual a

Operador != Distinto de ó no igual que

Page 13: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Ejemplo:

Suponiendo que tenemos cuatro variables A, B, C y D cuyos valores se han establecido en A =

5, B = 7, C = 2, D = 5 podríamos evaluar estas expresiones:

Expresión Pregunta equivalente Resultado Ejemplo código

(A == B) && (A < B) ¿Es A igual a B y A menor que C? 0 (falso)printf ("Pregunta (A == B) && (A < B) vale %d\n", (A == B) && (A <

B));

(A == 5) || (A > 7)¿Es A igual a 5 ó es A mayor que

7?1 (verdadero) printf ("Pregunta (A == 5) || (A > 7) vale %d\n", (A == 5) || (A > 7));

! ( A == 5 ) ¿A es NO igual a 5? 0 (falso) printf ("Pregunta ! ( A == 5 ) vale %d\n", ! ( A == 5 ));

 

 

Operadores condicionales en C - if, else, elseif y switch:

La sentencia if…else permite variar el flujo de ejecución de un programa.

El flujo dependerá del valor de una expresión:

If

If…else

if (condición) sentencia1;else if (condición) sentencia2;else if (condición) sentencia3;else sentencia4;

Switch:Los condicionales Switch, son una estructura de control condicional, que permite definir

múltiples casos que puede llegar a cumplir una variable cualquiera, y qué acción tomar en

Si la expresión es cierta se ejecuta una sentencia determinada.

Si la expresión es cierta se ejecuta una sentencia determinada, si es falsa se ejecuta otra sentencia

Page 14: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

cualquiera de estas situaciones, incluso es posible determinar qué acción llevar a cabo en

caso de no cumplir ninguna de las condiciones dadas.

Cada case puede incluir una o más sentencias sin necesidad de ir entre llaves, ya que se

ejecutan todas hasta que se encuentra la sentencia BREAK. La variable evaluada sólo puede

ser de tipo entero o carácter. Default ejecutará las sentencias que incluya, en caso de que la

opción escogida no exista.

Operadores lógicos y tabla de verdad - AND &&, OR ||, Not !:

Las expresiones conectadas con los operadores se evalúan de izquierda a derecha y

la evaluación se detiene cuando el resultado es verdadero o falso.

Los operadores lógicos

Los operadores lógicos son:

&& AND (el resultado es verdadero si ambas expresiones son verdaderas)

|| OR (el resultado es verdadero si alguna expresión es verdadera)

! NOT (el resultado invierte la condición de la expresión)

AND y OR trabajan con dos operadores y retornan un valor lógico basadas en las

denominadas tablas de verdad. El operador NOT actúa sobre un operando. 

Page 15: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

El operador lógico AND El operador lógico OR

x y resultado

true true true

true false false

false true false

false false false

El operador lógico NOT

x resultado

true false

false true

Ciclos While, Do While y For:

Son estructuras de repetición que permiten realizar tareas recurrentes y se usan para el

control de flujo de un proceso un número determinado de veces.

Bucle While

Su sintaxis es:

while (condición) sentencia;

x y resultado

true true true

true false true

false true true

false false false

Page 16: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Con esta sentencia se controla la condición antes de entrar en el bucle. Si ésta no se cumple,

el programa no entrará en el bucle.

Naturalmente, si en el interior del bucle hay más de una sentencia, éstas deberán ir entre

llaves para que se ejecuten como un bloque.

Do While:

Ejecuta una sentencia repetidamente, hasta que el valor de expresión sea falso. La

comprobación se realiza después de cada iteración.

La única diferencia entre las sentencias while y do...while es que con la segunda el cuerpo del

bucle se ejecutará por lo menos una vez.

Page 17: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Bucle For:

1) Se evalúa la expresión de inicialización.

2) Se evalúa la condición. Si el resultado es falso, termina la ejecución de la

estructura for. Si es verdadero, sigue por el paso 3.

3) Se ejecuta el bloque de instrucciones dentro de la estructura.

4) Se evalúa la expresión final, que normalmente altera la variable de control, y se

vuelve al paso segundo.

Su sintaxis es:

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

sentencia1;

sentencia2;

}

La inicialización indica una variable (variable de control) que condiciona la repetición del

bucle. Si hay más, van separadas por comas:

for(a=1,b=100;a!=b;a++,b- -){ ... }

Sentencia Break

Esta sentencia se utiliza para terminar la ejecución de un bucle o salir de una sentencia

SWITCH.

Page 18: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Sentencia Continue

La sentencia continue provoca un salto hasta el final del cuerpo del bucle (puede que sólo

aparezca dentro del cuerpo del bucle de los bucles for, while, y do-while).

Variables Locales y Globales:

Los globales se declaran fuera de las funciones. Pueden ser utilizadas en cualquier parte del programa, desde su declaración y hasta el final de éste.

Las locales se declaran dentro de una función (se declaran antes de la primea

instrucción del bloque en que son declaradas {}).

Page 19: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Funciones:

Sintaxis de una función:

TIPO FUNCIÓN:

Puede ser de cualquier tipo de los que conocemos. El valor devuelto por la función será de

este tipo. Por defecto, es decir, si no indicamos el tipo, la función devolverá un valor de tipo

entero ( int ). Si no queremos que retorne ningún valor deberemos indicar el tipo vacío

( void ).

La declaración da a conocer la función al compilador, de forma que a partir del punto de

declaración, ya se pueden realizar invocaciones a la misma.

Los prototipos de las funciones pueden escribirse antes de la función main o bién en otro

fichero. En este último caso se lo indicaremos al compilador mediante la directiva #include.

Page 20: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Arrays, arreglos, cadenas o vectores:

Los arrays son variables estructuradas como cadena de caracteres, donde cada elemento se

almacena de forma consecutiva en un número de notaciones.

Tamaño: tamaño indica el número de elementos del vector (se debe indicar entre

corchetes [ ] ).

For: el primer for sirve para rellenar el vector y el segundo para visualizarlo. Las posiciones

van de 0 a 9 ( total 10 elementos).

Page 21: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Cadenas de caracteres: es un conjunto de caracteres valores de tipo “char”,

terminados en carácter nulo. Internamente se almacena en posiciones consecutivas de

memoria. Se declara;

char nombre[n]; donde: n >= 1 y representa a la longitud-1 real de la cadena.

Nota: Al declarar una cadena deberemos reservar una posición más que la longitud

que queremos que tenga dicha cadena

Matrices- Bidimensional, tridimensional:

Declaración de matriz multidimensional:

tipo nombre [tamaño 1][tamaño 2]...;

Matriz tridimensional: se utiliza, por ejemplo, para trabajos gráficos con objetos 3D.

La siguiente declaración crea una matriz de enteros tridimensional (5 x 10 x 4):

int arr[5][10][4];

Arrays bidimensionales

Una matriz bidimensional es, en esencia, una lista de matrices unidimensionales. Para

declarar una matriz entera bidimensional de dimensiones mxn, podemos escribir de la

siguiente manera:

type arrayName[m][n];

Donde type puede ser cualquier tipo de datos de C válido ( int , float , etc.) y

arrayName puede ser cualquier identificador de C válido. Una matriz bidimensional se puede

visualizar como una tabla con m filas n columnas. El orden sí importa en C. Una matriz

bidimensional a, que contiene tres filas y cuatro columnas se puede mostrar de la siguiente

manera:

Page 22: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Por lo tanto, cada elemento de la matriz a se identifica por un nombre de elemento

de la forma a[i] [j] , donde a es el nombre de la matriz, i representa qué fila y j representa qué

columna.

Punteros:

Un puntero es una variable que contiene la dirección de memoria de otra variable. Se usan

para pasar información entre una función y puntos de llamada.

Su sintaxis es la siguiente:

tipo *nombre;

Donde nombre es el nombre de la variable, y tipo es el tipo del elemento cuya dirección

almacena el puntero.

Existen dos operadores especiales para trabajar con punteros: & y *.

El primero devuelve la dirección de memoria de su operando. El segundo devuelve el valor de

la variable cuya dirección es contenida por el puntero

Asignación

Los punteros se asignan igual que el resto de las variables. Es posible desplazar un puntero

recorriendo posiciones de memoria. Para ello podemos usar los operadores de suma, resta,

incremento y decremento (+, -, ++, - -).

Estructuras y UnionesEl formato general de una declaración struct es:

struct [nombre_estructura] {

campo_1;

campo_2;

} [variable_estructura];

Page 23: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

El formato general de una declaración union es:

union [nombre_union] {

campo_1;

campo_2;

} [variable_union];

La diferencia entre una variable tipo union y un registro struct es que la primera implica que

todos los campos ocupan la misma posición de memoria (que será del tamaño del mayor de

ellos). Se utiliza cuando se quiere que una misma variable pueda contener datos de distinto

tipo, o cuando se quiere utilizar una misma variable desde distintos puntos de vista.

Typedef

Es posible agrupar un conjunto de elementos de tipo estructura en un array. Esto se conoce

como array de estructuras: El lenguaje 'C' dispone de una declaración llamada typedef que

permite la creación de nuevos tipos de datos. Ejemplos:

typedef int entero; /* */

entero a, b=3; /* declaramos dos variables de este tipo */

:

Page 24: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Ficheros - Abrir, cerrar, leer y agregar archivos de texto:

Antes de abrir un fichero se declara un puntero de tipo FILE, para abrir el fichero utilizaremos

la función fopen( ).

Su sintaxis es:

FILE *puntero;

puntero = fopen ( nombre del fichero, "modo de apertura" );

Donde puntero es la variable de tipo FILE.

Para cerrar los ficheros utilizaremos la función fclose( ); Esta función cierra el fichero, cuyo

puntero le indicamos como parámetro. Si el fichero se cierra con éxito devuelve 0.

Leer del archivo de texto

fgetc() permite leer un carácter desde el archivo, recibe un parámetro y es la variable del

archivo. Devuelve el carácter leído.

fgets() lee cadenas completas desde el archivo, hasta que encuentra un retorno de

carro \n o un eof. Acepta tres parámetros el nombre del arreglo de caracteres donde se

va a guardar lo leído, cantidad de bytes a leer y variable de archivo.

Nota: si vamos a trabajar con

archivos binarios usamos la

letra b así que los modos de acceso

quedan “rb”, “wb”, “ab”, “rb+”,

“wb+”, “ab+”.

Page 25: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

fscanf() funciona de la misma forma que un scanf() tradicional pero con un parámetro al

principio que indica el archivo a leer.

Para escribir en archivos binarios

fwrite() se usa para escribir datos binarios en un archivo, recibe tres parámetros, el

primero es la variable a guardar, el segundo el tamaño de la variable a guardar, el tercero

cuantas veces se va a guardar y por último la variable de archivo.

Para leer de un archivo binario

fread() se usa para leer datos binarios de un archivo, recibe tres parámetros, el primero

es la variable donde se van a guardar los datos, el segundo el tamaño de la variable a leer,

el tercero cuantas veces se va a leer y por último la variable de archivo.

Asignación dinámica de memoria Malloc. Pilas, colas y listas:

Malloc: reserva en memoria una zona de tamaño bytes, y devuelve un puntero al inicio de

esa zona.

free( puntero );

Esta función libera de la memoria la zona que habíamos reservado anteriormente con la

función malloc.

Estructuras dinámicas de datos:

Pilas

Colas

Listas

Page 26: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Pilas

Este tipo de estructuras se caracteriza porque todas las operaciones se realizan en el mismo

lado.

Hay funciones de gestión de memoria dinámica (stdlib.h):

– void *malloc(size_t): Reserva memoria dinámica.

– void *calloc(size_t): Reserva memoria dinámica.

– void *realloc(void *,size_t): Ajusta el espacio de memoria dinámica.

– free(void *): Libera memoria dinámica.

Colas

Se caracteriza porque insertamos los elementos por un lado y los extraemos por el otro lado.

El primer elemento en entrar es el primero en salir. Para gestionar la cola utilizaremos 3

punteros (para la pila solo eran necesarios 2).

La estructura:

struct cola { tipo variables; struct cola *sig; } *CAB=NULL,*AUX=NULL,*FIN=NULL;

Page 27: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Listas

Este tipo de estructuras se caracteriza porque los elementos están enlazados entre sí, de

manera que además de las acciones habituales de insertar, extraer y visualizar también

podremos buscar un elemento.

struct lista

{

tipo variables;

struct lista *sig;

}*CAB=NULL,*AUX=NULL,*F=NULL,*P=NULL;

Recursividad:

Se llama recursividad a un proceso mediante el que una función se llama a sí misma de forma repetida, hasta que se satisface alguna determinada condición

Se deben satisfacer dos condiciones para que se pueda resolver un problema recursivamente:

Primera: El problema se debe escribir en forma recursiva.

Segunda: La sentencia del problema debe incluir una condición de fin.

Page 28: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Algoritmos de ordenación y búsqueda:

Búsqueda lineal – Búsqueda Binaria.

Búsqueda Lineal: compara los elementos del array con la clave de búsqueda hasta que

encuentra el elemento o bien hasta que se determina que no se encuentra.

La Búsqueda Binaria: compara si el valor buscado está en la mitad superior o inferior.

Ordenamiento Burbuja: funciona revisando cada elemento de la lista que va a ser ordenada

con el siguiente, intercambiándolos de posición si están en el orden equivocado.

Ordenamiento por inserción:

Consiste en ir insertando un elemento de la lista ó un arreglo en la parte ordenada de la

misma, asumiendo que el primer elemento es la parte ordenada, el algoritmo ira

comparando un elemento de la parte desordenada de la lista con los elementos de la parte

ordenada, insertando el elemento en la posición correcta dentro de la parte ordenada, y así

sucesivamente hasta obtener la lista ordenada.

Ordenamiento por Selección:

Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo

con el que está en la primera posición. Luego el segundo más pequeño, y así sucesivamente

hasta ordenarlo todo. Su implementación requiere O(n2) comparaciones e intercambios para

ordenar una secuencia de elementos.

Buscar el mínimo elemento entre una posición i y el final de la lista

Intercambiar el mínimo con el elemento de la posición i

Cadenas:

Funcionan igual que los demás arrays con la diferencia de que ahora se manejan

letras en vez de números. Se les llama cadenas, strings o tiras de caracteres.

Page 29: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Para declarar una cadena se hace como en el caso de un array. Por ejemplo, si

queremos declarar una cadena de longitud 20 caracteres se haría:

char texto[20];

Organización de datos en un archivo

Organización de Archivos La organización de un archivo define la forma en que los registros

se disponen sobre el soporte de almacenamiento, o también se define la organización como

la forma en que se estructuran los datos en un archivo. En general se consideran tres

organizaciones fundamentales:

– Organización secuencial

Los archivos organizados secuencialmente contienen un registro particular –el último- que

contiene una marca fin de archivo detectable mediante las funciones

• EOF.- End of File

• FDA.- Final de Archivo

• FDF.- Final de Fichero

• FF.- Fin Fichero

• FA.- Fin Archivo

Page 30: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

– Organización directa o aleatoria (random)

Las condiciones para que un archivo sea de organización directa son:

– Almacenamiento en un soporte direccionable.

– Los registros deben contener un campo específico denominado clave que identifica a cada

registro como único, es decir, dos registros no pueden tener el mismo valor clave.

– Existencia de una correspondencia entre los posibles valores de la clave y las direcciones

posibles sobre el soporte.

– Organización secuencial indexada (indexed)

Un archivo está organizado en forma secuencial indexada si:

– El tipo de sus registros contiene un campo clave identificador.

– Los registros están situados en un soporte direccionable por el orden de los valores

indicados por la clave.

– Existe un índice con cada una de las posiciones direccionables, que almacena la dirección

de la posición y el valor de la clave; en esencia, el índice contiene la clave del último registro

y la dirección de acceso al primer registro del bloque.

Listas enlazadas:

Es una estructura dinámica de datos. Cada objeto de la estructura está formado por los datos

junto con un puntero al siguiente objeto. Al manejar punteros, los datos no tienen por qué estar

situados en posiciones consecutivas de la memoria, y lo más normal, es que estén dispersos. 

Page 31: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

Pilas Y Colas:

Son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones.

Una pila es una colecciona ordenada de elementos en la cual los datos se insertan o se

retiran por el mismo extremo llamado “parte superior” de la pila.

Una pila está conformada por dos elementos:

• Un espacio suficiente para almacenar los elementos insertados en la pila.

• Una elemento que indique cuál es el elemento en la cima de la pila.

Las operaciones básicas de una pila son:

1. En la pila S, insertar un elemento e: push(S,e)

2. Retirar un elemento de la pila S: pop(S)

3. Verificar si la pila S está vacía: stackempty(S)

4. Saber cuál es el elemento en la cima de la pila S: stacktop(S)

Page 32: disenowebakus.net · Web viewUNIDAD DE APRENDIZAJE: PROGRAMACIÓN RESUMEN CODIGO: 216706604 Alumno: BIANCA PATRICIA GUADALUPE CAMACHO CRUZ Puerto Vallarta, Jalisco, abril 30 del 2020

En una cola hay dos extremos, uno es llamado la parte delantera y el otro extremo se llama la

parte trasera de la cola. En una cola, los elementos se retiran por la parte delantera y se

agregan por la parte trasera

Operaciones en una cola

Las operaciones básicas de una cola son “enqueue” (meter) y “dequeue” (sacar)

– enqueue: añade un nuevo elemento al final de la cola

– dequeue: elimina (saca) el primer elemento de la cola

• Otras operaciones usualmente incluidas en el tipo abstracto COLA son:

– isEmpty (estáVacia): verifica si la cola está vacía

– isFull (estáLlena): verifica si la cola está llena