PDF de programación - Lenguaje C

Imágen de pdf Lenguaje C

Lenguaje Cgráfica de visualizaciones

Publicado el 5 de Abril del 2019
1.416 visualizaciones desde el 5 de Abril del 2019
2,6 MB
51 paginas
Creado hace 12a (22/11/2011)
Lenguaje C
Lenguaje C

Ignacio Alvarez García

Octubre - 2006

Indice

Introducción al lenguaje C

Datos y su almacenamiento

Operadores y expresiones

Sentencias de control de programa

Tablas y punteros

Asignación dinámica de memoria

Funciones

Nuevos tipos definidos por el programador

Funciones de librería estándar

E/S por stream

El preprocesador

1

Introducción al lenguaje C

Lenguaje de nivel medio

Características de alto nivel: tipado, estructurado (no totalmente),

altamente portable (estándar ANSI-C).

Características de bajo nivel: acceso a bits, bytes y direcciones;

lenguaje no seguro.

Diseñado para programadores de sistemas

Lenguaje de programación adaptable a múltiples escenarios

Un repaso rápido al C

Forma típica de un programa en C

#include <stdio.h>
#include <stdlib.h>

#define TAM_TABLA

5

int Factorial(int n)
{

int i,result;
for (i=1,result=1;i<=n;i++)

result=result*i;

return result;

}

main()
{

int i;
int x[TAM_TABLA],fact[TAM_TABLA];

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

Directivas de preprocesador

Declaración variables globales (evitar si es posible)

Función

Función principal

printf("Introduzca x[%d] = ",i);
scanf("%d",&x[i]);
fact[i]=Factorial(x[i]);
printf("El factorial de %d es %d\n",x[i],fact[i]);

}

}

2

Un repaso rápido al C

Contenidos de una función
Parámetros

Nombre (identificador)

tipoDvto NombreFuncion(tipo1 param1,tipo2 param2,...)
{

tipoA varlocalA;
tipoB varlocalB1,varlocalB2,varlocalB3[10];
tipoC varlocalC=valorInicial;

Cabecera

Declaración variables locales

sentencias a ejecutar terminadas en ;

Código de la función

return resultado;

}

Una función es una caja negra

Entradas
(parámetros)

Función
Código
Vbles
locales

Salida (valor devuelto)

Un repaso rápido al C

Tipos básicos de variables:

int (entero): 3, -117, 0
char (carácter): ‘a’ ‘b’ ‘c’
float (real): 3.17, -0.000035, 2.0

Declaración de variables (terminan en ; ):

int cuenta;
/* Variable tipo entero */
int num_alumnos=23; /* Id. con valor inicial 23 */
int valorx,valory,valorz; /* Tres variables enteras */
int datos[5];

/* Cinco variables enteras
consecutivas (tabla o array) */

3

Un repaso rápido al C

Sentencias y expresiones:

Todas las sentencias terminan en ;
Expresión: todo o parte de una sentencia en la que

intervienen operandos y operadores para dar un resultado.
Operandos: valores de variables, constantes y resultados

de función

Operadores: aritméticos (+ - * / … ), relacionales (>= <= ==

!= …), de asignación (=), paréntesis, etc.

Asignación: operador que modifica el contenido de una

variable

Ejemplos de expresiones:

y = 2*x + tabla[4]*Factorial(x-1);
x-5;
Condicion=(z>=3 && z<=5);

Un repaso rápido al C

Sentencias de control de programa

Bloque:

{

}

sentencia1;
sentencia2;


Alternativa:

if (condicion)

sentenciaSiTRUE;

else

sentenciaSiFALSE;

Bucle while:

while (condicion)

sentenciaARepetir;

Bucle for:

condicion = valor entero :

0 ≡ Falso
No 0 ≡ Verdadero

Sentencia se puede
sustituir por un bloque

for (inicializacion ; condicion_continuidad ; paso )

sentenciaARepetir;

4

Un repaso rápido al C

Punteros:

Puntero: contiene la dirección de memoria donde se aloja una

variable, y el tipo de la misma. Permite acceder a esa posición de
forma indirecta.

Declaración:

tipo *puntero;

Acceso a dirección apuntada:

*puntero

Obtención de dirección de vble:

&vble
Ejemplo:

int x=5,y=27;
int *pt;
pt = &x;
*pt = 50 ; // x pasa a valer 50
pt = &y;
*pt = 50 ; // y pasa a valer 50

Memoria

pt

3000

. . .

5

27

x

y

3000

3010

Un repaso rápido al C

Tablas:

Conjunto de variables almacenadas en memoria
de forma consecutiva con un identificador único.

Declaración:

tipo identif[TAM];

TAM debe ser constante
Acceso al elemento i-simo:

identif[i]

int tabla[5] ;
int* pt;

tabla

pt=tabla;

tabla[3] ”

” *(pt+3) ”
” pt[3]

pt

La tabla y el puntero, tras la declaración, son
equivalentes: el identificador de tabla es un
puntero (constante), o un puntero se puede
utilizar como una tabla

5









Un repaso rápido al C

Cadenas de caracteres:

Son tablas de char terminadas en el valor 0

(carácter nulo).

Almacenan secuencias de caracteres de texto

codificadas en ASCII (ejemplos: ‘H’ ≡ 72,
‘o’ ≡ 111, ‘\n’ ≡ 10 ≡ retorno de carro).

Constantes tipo cadena: “texto” (incluye carácter

nulo)

char texto[5] = “Hola”;

texto

72
111
108
97
0

texto[0]
texto[1]

texto[4]

Un repaso rápido al C

Funciones de Entrada / Salida por consola:

putchar(char c); Escribe carácter cuyo código ASCII es c
char getchar(); Espera pulsación de carácter (+INTRO) y

devuelve su código ASCII

puts(char* cad); Escribe cadena (todos los caracteres

hasta el nulo)

gets(char* cad); Espera pulsación de secuencia de

caracteres (+INTRO) y almacena sus
códigos ASCII en la tabla apuntada por cad

printf(char* fmt,…); Escribe cadena con formato
scanf(char* fmt,…);Espera pulsación de datos con formato

6

Un repaso rápido al C

Funciones de Entrada / Salida por consola:

printf(char* fmt,valor1,valor2,…);

Escribe en pantalla los caracteres de la cadena fmt, excepto
cuando aparece %ALGO. El %ALGO lo sustituye por el valor
correspondiente (por orden):

– %d: entero
– %f: real (float)
– %c: carácter
– %s: cadena de caracteres

Ejemplo:

int alumnos=12;
char estudios[13]=“Programación”;
printf(“Hay %d alumnos estudiando %s\n”,alumnos,estudios);

Hay 12 alumnos estudiando programación
_

Un repaso rápido al C

Funciones de Entrada / Salida por consola:

scanf(char* fmt,ptero_a_valor1,ptero_a_valor2,…);

Espera por teclado la pulsación de una secuencia de
caracteres terminada en INTRO. Una vez obtiene la
secuencia, va extrayendo valores en función de los %ALGO de la
cadena de formato y almacenando dichos valores en las
direcciones indicadas por los punteros:

Ejemplo:

int alumnos,grupos;
printf(“Introduzca nº de alumnos: ”);
scanf(“%d”,&alumnos);
grupos=alumnos/2;
printf(“Puedo hacer %d grupos de 2 alumnos”,grupos);

Introduzca nº de alumnos: 12
Puedo hacer 6 grupos de 2 alumnos_

7

Tipos de datos en lenguaje C

Enteros: Permiten almacenar valores numéricos enteros (o
conjuntos de datos representables por enteros). char, short,
int, long, todos elllos signed o unsigned.

Reales: Permiten almacenar valores numéricos fraccionarios.

float, double, long double.

Punteros: Permiten almacenar direcciones donde se

encuentran datos de otros tipos (incluidos punteros). Se indican
como tipo*.

Ningún tipo: No almacena nada. void.

Tipos de datos enteros

Enteros sin signo (sólo

positivos): codificación
ponderada en base 2 con el
nº de bits indicado en la
tabla de la diapositivia
siguiente.

Enteros con signo

(positivos y negativos):
positivos como los
anteriores, negativos con el
bit más significativo (MSB) a
1, indican valor en
complemento a 2.

decimal
sin signo

código binario

decimal
con signo

0
1
2
3
. . .

2n-1-2
2n-1-1
2n-1
2n-1+1
. . .

2n-3
2n-2
2n-1

000 …….. 000
000 …….. 001
000 …….. 010
000 …….. 011

. . .

011 …….. 110
011 …….. 111
100 …….. 000
100 …….. 000

. . .

111 …….. 101
111 …….. 110
111 …….. 111

0
1
2
3
. . .

2n-1-2
2n-1-1
-2n-1
-2n-1+1
. . .

-3
-2
-1

8

Tipos de datos enteros

Rango de los enteros

Nº bits

mín

Nº bits
VC++

Rango

sin signo

Rango

con signo

Mín (0) Máx (2n-1)

Mín (-2n-1) Máx (2n-1-1)

char

8

short

>=char

int

long

>char

>=short

>short
>=int

8

16

32

32

0

0

0

0

255

-128

127

65535

-32768

32767

4.294.967.295 -2.147.483.648 2.147.483.647

4.294.967.295 -2.147.483.648 2.147.483.647

Tipos de datos enteros

Operaciones con enteros
Suma positivos

Decimal

Binario

+

46

11

57

11

-11

--11

Suma con signo

Decimal

25+23+22+21

23+21+20

+

25+24+23+20

00101110

00001011

00111001

+

46

-11

35

25+21+20

Negación

Suma con signo

Decimal

00001011

(00001011)+1

+

11110101

6

-11

-5

(11110101)+1

0

00001011

Binario

00101110

11110101

+

1

00100011

Binario

00000110

11110101

+

0

11111011

9

Tipos de datos enteros

Cambio de tamaño de un dato entero

Operación realizada

Ejemplos

sin signo,

nº bits creciente

Ampliar con 0s a

la izquierda

12 (8 bits) = 00001100
12 (16 bits) = 0000000000001100

con signo,

Ampliar con bit de signo a

nº bits creciente

la izquierda

-11 (8 bits) = 11110101
-11 (16 bits) = 1111111111110101

ambos,

nº bits decreciente

Truncamiento de la

parte superior (puede

perderse el valor)

258 (16 bits) = 0000000100000010
2 (8 bits) = 00000010

Tipos de datos enteros

ALU para suma de enteros

Sumador de 1 bit

Tabla de verdad

a
0
0
1
1
0
0
1
1

s

a
b

cin

cout

s

ALU de 1 bit (+, -, AND, OR)

binv

cin

op

a

b

0

1

2

0
1

cout

b
0
1
0
1
0
1
0
1

cin
0
0
0
0
1
1
1
1

cout
0
0
0
1
0
1
1
1

s
0
1
1
0
1
0
0
1

ALU de n bits
binv
op

cin

A

.

.

.

B

.

.

.

ALU0

ALU1

. . .

ALUn-1

Sumador de n bits

cin

S

.

.

.

s0

s1

sn-1

. . .

cout

A

.

.

.

B

.

.

.

a0

b0
a1

b1

an-1

bn-1

S

.

.

.

CF

OF

ZF

SF

10

Tipos de datos enteros

Importante:

Toda operación con enteros da como resultado otro entero:

si hay salida de rango, se produce un resultado válido
aunque no correcto.

Ej: char a=100,b=30,c;

c
  • Links de descarga
http://lwp-l.com/pdf15659

Comentarios de: Lenguaje C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad