Está en la página 1de 100

Programación en ANSI C

Unidad 1 Introducción a la programación


Por Francisco Javier Ramírez Ruiz
Mayo 2020
Descargar el software Visual Studio 2019
versión Comunidad (Community)
https://visualstudio.microsoft.com/es/downloads/
Ejecutar el archivo instalador del Visual
Studio Comunidad 2019
Selecciona el botón “Ejecutar”, para iniciar
el instalador
Elige la opción del compilador:
Desarrollo para el escritorio con C++
Crear mi primer proyecto
Hola Mundo!!
 Como primer paso, ve a inicio y ejecuta el programa visual studio 2019.exe
Lo que abrirá en entorno de Visual
Studio 2019
Crea un nuevo proyecto con la opción
“Aplicación de consola”
Crea una ruta corta para guardar tu
proyecto, C:/Códigos/Códigos Visual C++
Coloca el nombre del proyecto, “HolaMundo”
en este caso y da clic en el botón “Crear”
Lo que abrirá el entorno de Visual Studio C++
con una plantilla de ejemplo predeterminada
Compilar el programa en el menú “Compilar”
en la opción “Compilar solución” (F7)
Para ejecutar un programa, ve al menú “Depurar” y
selecciona la opción “Iniciar Depuración” (F5)
Ventana emergente de MSDOS de
ejecución del programa
Lenguaje C
Componentes de un programa en C++
 Un programa en C++ está definido por funciones
(grupo de instrucciones que pueden o no hacer
algún cálculo), donde la función principal debe
ser llamada main. La composición general de un
programa en C++ es:
❑ directivasde preprocesamiento.
❑ declaración globales.
❑ funciones definidas por el usuario
❑ función main
❑ comentarios para entender el funcionamiento del
programa
Estructura en un programa en C
Directivas
 Las directivas de preprocesamiento son definidas para que el
compilador realice algo antes de compilar el programa (revisar
si la sintaxis es correcta y generar un código ejecutable por la
computadora), como el incluir funciones de alguna biblioteca
conocida en particular.
 En C la directiva para incluir bibliotecas es como las siguientes:

#include <iostream.h>
 Esta directiva permitirá utilizar la función de lectura cin y la
función de escritura cout propias de C++.

#include <stdio.h>
 Esta directiva permitirá utilizar las funciones de lectura y
escritura propias de C.
Directivas
 Estas directivas también funcionan con C++, aunque
existen algunos compiladores que no las soportan en
cuyo caso es necesario hacer uso de los namespaces.
 Un namespace es una declaración de región. El
propósito de estos es localizar el nombre de
identificadores para evitar colisiones.
 Para tener compatibilidad, cuando un programa en
C++ incluye una librería de C, haremos uso del
namespace.
 Ejemplo:
En C tenemos #include <iostream.h>
con el respectivo en C++ #include <iostream> using namespace std;
Palabras Reservadas en C
En C, como en cualquier otro lenguaje, existen una serie de palabras
clave (keywords) que el usuario no puede utilizar como identificadores
(nombres de variables y/o de funciones). Estas palabras sirven para
indicar al computador que realice una tarea muy determinada (desde
evaluar una comparación, hasta definir el tipo de una variable) y tienen
un especial significado para el compilador. El C es un lenguaje muy
conciso, con muchas menos palabras clave que otros lenguajes. A
continuación se presenta la lista de las 32 palabras clave del ANSI C.
Palabras reservadas en C++
Identificadores
Un identificador es un nombre con el que se hace referencia a una
función o al contenido de una zona de la memoria (variable). Cada
lenguaje tiene sus propias reglas respecto a las posibilidades de elección
de nombres para las funciones y variables. En ANSI C estas reglas son las
siguientes:
1. Un identificador se forma con una secuencia de letras (minúsculas
de la a a la z; mayúsculas de la A a la Z; y dígitos del 0 al 9).
2. El carácter subrayado o underscore (_) se considera como una letra
más.
3. Un identificador no puede contener espacios en blanco, ni otros
caracteres distintos de los citados, como por ejemplo (*,;.:-+, etc.).
4. El primer carácter de un identificador debe ser siempre una letra o un
(_), es decir, no puede ser un dígito.
5. Se hace distinción entre letras mayúsculas y minúsculas. Así, Masa es
considerado como un identificador distinto de masa y de MASA.
6. ANSI C permite definir identificadores de hasta 31 caracteres de
longitud.
Identificadores
 (Los identificadores que comienzan con un guion bajo tienen
significados especiales en algunos sistemas C++, así que es mejor
empezar un identificador con una letra.)
 A continuación se dan algunos ejemplos de identificadores válidos:
sum_of_squaresJ9 box_22A GetData Bin3D4 count
 Y aquí se presentan algunos ejemplos de identificadores no válidos y
las razones por las que no son válidos:
Constantes
En C existen distintos tipos de constantes:
1. Constantes numéricas. Son valores numéricos, enteros o de punto flotante.
Se permiten también constantes octales (números enteros en base 8) y
hexadecimales (base 16).
2. Constantes carácter. Cualquier carácter individual encerrado entre
apóstrofos (tal como 'a', 'Y', ')', '+', etc.) es considerado por C como una
constante carácter, o en realidad como un número entero pequeño (entre 0 y
255, o entre -128 y 127, según los sistemas). Existe un código, llamado código
ASCII, que establece una equivalencia entre cada carácter y un valor
numérico correspondiente.
3. Cadenas de caracteres. Un conjunto de caracteres alfanuméricos encerrados
entre comillas es también un tipo de constante del lenguaje C, como por
ejemplo: "espacio", "Esto es una cadena de caracteres", etc.
4. Constantes simbólicas. Las constantes simbólicas tienen un nombre
(identificador) y en esto se parecen a las variables. Sin embargo, no pueden
cambiar de valor a lo largo de la ejecución del programa. En C se pueden
definir mediante el preprocesador o por medio de la palabra clave const. En
C++ se utiliza preferentemente esta segunda forma.
Ejemplos de constantes
 Constantes de carácter.
Ej. ‘a’, ‘0’, ‘\0x5’, ‘\0’, ‘\n’, ‘\t’, ‘$’, ’\\’, NULL

 Constantes enteras.
Ej. 5, +5, -5, \05, \0x5, 5L, 5U, 5lu, etc.

 Constantes reales.
Ej. 0.5f, 0.5, 5e-01f, 5.0e-01, (float)5, etc.

 Constantes de texto (Cadenas o “Strings”)


“Esto es una cadena…”
const

 Es un modificador de acceso que me permite


asignar a una variable un valor constante, es
decir que una vez asignado a dicha variable su
valor no podrá ser modificado durante el
programa.
const <tipo dato> esp <identificador> = valor;

 Ejemplo:
const int a=10;
const char pais[]=“MÉXICO”;
const char *nombre=“VLADIMIR”;
Comentarios
 El lenguaje C permite que el programador introduzca comentarios en
los ficheros fuente que contienen el código de su programa.
 La misión de los comentarios es servir de explicación o aclaración
sobre cómo está hecho el programa, de forma que pueda ser
entendido por una persona diferente (o por el propio programador
algún tiempo después).
 Los comentarios son también particularmente útiles (y peligrosos...)
cuando el programa forma parte de un examen que el profesor debe
corregir.
 El compilador ignora por completo los comentarios.
Tipos de datos en C

En C es importante declarar todas las variables que se


vayan a utilizar
Tabla de caracteres ASCII
Separadores

 Los separadores están constituidos por uno o varios


espacios en blanco, tabuladores, y caracteres de avance
de línea (enter).
 Su papel es ayudar al compilador a descomponer el
programa fuente en cada uno de sus tokens o
componentes sintáticos.
 Es conveniente introducir espacios en blanco incluso
cuando no son estrictamente necesarios, para mejorar la
legibilidad del programa.
Variables
 Las variables pueden cambiar de valor a lo largo de la
ejecución de un programa, o bien en ejecuciones
distintas de un mismo programa.
 Una variable es una localidad de memoria cuyo valor
puede ser cambiado durante la ejecución del programa.
 Todas las variables deben de ser declaradas para se
utilizadas.
<tipo de dato> espacio(s) <identificador>;
 Ejemplo:
int a;
float area, radio, volumen;
Declaración de variables

 Cuando una variable es declarada se le reserva memoria de acuerdo


con el tipo de dato incluido en la declaración.
 Es posible inicializar, dar un valor inicial, a las variables en el
momento de la declaración.
 Sintaxis:

<tipo> <identificador> [=<init>] [, …] ;


int y =4, x = 1;
long double v;
char c1=‘a’, c2;
Secuencia de escape en C
Operadores

 Los operadores son signos especiales, a veces conjunto


de 2 caracteres, que indican determinadas operaciones
a realizar con las variables y/o constantes sobre las que
actúan en el programa.
 Operadores Aritméticos
 Operadores Relacionales
 Operadores Lógicos
 Operadores de Asignación
 Operadores de Dirección
 Operadores de Bits
Operadores Aritméticos
Reglas de Precedencia de Operadores
Orden de evaluación de un polinomio de segundo
grado
Operadores de asignación
Operadores relacionales
Operadores lógicos

Los elementos con los que se forman estas expresiones son valores lógicos; verdaderos
(true, o distintos de 0) y falsos (false, o iguales a 0), y los operadores lógicos ||, && y !.
También se pueden emplear los operadores relacionales (<, >, <=, >=, ==, !=) para
producir estos valores lógicos a partir de valores numéricos. Estas expresiones equivalen
siempre a un valor 1 (true) o a un valor 0 (false). Por ejemplo:
a = ((b>c) && (c>d)) || ((c==e) || (e==b));
donde de nuevo la expresión lógica es lo que está entre el operador de asignación (=) y
el (;). La variable a valdrá 1 si b es mayor que c y c mayor que d, ó si c es igual a e ó e es
igual a b.
Operadores de manipulación de bits
Los operadores de manipulación o tratamiento
de bits (bitwise) ejecutan operaciones lógicas
sobre cada uno de los bits de los operandos. Los
operadores de bits se aplican sólo a variables y
constantes char, int y long, y no a datos de
coma flotante.
Friendly Code: Buenas practicas de
programación, enmascaramiento de bits
Operadores de desplazamiento de bits << y >>
Efectúan un desplazamiento a la derecha ( >>) o a la
izquierda ( <<) de numero_de_bits posiciones de los bits de
operando, siendo numero_de_bits un número entero. Los
formatos de los operadores de desplazamiento son:
1. Valor << numero_de_bits;
2. Valor >> numero_de_bits;
Operadores de asignación adicionales
 Los operadores de asignación abreviados están disponibles
también para operadores de manipulación de bits.
Operador condicional ?
 El operador condicional ?, es un operador ternario
cuyo valor depende de la condición comprobada. El
formato del operador condicional es:
𝒆𝒙𝒑𝒓𝒆𝒔𝒊𝒐𝒏− 𝑳 ? 𝒆𝒙𝒑𝒓𝒆𝒔𝒊𝒐𝒏_𝒗 ∶ 𝒆𝒙𝒑𝒓𝒆𝒔𝒊𝒐𝒏_𝒇

 Se evalúa la expresión lógica 𝒆𝒙𝒑𝒓𝒆𝒔𝒊𝒐𝒏− 𝑳 y su valor


determina cuál es la expresión a ejecutar; si la
condición es verdadera se ejecuta la expresión
𝒆𝒙𝒑𝒓𝒆𝒔𝒊𝒐𝒏_𝒗 y si es falsa se ejecuta 𝒆𝒙𝒑𝒓𝒆𝒔𝒊𝒐𝒏_𝒇.
 La precedencia de ? Es menor que la de cualquier otro
operador tratado hasta este momento. Su
asociatividad es a derecha.
Prioridad y asociatividad de operadores
Sentencia condicional If simple
La instrucción if de selección simple realiza una acción
indicada solamente cuando la condición es verdadera (true);
de no ser así, se evita dicha acción.
If
Sentencia condicional If-else
 La instrucción if...else de selección doble permite al
programador especificar una acción a realizar cuando la
condición es verdadera, y otra distinta cuando la
condición es falsa (false).
If…else
Sentencia If-else anidadas
Una sentencia If es
anidada cuando la
sentencia de la rama
verdadera o la rama
falsa, es a su vez una
sentencia If. Una
sentencia If anidadas se
puede utilizar para
implementar decisiones
con varias alternativas o
multi-alternativas.
Sentencia de control switch
La sentencia switch es una sentencia de C++ que se utiliza
para hacer una selección entre múltiples alternativas.
La sentencia while
Un bucle while tiene una condición del bucle (expresión lógica)
que controla la secuencia de repetición. Lo posición de esta
condición del bucle es delante del cuerpo del bucle y significa que
un bucle while es un bucle preset de modo que cuando se ejecuta
el mismo, se evalúa antes de que se ejecute el cuerpo del bucle.
La sentencia For
 El lazo for es el más adecuado para implementar bucles
anidados por contador, que son lazos en el que un conjunto de
sentencias se ejecutan una vez por cada valor de un rango
especificado, de acuerdo al algoritmo: por cada valor de una
variable contador de un rango específico: ejecutar Sentencias.
 Sintáxis:
for(Inicalización; CondiciónIteración; Incremento)
{ Sentencias; }
 El bucle for contiene las cuatro partes siguientes:
❑ La parte de Inicalización, incializa las variables de control del lazo.
❑ La parta de Condición de Iteración, contiene una expresión lógica que
hace que el lazo realice las iteraciones de las sentencias.
❑ La parte de Incremento, incrementa la variable o variables de control
del bucle.
❑ Las Sentencias, acciones o sentencias que se ejecutarán por cada
iteración del lazo.
Sentencia for
Ejemplo de sentencia for en C++:
int i, cant=10;
// La variable cantidad representa las veces
// que se va a repetir el lazo
// i es la variable de iteración, comienza en 1
// hasta que es igual a cantidad se sale del
//lazo
for ( i = 1 ; i < cant ; i++ )
{
cout << “Loop iteration: ” << i << endl ;
}
Ejemplo lazo for
Bucle for descendente que escribe número reales y su raíz cuadrada.
Se inicializa con la variable n a 16. En cada iteración del bucle se
decrementa n en 2.5. El bucle termina cuando n es menor que 1.
Lazos anidados
Los lazos anidados constan de un lazo externo con uno o más
lazos internos. Cada vez que se repite un lazo externo, los
lazos internos iteran reevaluándose las componentes de
control y ejecutándose las iteraciones requeridas.
Sentencia Do-While
 La sentencia Do-While se utiliza para especificar un bucle
condicional que se ejecuta al menos una vez.
Ejemplo: Do-While
Lazo que escribe la letras
mayúsculas del alfabeto.
Se inicializa la variable
car a ‘A’, y mediante un
bucle do-while que
termina cuando en car
hay un carácter mayor
que ‘Z’, se itera
escribiendo el valor de
car e incrementando el
valor de car en una
unidad, por lo que car
toma el siguiente
carácter del código ASCII.
Realiza el código de programa completo
y responde a la pregunta
Realiza el código de programa completo
y responde a la pregunta
Realiza el código de programa completo
Arreglos (arrays), (Joyanes, 2006)
 Un array (arreglo, lista o tabla) es una secuencia de objetos del
mismo tipo, que se numeran consecutivamente 0, 1, 2, 3.
 Estos números se denominan valores índice o subíndice del array.
Cada ítem del array se denomina elemento.
 El tipo de elementos del array puede ser cualquier tipo de dato de
C++, incluyendo estructuras definidas por el usuario.
 Si el nombre del array es a, entonces a[0] es el nombre del elemento
que está en la posición 0, a[1] es el nombre del elemento que está en
la posición 1, etc.
 En general, el elemento i-ésimo está en la posición i-1. De modo que
si el array tiene n elementos, sus nombres son a[0], a[1],...,a[n-1].
Arreglos (arrays), (Joyanes, 2006)
 Un array se declara de modo similar a otros tipos de datos, excepto
que se debe indicar al compilador el tamaño o longitud del array.
 Para indicar el tamaño o longitud del array se debe hacer seguir al
nombre, el tamaño encerrado entre corchetes.
 La sintaxis para declarar un array de una dimensión determinada es:
𝑡𝑖𝑝𝑜 𝑛𝑜𝑚𝑏𝑟𝑒𝐴𝑟𝑟𝑎𝑦 𝑛𝑢𝑚𝑒𝑟𝑜𝐷𝑒𝐸𝑙𝑒𝑚𝑒𝑛𝑡𝑜𝑠 ;
 El índice de un array se denomina, con frecuencia, subíndice del
array. El método de numeración del elemento i-ésimo con el índice o
subíndice i - 1 se denomina indexación basada en cero.
 Todos los subíndices de los arrays comienzan con 0.
 Su uso tiene el efecto de que el índice de un elemento del array es
siempre el mismo que el número de “pasos” desde el elemento inicial
a[0] a ese elemento. Por ejemplo, a[4] está a 4 pasos o posiciones del
elemento a[0].
 En los programas se pueden referenciar elementos del array utilizando
fórmulas o expresiones enteras para los subíndices.
Inicialización de arreglos (Deitel, 2008)
Inicialización de arreglos a partir de su
declaración (Deitel, 2008)
Arrays de caracteres y cadenas de texto
(Joyanes, 2006)
Arrays Multidimensinales (Joyanes, 2006)
 Los arrays más usuales son los de dos dimensiones, conocidos también
por el nombre de tablas o matrices.
 Sin embargo, es posible crear arrays de tantas dimensiones como
requieran sus aplicaciones, ésto es, tres, cuatro o más dimensiones.
 La sintaxis para la declaración de un array de dos dimensiones es:
< 𝑇𝑖𝑝𝑜 𝑑𝑒 𝐸𝑙𝑒𝑚𝑒𝑛𝑡𝑜 >< 𝑁𝑜𝑚𝑏𝑟𝑒𝐴𝑟𝑟𝑎𝑦 > < 𝑁𝑜. 𝐹𝑖𝑙𝑎𝑠 > [< 𝑁𝑜. 𝐶𝑜𝑙𝑢𝑚𝑛𝑎𝑠 >]
Funciones (Joyanes, 2006)
 Una función es un conjunto de sentencias —con un nombre común—
que se pueden llamar desde cualquier parte de un programa.
 En C++ todas las funciones son externas o globales, es decir, pueden
ser llamadas desde cualquier punto del programa.
 Las funciones en C++ no se pueden anidar (no puede declararse una
función dentro de otra función). La estructura de una función en C++
se muestra a continuación:
Ejemplo (Joyanes, 2006): Codificar la
función producto( )
Prototipos de las funciones
 C++ requiere que una función se declare o defina antes de su uso. La
declaración de una función se denomina prototipo.
 Específicamente un prototipo consta de los siguientes elementos: nombre de
la función; lista de parámetros formales encerrados entre paréntesis y un
punto y coma.
 Los prototipos se sitúan normalmente al principio de un programa, antes de la
definición de la función main().
 La definición completa de la función debe existir en algún lugar del
programa; por ejemplo, antes o después de main.
 El compilador utiliza los prototipos para validar que el número y los tipos de
datos de los parámetros actuales de la llamada a la función son los mismos
que el número y tipo de parámetros formales.
 Si una función no tiene argumentos, se ha de utilizar la palabra reservada
void como lista de argumentos del prototipo (también se puede escribir
paréntesis vacíos).
 Un formato especial de prototipo es aquel que tiene un número no
especificado de argumentos, que se representa por tres puntos (...).
Parámetros de una función
 C++ proporciona dos métodos para pasar variables (parámetros) entre
funciones.
 Una función puede utilizar parámetros por valor y parámetros por referencia,
o puede no tener parámetros.
 Paso por valor (también llamado paso por copia) significa que cuando C++
compila la función y el código que llama a la misma, la función recibe una
copia de los valores de los parámetros actuales.
 La función receptora no puede modificar la variable de la función (parámetro
pasado).
Paso por referencia (Joyanes,2006)
 Paso por referencia. Cuando una función debe modificar el valor del
parámetro pasado y devolver este valor modificado a la función
llamadora, se ha de utilizar el método de paso de parámetro por
referencia o dirección.
 Para declarar una variable que es parámetro formal, como paso por
referencia, el símbolo & debe preceder al nombre de la variable en la
cabecera de la función, y en la llamada el parámetro actual
correspondiente debe ser el nombre de una variable.
 También puede usarse el método de los punteros de C: en la
declaración de la variable que es parámetro formal, el símbolo * debe
preceder al nombre de la variable; en la llamada a la función debe
realizarse el parámetro actual que debe ser & variable.
 Cuando se modifica el valor del parámetro formal de un parámetro
por referencia (la variable local), este valor queda almacenado en la
misma dirección de memoria, por lo que al retornar a la función
llamadora la dirección de la memoria donde se almacenó el
parámetro contendrá el valor modificado.
Ejercicios
 Todos los años que son divisibles entre 400 o son divisibles
entre cuatro y no son divisibles entre 100 son años
bisiestos. Por ejemplo, en vista que 1600 es divisible entre
400, el ano 1600 fue un año bisiesto. Del mismo modo, en
vista que 1988 es divisible entre cuatro pero no entre 100,
el año 1988 también fue un año bisiesto. Usando esta
información, escriba una función en C++ que acepte el
año como entrada de un usuario y devuelva un uno si el
año transmitido es un año bisiesto o un cero si no lo es.
 Escribir un programa que encuentre el valor mayor, el
valor menor y la suma de los datos de entrada. Obtener la
media de los datos mediante una función. (use arreglos)
 Escribir el inverso de un número entero dado (1234,
inverso 4321).
Referencias
 Joyanes A. Luis. et. al. (2006). Programación en C++. Un enfoque práctico.
Serie Schaum. Madrid, España, 1a. Ed. ISBN 84-481-4643-3: Mc Graw Hill.
 Mc Grath Mike. (2011). C++ Programming in easy steps. United Kingdom, 4a
ed. ISBN 978-1-84078-432-9: FSC Mixed Sources.
 Deitel Harvey M. y Paul J. Deitel. (2008). Como programa en C++. México. 6a
Ed. ISBN 10: 970-26-1273-X: Pearson Education.
 Dale Nell y Weems Chip. (2007). Programación y resolución de problemas con
C++. México: Mc Graw Hill.
 García de J. Javier, et. al. (1998). Aprenda C++ como si estuviera en primero.
18/05/2020, de Academia Cartagena99 Sitio web:
http://www.cartagena99.com/recursos/visor.php?idrec=258&fich=programaci
on/apuntes/manualcpp.pdf
 Mc Grath Mike. (2011). Free Downloads: C++ Programming in easy steps 4a.
ed.. 25/05/2020, de FSC Mixed Sources Sitio web:
http://ineasysteps.com/resource-centre/downloads/
 https://courses.edx.org/courses/course-v1:Microsoft+DEV210x+1T2020/
course/

También podría gustarte