Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Apuntes de Programación

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 18

TEMA 1 INTRODUCCIN

Los ordenadores tienen una parte fsica que es el Hardware. Y una parte lgica que es el Software
(ss.oo., programas, drivers,...).
Los ordenadores se centran en una entrada de datos, un proceso y una salida. Los ordenadores saben
hacer operaciones aritmeticolgicas, saben comparar y saben almacenar informacin. Un ordenador
siempre trabaja en binario.
SISTEMAS DE NUMERACIN (CAMBIOS DE BASE).
En la informtica vamos a utilizar varios sistemas de numeracin:
binario (0,1).
octal (0,1,2,3,4,5,6,7).
decimal (0,1,2,3,4,5,6,7,8,9).
hexadecimal (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F).
Podemos pasar de un sistema a otro aplicando la formula correcta para el cambio de base.
PASO DE SISTEMA BINARIO A DECIMAL.
Para pasar de binario a decimal multiplicamos el bit correspondiente por 2 elevado a la posicin en
la que se encuentra dicho bit, es decir, si tenemos el cuarto bit (empezando por la derecha) en 1
multiplicaremos 1*2^4.
1011100112 =1*2^8+0*2^7+1*2^6+1*2^5+1*2^4+0*2^3+0*2^2+1*2^1*1*2^0=
= 371
Si tubieramos parte fraccionaria las posiciones se contaran de izquierda a derecha a partir de la
coma decimal y la posicin ira en negativo
10.100112 = 1*2^1+0*2^0+1*2^-1+0*2^-2+0*2^-3+1*2^-4+1*2^-5= 2.59375
ejercicio.- pasar de binario a decimal
101111001.011012 = 1*2^8+0*2^7+1*2^6+1*2^5+1*2^4+1*2^3+0*2^2+0*2^1+1*2^0+
+0*2^-1+1*2^-2+1*2^-3+0*2^-4+1*2^-5 = 377.40625
PASO DE SISTEMA DECIMAL A BINARIO
Para pasar de decimal a binario se usa el mtodo de las divisiones sucesivas y te vas quedando con
los restos de la operacin y el numero es el inverso de los decimales. Esto se hace para la parte
entera. Para la parte fraccionaria, se utiliza el mtodo inverso, es decir, multiplicar por dos
sucesivamente y nos vamos quedando con la parte entera del resultado, luego la parte decimal
volvemos a multiplicarla por dos y as sucesivamente hasta obtener el numero de bits necesarios
para la aproximacin.
57821/2=1
28910/2=0
14455/2=1

7227/2=1
3613/2=1
1806/2=0
903/2=1
451/2=1
225/2=1
112/2=0
56/2=0
28/2=0
14/2=0
7/2=1
3/2=1
11100001110111012
0,22 * 2 = 0,44
0,44 *2= 0,88
0,88*2=1,76
0.76*2=1,52
0,52*2=1,04
0,04*2=0,08
0,0011102
PASO DE HEXADECIMAL A DECIMAL
Para cambiar la base de hexadecimal a decimal se hace igual que el cambio de base entre binario y
decimal, cambiando las potencias de 2 (2^1, 2^2,..) por potencias de 16 (16^1, 16^2,...).
A3D216 =10*16^3+3*16^2+13*16^1+2= 41938
PASO DE DECIMAL A HEXADECIMAL
Pasamos dividiendo y multiplicando por 16, recordando que el 10 es A, el 11 B, el 12 C, el 13 D, el
14 E y el 15 F.
41938/16=2
2621/16=13--->D
163/16=3
10----> A
A3D2
PASO DE HEXADECIMAL A BINARIO Y DE BINARIO A HEXADECIMAL
Hacemos bloques de 4 bits empezando de derecha a izquierda. Si algn bloque le faltan bits le
aadimos ceros hasta completar los 4 bits necesarios para obtener el cambio.
0010 1101 0110 11012 = 2D6D
A31F= 010 0011 0001 11112
ejercicio PASAR DE DECIMAL A HEXADECIMAL A BINARIO Y OTRA VEZ A DECIMAL
13047

13047/16= 7
815/16= 15 ----> F
50/16=2
3
32F7
32F7=0011 0010 1111 01112
00110010111101112 = 1*2^13+1*2^12+1*2^9+1*2^71*2^6+1*2^5+1*2^4+1*2^2+1*2^1+1*2^0=
=8192+4096+512+128+64+32+16+4+2+1=13047
SUMA DE NUMEROS EN BINARIO
se suma como si fueran nmeros decimales, posicin con posicion.
0+0=0 0+1=1 1+1=0 y me llevo 1
se resta como si fueran decimales.
1-0= 1 y me llevo 1

1-1=0

0-0=0

PASAR A BINARIO Y CALCULAR SUMA Y RESTA.


744
503
744/2= 0
372/2= 0
186/2=0
93/2=1
46/2=0
23/2=1
11/2=1
5/2=1
2/2=0
1
744=1011101000
LENGUAJES DE PROGRAMACIN.
La programacin es la proyeccin, la planificacin y/o la ejecucin de una tarea o proceso y
se utiliza para describir lo que debe hacer un ordenador con el objeto de resolver un problema
concreto utilizando un determinado lenguaje de programacin. La programacin es la rama de la
informatica que permite crear programas para resolver problemas. Para ello es necesario utilizar un
software especial que permita transmitir las ordenes al ordenador que genericamente se denomina
lenguaje de programacin.
Clasificacin de los lenguajes de programacin:
podemos diferenciar dos grandes grupos: lenguajes de alto nivel y lenguajes de bajo nivel:

los lenguajes de bajo nivel se caracterizan por estar muy cercanos a la arquitectura fsica del
ordenador:
lenguaje mquina o lenguaje binario: es el nico lenguaje que entiende el ordenador, ya
que utiliza el alfabeto binario. Fue el primer lenguaje de programacin, pero en la
actualidad es escasamente utilizable, porque es muy fcil cometer errores. Resulta muy
difcil utilizar las distintas instrucciones. Es muy difcil realizar el mantenimiento de
dichos programas. Es importante destacar que el lenguaje mquina no es portable (no lo
podemos llevar de un ordenador a otro, salvo que los ordenadores estn construidos
exactamente igual).
Lenguaje ensamblador: fue el primer intento de sustituir el lenguaje maquina por un
lenguaje ms cercano a las personas. En este lenguaje las instrucciones estn formadas
por cuatro caracteres ms unos operadores, adems se disminuye la probabilidad de
cometer errores durante la escritura. Ya no es un lenguaje entendible directamente por el
ordenador sino que precisa de un programa que traduzca las instrucciones. No es
portable.
Lenguajes de alto nivel:
se crearon con los siguientes objetivos:
lograr la independencia del ordenador: para crear programas portables.
Aproximar ms las funciones al lenguaje humano, de modo que los programas se puedan
leer y escribir ms fcilmente, para ello utilizan palabras en lugar de cadenas de simbolos
reduciendo as la probabilidad de cometer errores
suministrar libreras de rutinas, de este modo se evita tener que crearlas cada vez que haya
que utilizarlas.
Los lenguajes de alto nivel no son entendibles directamente por el ordenador sino que utilizan
traductores de lenguaje, ya sean interpretes o compiladores, que traducen el programa a lenguaje
mquina, para que sea entendible por el ordenador y pueda ejecutarlo.
1. Lenguajes de tercera generacin: existen distintos tipos de estos lenguajes lgicos,
funcionales,... . Entre los que destacamos los lenguajes procedimentales, que son aquellos
que especifican mediante un algoritmo la serie de pasos a seguir para resolver un problema.
Entre los componentes de este tipo de lenguajes, tenemos los datos con los que nos
permitir trabajar dicho lenguaje y las instrucciones con las que describimos dichos
algoritmos (las palabras reservadas de ese lenguaje). Dentro de los ms conocidos estn:
fortran, pascal, cobol y C.
2. Lenguajes de cuarta generacin: los lenguajes de cuarta generacin nacieron para
solucionar problemas concretos, hasta ese momento los lenguajes de tercera generacin
eran lenguajes de propsito general, que no eran validos para generar algunos programas
especficos. Para el usuario, estos lenguajes son ms intuitivos, por centrarse en necesidades
muy especficas, en su mayora estn formados por una serie de precompiladores, llamados
as porque traducen previamente, su cdigo a un lenguaje de alto nivel, generalmente C y
posteriormente al lenguaje mquina para obtener el fichero ejecutable. Entre los lenguajes
de cuarta generacin podemos destacar SQL, 4GL (permite generar aplicaciones con ayuda
de gran cantidad de mdulos preprogramados en lenguaje C.
3. Lenguajes orientados a objetos: los lenguajes de alto nivel, se basan principalmente, en la
programacin estructurada, mientras que los lenguajes orientados a objetos, se centran, en
los objetos indicando como han de ser y definiendo las operaciones que manejan esos datos.
Existen varios lenguajes que soportan la programacin orientada a objetos: visual basic,
small talk, c++, c#,JAVA,... .

TRADUCTORES DE LENGUAJE.
Cuando los programas estn en distinto lenguaje que el lenguaje mquina, es necesario
traducirlos a cdigo binario, lenguaje mquina, el software encargado de traducirlos es lo que se
denomina traductor del lenguaje y puede ser de tres tipos.
1. Ensamblador: es el encargado de traducir el lenguaje ensamblador al lenguaje mquina.
2. Interpretes: traducen las sentencias de un lenguaje de alto nivel a cdigo mquina, y acto
seguido las ejecutan, tras comprobar que no existe ningn error, todo lo realiza en un solo
proceso. El interprete, suele proporcionar un editor, a travs del cual poder escribir los
programas.
3. Compiladores: la principal diferencia con los interpretes es que la operacin se realiza en
dos fases. En la primera, se traduce el cdigo a cdigo mquina, obteniendo el ejecutable.
En la segunda fase, ejecutamos el programa. El hecho de que no necesite distintas
traducciones en sucesivas ejecuciones, hace que sean ms rpidos que los interpretes.
Fases del proceso de compilacin:
edicin: consiste en la escritura del programa siguiendo las reglas sintcticas y
semnticas del lenguaje de programacin elegido y su posterior grabacin sobre un
soporte de almacenamiento permanente y obtenemos el cdigo fuente.
Compilacin: en ella se traduce el cdigo fuente al lenguaje mquina, indicando si han
aparecido errores de compilacin. El fruto de esta etapa es el programa objeto.
Linkado o enlazado: en estas fases se enlaza el programa con determinadas rutinas
internas y en caso de ser un programa realizado en programacin modular, se enlazan los
distintos mdulos. Si no ha habido errores se obtiene el programa ejecutable.
Ejecucin: es la llamada al programa ejecutable y se pueden producir tambin errores en
la ejecucin. Pueden ser de tres tipos: datos de entrada incorrectos que producen una
parada en el sistema. Bcles mal definidos, que producen un mal funcionamiento del
programa. Muchas veces es muy habitual provocar un bucle infinito.
Datos de salida incorrectos, normalmente producidos por un mal algoritmo de solucin del
problema.
En cualquier tipo de error, debemos ir a corregirlo en la fase de edicin.

FASES DE REALIZACIN DE UN PROGRAMA.


Se denomina ciclo de vida del software, a las etapas que hay que seguir cuando se desea
desarrollar un producto software. Por lo general las fases del ciclo de vida son:
Anlisis: en el se establece cual es el producto que se va a desarrollar, definiendo los
requisitos de la aplicacin para construir el modelo de tal manera que sea posible
implantarlo en un sistema informtico. En el anlisis se determina el qu, teniendo en cuenta
los aspectos lgicos de la aplicacin, llegando a la mxima precisin posible. En esta fase
debe haber una gran comunicacin entre desarrolladores y usuarios o clientes, para conocer
todas las restricciones y necesidades. En caso de que haya una falta de informacin podemos
utilizar prototipos que sirven para definir con precisin los requisitos. Entre el anlisis
estructurado se pueden utilizar las siguientes tcnicas:
diagrama de flujos de datos: que nos sirven para conocer el funcionamiento del sistema a
partir de la representacin de los flujos de informacin pudindolos tener con distintos
grados de abstraccin.
Modelos de datos: sirven para conocer las estructuras de datos y sus caractersticas.

Diccionarios de datos: sirven para describir los objetos utilizados en las tcnicas
anteriores.
Definicin de interfaces de usuario: sirven para determinar la informacin que fluye en
las entradas y en las salidas.
Diseo: en esta fase se establece una solucin optima con los suficientes detalles para la
realizacin fsica de la aplicacin con una buena calidad. Se determina cmo se tiene que
hacer, teniendo en cuenta los recursos tcnicos y lgicos de los que disponemos. Dentro del
diseo podemos diferenciar varias etapas:
diseo externo: que marca los formatos de entrada y salida.
Diseo de datos: se establece la estructura de datos de acuerdo al soporte fsico y lgico
del que dispongamos.
Diseo modular: en el se representa de forma descendente la divisin de la aplicacin en
mdulos y la interconexin de los mismos.
Diseo procedimental: que establece las especificaciones de cada mdulo, describiendo
el algoritmo necesario para una rpida codificacin. Para ello se suelen utilizar
pseudocdigos y ordinogramas.
Construccin + pruebas: consiste en la codificacin en un determinado lenguaje de
programacin basndose en las especificaciones de diseo y tambin una vez codificado se
realizarn las pruebas, que nos den la mayor seguridad posible en que no hemos cometido
errores, si encontramos errores deberemos depurarlos. Dentro de las pruebas podemos
diferenciar:
pruebas unitarias: para comprobar que cada mdulo funciona correctamente.
Pruebas de interconexin o integracin: para ver el funcionamiento conjunto de varios
mdulos o del total.
Pruebas de sistema: prueba de todo el sistema completo.
Explotacin: en ella se realiza la implantacin de la aplicacin en el sistema fsico donde va
a funcionar habitualmente. Pasos a realizar:
instalacin de los programas.
Pruebas globales de aceptacin del sistema.
Conversin del sistema anterior al nuevo sistema.
Eliminacin del sistema anterior. Es habitual que funcionen los dos sistemas
Uso por parte de la empresa contratante
Mantenimiento: se corrigen los errores pudiendo tener que volver a iniciar el ciclo de vida.
Tipos de mantenimiento:
mantenimiento correctivo: consiste en corregir los errores no detectados con anterioridad
y que aparecen con el uso normal de la aplicacin. Pueden estar incluidos en garantas y
contratos de mantenimiento.
Mantenimiento adaptativo: consiste en modificar los programas existentes con el cambio
de un entorno lgico o fsico.
Mantenimiento perfectivo: consiste en una mejora de la aplicacin a partir de
sugerencias o de nuevas necesidades de los usuarios

Programacin estructurada.
En programacin estructurada, est demostrada que cualquier programa se puede realizar con
nicamente tres tipos de estructuras de control:
estructura secuencial: consiste en hacer una secuencia detrs de otra.
estructura alternativa: dependiendo de una cierta condicin hago una cosa u otra.
estructura repetitiva o iterativa: hacer un nmero de veces una misma operacin.
Se habla de programacin estructurada para hacer referencia a un conjunto de tcnicas que
incorporan:
un diseo descendente: parto de un nivel de abstraccin muy grande y llego a un nivel bajo
posibilidad de descomponer una accin en trminos de acciones ms simples
el uso de las estructuras bsicas de control.

Programacin modular.
Con ello hacemos referencia a la divisin de un programa en mdulos de manera que cada uno de
ellos, realice una nica tarea, con ello conseguimos que la complejidad disminuya. Cada mdulo
puede ser programado y depurado individualmente, lo que les hace totalmente independientes. Con
esto conseguimos tres caractersticas:
se minimiza la complejidad de los problemas, con lo que conseguimos aminorar el nmero
de errores en la fase de construccin.
Aumenta la productividad.
Facilita la depuracin y puesta a punto de la aplicacin.
Partes de un programa:
Todo programa est constituido por un conjunto de ordenes, capaces de manipular un conjunto de
datos. Estas ordenes las podemos dividir en tres grandes bloques:
Ordenes de entrada de datos: instrucciones que toman datos de un perifrico externo,
depositandolos posteriormente en memoria central, para que puedan ser procesados.
Procesamiento o algoritmo: engloba todas aquellas instrucciones encargadas de procesar la
informacin que previamente haba sido depositada en memoria principal, elaborando unos
resultados que sern depositados otra vez en memoria principal.
Salida de datos: son las instrucciones que toma la informacin de la memoria principal y la
depositan en un perifrico de salida
ALGORITMO.
Un algoritmo se puede definir como una descripcin abstracta de todas las acciones que debe
realizar el ordenador de forma clara y detallada as como el orden en que se deben de realizar. Todo
ello junto con la descripcin de los datos que deben de ser manipulados por dichas acciones y que
nos conducen a la solucin del problema.

CARACTERSTICAS DE UN ALGORITMO
Debe de ser detallado. Debe reflejar con el mximo detalle el orden de ejecucin de cada
accin.
Debe de ser finito o limitado. Debe tener un principio y un final.
Debe de ser preciso. Si ejecutamos un nmero de veces el mismo algoritmo con los mismos
datos de entrada, debemos obtener los mismos datos de salida.
Debe de ser flexible. Debe adaptarse a cualquier lenguaje de programacin.
Debe de ser amigable o entendible.

INTRODUCCIN AL LENGUAJE C.
El lenguaje C, fue inventando en los laboratorios BELL por Dennis Ritchie. Sali al pblico en el
ao 78, a partir de ah fue aumentando su uso y en el ao 83 se crea un comit en ANSI con el
propsito de hacer un estndar, con el objeto de que los programas en C sean compatibles con los
distintos compiladores. As en el ao 89 apareci el estndar que se le denomina ANSI C.
En el 1980, se comienza el desarrollo de lo que se denomina C con clases, para ello hay una cierta
conexin con el lenguaje SIMULA para introducir los objetos y en el ao 86, fruto de ese trabajo
aparece el C++ . No es un lenguaje orientado a objetos puros, es lo que se llamara un lenguaje
hbrido. Prcticamente todo lo que se haga en C se puede hacer en C++, al revs no, pero, no se
considera una extensin de C, se considera un lenguaje en s mismo.

CARACTERSTICAS DE C.
Al contrario que muchos de los lenguajes estructurados, C es un lenguaje de propsito
general, no tiene ninguna connotacin sectorial, se ha utilizado para realizar programas en
muy distintos sectores productivos.
Es un lenguaje portable, nos permite utilizarlo tanto en macroordenadores como en
ordenadores personales.
Compatible, es compatible porque el software creado con el puede ser ejecutado a partir de
distintos compiladores y en distintas mquinas.
Permite realizar programas de fcil modificacin.
Es el lenguaje predominante en cualquier maquina UNIX.
Es veloz y potente, lo que permite crear software efectivo.
Posibilita la programacin estructurada y modular.
Es un lenguaje compilado.
El codigo fuente se escribe mayoritariamente con minusculas.
Aunque es considerado como un lenguaje de alto nivel, mantiene caractersticas de los
lenguajes de bajo nivel.
No dispone de un editor, pero es posible el uso de cualquier editor siempre que genere
ficheros en ASCI.
Las modificaciones, requieren ms tiempo que en los lenguajes interpretados.
La modularidad en C tiende a incrementar el tiempo de ejecucin.
Es un lenguaje poco legible, eminentemente crptico, lo que da origen a un cdigo poco
entendible si no usamos comentarios.
TIPOS DE DATOS EN C.
Para acceder a los distintos datos de C necesitamos identificadores. Un identificador es un nombre
que referencia a una constante, una variable, una estructura de datos, una funcin o una etiqueta del
programa.
Un identificador, est constituido por una secuencia de letras (no entra la , ni las letras acentuadas),
nmeros y barras bajas( _ ) sin espacios.
El identificador, debe de comenzar por una letra o una barra baja. La longitud de caracteres que
puede tener, vara segn el compilador, pero lo ms usual es que admita hasta 32 caracteres.
El lenguaje C se establecen diferencias entre maysculas y minsculas. Ejemplo: es diferente
PRECIO, Precio, precio. Y existe convenio:
1. las variables todo en minusculas.
2. Las constantes todo en maysculas.
3. Las funciones, la primera maysculas y el resto en minsculas.
Los identificadores pueden ser cualquier palabra, excepto las 32 palabras reservadas de C. es
conveniente que el identificador sea representativo del elemento que referencia.
Una variable es una estructura que se utiliza para almacenar un dato. Toda variable tiene reservado
un espacio de memoria para almacenar un valor de un tipo determinado. Tambin tiene un
identificador para referenciarlo. Siempre que se define una variable, lo que hace es reservar un
espacio de memoria del tamao indicado por el tipo de esa variable y un indicador ligado a esa
direccin de memoria.
La definicin ms bsica que tenemos es:
tipo de dato identificador; int numero;.
Los identificadores se pueden colocar en una lista separados por comas siempre que sean del mismo
datos: int n,a,m;.
La manera ms larga de definir una variable es:
clase_de_almacenamiento Modificador_de_tipo_de_dato tipo identificador;
static long int distancia;

clase de almacenamiento: especifica la forma en la que se almacenar la variable. Existen


cuatro especificadores:
auto
static
extern
register
por defecto, cuando no se ponga nada se considerar auto que es una variable local.
Modificador de tipo: el modificador de tipo cambia el significado de un tipo de dato bsico,
pudiendo afectar al signo o al tamao. Y existen cuatro:
signed
unsigned
short
long
Tipo de dato: es uno de los tipos de datos de la tabla de datos que vimos al principio, que
determina el tamao de memoria reservada para su almacenamiento.
Identificador: el nombre de la variable.
Adems la definicin puede ir precedida por un modificador de acceso que son dos:
const: especifica que el valor de la variable no puede ser modificado durante la ejecucin del
programa por tanto acta como una constante.
Volatile: indica al compilador que el valor de la variable puede ser modificado de forma no
especificada en el programa.

TIPOS DE DATOS BSICOS


Tipo de dato entero: se define con la palabra int y se utiliza para representar nmero enteros
con signo. El rango de valores que pueden tomar vara dependiendo del procesador, as
como del modificador empleado
16bits: del -32768 al 32767. el primer bit considera el signo 1 negativo, 0 positivo y los
dems el nmero.
32bits: del -2.147.983.648 al 2.147.983.647
Las constantes enteras: estn formadas por dgitos pudiendo ir precedidas por signos, si
la constante es positiva no es necesario que lleve el signo + delante. Normalmente se
expresan en notacin decimal, pero las podemos expresar en notacin octal o en
notacin hexadecimal. En base decimal nunca empezara por 0. en base octal el primer
dgito ser un 0. en hexadecimal empezar por 0x
Inicializacin de variables: inicializar una variable es asignarle un valor en el momento
de la definicin: int iden=valor; siempre que quiera utilizar una variable es necesario que
tenga un valor.
Tipo de datos reales: Se utilizan para representar nmeros fraccionarios o nmeros enteros
muy grandes y tenemos dos tipos:
Nmeros reales de precisin simple, su palabra reservada es float. Ocupan 4bytes
Nmeros reales de doble precisin: su palabra reservada es double. Ocupan 8bytes
Constantes reales, se pueden escribir:
Notacin decimal: 45.23 parte entera.parte decimal pudiendo llevar signo negativo.
Notacin cientfica: est formado por una primera parte en notacin decimal que
representa la mantisa 1.37E28=1.37*10^28
Todas las constantes reales son doubles
Rango de valores:
en float va del 3.4E-38 hasta 3.4E38
En double va desde 1.7E-208 hasta 1.7E308
Tipo de dato carcter: Se define con la palabra char y se utiliza para representar un carcter
perteneciente a un determinado cdigo utilizado por el ordenador. Generalmente ASCII.
Podemos tener caracteres imprimibles y no imprimibles. Podemos tener caracteres

imprimibles y no imprimibles. Podemos tener varios caracteres:


signed: -128 a 127
unsigned: 0 a 255
Para definir una variable pondremos char y el nombre de la variable. Las constantes las podemos
escribir con comillas simples, y solo podremos meter un carcter: Ej: 'a' '5'.
Utilizando notacin octal o hexadecimal, para ello el formato que debe llevar siempre es '\032' que
es octal, y en hexadecimal '\x35'.
Utilizando smbolos especiales en una secuencia de escape por ejemplo: '\n' (salto de lnea)
\n salto de linea.
\a pitido
\b retroceso
\r retorno de carro
\t tabulador horizontal
\' comilla simple
\ comilla doble
\0 carcter nulo
tipo de dato vaco: palabra reservada void. Que indica que el dato es nulo. Los datos void no
ocupan especio de memoria. No podemos definir variables de tipo void. Se utilizan
principalmente para tres cosas:
Definir un puntero genrico.
Especificar que una funcin no retorna ningn valor de forma explicito.
Declarar una funcin que no lleva parmetros
signed char
unsigned char
int
short int
long int
unsigned int
unsigned int
float
double

8 bits
8bits
16/32 bits
16 bits
32 bits
16 bits
32 bits
32 bits
64 bits

-128/127
0,255
-32768/32767
-2^15 a 2^15 -1
-2^31 a 2^31 -1
0 a 2^16 -1
0 a 2^32 -1
2.4*10^-38 a 2.4 * 10^38
1.7*10^-308 a 1.7 10^308

EJERCICIO
Indicad que identificadores son incorrectos y porque.
hola
hola juan---->lleva un espacio
hola----> no puede usar comillas
A5S
A+5----> no puede contener el signo mas
7_hola----->no puede empezar por nmero
_5b4
Espaa-----> no puede tener caracteres especiales
Prez------> no puede contener caracteres especiales
hala_Madrid
int-----> es un carcter reservado
INT
indicar que constantes de tipo entero son incorrectas y porque.

75
63.8 un int no puede guardar un decimal
12-39----> una expresin no puede ser una constante.
7E3---->no puede ser constante entera porque es un real
-48---->
475u--->
123456789012345678----> no entra en un entero
-75U--->si es unsigned no puede tener un signo menos.
073
0x123
0965---> no puede empezar por 0 porque no es base octal
0y83----> no debe llevar y
41L---->
indicad que constantes reales son incorrectas y porque
73`48---> la coma arriba no est permitida
-45,26----> la coma debe ser un punto
777.77
4.21E75
4.63E-21
7E509---> se sale del rango
1.3E123f--->se sale de rango
7F
41u---> es una constante entera, no una constante real
-71.3F
2/3---> es una expresin entera

indica que constantes del tipo carcter son incorrectas y porque.


37-> mal, faltan las comillas simples para que sea un carcter ASCII
'41'-> son dos caractres y solo puede llevar uno
' ' debera ser \
hola-> es una cadena de caracteres no un carcter
`ch`->mal, son dos caracteres
`0`->
b-> est mal hace falta una barra o unas comillas
'\ tiene que llevar comillas
\043 tiene que llevar comillas
'\x31 tiente que llevar comillas
'\z' no existe
''
''
\a-> tiene que llevar comilla

OPERADORES EN C
Los podemos clasificar en :
1. indicadores de expresin: se utilizan para indicar la prioridad o una determinada misin en
una expresin.
Operador parntesis ( ) dos significados

para determinar la mxima prioridad dentro de una expresin, en caso de estar


anidados comenzaremos por los ms internos.
Para encerrar los parmetros en una funcin.
Operador corchete [ ] se utiliza para encerrar los indices de los arrays.
2. Aritmticos: son los operadores matemticos. Los hay de dos tipos:
monarios: solo llevan un operando:
el menos del signo indica el signo negativo del operador.
El operador incremento (+ +) solo se utiliza con numeros enteros y se utiliza para
aumentar el valor del operando en una unidad. Se puede utilizar como prefijo y como
sufijo. Si funciona como prefijo dentro de una expresin primero se hace el
incremento y luego se continua con la operacin donde est incluido y si funciona
como sufijo primero se hace la operacin donde est incluido y despus se hace el
incremento.
El operador decremento (- -) se utiliza para disminuir en una unidad el operando y
nos pasa lo mismo que con el incremento. Funciona con los operandos del tipo int y
por extension con los del tipo char. Y puede funcionar tambin como prefijo y como
sufijo de manera similar al operador incremento
binarios: llevan dos operandos.
El operador producto (*)
El operador divisin ( / ): si los dos operandos del operador divisin son enteros,
entonces realiza la divisin entera.
El operador mdulo (%): el operador mdulo es el resto de la divisin entera, quiere
decir, que los dos operandos deben de ser enteros porque solo funciona con nmeros
enteros.
El operador suma.
El operador resta.
Dentro de los operadores aritmticos la prioridad de operadores es::
1) los monarios
2) producto divisin y mdulo
3) suma y resta
En caso de que aparezcan varios operadores del mismo nivel en una expresin, se realizan
de izquierda a derecha.
3. relacionales y lgicos: se utilizan para realizar operaciones lgicas obteniendo como
resultado un verdadero o un falso. En C, se considera, 1 verdadero y 0 como falso. Por
extensin considera el 0 como falso y cualquier nmero distinto de 0 como verdadero.
Menor que <
Menor o igual que <=
Mayor que>
Mayor o igual que>=
Igual a ==
Distinto de !=
opeador y && si hay un falso el resultado es falso
operador o ||: si hay un verdadero el resultado es verdadero
operador no !: es un operador monario.
Las prioridades en estos operadores es:
1) no lgico
2) > >= < <=
3) == !=
4) &&
5) ||
4. para tratamiento de bits: se utilizan para realizar operaciones a nivel de bits y los operandos
deben de ser de tipo char o de tipo int.
& y and, como el and lgico pero a nivel de bit. Lo podemos utilizar para conocer el
valor de un bit determinado. Ej: si queremos conocer el valor del 3er bit de C lo que

haramos es crear un nuevo dato con todo 0 menos un 1 en el bit que quiero conocer
|, o, or: nos puede servir para activar o poner a uno un bit determinado.
^ o exclusivo: se utiliza para cambiar el valor de un bit determinado.
~ complemento a 1:
<< desplazamiento hacia la izquierda aadimos tantos 0 al final del nmero como bits
queramos mover y quitamos el mismo nmero de bits al principio
A <<2 `A`= 01000001 `A`<<2=00000100
>> desplazamiento a la derecha. aadimos tantos 0 al principio del nmero como bits
queramos mover y quitamos el mismo nmero de bits al final
`A`>>3

A&B

A|B

A^B

~A

5. de asignacin: se utilizan para almacenar en una variable el valor resultante de una


expresin.
Operador asignacin simple (=). Su formato es: var=expresin; por ejemplo n=2+3.
Evala la expresin y almacena el valor en la variable.
Operador asignacin compuesto: su formato es variable operador =expresin; por
ejemplo a +=3 que es lo mismo que a=a+3;. Los operadores que puede llevar es: el +,
el ,el /, el %, el <<, el >>, el &, el |, el ^.
6. operador ( , ): se utiliza para separar dos expresiones dentro de una expresin total
evalundose primero la expresin de la izquierda y convirtiendo la expresin de la izquierda
en en el valor de la expresin total. Por ejemplo b=(a=3, a*5) primero hara a = 3, luego 3*5
y el valor final sera b=15.
7. operador tamao (sizeof): se utiliza para obtener el tamao en bytes de una variable o un
dato. Cuando se emprela para un tipo de dato este debe de ir entre parntesis, si se emplea
con una variable puede ir con o sin parentesis. Por ejemplo: sizeof (char) sizeof (float)
8. operador condicional: es el nico operador ternario, necesita tres operandos. Su formato es:
expresin 1?expresin2:expresin3. Se utiliza para realizar una operacin alternativa a travs de
una condicin. Evala la expresin1, si toma valor verdadero toma la expresin2 como resultado
final y si no, si es falso, toma la expresin3 como resultado final.
9. operador molde (cast): se utiliza para convertir un tipo de dato de un operando en una
expresin y el formato que lleva es (tipoatransformar)operador. Por ejemplo (int)7.6.
Expresiones
Son un conjunto de operandos y operadores es una expresin. Atendiendo a la prioridad de los
mismos sobre los operadores y obteniendo como resultado un valor. Cuando trabajamos operadores
de distinto tipo son conversiones de tipo.
Conversin de tipo en la evaluacin de una expresin: se aplican una normas de promocin
del tipo de datos.
1. Si existe un molde para un determinado operando este se convierte al tipo indicado por

el molde.
2. Se realiza una conversin automtica para los tipos de datos float que se convierten a
doubles y de los tipos de datos char y shor int se convierten a tipo int
3. Para algunos tipos de datos se realizan las conversiones siguientes:
Cuando trabajamos con un operador binario que tenga dos operandos:
Si un operando es un double el otro se convierte a double.
Si un operador es long, el otro se convierte a long.
Si un operando es unsigned el otro se convierte en unsigned
Los dems casos se convierten a int
La norma que se sigue es que el resultado de la evaluacin de la expresin situada a la
derecha de la asignacin se convierte al tipo de dato de la variable situada a la izquierda de
la asignacin y puede producirse una promocin y no se produce prdida de informacin.
Pero tambin se puede producir una prdida de rango que puede conllevar una prdida de
informacin.

Tipo destino (variable)

Tipo origen (expresin)

Prdida

Signed char

Char

Si >127 conversin negativo

Char

Int

Mayor de 8 bits

Short int

Long int

Mayor de 16 bits

Int

Float

Parte decimal y ms

Float

Double

Precisin y + (cifras decimales)

EXPRESIONES
Las expresiones son un conjunto de operandos y operadores. Sirven para trabajar con los operandos
atendiendo a la prioridad de estos mismos sobre los operadores y obteniendo como resultado un
valor. Cuando trabajamos con operandos de distinto tipo se producen conversiones de tipo. Existen
dos clases de conversiones:
conversiones de tipo en la evaluacin de una expresin: en este caso se aplican unas normas
de promocin del tipo de dato:
1. Si existe un molde para un determinado operando este se convierte al tipo indicado por
el molde.
2. Se realiza una conversin automtica para los tipos de datos float que se convierten a
double de manera interna. Y de los tipos de datos char y short int a int.
3. Para algunos tipos de datos se realizan las conversiones siguientes:
cuando trabajamos con un operador binario que tenga dos operandos:
si un operando es un double el otro se convierte a double.
Si un operador es long el otro se convierte a long.
Si un operando es unsigned el otro se convierte en unsigned.
Los dems casos se convierten a int.
Conversin de tipo en las asignaciones: la norma que se sigue es que el resultado de la
evaluacin de la expresin situada a la derecha de la asignacin se convierte al tipo de dato de
la variable situada a la izquierda de la asignacin y puede producirse una promocin y no se
produce perdida de informacin. Pero tambin se puede producir una perdida de rango, que
puede conllevar una perdida de informacin: se producirn perdidas cuando:

Tipo de destino (variable)

Tipo de origen

Prdida

signed char

char

Si >127 conversin a
negativo

char

Int

Si > 256 se pierde todo lo


que pase el 8avo bit

Short int

Long int

Mayor de 16 bits se pierde

Int

Float

Perdemos por lo menos la parte


fraccionaria y posiblemente
ms

Float

Double

Precisin y ms

ESTRUCTURA DE UN PROGRAMA EN C
Todo programa en C, tiene dos partes diferenciadas, la cabecera y el cuerpo:
La cabecera engloba tres cosas diferenciadas:
las directivas de precompilacin que nos van a permitir incluir ficheros cabecera
(#include), tambin para definir constantes y macros (#define) y otro tipo de
instrucciones al compilador.
La definicin de variables globales: en nuestros programas est prohibido definir
variables globales.
Prototipos de funciones.
El cuerpo: en el cuerpo encontraremos la declaracin de los mdulos o funciones. Es
obligatorio que todo programa en C tenga un mdulo o funcin principal, que se denominar
main, y dentro de la declaracin aparecern dos bloques:
Definicin de las variables locales.
Bloque de sentencias que muestran el algoritmo de resolucin del problema.
Para declarar una funcin siempre vamos a poner:
tipo_retorno nombre_funcin (lista_de_parmetros){
tipo nombre;
tipo2 nombre2;
...
sentencias_codigo;

}
TIPOS DE INSTRUCCIONES.
Una instruccin puede ser considerada como una accin que debe realizar el ordenador y que tiene
una duracin limitada.
Las instrucciones bsicas son:
instrucciones de definicin, son las instrucciones que se utilizan para indicar al compilador
el espacio que debe reservar en memoria para almacenar un dato. Son las instrucciones para

definir variables. Dentro de las sentencias de definicin, a la vez podemos inicializar las
variables, que es asignarlas un valor en el momento de la definicin.
Sentencias de asignacin: (nombrevariable= expresion;) evala la expresin de la derecha y
guardo su valor en la variable de la izquierda.
Instrucciones de entrada y salida: ANSI-C tiene un conjunto de herramientas para realizar
las operaciones bsicas de entrada y salida de datos y estn en la librera stdio.h. Cuando se
ejecuta un programa en C se abren de manera automtica 5 vas de acceso estndar asociada
cada una de ellas a un dispositivo.
1. Stdin: que es la entrada estndar de datos.
2. Stdout: que es la salida estndar de datos, ligada a la pantalla.
3. Stderr: es la salida estndar de errores, ligado tambin a la pantalla.
4. Stdaux: el la salida en serie estndar, ligado al puerto en serie (RS-233C).
5. Stdprn: es la salida estndar de datos por impresora.
Funciones de salida:
int putchar (int carcter), el parametro que lleva es una variable de tipo char. El
retorno que tiene es el carcter que le he mandado si ha habido xito, o la constante EOF
si no ha habido xito. Su finalidad es mostrar en pantalla el carcter que le hemos
enviado.
Int printf (const char *formato, lista argumentos);
argumentos que lleva: lleva siempre el formato que es una cadena de caracteres
constante o un puntero a una cadena de caracteres.
Lista de argumentos: esta lista de argumentos tiene una correspondencia con los
formatos de impresin que tenga la cadena formato. Los formatos de impresin son:
%h para indicar que escribimos un short int.
%u para imprimir unsigned int.
%d o %i para imprimir un int en formato decimal
%ld para un long int.
%f para un float con notacin punto decimal.
%lf para un tipo double con notacin punto decimal.
%c para un carcter.
%s para una cadena de caracteres.
%o para un entero octal
%x para un entero hexadecimal
%e para un real en notacin cientfica.
%g funciona como el %e o el %f segn convenga.
%p para un puntero
%% para escribir un %
los formatos de impresin estn dentro de la constante formato y deben de tener un
argumento en la lista de argumentos y deben ser del mismo tipo y estar en el mismo
orden.
MODIFICADORES QUE PUEDEN LLEVAR LOS FORMATOS DE IMPRESIN (%_)
%numeroletra(%5d) determina el tamao del campo de impresin. Si la expresin que
quiero imprimir o visualizar es mayor que el tamao que le doy al campo, lo agranda
automticamente.
%-numeroletra(%-5d), marca el tamao mnimo del campo.
%numero.numeroletra(%4.5d);
FUNCIONES DE ENTRADA
getchar(); no lleva ningn parmetro, y retorna un carcter ledo de teclado.
scanf(const char* formato, listadedirecciones); lleva una cadena de caracteres que contienen
formatos de lectura y una lista de direcciones de memoria de variables en las cuales
queremos almacenar los datos introducidos por teclado. Debe haber tantas como formatos de

lectura, ser del mismo tipo y estar en el mismo orden.


Los formatos son:
%c para leer un carcter.
%d o %i para leer un entero
%e leer valor real
%f leer valor real
%h para entero corto
%o para entero octal
%x para un entero hexadecimal
%s para una cadena de caracteres
%p para un puntero
cuando tengamos una variable y queramos obtener su direccin de memoria utilizaremos el
operador &nombrevariable. El retorno es un entero y es el nmero de campos procesado con xito.

También podría gustarte