34
17 de Septiembre de 2019 Curso básico de Lenguaje C Germán Ignacio Cervantes González UNAM - FACULTAD DE CONTADURÍA Y ADMINISTRACIÓN

Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

17 de Septiembre de 2019

Curso básico de Lenguaje C

Germán Ignacio Cervantes GonzálezUNAM - Facultad de contaduría y administración

Page 2: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

ContenidoIntroducción_________________________________________________________________________2

Bibliotecas___________________________________________________________________________2

Características Relevantes______________________________________________________________2

1. Mi primer programa en Lenguaje C (Baby Steps)__________________________________2

2. Ventajas y Desventajas de programar en Lenguaje C (¿Para qué lo uso?)______________3

Ventajas____________________________________________________________________________3

Desventajas__________________________________________________________________________4

Uso de lenguaje C_____________________________________________________________________4

3. IDE (El bonito ambiente de desarrollo)__________________________________________4

Notepad ++__________________________________________________________________________5

Dev C ++____________________________________________________________________________5

Linux (vim)__________________________________________________________________________5

4. Sintaxis y estructura de un programa en C (Si quieres que te entienda, escribe bien)_____5

¿Cómo se organiza un programa?________________________________________________________5

Mi primer programa en Lenguaje C_______________________________________________________5

Identificadores_______________________________________________________________________7

Palabras reservadas___________________________________________________________________7

Tipos de datos________________________________________________________________________8

Variables____________________________________________________________________________9

Constantes__________________________________________________________________________9

Bibliotecas__________________________________________________________________________10

Operadores_________________________________________________________________________12

Estructuras de control condicionales_____________________________________________________15

Estructuras Cíclicas___________________________________________________________________18

Funciones__________________________________________________________________________19

Page 3: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

IntroducciónC es un lenguaje de programación de propósito general originalmente desarrollado por

Dennis Ritchie entre 1969 y 1972, está orientado a la implementación de sistemas

operativos, concretamente para UNIX.

Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio nivel”

(alto nivel). El lenguaje que define este estándar fue conocido como ANSI C (1989),

después con el ISO (1990) se hizo más popular por la portabilidad entre plataformas.

(Wikipedia: Lenguaje C, s.f.)

Bibliotecas Una biblioteca de C es una colección de funciones utilizadas en el lenguaje de

programación C. La más común es la biblioteca estándar (stdio.h), que incluye funciones

para la entrada y salida de archivos, alojamiento de memoria y operaciones con datos

comunes: funciones matemáticas, funciones de manejo de cadenas de texto y funciones

de hora y fecha. Muchas bibliotecas de otros lenguajes de programación están escritas en

C. (Wikipedia: Lenguaje C, s.f.)

Características Relevantes Fácil de aprender Lenguaje estructurado Produce programas eficientes Puede manejar actividades de “bajo nivel” Se puede compilar en gran variedad de arquitecturas de computadoras

1. Mi primer programa en Lenguaje C (Baby Steps)

Un programa en C consiste en:

Comandos del preprocesador Funciones Variables Instrucciones y Expresiones Comentarios

Page 4: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

En el programa anterior:

La primera línea del programa #include <stdio.h> es un comando del preprocesador, que le dice a un compilador de C que incluya el archivo stdio.h antes de ir a la compilación real.

La siguiente línea int main () es la función principal donde comienza la ejecución del programa e indica que la función devolverá un entero y que no recibe ningún parámetro.

La siguiente línea /*...*/ será ignorada por el compilador y se ha agregado para poner un bloque de comentarios al programa.

La siguiente línea printf (...) es otra función disponible en C que causa el mensaje "¡Hola, mundo!" para ser exhibido en la pantalla.

La siguiente línea, return 0; termina la función main () y devuelve el valor 0.

2. Ventajas y Desventajas de programar en Lenguaje C (¿Para qué lo uso?)

Ventajas Es altamente portable. Es relativamente sencillo de programar y fácil de aprender. Un sistema de tipos, lo que hace más claro el uso de las variables y el que no se

usen operaciones extrañas. Se utilizan apuntadores para realizar acceso a la memoria. Se pueden llamar funciones que sirven del enlace con el núcleo del sistema

operativo. Se pueden pasar parámetros a las funciones por valor o por referencia.

Page 5: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

El hecho de que se puedan hacer llamadas de bajo nivel ayuda a optimizar los programas.

El compilador de C se ha portado a casi todos los sistemas operativos conocidos. Permite la programación modular ya que se pueden incluir programas compilados

separadamente.

Desventajas No es un lenguaje visual por lo que no puede ser deducido de forma intuitiva como

Visual Basic. Las variables no pueden utilizarse con diferentes tipos de datos, sólo se les puede

asignar el tipo con el que fueron declaradas. De forma nativa carece de funciones que permitan la programación multihilo, hay

que utilizar bibliotecas adicionales. No cuenta con instrucciones que permitan la programación orientada a objetos.

Uso de lenguaje C

Muchos de los programas de software libre más populares están escritos en éste

lenguaje, como el sistema operativo Linux (kernel) o manejadores de bases de datos

como MariaDB.

Los programadores principiantes deben de tener cuidado con la gestión de memoria, ya

que se puede reservar y liberar memoria explícitamente, pero características como ésta

que tiene Lenguaje C, es muy útil para escribir controladores de hardware.

C es un lenguaje muy común para programar sistemas embebidos. El código ligero que

un compilador C genera, combinado con la capacidad de acceso a capas del software

cercanas al hardware son la causa de su popularidad en estas aplicaciones.

Otros usos:

Compiladores para otros lenguajes. Intérpretes para otros lenguajes. Editores de Texto Diferentes tipos de programas que tienen buen desempeño Utilidades del sistema operativo

Page 6: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

3. IDE (El bonito ambiente de desarrollo)

En inglés Integrated Development Environment (IDE), es una aplicación informática que

proporciona servicios integrales para facilitarle al desarrollador o programador el

desarrollo de software.

Normalmente, un IDE consiste de un editor de código fuente, herramientas de

construcción automáticas y un depurador. La mayoría de los IDE tienen auto-completado

inteligente de código (IntelliSense). Algunos IDE contienen un compilador, un intérprete, o

ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus.

(Wikipedia: IDE, s.f.)

Notepad ++Es solamente un editor de texto, para compilar necesitamos otra herramienta.

Dev C ++Es un entorno de programación, cuenta con editor, compilador y otras herramientas como

depurador.

Linux (vim)En Linux generalmente se utilizan una serie de programas que se ejecutan en una

terminal por medio de comandos.

4. Sintaxis y estructura de un programa en C (Si quieres que te entienda, escribe bien)

¿Cómo se organiza un programa?1. Declaraciones para el preprocesador.2. Declaración de variables Globales.3. Declaración de funciones.4. Declaración de programa principal.5. En cualquier parte del programa pueden ir uno o más comentarios.

Mi primer programa en Lenguaje C

Page 7: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio
Page 8: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

IdentificadoresVariables: las variables son espacios reservados en la memoria que, como su nombre

indica, pueden cambiar de contenido a lo largo de la ejecución de un programa, es decir,

pueden ser manipuladas en el programa.

Funciones: Las funciones se crearon para evitar tener que repetir constantemente

fragmentos de código. Se presenta como una subrutina (procedimiento) que forma parte

del programa principal, el cual permite resolver una tarea específica; además nos permite

organizar mejor nuestro programa.

Es un nombre utilizado para identificar una variable, función o cualquier otro elemento

definido por el usuario. Un identificador comienza con una letra A a la Z, una a la z, o un

guion bajo '_' seguido de cero o más letras, guiones bajos y dígitos (0 a 9).

C no permite caracteres de puntuación como @, $ y% dentro de los identificadores. C es

un lenguaje de programación sensible a mayúsculas y minúsculas. Ejemplos:

mohd zara abc move_name a_123myname50 _temp j a23b9 retVal

El punto y coma se utiliza para terminar una instrucción.

Palabras reservadasauto else long switch

break enum register typedef

case extern return union

char float short unsigned

const for signed void

continue goto sizeof volatile

default if static while

do int struct _Packed

Page 9: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

double

Tipos de datosTipo Entero

Tipo Espacio Rango de valores

char 1 byte -128 to 127 or 0 to 255

unsigned char 1 byte 0 to 255

signed char 1 byte -128 to 127

int 2 or 4 bytes -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647

unsigned int 2 or 4 bytes 0 to 65,535 or 0 to 4,294,967,295

short 2 bytes -32,768 to 32,767

unsigned short 2 bytes 0 to 65,535

long 8 bytes -9223372036854775808 to 9223372036854775807

unsigned long 8 bytes 0 to 18446744073709551615

Tipo flotante

Tipo Espacio Rango de Valores Precisión

float 4 byte 1.2E-38 to 3.4E+38 6 decimales

double 8 byte 2.3E-308 to 1.7E+308 15 decimales

long double 10 byte 3.4E-4932 to 1.1E+4932 19 decimales

Page 10: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Tipo Void

Especifica que ningún valor está disponible (ausencia de valor)

Se usa en 3 situaciones:

1. Una función que regresa void.2. Como argumento de función.3. Un apuntador a una dirección de memoria que no tiene un tipo de dato en

específico.

Los tipos de datos que más se usan son: char, int, float, double, void.int i, j, k;char c, ch;float f, salary;double d;

Asignaciones enteras212 /* Entero */0x4b /* Hexadecimal */

Delcaración flotante3.14159 /* Legal */314159E-5L /* Legal */

Caracteres especiales\t /* Tabulador */

\n /* Salto de línea */

Cadenas“Soy el rayo que no cesa”;

Variablesint d = 3, f = 5;byte z = 22; char x = 'x';

Constantes#define TAM 10

const int TAM = 10;

Page 11: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

BibliotecasBiblioteca Descripción

<assert.h> Contiene la macro assert (aserción), utilizada para detectar errores

lógicos y otros tipos de fallos en la depuración de un programa.

<complex.h> Conjunto de funciones para manipular números complejos (nuevo en

C99).

<ctype.h> Contiene funciones para clasificar caracteres según sus tipos o para

convertir entre mayúsculas y minúsculas independientemente

del conjunto de caracteres (típicamente ASCII o alguna de sus

extensiones).

<errno.h> Para analizar los códigos de error devueltos por las funciones de

biblioteca.

<fenv.h> Para controlar entornos en coma flotante (nuevo en C99).

<float.h> Contiene la definición de constantes que especifican ciertas

propiedades de la biblioteca de coma flotante, como la diferencia

mínima entre dos números en coma flotante (_EPSOLON), el número

Page 12: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

máximo de dígitos de precisión (_DIG), o el rango de valores que se

pueden representar (_MIN, _MAX).

<inttypes.h> Para operaciones de conversión con precisión entre tipos enteros

(nuevo en C99).

<iso646.h> Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).

<limits.h> Contiene la definición de constantes que especifican ciertas

propiedades de los tipos enteros, como rango de valores que se

pueden representar (_MIN, _MAX).

<locale.h> Para la función setlocale() y las constantes relacionadas. Se utiliza para

seleccionar el entorno local apropiado (configuración regional).

<math.h> Contiene las funciones matemáticas comunes.

<setjmp.h> Declara las macros setjmp y longjmp para proporcionar saltos de flujo

de control de programa no locales.

<signal.h> Para controlar algunas situaciones excepcionales como la división por

cero.

<stdarg.h> Posibilita el acceso a una cantidad variable de argumentos pasados a

una función.

<stdbool.h> Para el tipo booleano (nuevo en C99).

<stdint.h> Para definir varios tipos enteros (nuevo en C99).

<stddef.h> Para definir varios tipos de macros de utilidad.

<stdio.h> Proporciona el núcleo de las capacidades de entrada/salida del

lenguaje C (incluye la venerable función printf).

<stdlib.h> Para realizar ciertas operaciones como conversión de tipos, generación

de números pseudo-aleatorios, gestión de memoria dinámica, control

de procesos, funciones de entorno, de señalización, de ordenación y

búsqueda.

<string.h> Para manipulación de cadenas de caracteres.

<tgmath.h> Contiene funcionalidades matemáticas de tipo genérico (type-generic)

(nuevo en C99).

<time.h> Para tratamiento y conversión entre formatos de fecha y hora.

<wchar.h> Para manipular flujos de datos anchos y varias clases de cadenas de

caracteres anchos (2 o más bytes por carácter), necesario para

soportar caracteres de diferentes idiomas (nuevo en NA1).

<wctype.h> Para clasificar caracteres anchos (nuevo en NA1).

(Wikipedia: Archivos de cabeceras de la biblioteca ANSI C, s.f.)

Page 13: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

OperadoresAritméticos

En los ejemplos A=10 y B=20.

Operadores

Descripción Ejemplo

+ Suma dos operandos. A + B = 30

− Resta el segundo operando del primero. A − B = -10

* Multiplica dos operandos. A * B = 200

/ Divide el numerador por el denominador. B / A = 2

% Módulo de una división entera. B % A = 0

++ Aumenta un valor entero en 1. A++ = 11

-- Disminuye un valore entero en 1. A-- = 9

Imagen que nos representa la operación módulo de 12

Page 14: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

RelacionalesEn los ejemplos A=10 y B=20.

Operadores Descripción Ejemplo

== Comprueba si los valores de dos operandos son iguales o

no. Si es así, entonces la condición es vuelve verdadera.

(A == B)

Verdadero

!= Comprueba si los valores de los dos operandos son

iguales o no. Si los valores no son iguales, entonces la

condición es verdadera..

(A != B)

Falso

> Comprueba si el valor del operando izquierdo es mayor

que el valor del operando derecho. Si es así, entonces la

condición es verdadera.

(A > B)

Falso

< Comprueba si el valor del operando izquierdo es menor que

el valor del operando derecho. Si es así, entonces la

condición es verdadera.

(A < B)

Verdadero

>= Comprueba si el valor del operando izquierdo es mayor o

igual que el valor del operando derecho. Si es así, entonces

la condición es verdadera.

(A >= B)

Falso

<= Comprueba si el valor del operando izquierdo es menor o

igual que el valor del operando derecho. Si es así, entonces

la condición es verdadera.

(A <= B)

Verdadero

LógicosEn los ejemplos A=1 y B=0. (0 en Lenguaje C significa falso, cualquier número diferente a

0 significa verdadero).

Operador Descripción Ejemplo&& Llama al operador lógico AND. Si ambos operandos son distintos de cero,

la condición se vuelve verdadera.(A && B) es falso.

|| Llama al operador lógico OR. Si alguno de los dos operandos es distinto de cero, la condición se vuelve verdadera.

(A || B) es verdadero.

! Llama al operador lógico NOT. Se utiliza para revertir el estado lógico de su operando. Si una condición es verdadera, entonces el operador lógico

! (A && B) es

Page 15: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

NOT la vuelve falsa. verdadero.

Se usan paréntesis para agrupar operadores.

Operadores de bits

Operador

Descripción Ejemplo

& El operador binario AND copia un bit al resultado si existe en ambos operandos.

(A & B) = 12, i.e., 0000 1100

| El operador binario OR copia un bit al resultado si existe en alguno de los operandos.

(A | B) = 61, i.e., 0011 1101

^ El operador binario XOR copia el bit si se establece en un operando pero no en ambos.

(A ^ B) = 49, i.e., 0011 0001

~ El operador complemento intercambia los bits; es decir de 0 a 1 o de 1 a 0.

(~A ) = ~(60), i.e,. -0111101

<< Operador binario de desplazamiento a la izquierda. El valor de los operandos de la izquierda se mueve hacia la izquierda por la cantidad de bits especificados por el operando de la derecha.

A << 2 = 240 i.e., 1111 0000

>> Operador binario de desplazamiento a la derecha. El valor de los operandos de la izquierda se mueve hacia la derecha por la cantidad de bits especificados por el operando de la derecha.

A >> 2 = 15 i.e., 0000 1111

Operador Descripción Ejemplo

= Operador de asignación simple. Asigna valores de operandos del lado derecho al operando del lado izquierdo

C = A + B asignará el valor de A + B a C

+= Agrega el operando derecho al operando izquierdo y asigna el resultado al operando izquierdo.

C + = A es equivalente a C = C + A

- = Resta el operando derecho del operando izquierdo y asigna el resultado al operando izquierdo.

C - = A es equivalente a C = C - A

* = Multiplica el operando derecho con el operando C * = A es equivalente a C = C * A

Page 16: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

izquierdo y asigna el resultado al operando izquierdo.

/ = Divide el operando izquierdo con el operando derecho y asigna el resultado al operando izquierdo.

C / = A es equivalente a C = C / A

%= Calcula el módulo usando dos operandos y asigna el resultado al operando izquierdo.

C% = A es equivalente a C = C% A

<< = Operador de asignación, desplazamiento a la izquierda.

C << = 2 es lo mismo que C = C << 2

>> = operador de asignación, desplazamiento a la derecha.

C >> = 2 es lo mismo que C = C >> 2

& = Operador de asignación AND. C & = 2 es lo mismo que C = C & 2

^= Operador de asignación XOR. C ^ = 2 es lo mismo que C = C ^ 2

|= Operador de asignación OR C | = 2 es lo mismo que C = C | 2

Cambiar el programa de la calculadora, utilizando éstos operadores.

Estructuras de control condicionalesIf

Sintaxis:

if( expresión_lógica ) { /* Bloque de instrucciones que se ejecutarán si la expresión es verdadera */}

Completar Ejemplo.

If …else

Sintaxis:

if( expresión_lógica ) { /* Bloque de instrucciones que se ejecutarán si la expresión es verdadera */} else { /* Bloque de instrucciones que se ejecutarán si la expresión es falsa */}

Completar Ejemplo.

If… else… if

Page 17: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Sintaxis

if( expresión_condicional_1 ) {

/* Si la expresión 1 es verdadera */

}else{ /* Si la expresión 1 es falsa */ if( expresión_condicional_2 ) {

/* Si la expresión 2 es verdadera */ }else{

. . .

}

}

De acuerdo a la siguiente línea, define las etapas del desarrollo humano, revisa el

programa EstructuraSiNoSi.c.

https://www.etapasdesarrollohumano.com/

Operador Ternario “? ..:”

Page 18: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Switch

Page 19: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Estructuras CíclicasWhile

while(condición_Lógica_y/o_relacional) { Intrucciones;

}

Mientras se cumpla la condición realizara las instrucciones.

For

for ( inicialización; condición; Incremento ) { Instrucciones;}

Meintras de compla la condición se incrementa la variable

Page 20: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Do while

do { Instrucciones;} while( condición );

Modifica la calculadora para que utilice un do while.

Ciclos Anidados

for ( inicialización; condición; Incremento ) { Instrucciones; for ( inicialización; condición; Incremento ) { Instrucciones; }

}

Funcionestipo_devuelto NombreFunción( lista_parámetros ) { cuerpo_función}

Page 21: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Creando una biblioteca.

Creamos un nuevo proyecto

Vamos a crear 3 archivos

MiCalculadora.c

mibib.c

mibib.h

Paso de valores por referencia

Intercambio de variables

#include <stdio.h>

void intercambio(float *x, float *y) {

float temp=0;

temp = *x; printf("TEMP vale: %f\n",temp); *x = *y; *y = temp; return;} int main () {

float a = 100; float b = 200; printf("Antes del intercambio,valor de a: %f\n", a ); printf("Antes del intercambio, valor de b: %f\n", b ); intercambio(&a, &b); printf("Después del intercambio, valor de a: %f\n", a ); printf("Después del intercambio, valor de b: %f\n", b ); return 0;}

Page 22: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

Alcance de Variables Globales Locales

Arreglos

tipo nombre_arreglo [ tamaño ];

double precios[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

precio[4] = 50.0;

#include <stdio.h> int main () {

int n[ 10 ]; int i,j;

for ( i = 0; i < 10; i++ ) { n[ i ] = i + 100; } for (j = 0; j < 10; j++ ) { printf("Element[%d] = %d\n", j, n[j] ); } return 0;}

Page 23: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

#include <stdio.h> int main () {

int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}}; int i, j;

for ( i = 0; i < 5; i++ ) {

for ( j = 0; j < 2; j++ ) { printf("a[%d][%d] = %d\n", i,j, a[i][j] ); } } return 0;}

Cadenas

Formas de declarar

char saludo[5] = {'H', 'o', 'l', 'a', '\0'};

char saludo[] = "Hola";

Page 24: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

#include <stdio.h>

int main () {

char saludo[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; printf("Saludo: %s\n", greeting ); return 0;}

ApuntadoresUn apuntador es una dirección en memoria que hace referencia a un espacio de

almacenamiento (variable, arreglo o estructura) o hace referencia a NULO; es decir, no

apunta a ningún espacio.

Declaraciones

int *ip; /* Apuntador a un entero */double *dp; /* Apuntador a un flotante doble */float *fp; /* Apuntador a flotante */char *ch /* Apuntador a a caracter */

#include <stdio.h>

int main () {

int var = 20; /* Declaración de una variable */ int *ip; /* Apuntador a una variable entera */

ip = &var; /* Guardamos la dirección de memoria en donde se almacena la variable var*/

printf("La dirección de memoria de la variable var es: %x\n", &var );

/* La dirección guardada en el apuntador es */ printf("Dirección de memoria guardada en la variable de apuntador: %x\n", ip );

/* Accedemos a lo que está almacenado en var por medio del apuntador */ printf("Valor de es espacio al que apunta *ip: %d\n", *ip );

return 0;}

Page 25: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

#include <stdio.h>

int main () {

int *ptr = NULL;

printf("Apuntador a Nada : %x\n", ptr ); return 0;}

RecursiónFunción que se llama a sí misma.

#include <stdio.h>

int factorial(int i) {

if(i <= 1) { return 1; } return i * factorial(i - 1);}

int main() { int i = 12; printf("Factorial de %d is %d\n", i, factorial(i)); return 0;}

Page 26: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio

#include <stdio.h>

int fibonacci(int i) {

if(i == 0) { return 0; }

if(i == 1) { return 1; } return fibonacci(i-1) + fibonacci(i-2);}

int main() {

int i; printf("Serie de Fibonacci:\n"); for (i = 0; i < 10; i++) { printf("%d\t\n", fibonacci(i)); }

return 0;}

Page 27: Curso básico de Lenguaje Cdocencia.fca.unam.mx/~gcervantes/C/Apuntes_Lenguaje_C.docx · Web viewSe trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de “medio