24
1 Aracelly Silva Tercer Semestre Ing. Wilma Gavilanez FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN CARRERA DE DOCENCIA EN INFORMÁTICA PROGRAMACION II ELEMENTO 1

Programacion en lenguaje C

Embed Size (px)

DESCRIPTION

Elemento 1

Citation preview

Page 1: Programacion en lenguaje C

1

Aracelly Silva Tercer Semestre

Ing. Wilma Gavilanez

FACULTAD DE CIENCIAS

HUMANAS Y DE LA EDUCACIÓN

CARRERA DE DOCENCIA EN

INFORMÁTICA

PROGRAMACION II

ELEMENTO 1

Page 2: Programacion en lenguaje C

2

Introducción al lenguaje c

EL lenguaje C es el resultado de un proceso de desarrollo que inició con

un lenguaje denominado BCPL. Este influenció a otro llamado B (inventado por Ken

Thompson). En los años 70; éste lenguaje llevó a la aparición del C.

Con la popularidad de las microcomputadoras muchas compañías comenzaron a implementar

su propio C por lo cual surgieron discrepancias entre sí.

Por esta razón ANSI (American National Standars Institute, por sus siglas en inglés), estableció

un comité en 1983 para crear una definición no ambigüa del lenguaje C e independiente de la

máquina que pudiera utilizarse en todos los tipos de C.

Algunos de las C existentes son:

-Quick C

-C++

-Turbo C

-Turbo C ++

-Borland C

-Borland C++

-Microsoft C

-etc.

C es un lenguaje de programación de nivel medio ya que combina los elementos del lenguaje

de alto nivel con la funcionalidad del ensamblador.

Su característica principal es ser portable, es decir, es posible adaptar los programas escritos

para un tipo de computadora en otra.

Otra de sus características principales es el ser estructurado, es decir, el programa se divide en

módulos (funciones) independientes entre sí.

El lenguaje C inicialmente fue creado para la programación de:

-Sistemas operativos

-Intérpretes

-Editores

-Ensambladores

-Compiladores

Page 3: Programacion en lenguaje C

3

-Administradores de bases de datos.

Actualmente, debido a sus características, puede ser utilizado para todo tipo de programas.

Lenguaje c

C es un lenguaje de programación de 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 que C es conocido como el lenguaje de programación de

sistemas por excelencia.

También C se define como un lenguaje de programación estructurado de propósito general;

aunque en su diseño también primó el hecho de fuera especificado como un lenguaje de

programación de sistemas, lo que proporciona una enorme cantidad de potencia y flexibilidad.

En la actualidad, el lenguaje C sigue siendo uno de los más utilizados en la industria

del software, así como en institutos tecnológicos, escuelas de ingeniería y universidades.

Ventajas del lenguaje C

El lenguaje C tiene una gran cantidad de ventajas sobre otros lenguajes y constituyen

precisamente la razón fundamental de que después de casi dos décadas de uso C siga siendo

uno de los lenguajes más populares, utilizados en empresas, organizaciones y fábricas de

software de todo el mundo.

C se caracteriza por su velocidad de ejecución. En los primeros días de la informática los

problemas de tiempo de ejecución se resolvían escribiendo todo o parte de una aplicación en

lenguaje ensamblador (muy al lenguaje de máquina).

Debido a que existen muchos programas escritos en el lenguaje C, se han creado numerosas

bibliotecas C para programadores profesionales que soportan gran variedad de aplicaciones.

Características del lenguaje C

Hay numerosas características que diferencian al lenguaje C de otros, y lo hacen eficiente,

potente, eficaz, rápido, indispensable para todos los programas. Algunas son:

Una nueva sintaxis para declarar funciones. Una declaración de función puede añadir

una descripción de los argumentos de la función. Esta información adicional sirve para

que los compiladores detecten más fácilmente lo errores causados por argumentos

que no coinciden.

Asignación de estructuras (registros) y enumeraciones.

Preprocesador más sofisticado.

Una nueva definición de la biblioteca que acompaña a C. Entre otras funciones se

incluyen: acceso al sistema operativo (por ejemplo, lectura / escritura de archivos),

Page 4: Programacion en lenguaje C

4

entrada y salida con formato, asignación dinámica de memoria, manejo de cadenas de

caracteres.

Una colección de cabeceras estándar que proporciona acceso uniforme a las

declaraciones de funciones y tipos de datos.

Desventajas:

No dispone de editor propio

Se requiere más tiempo en conseguir el ejecutable, porque cada vez compila todo

el fichero.

La modularidad en C tiende a incrementar el tiempo de compilación

Poco legible y eminentemente críptico

TIPOS DE DATOS

Básicos:

- Numéricos:

· Entero palabra clave int

· Real precisión simple float

- Carácter: char

- Vacio: void

-Estructurados:

- Complejos

Estáticos Tabla

- Dinámicos Lista

Pila

Cola

Árbol

Grafo

- Compuestos. Estructura

Unión

Enumeración

Page 5: Programacion en lenguaje C

5

Campos de Bit

Definidos por el Usuario Typedef

OPERADORES:

Son símbolos que en C tienen un significado determinado y que indican al procesador que

tiene que hacer una operación determinada.

Operadores de Expresión

Paréntesis ( )

1- Determinan la máxima prioridad en la expresión, comenzando por los internos

2- Para encerrar los parámetros de una función

Corchetes [ ]

1 Encierran los índices de tablas.

Operadores Aritméticos:

Monarios, necesitan un solo valor

Signo negativo -

Incremento ++

Decremento --

Binarios, necesitan dos valores

Suma +

Resta -

Multiplicación *

División /

Módulo %

Operadores Relacionales y Lógicos:

Relacionales:

Menor que <

Menor o igual que <=

Mayor que >

Page 6: Programacion en lenguaje C

6

Mayor o igual que >=

Igual a ==

Distinto !=

No confundir este operador == con el operador asignación =

Lógicos:

Conjunción Y &&

Disyunción O ||

Negación !

Operadores Para tratamiento de Bits:

Se utilizan para realizar operaciones a nivel de bit, y los operandos deben ser de tipo char o int.

Y (AND) Binario &

O(OR) Binario |

O Exclusivo XOR ^(ASCII 94)

Complemento Not ~(ASCII126)

Desplaz. Derecha >>

Desplaz. Izquierda <<

Operadores de Asignación:

Se utilizan para cargar una variable con el valor de expresión. Pueden ser de dos tipos, simple o

compuesto.

Asignación Simple:

Variable = Expresión: media = suma / num;

Asignación Compuesto

Variable simbolo_operación = Expresión

Esta asignación es equivalente a:

Variable = Variable Simbolo_operación (expresión)

Page 7: Programacion en lenguaje C

7

Operadores coma

Se utiliza para separar dos expresiones dentro de una expresión total.

1- para realizar una asignación de una expresión, que previamente requiere otra

expresión a=(b=5,b+2); equivale a b=5; a= b+2

2- Para realizar varias operaciones dentro de la condición de un bucle.

For (i=0, k=15, i<k; k--)

Operador tamaño

Se utiliza para obtener la longitud en bytes de una variable o de un especificador de dato.

Sizeof(int) Obtiene la longitud de un tipo de datos.

Sizeof permite obtener la longitud de una estructura sin necesidad de sumar las longitudes de

cada una de las variables

Struct datos {int num; char nom[40];float abono;}socio;

Sizeof socio

Operador de molde

Se utiliza para convertir un tipo de dato en una expresión.:

(Tipo) Operando

float a = 9,25;

b= (int) a / 2;

Page 8: Programacion en lenguaje C

8

Operador condicional

Se utiliza para realizar una operación alternativa mediante una condición.

Expresión1 ; expresión2 : expresión3;

Se evalúa la expresión 1 si el resultado es verdadero se evalúa la expresión 2 y su resultado se

toma como resultado de la expresión total, por el contrario si el resultado es falso se ejecuta la

expresión 3.

Result = (a>b) ; a : b;

Es equivalente a : If (a >b ) result = a; else result = b;

IDENTIFICADORES

Los identificadores son nombres de referencia a constantes , variables, , estructuras de datos,

funciones que se pueden aplicar.

Se pueden utilizar palabras clave excepto las 32 siguientes que están reservadas para el

lenguaje C estándar:

Auto break case char const continue default do

Double else enum extern float for goto if int

Long register return short signed sizeof static struct

Switch typedef union unsigned void volatile while.

ELEMENTOS GENERALES DE UN PROGRAMA EN C

Aunque cada uno de los programas son distintos, todos tienen características comunes. Los

elementos de un programa en C son los siguientes:

Page 9: Programacion en lenguaje C

9

Comentarios

Inclusión de archivos

main()

{

variables locales

flujo de sentencias

}

Programación estructurada

El lenguaje C la unidad básica de programación es la función, los programas están formados

por módulos. Cada módulo realiza una tarea específica y es un subprograma independiente.

Los programas estructurados tienen un conjunto de módulos relacionados lógicamente como

una unidad integrada.

Todo programa en C consta de una o más funciones, una de ellas es main. El programa siempre

comienza por la ejecución de la función main. Se pueden definir algunas funciones adicionales

pueden preceder a main.

Cada función debe contener:

1.- Una cabecera de la función, que consta del nombre de la función, despues unos parentesis

para una lista opcional de argumentos.

2.- Después el cuerpo de la función que describe el conjunto de sentencias o conjunto de

instrucciones encerradas por un par de llaves. Cada sentencia de expresión debe terminar con

punto y coma (;).

Los comentarios pueden aparecer en cualquier parte del programa, deben estar entre los

limitadores /* esto es un comentario */ sirven para documentar el código.

Page 10: Programacion en lenguaje C

10

VECTORES

Un vector, también llamado array(arreglo) unidimensional, es una estructura de datos que

permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria

juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre

y la posición en la que se encuentran. La primera posición del array es la posición 0.

Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres,

objetos, etc.

Ejm:

1

2

3

int a[5];//Vector de 5 enteros

float b[5];//vector de 5 flotantes

Producto product[5];//vector de 5 objetos de tipo Producto

Los vectores son una forma de almacenar datos que permiten contener una serie de valores

del mismo tipo, cada uno de los valores contenidos tiene una posición asociada que se usará

para accederlos. Está posición o índice será siempre un número entero positivo.

En C la cantidad de elementos que podrá contener un vector es fijo, y en principio se define

cuando se declara el vector. Los vectores se pueden declarar de la siguiente forma:

tipo_elemento nombre[largo];

Esto declara la variable nombre como un vector de tipo_elementos que podrá

contener largo cantidad de elementos, y cada uno de estos elemento podrá contener un valor

de tipotipo_elemento.

Por ejemplo:

double valores[128];

En este ejemplo declaramos un vector de 128 elementos del tipo double, los índices de los

elementos irían entre 0 (para el primer elemento y 127 para el último).

De la misma forma que con las otras declaraciones de variables que hemos visto se le puede

asignar un valor iniciar a los elementos.

O también se pueden declarar:

tipo_elemento nombre[largo]={valor_0, valor_1, valor_2};

En caso estamos asignandole valores a los primeros 3 elementos del vector nombre. Notar

que largo debe ser mayor o igual a la cantidad de valores que le estamos asignando al vector,

en el caso de ser la misma cantidad no aporta información, por lo que el lenguaje nos permite

escribir:

Page 11: Programacion en lenguaje C

11

tipo_elemento nombre[]={valor_0, valor_1, valor_2};

Que declarará nombre como el vector de largo 3.

Para acceder a un elemento accederemos a través de su posición. Es decir:

tipo_elemento elemento;

...

elemento = nombre[2];

Asumiendo que tenemos el vector anterior definido estaríamos

guardando valor_2 en elemento.

Metodo de Burbuja (Buble Sort)

El método de ordenamiento de burbuja, es un algoritmo que se aplica para poder ordenar una

cantidad de datos ya sea de forma ascendente o descendente.

Es el algoritmo más fácil de implementar, pero a cambio pagamos un alto precio en

procesamiento, ya que este método evalúa una cantidad los datos muchas veces y en

ocasiones innecesariamente (como por ejemplo cuando son iguales).

Por medio de este método podremos ordenar array, estructuras y cualquier tipo de dato NO

atómico (es decir que se pueda dividir)

ORDENACIÓN POR EL MÉTODO DE LA BURBUJA

Este método consiste en acomodar el vector moviendo el mayor hasta la última casilla

comenzando desde la casilla cero del vector hasta haber acomodado el número más grande el

la última posición, una vez acomodado el más grande, prosigue a encontrar y acomodar el

siguiente más grande comparando de nuevo los números desde el inicio del vector, y así sigue

hasta ordenar todo los elementos el arreglo. Este algoritmo es muy deficiente ya que al ir

comparando las casillas para buscar el siguiente más grande, éste vuelve a comparar las ya

ordenadas. A pesar de ser el algoritmo de ordenamiento más deficiente que hay, éste es el

más usado en todos los lenguajes de programación.

FUNCIONES CON MATRICES

Las matrices se declaran de forma análoga, con corchetes independientes para cada subíndice

DIAGONALES DE UNA MATRIZ CUADRADA

Se llama matriz cuadrada a la que tiene tantas filas como columnas.

Las matrices A y B que las acabas de estudiar son cuadradas porque tienen tantas filas como

columnas.

Page 12: Programacion en lenguaje C

12

Estas matrices tienen dos diagonales llamadas principal y secundaria.

En el ejemplo que tienes debajo ves una matriz cuadrada (4 filas y 4 columnas).

Los elementos señalados con la línea roja componen ladiagonal principal.

Son los que ocupan los lugares (1 1),(2 2),(3 3) y (4 4):

Los elementos señalados con la línea azul componen la diagonal secundaria.

Son los que ocupan los lugares (1 4),(2 3),(3 2) y (4 1).

Para declarar una matriz de tipo entero

Int matriz[10][10];

Pasos para ingresar una matriz

fila=10;

col=10;

for(i=1;i<=lim;i++)

{

for(j=1;j<=lim;j++)

{

gotoxy(10,8);printf("matriz");

gotoxy(col,fila);printf(" ");

Page 13: Programacion en lenguaje C

13

gotoxy(col,fila);scanf("%d",&matriz[i][j]);

col=col+5;

}

fila++;

col=10;

}

Pasos para visualizar una matriz

fila=10;

col=10;

for(i=1;i<=lim;i++)

{

for(j=1;j<=lim;j++)

{

gotoxy(10,8);printf("matriz");

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

}

fila++;

col=10;

}

Pasos para encontrar la diagonal principal

for(i=1;i<=limite;i++)

{

for(j=1;j<=limite;j++)

{

if(i==j)

Page 14: Programacion en lenguaje C

14

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

fila++;

}

}

}

Pasos para encontrar la diagonal secundaria

for(i=1;i<=limite;i++)

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

j=j-1;

col=col-5;

fila=fila+1;

}

EJEMPLO:

Diseñe un programa utilizando funciones que me permita generar números pares en la

diagonal principal y números impares en la diagonal secundaria, e imprimir los números

correspondientes en la mitad.

Análisis

Para generar números pares

p=p+2;

Para generar números impares

b=b+2;

Condición para visualizar

if(i==a || j==a)

gotoxy(col-1,fila);printf("%d",matriz[i][j]);

Page 15: Programacion en lenguaje C

15

Codificación

#include<conio.h> Librerías principales

#include<stdio.h>

int matriz[20][20],op,fila,col,i,j,lim,c,fac,p,i,b,a;

void borde()

{

for(i=1;i<=80;i++)

{

gotoxy(i,1);printf("/");

gotoxy(i,24);printf("*");

}

for(i=1;i<=24;i++) Función de borde

{

gotoxy(1,i);printf("*");

gotoxy(80,i);printf("*");

}

}

void cero(int limite)

{

fila=10;col=10;

for(i=1;i<=limite;i++)

{

for(j=1;j<=limite;j++)

{

matriz[i][j]=0; Función para llenar de cero la matriz

gotoxy(col,fila);printf("%d",matriz[i][j]);

Page 16: Programacion en lenguaje C

16

col=col+5;

}

col=10;

fila++;

}

}

void ingreso(int limite)

{

col=10;

fila=10;

p=2;

a=limite/2;

a=a+1;

for(i=1;i<=limite;i++)

{

for(j=1;j<=limite;j++)

{

if(i==j) Función de ingreso

{

matriz[i][j]=p;

if(i==a || j==a)

{

gotoxy(col-1,fila);printf("%d",matriz[i][j]);

col=col+5;

p=p+2;

Page 17: Programacion en lenguaje C

17

fila++;

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

fila=fila+1;

p=p+2;

}

}

else

{

matriz[i][j]=0;

}

}

}

j=limite; Proceso de programa

b=1;

col=col-5;

fila=10;

for(i=1;i<=limite;i++)

{

matriz[i][j]=b;

gotoxy(col,fila);printf("%d",matriz[i][j]);

j=j-1;

Page 18: Programacion en lenguaje C

18

col=col-5;

fila=fila+1;

b=b+2;

j=j-1;

}

}

void principal(int limite)

{

col=40;

fila=10;

p=2;

a=limite/2;

a=a+1;

if(limite%2==0)

{

for(i=1;i<=limite;i++)

{

for(j=1;j<=limite;j++) Función Diagonales

{

if(i==j)

{

matriz[i][j]=p;

if(i==a || j==a)

{

gotoxy(col-1,fila);printf("%d",matriz[i][j]);

col=col+5;

p=p+2;

Page 19: Programacion en lenguaje C

19

fila++;

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

fila=fila+1;

p=p+2;

}

}

}

}

}

else

{

for(i=1;i<=limite;i++)

{ Proceso del programa

for(j=1;j<=limite;j++)

{

if(i==j)

{

matriz[i][j]=p;

if(i==a || j==a)

{

gotoxy(col-1,fila);printf("%d",matriz[i][j]);

col=col+5;

p=p+2;

Page 20: Programacion en lenguaje C

20

fila++;

}

else

{

gotoxy(col,fila);printf("%d",matriz[i][j]);

col=col+5;

fila=fila+1;

p=p+2;

}

}

}

}

}

}

void secundaria(int limite)

{

j=limite;

b=1;

col=col-5;

fila=10;

for(i=1;i<=limite;i++) Función secundaria

{

matriz[i][j]=b;

gotoxy(col,fila);printf("%d",matriz[i][j]);

j=j-1;

col=col-5;

fila++;

Page 21: Programacion en lenguaje C

21

b=b+2;

}

}

void main()

{

do{

clrscr();

borde();

gotoxy(20,2);printf("Generar diagonales de la matriz");

gotoxy(10,4);printf("Ingrse el imite: ");scanf("%d",&lim);

cero(lim);

ingreso(lim); Programa principal

principal(lim);

secundaria(lim);

gotoxy(10,22);printf("Presione 1 para continuar o 0 para salir:

");scanf("%d",&op);

}while(op==1);

getch();

}

Page 22: Programacion en lenguaje C

22

Page 23: Programacion en lenguaje C

23

Bibliografía:

Funcione con vectores y matrices en c

www.slideshare.net

www.google.com.ec

Programar en C, Matrices, arrays.. Ingeniería Informática

www.todoexpertos.com

Programación en C/Matrices Dinamicas - Wikilibros

es.wikibooks.org

Array bidimensional o matriz

icaro.eii.us.es

ORDENACIÓN POR EL MÉTODO DE LA BURBUJA

www.estructuradedatos.galeon.com

Ordenamiento de burbuja - Wikipedia, la enciclopedia libre

es.wikipedia.org

Programación en C/Fundamentos de programación - Wikilibros

es.wikibooks.org

Programación en C/Uso de funciones - Wikilibros

es.wikibooks.org

Programación en C/Algoritmos y Estructuras de Datos - Wikilibros

es.wikibooks.org

Programación en C/Introducción - Wikilibros

es.wikibooks.org

Programación en C/Estructuras y Uniones - Wikilibros

es.wikibooks.org

Categoría:Programación en C - Wikilibros

es.wikibooks.org

Plataforma Educativa Informática: Entrar al sitio

Page 24: Programacion en lenguaje C

24

www.josedomingo.org

C: Manual de C

www.josedomingo.org

Vector - Wikipedia, la enciclopedia libre

es.wikipedia.org

Vectores - Monografias.com

www.monografias.com

Curso: Lenguaje de Programación C

www.josedomingo.org

Arreglos - Vectores en C

www.slideshare.net

C: Vectores y matrices

www.josedomingo.org

Vectores, Matrices y Punteros en c++ | Imaginemos un mundo libre

ronnyml.wordpress.com

Programación en C/Vectores - Wikilibros

es.wikibooks.org

Arreglos - Vectores en C

www.slideshare.net

ww.casdreams.com

Lenguaje de programación C: Concepto, principios… | Blog Informático

www.bloginformatico.com

lenguaje c concepto - Buscar con Google

www.google.com.ec

Lenguaje programación Estructurado

html.rincondelvago.com

www.google.com.ec