BLOQUE3
C UN LENGUAJE ESTRUCTURADO Y PROCEDIMENTAL
OBJETIVO: Presentar un lenguaje estructurado y procedimental.
ACTIVIDADES 1:
- Acceda
al enlace que se dispone a continuación y realice un resumen sobre la
historia del Lenguaje C, sus características, sus ventajas e
inconvenientes.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.
Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.
La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portátil entre plataformas y/o arquitecturas.
CaracterísticasPropiedades- Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.
- Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).
- Un sistema de tipos que impide operaciones sin sentido.
- Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.
- Acceso a memoria de bajo nivel mediante el uso de punteros.
- Interrupciones al procesador con uniones.
- Un conjunto reducido de palabras clave.
- Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.
Carencias- Recolección de basura nativa, sin embargo se encuentran a tal efecto bibliotecas como la desarrollada por Sun Microsystems, o el Recolector de basura de Boehm.
- Soporte para programación orientada a objetos, aunque la implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C.
- Funciones anidadas, aunque GCC tiene esta característica como extensión.
- Soporte nativo para programación multihilo.
Aunque la lista de las características útiles de las que carece C es larga, este factor ha sido importante para su aceptación, porque escribir rápidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solución más natural para cada plataforma. Ésta es la causa de que a menudo C sea más eficiente que otros lenguajes. Típicamente, sólo la programación cuidadosa en lenguaje ensamblador produce un código más rápido, pues da control total sobre la máquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia.Ventajas
- Lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas.
- A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores para casi todos los sistemas conocidos.
- Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes.
Inconvenientes
El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinámico es la gran diferencia en velocidad de desarrollo: es más lento programar en C, sobre todo para el principiante. La razón estriba en que el compilador de C se limita a traducir código sin apenas añadir nada. La gestión de la memoria es un ejemplo clásico: en C el programador ha de reservar y liberar la memoria explícitamente. En otros lenguajes (como BASIC, Matlab o C#) la memoria es gestionada de forma transparente para el programador. Esto alivia la carga de trabajo humano y en muchas ocasiones previene errores, aunque también supone mayor carga de trabajo para el procesador.
El mantenimiento en algunos casos puede ser más difícil y costoso que con ciertos lenguajes de más alto nivel. El código en C se presta a sentencias cortas y enrevesadas de difícil interpretación
ACTIVIDADES 2:Escriba una definición de compilador e intérprete.CompiladorDefinición:Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, generando un programa equivalente que la máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero también puede ser un código intermedio, o simplemente texto. Este proceso de traducción se conoce como compilación.El IntérpreteDefinición:En ciencias de la computación, intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.Usando un intérprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema.Elabore una tabla de las características de un compilador frente a un intérprete.
ACTIVIDADES:3 3:
Acceda al primer link y realice la lectura de la información, así mismo ingrese al segundo link y observe el video que se dispone en el mismo:- Realice la descripción de la estructura básica en C
La estructura básica de c es un poco compleja llaqué está compuesta por las siguientes partes:- preprocesador.
- tipos de datos.
- variables.
- funciones.
Ponga un ejemplo donde se identifique la estructura de un programa en C* Programa que calcula el área de un triangulo a partir de la base y altura dado por teclado.Programa: area-trianguloMódulo: main ** (principal)Variables:Base: naturalaltura: naturalArea: naturalInicioVisualizar “Introduce la base y altura”Leer base y alturaArea = base * altura / 2Visualizar “El área del triangulo es”, areaFin- ACTIVIDADES 4:
· Elabore una tabla con los tipos de datos que se manejan en C· Enteros
- Elabore una tabla con los operadores aritméticos que se utilizan en C.
- Elabore una tabla con los operadores relacionales que se utilizan en C.
- Elabore una tabla con los operadores lógicos que se utilizan en C.
ACTIVIDADES 5:
operador
|
nombre
|
ejemplo
|
Devuelve
cierto si
|
&&
|
Y(and)
|
(exp1)&&
(exp2)
|
Ambas son
verdaderas
|
II
|
O(or)
|
(exp1)II
(exp2)
|
Una o ambas son
verdaderas
|
!
|
No
(not)
|
!(exp1)
|
Cambia el valor
de la
expresión
|
ACTIVIDADES 6:
Elabore una tabla con los tipos de datos que se
manejan en C, con las siguientes características
TIPO DE DATO
|
RANGO
|
EJEMPLO
|
TIPOS
ENTEROS
CHAR
(CARACTER)
|
RANGO:
-
128...
127 char
0...255
unsigned char
|
char
car;
/* car
es una variable de tipo char */
|
TIPO DE DATO
|
RANGO
|
EJEMPLO
|
INT
(ENTERO
|
RANGO PARA 16 BITS:
-
32768... 32767 int
0.
.. 65535 unsigned int
|
int
x;
/* x es
de tipo entero */
|
TIPO DE
DATO
|
RANGO
|
EJEMPLO
|
SHORT
(ENTERO
CORTO
|
32768... 32767 short
0... 65535 unsigned short
|
short
x,y;
/*
declara x e y como enteros cortos *
|
- Elabore una tabla de datos con la siguientes funciones: printf(), scanf (), getchar(), putchar(), fflush(), y con su respectivo uso dentro de la programación en C. Revise y estudie la presentación de la página 11 a la 17.
- Accedad al enlace siguiente y escriba 5 ejemplos de programación en C, estudie su estructura y desarrollo de cada uno.
- Elija un ejemplo de programacíon en C e identifique las partes o estructura.
TIPO DE DATO
REALES EN SIMPLE PRECISION)
4 BYTES
|
RANGO
3.402823E+38.....
-
1.40129E45
negativos
1.401293E
-
45 ...
3.40282E38
positivos
|
EJEMPLO
float
x;
/* x es
un real *
|
TIPO DE DATO
DOUBLE
(REALES
EN DOBLE PRECISION)
8 BYTES
|
RANGO
-
1.79769313316E308.......4.94065E
-
324
negativos
4.94065E
-
3
24...
1.797334862316E308
positivos
|
EJEMPLO
double
x
/* x es
un real en doble precisión * /
|
ACTIVIDADES 7: FUNCIONES DE ENTRADA Y SALIDA
Función uso de la
programación
scanf
|
Lee los
datos de entrada en el stdin (flujo de
entrada estándar
|
printf
|
Es útil
para enviar a la salida estándar cualquier
tipo de dato
|
Putchar
|
Las cuales
muestran el carácter a la salida
Estándar.
|
sscanf
|
Obtiene
la entrada que se va a analizar de una
cadena de caracteres dada( string)
|
getchar
|
Las cuales
obtienen el valor de un carácter de la entrada estándar
|
CARÁCTER DE CONTROL
|
FUNCIÓN
|
%
c
|
Carácter
|
% d
|
Número
entero ( int )
|
%D
|
Número
entero long (o también % ld )
|
%i
|
Número
entero( int )
|
% f
|
Punto
flotante(float)
|
% e
|
Notación
científica con e minúscula
|
% E
|
Notación
científica con E mayúscula
|
% g
|
Utiliza
%f o %e según sea más corto
|
% G
|
Utiliza
%f o %E según sea más corto
|
% o
|
Número
octal sin signo
|
% s
|
Cadena de texto
|
%u
|
Entero
sin signo
|
% U
|
Entero
sin signo
long
(o
también %
|
% x
|
Hexadecimal
sin signo con minúsculas
|
% X
|
Hexadecimal
sin signo con mayúsculas
|
% p
|
Puntero,
dirección de memoria
%
|
% n
|
Número
de caracteres
|
%o
|
Formato
entero octal
%
|
% O
|
Formato
entero octal
long
(o
también %lo)
%
|
% lf
|
double
%
|
ACTIVIDADES 9: EJEMPLOS DE PROGRAMACIÓN EN LENGUAJE
C
Ejercicio 8
Modificar el programa anterior para que se pueda repetir indefinidamente si el usuario lo desea (que el ordenador pregunte ¿Quiere continuar? y la persona pueda responder S ó N)
#include <stdio.h>
int main(){int x,y,z;
char resp;
do {
printf ("Escribe el primer lado");
scanf("%i",&x);
printf ("\nEscribe el segundo lado");
scanf("%i",&y);
printf ("\nEscribe el tercer lado");
scanf("%i",&z);
printf("\n\n\n"); //Saltar tres líneas
/*Comprobación de si es un triángulo,
damos por hecho que los números son positivos */
if ((x+y>z) && (x+z>y) && (y+z)>x){
if (x==y && x==z) printf ("Equilátero");
else if (x==y || x==z || y==z) printf ("Isósceles");
else printf("Escaleno");
}
else
printf("Esos números no forman un triángulo");
printf("\n¿Desea continuar (S/N)?)");
scanf("%c",&resp);
}while (resp!='N' && resp!='n');
Ejercicio 9
Escribir un programa que escriba todos los múltiplos de 3 del número 1 al 3000
#include
<stdio.h>
int main(){for(int i;i<=1000;i+=3)
printf("%i\t",i);
}
Ejercicio 10
Programa que lea una serie de números (leer hasta que llegue el cero por ejemplo) y que calcule su media aritmética
#include
<stdio.h>
int main(){int i,suma=0,cont=0;
do{
printf("\nNúmero: ");
scanf("%i",&i);
suma+=i;
if (i!=0) cont++;
}while (i!=0);
if(cont!=0)
printf("\nMedia: %5.2f",(float)suma/cont);
else
printf("\nNo hubo números");
}
Ejercicio 11
Programa que escriba todo el código ASCII (el código ASCII va de 0 a 255 y representa el número con el que los ordenadores almacenan los caracteres)
#include <stdio.h>
int main(){
for(int
i=0;i<=255;i++){
printf("%c(%i)\t",i,(int)i);
//Salto de línea cada 5 símbolos
if (i%10==5) printf("\n");
//Salto de línea cada 5 símbolos
if (i%10==5) printf("\n");
Ejercicio 12
Programa que lea un número entero por teclado y que calcule su factorial
#include
<stdio.h>
int main(){int x;
double fact=1;
printf("Escriba el número: ");
scanf("%i",&x);
while(x>1) fact*=x--;
printf("Factorial =%lf",fact)
ACTIVIDADES 9: EJEMPLOS DE PROGRAMACIÓN EN LENGUAJE
C
Ejercicio 14
Crear un programa que lea un número entero y a partir de él cree un cuadrado de asteriscos con ese tamaño. Los asteriscos sólo se verán en el borde del cuadrado, no en el interior-
#include
<stdio.h>
int main(){int n,fila,col;
printf("tamaño del cuadrado: ");
scanf("%d",&n);
/*Primera fila*/
for(col=1;col<=n;col++){
printf("*");
}
printf("\n");
/*Filas interiores*/
for(fila=2;fila<n;fila++){
printf("*");
for(col=2;col<n;col++){
printf(" ");
}
printf("*");
printf("\n");
}
/* Última fila*/
for(col=1;col<=n;col++){
printf("*");
}
}
No hay comentarios.:
Publicar un comentario