• Identificadores, palabras reservadas, delimitadores, comentarios
• Números y caracteres
• Constantes y variables
• Estructura de un programa
MSc Jaime Soto
Universidad Rafael Urdaneta
Escuela de Ingeniería de Computación
En programación se debe separar la diferencia entre el diseño
del algoritmo y su implementación en un lenguaje específico.
Los lenguajes de programación tienen elementos básicos que se
utilizan como bloques constructivos, así como reglas para las
que esos elementos se combinan.
1. Identificadores (nombres de variables esencialmente,
procedimientos, funciones, etc.)
2. Palabras Reservadas ({ }, if, else, for, while, do, int,
float).Caracteres especiales (coma, apóstrofe, etc.)
3. Constantes y variables
4. Comentarios (//, /* */)
5. Expresiones, instrucciones.
Representan los nombres de los objetos de un programa(constantes, variables, tipos de datos, procedimientos,funciones, etc.). Es una secuencia de caracteres quepuede ser de cualquier longitud, aunque tiene ciertasreglas que hay que seguir, las cuales son:
◦ Debe comenzar con una letra o "_" y no puede contenerespacios en blanco.
◦ Letras, dígitos y caracteres subrayados ("_") están permitidosdespués del primer carácter.
En síntesis un identificador es un método para nombrar alas celdas de memoria en la computadora, en lugar dememorizarnos una dirección de memoria.
Se utilizan para nombrar variables, constantes,procedimientos y funciones.
Los diferentes objetos de información con los que un
programa trabaja se denominan datos.
Todos los datos tienen un tipo asociados con ellos que
nos servirá para poder conocer con que información
trabajaremos. Es decir, cuando ingresemos el sueldo de
un trabajador necesitamos que este contenga decimales,
o al solicitar la edad de una persona ésta tiene que estar
con números enteros, etc.. Además la suma entre
caracteres no tiene sentido.
La asignación de tipos a los datos tiene dos objetivosprincipales:
Detectar errores de operaciones aritméticas en los programas.
Determinar como ejecutar las operaciones.
Existen dos tipos de datos: simples (sin estructuras) ycompuestos (estructurados). Los datos estructurados sonconjunto de partida de datos simples con relaciones definidasentre ellos.
Los tipos de datos más comunes son: numéricos, caracteres ylógicos.
Es el conjunto de los valores numéricos. Estos pueden
representarse en:
Tipo Numérico Entero: Los enteros son aquellos
números que no tienen componente fraccionario o
decimal y dentro de la computadora son un
subconjunto finito de los números enteros. Estos
números pueden ser negativos o positivos y el rango
es de –32,768 a 32,767.
Ejemplo: 6, -6, 65, -98, 1900, -5672
En Lenguaje C es: int a
Tipo Numérico Real: son aquellos números que tienenuna parte fraccionaria y pueden ser positivos y negativosdentro de la computadora forman un subconjunto de losnúmeros reales. Para representar números muy pequeñoso muy grandes se emplea la notación de punto flotante,que es una generalización de la notación científica. Enesta notación se considera al número real como mantisay al exponente la potencia de 10 a la que se eleva estenúmero.
Ejemplo: 0.08, -52.364, 3.0, -7.0
36.75201 x 1018 36.75201 mantisa 18 exponente
En Lenguaje C es: float a
Este tipo de dato es aquel que solo puede tomar uno de
2 valores: verdadero (true) o falso (false). En lenguaje C
no existe el tipo lógico pero se puede implementar con
un número entero conociendo que 0 es falso y cualquier
número diferente de cero verdadero.
Este tipo de dato se utiliza para representar las
alternativas (si/no) a determinadas condiciones.
Ejemplo: cuando se pide si un valor es par, la respuesta
será verdadera o falsa, según sea par o impar.
C no posee ninguna implementación primitiva del
tipo booleano. Entonces, para declarar variables
de este tipo, hace falta definirlo previamente. La
manera de hacerlo es añadir o crear nuevos
nombres para tipos definidos de datos:
typedef enum {FALSE=0, TRUE=1} booleano;
Que define el tipo booleano y asigna a sus
elementos FALSE y TRUE los valores 0 y 1
respectivamente.
El dato tipo carácter puede tomar un valor de un
conjunto finito y ordenado de caracteres o símbolos
que la computadora reconoce (código ASCII). Este
tipo de dato ocupa un byte y almacena un solo
carácter.
Existe también el dato tipo cadena (compuesto) que
es una sucesión de caracteres que se encuentran
delimitados por comillas, la longitud de una cadena
es el número de caracteres comprendidos entre los
delimitadores.
Los caracteres que reconoce la computadora no sonestándar; sin embargo, la mayoría reconoce lossiguientes caracteres alfabéticos y numéricos.
Caracteres alfabéticos: (A,B,C,…..,Z)(a,b,c,…..,z)
Caracteres numéricos: (1,2,…..,9,0)
Caracteres especiales: (+,-,*,/,^,., ;, <,>,$.....)
Ejemplo de cadena de caracteres: ´Hola Mundo´
´12 de octubre de 1942´
´Sr. McDonald´
Una constante es un dato que permanece sin cambiodurante el desarrollo del algoritmo o durante laejecución del programa. La mayoría de los lenguajes deprogramación nos permiten el manejo de diferentes tiposde constantes, estas pueden ser enteras, reales,caracteres y cadenas. En lenguaje C una constante sedefine por medio de la instrucción #define (directiva delprocesador).
Ejemplo: #define MAXLINEAS 25
Le indica al compilador que debe sustituir elidentificador MAXLINEAS por el número 25, cada vez queaparezca en el programa, excepto cuando es unaconstante literal de cadena, es decir, que se encuentreentre comillas.
Constantes reales válidas: 1.234 -0.1234
Constantes reales no válidas: 1,354.65 (comas no
permitidas).
Constantes tipo carácter: ´B´ ´+´ ´4´
Constantes tipo cadena de caracteres: ´Aurely Leal´
Una variable se identifica por dos atributos: el nombre
de la variable (identificador) y el tipo de la variable. El
identificador se puede formar con caracteres
alfanuméricos y el carácter de subrayado ( _ )
empezando siempre por una letra. No se admiten como
identificadores palabras reservadas del lenguaje de
programación que se esté utilizando. Los nombres de
variables que se elijan para el algoritmo o programa
deben ser significativos y tener relación con el objeto
que representa.
Una variable es un dato cuyo valor puede cambiardurante el desarrollo del algoritmo o ejecución delprograma. Hay diferentes tipos de variables:enteras, reales, caracteres y cadenas. Una variableque es de cierto tipo solo puede tomar valores quecorrespondan a ese tipo. Si se intenta asignar unvalor de tipo diferente se producirá un error.
En lenguaje C la sintaxis para definir una variablees:
Tipo_de_dato Identificador
int a;
float a;
Todo programa en C consta de una o más funciones,
una de las cuales se llama main. El programa
siempre comenzará por la ejecución de la función
main. Las definiciones de las funciones adicionales
pueden preceder o seguir a main.
Cada función debe contener:
Una cabecera de la función, que consta del nombre
de la función, seguido de una lista opcional de
argumentos encerrados con paréntesis.
Una lista de declaración de argumentos, si se
incluyen éstos en la cabecera.
Una sentencia compuesta, que contiene el resto de
la función.
/*Estructura de un programa en C*/
#include <nombre_de_la_biblioteca>
#define nombre_de_la_constante valor
//Función principal void main()
{
definición de variables; instrucciones del programa;
}
/*Primer programa en C*/
#include <stdio.h>
#include <conio.h>
void main()
{
//Imprime el texto en pantalla
printf ("Hola, mundo!");
getch();
}
Tipos de datos Descripción Memoria
Int Entero 2 bytes
Float Flotante 4 bytes
Double Flotante de doble 8 bytes
precisión
Char Carácter 1 byte
En todos los lenguajes de programación se utilizanoperadores para efectuar operacionesaritméticas. Combinando las variables y constantes enexpresiones aritméticas por medio de funcionesadecuadas.
OPERADORES MATEMÁTICOS
Operador Significado
+ Suma
- Resta
* Multiplicación
/ División
^ Exponenciación
% Módulo
++ Incremento
-- Decremento
En todos los lenguajes de programación se utilizan operadorespara realizar divisiones reales (/), enteras (\)y módulos (%).
19 / 6 = 3.16 19 \ 6 = 3 19 % 6 = 1
15 / 6 = 2.5 15 \ 6 = 2 15 % 6 = 3
Expresión Resultado Expresión Resultado
10.5/3.0 3.5 10\3 3
1/4 0.25 18\2 9
2.0/4.0 0.5 30\30 1
6/1 6.0 6\8 0
30/30 1.0 10%3 1
6/8 0.75 10%2 0
En ocasiones en los programas se necesitan realizarcomparaciones entre distintos valores, esto se realizautilizando los operadores relacionales, los cuales se listan acontinuación:
Operador Significado
< Menor
> Mayor
<= Menor que
>= Mayor que
== Igual
!= Diferente
&& Y
|| O
! Negación
RELACIONALES
LÓGICOS
Las expresiones son combinaciones de constantes,variables, símbolos de operación (operadores), paréntesisy nombres de funciones especiales.
Ejemplo: sqrt ((p-a)*(p-b)*(p-c)); (a+b+c) / p;
Una expresión toma un valor que se determina por elresultado de la ejecución de las operaciones indicadas,tomando los valores de las variables y constantes yaplicando las prioridades de las operaciones.
Según el tipo de operadores que se emplee en laexpresión. Estas se clasifican en aritméticas, lógicas,relacionales, de caracteres o mixtas.
Este tipo de expresiones nos sirve para representar
formulas matemáticas y utilizan los operadores
aritméticos.
Las expresiones que tienen 2 o más operadores requieren
reglas de precedencia que permiten determinar el orden
en que habrán de efectuarse dichas operaciones. Por
ejemplo:
5 + 8 * 2 //Primero se hace 8 * 2 y luego se suma 5 5+16 =
21
10%3 = 1 //Regresa el residuo de la división entera Nota:
En caso de coincidir la prioridad de varios operadores en
una expresión el orden en el que se efectúan es de
izquierda a derecha.
Las expresiones con más de dos operandos, requieren de reglasmatemáticas que aseguren su correcta interpretación.
Por Ejemplo: 3 * 4 + 5 Puede ser interpretada como:
(3 * 4) + 5 = 17 ó bien 3 * (4 +5) = 27
Para evitar confusión, C Sigue las siguientes normas de prioridad:
1. Operaciones entre paréntesis, se evalúan primero los más internos.
2. Operadores (*, /)
3. Operadores (%)
4. Operadores (+, -)
5. Operadores (=, <, >, <=, >=, !=)
En caso de operadores de igual prioridad se evalúa la expresión deizquierda a derecha.
Ejemplo:
2 * 2 + 3 * 3 + 6 / 2 % 2 = (2*2) + (3*3) + ((6 / 2) % 2)
La expresión lógica mas simple es una variable o
constante lógica que puede establecerse a valores
verdadero (true) o falso (false).
Las expresiones lógicas pueden combinarse para formar
expresiones mas complejas utilizando los operadores
lógicos and, or y not. Estos se utilizan con constantes
lógicas.
[operando1] operador operando2
El operando1 según el tipo de operador puede no existir.
La operación and combina dos condiciones simples y
produce un resultado verdadero solo si los dos operandos
son verdaderos. La operación or es verdadera si uno de
los dos operandos es verdadero. La operación not actúa
sobre una sola condición simple u operando y
simplemente niega (o invierte) su valor. Esto se describe
mas fácilmente usando unas tablas denominadas 'tablas
de verdad'.
Cuando la expresión lógica contiene varios tipos de
operadores, es preciso seguir un nuevo orden de
precedencia o prioridad para obtener el valor final de la
expresión.
Operador Lógico Expresión lógica Significado
! No !p Negación de p
&& p&&q (p and q) Conjunción de p y q
|| p||q (p||q) Disyunción de p y q
a no a
verdadero falso
falso verdadero
a b ayb
verdadero verdadero verdadero
verdadero falso falso
falso verdadero falso
falso falso falso
No (6>10) es verdaderaYa que (6>10) es falsa
a b a||b
verdadero verdadero verdadero
Verdadero falso verdadero
falso verdadero verdadero
falso falso falso
Para evitar confusión, C Sigue las siguientes normas de
prioridad:
1. Operaciones entre paréntesis, se evalúan primero los
más internos.
2. Operadores (^, !)
3. Operadores (*, /,\,%, &&)
4. Operadores (+, -, ||)
5. Operadores (=, <, >, <=, >=, !=)
Cuando la expresión lógica contiene varios tipos de
operadores, es preciso seguir un nuevo orden de
precedencia o prioridad para obtener el valor final de la
expresión.
Ejemplo:
Si num1, num2, son variables enteras con valores
asignados 3 y 6, respectivamente, entonces:
(2+3*num1) <> 6+(num2-1)
2+3*num1 = 11
6+(5) = 11
falso
5>3 && 6>2
año%4==0 && año%100!=0 || año%400==0
El resultado de una expresión lógica es un valor de tipo
lógico: verdadero o falso.
Cuando se aplican a elementos de tipo carácter se
verifican en orden alfabético, tomando en cuenta el
orden del código ASCII. De la siguiente manera:
0 < 1 < 2 ... < 9
a < b < c ... < z
A < B < C ... < Z
¿Cuál es el resultado de las siguientes expresiones?
a. 3+6*14 = 3 + 84 = 87
b. 8+7*3+4*6 = 8 + 21+ 24 = 29+24 = 53
c. -4*7+2^3/4-5 = -4*7+8/4-5 = -28+2-5 = -26-5 = -31
Encontrar el valor de la variable z.
a. z = 4.0 * 5 b. x=3.0 y=2.0 z=x^y-y
c. z=5 x=3 z=z*x
Deducir el resultado de las siguientes instruciones.
Int x,y;
x=1;
y=5;
printf (x,y)
Deducir el valor de las siguientes expresiones; siendo a=5,
b=25 y c=10
a. x = a+b+c
b. x = a+b*c
c. x = a+b/c
d. x = a+b\c
e. x = a+b%c
f. x = (a+b)\c
g. x = a+(b/c)
Calcular el valor de las siguientes expresiones:
a. 8+7*3+4*6
b. -2^3
c. (33+3*4)/5
d. 2^2*3
e. 3+2*(18-4^2)
f. 16*6-3*2
g. 3*3+4-7^2\7
Escribir un algoritmo que intercambie los valores de dos
variables a y b.
Deducir los valores que toman las variables a,b yc tras laejecución de las instrucciones.
a. a=4 b. a=5
b=a b=a+6
b=a+3 a=a+1
b=a-5
c. a = 3 d. a =10
b = 20 b = 5
c = a+b a = b
b = a+b b =a
a = b-c
Escribir las siguientes expresiones en forma de expresionesalgorítmicas:
a. M + P b. M+ N
N P-Q
c. M+N d. M+N
P+Q P
Q - R
S
e. Sen(x)+Coseno(x)
tan(x)
f. -b+√b2-4ac
2a
Las operaciones que se requieren en los programas exigen en numerosasocasiones, además de las operaciones aritméticas básicas, un númerodeterminado de operadores especiales que se denominan FuncionesInternas, incorporadas o estándar.
Ejemplo:
Expresión Resultado
raiz2 (25) 5
redondeo (6.5) 7
redondeo (3.1) 3
redondeo (-3.2) -3
trunc (5.6) 5
trunc (3.1) 3
trunc (-3.8) -3
cuadrado (4) 16
abs (9) 9
abs (-12) 12
Función Descripción Argumento Resultado
abs(x) Valor Absoluto de (x) Entero o Real Entero o Real
sin(x) Seno de (x) Entero o Real Real
cos(x) Coseno de (x) Entero o Real Real
asin(x) Arco Seno de (x) Real Real
acos(x) Arco Coseno de (x) Real Real
atan(x) Arco tangente de (x) Real Real
exp(x) Exponencial de (x) Real o Entero Real
log(x) Logaritmo natural de (x) Real o Entero Real
log10(x) Logaritmo base 10 de (x) Real o Entero Real
ceil(x) Aproxima x al entero Real Entero
inmediato superior
pow(x,n) x elevado a la n Real o Entero Real o Entero
sqrt(x) Raíz Cuadrada de (x) Real o Entero Real
En las asignaciones no se pueden asignar valores a una
variable de un tipo diferente del suyo. Se presentará un
error si se trata de asignar valores de tipo carácter a una
variable numérica o un valor numérico a una variable tipo
carácter.
Como se mencionó anteriormente, es necesario conocer
las entradas y las salidas del problema para poder
resolverlo. Para que C reciba estos datos utilizamos las
funciones de biblioteca scanf para la entrada y printf para
la salida. Su sintaxis es la siguiente:
//Lee el valor y lo guarda en una variable
scanf ("%d", &variable);
//Imprime en pantalla el texto y el valor
printf ("El valor es %d", variable);
#include <stdio.h>
#include <conio.h>
#include <math.h>
Void main()
{
int r, a, p;
printf ("Programa que calcula el área y perímetro de un
circulo");
printf ("\nIntroduce el radio: ");
scanf ("%d", &r);
a = M_PI * pow(r,2);
p = M_PI * (r+r);
printf ("\nEl área es: %d", a);
printf ("\nEl perímetro es: %d", p); getch();
}
Resolver los ejercicios del libro de
Joyanes desde la página 112 a la
página 127.