Beruflich Dokumente
Kultur Dokumente
“SANTIAGO MARIÑO”
EXTENSION MATRIN
PROFESOR: INTEGRANTES:
MATURIN 07-2019
Secuencia de Escape
La barra invertida \ se denomina carácter de escape, el cual indica que debe interpretarse de
otra manera el carácter que le sigue a la derecha, en este caso n. El compilador interpreta a la
secuencia de escape \n como un salto de línea o nueva línea (un ENTER al final de la cadena).
Características
\a: campana.
\b: retroceso. Produce el mismo efecto que pulsar la tecla de Retroceso destructivo.
\c: comilla. Provoca la introducción de una comilla.
\f: salto de página. Provoca el salto de una página.
\n: nueva línea. Provoca el salto a la línea siguiente.
\r: retorno de carro. Provoca el retroceso al comienzo de la línea.
\t: tabulador. Produce el mismo efecto que pulsar la tecla del Tabulador.
\v: tabulador Vertical.
\: barra invertida.
Las secuencias de escape \r y \n pueden ser utilizadas en textos estáticos mixtilíneas (menús,
formularios, etc.) pero debido al carácter multiplataforma de Velneo recomendamos usar
únicamente la secuencia de escape \n ya que así, en función del sistema operativo, se muestre
con la secuencia de escape adecuada: \r\n en Windows, \n en Linux y \r en Mac.
Dado que el carácter \ está reservado para las secuencias de escape de cadenas en las
fórmulas, en el caso de que en alguna fórmula necesitemos usar ese carácter, tendremos que
escribirlo por duplicado. Por ejemplo, si en una fórmula queremos escribir una senda en
formato de Windows, "c:\carpeta\fichero.txt", para que no tome la barra de directorio como
secuencia de escape, en la fórmula escribiremos: "c:\carpeta\fichero.txt".
Clasificación
Los códigos de escape ANSI se utilizan para dar formato a la salida de una terminal de texto y
se basan en un estándar ANSI, ANSI X3.64 (también denominado ECMA-48). Cuando se intenta
representar un código de escape la terminal lo intercepta y actúa en función a ese código,
cambiando el color o moviendo el cursor. Las posibilidades de las secuencias de escape son
muy variadas y se utilizaban para dar formato y cambiar el aspecto de lo que se va a mostrar
por la terminal.
En MS-DOS era necesario instalar ANSI. SYS que permitía actuar ante esos códigos. Todos los
códigos de escape comienzan por los caracteres ESC (carácter ASCII número 27 decimal, 1B
en hexadecimal) seguido del carácter [.
Secuencia Acción
ESC
Con este comando se redefine el comportamiento de
[ código; parámetro [; parámetro ]
una tecla.
p
Una secuencia de escape siempre representa a un carácter del ASCII. Dichos caracteres se pueden
clasificar en:
Gráficos (se corresponden con los símbolos más usados para escribir por los humanos).
No gráficos (representan a acciones, como por ejemplo, mover el cursor de la pantalla al
principio de la línea siguiente).
La forma más sencilla de escribir una secuencia de escape es con el carácter barra invertida (\),
seguida de un carácter especial. Por tanto, cuando en la cadena de control de la función printf se
escriba una secuencia de escape, o bien se mostrará un carácter gráfico por pantalla, o bien se
realizará una acción. Por ahora, no es necesario conocer todas las secuencias de escape que
existen en lenguaje C, pero sí, algunas de las más utilizadas:
En Windows, la pantalla (de la consola) está compuesta por 25 filas (líneas) y 80 columnas, es
decir, en pantalla se pueden visualizar 2000 caracteres a la vez (25*80).
Los dispositivos de entrada y salida son aparatos electrónicos que son conectadas a la
computadora a través de sus ranuras de entrada o salida.
En computación, los dispositivos de entrada y salida son los medios con el cual el usuario se
comunica con el sistema de procesamiento de información como, por ejemplo, las tabletas,
computadoras o celulares inteligentes.
En informática, los dispositivos de entrada y salida son también llamados periféricos, ya que,
no son una parte integral del sistema informático en sí, sino elementos periféricos que se
conectan al sistema mediante sus ranuras de entrada (inputs) o ranuras de salida (outputs).
Flujo
Todos los datos fluyen a través del ordenador desde una entrada hacia una salida. Este flujo de
datos se denomina también stream. Hay un flujo de entrada (input stream) que manda los
datos desde el exterior (normalmente el teclado) del ordenador, y un flujo de salida (output
stream) que dirige los datos hacia los dispositivos de salida (la pantalla o un archivo).
Tipos de Flujo
Un flujo de texto: consiste solamente de caracteres, como los que aparecen en la pantalla. Los
flujos de texto están organizados en líneas, que pueden ser de hasta 255 caracteres de largo y
están terminadas con un carácter de fin de línea o nueva línea (enter).
Un flujo binario: puede manejar cualquier tipo de dato. Los bytes de datos en un flujo binario
no son traducidos o interpretados en ninguna forma, sino que se leen y escriben como bytes.
Se utilizan para hacer transferencias de grandes volúmenes de datos a gran velocidad.
Advertencia: una manipulación incorrecta de ficheros puede dar lugar a la pérdida de datos, al
malfuncionamiento de programas o a fallos del sistema operativo del ordenador. Es necesario
disponer de copias de seguridad de toda información que se considere importante.
Guardar datos a un disco o recuperar los datos previamente guardados son procesos
fundamentales en cualquier programa informático. La importancia del almacenamiento de
contenidos es obvia: envío de información a otros usuarios, posponer el trabajo varios días o
semanas sin tener que introducir manualmente los datos de nuevo, acceso a información
almacenada en sistemas remotos, etc. Incluso para desarrollos de software de relativamente
corta longitud resulta relevante la gestión de datos, por ahorrar una cantidad de tiempo
considerable.
Ficheros y bases de datos constituyen un cuerpo de conocimiento de cierta complejidad y
extensión. Por motivos de espacio no vamos a hacer más que una breve introducción.
Podemos pensar en los ficheros o archivos de forma análoga a lo que sería un archivo físico: un
lugar donde hay información almacenada. Ahora bien, eso no nos dice cómo se encuentra esa
información: si está ordenada (alfabéticamente, de mayor a menor, en impresos con campos
predefinidos), si son datos de un tipo o de varios tipos (numéricos, tipo texto, mezcla de tipos
de datos...), si se leen usando alguna clave de interpretación (una partitura no se lee igual que
un texto), etc. Todo esto es relevante y por ello normalmente sabremos qué tipo de datos
contiene el fichero y cómo están ordenados antes de acceder a él. No es lo mismo guardar
"3246" como número tipo int que como cadena de caracteres. Un tipo int ocupa un espacio en
disco, p.ej. 2 bytes y tiene una "clave" para su lectura, mientras que como caracteres cada cifra
ocupa un byte y se lee como si de texto se tratara.
#include <stdio.h>
Las Funciones de E/S más simples son getchar () que lee un carácter del teclado, espera un
retorno, es decir un enter y el eco aparece. Es decir la tecla presionada.
Algunas variaciones:
Bifurcaciones
Las bifurcaciones permiten ejecutar una de entre varias acciones en función del valor de una
expresión lógica o relacional. Se tratan de estructuras muy importantes ya que son las
encargadas de controlar el flujo de ejecución de un programa. Existen dos bifurcaciones
diferentes: if y switch.
If (booleanExpression) {
statements;
}
Las llaves {} sirven para agrupar en un bloque las sentencias que se han de ejecutar, y no son
necesarias si sólo hay una sentencia dentro del if.
If (booleanExpression) {
statements1;
} else {
statements2;
If (booleanExpression1) {
statements1;
} else if (booleanExpression2) {
statements2;
} else if (booleanExpression3) {
statements3;
} Else {
statements4;
Switch (expression) {
default: statements7;
Bucles
Un bucle se utiliza para realizar un proceso repetidas veces. Se denomina también lazo o loop.
El código incluido entre las llaves {} (opcionales si el proceso repetitivo consta de una sola
línea), se ejecutará mientras se cumpla unas determinadas condiciones. Hay que prestar
especial atención a los bucles infinitos, hecho que ocurre cuando la condición de finalizar el
bucle (booleanExpression) no se llega a cumplir nunca. Se trata de un fallo muy típico, habitual
sobre todo entre programadores poco experimentados.
While (booleanExpression) {
statements;
Statements;
Initialization;
While (booleanExpression) {
Statements;
Increment;
Bucle do while: Es similar al bucle while pero con la particularidad de que el control
está al final del bucle (lo que hace que el bucle se ejecute al menos una vez,
independientemente de que la condición se cumpla o no). Una vez ejecutados los
statements, se evalúa la condición: si resulta true se vuelven a ejecutar las sentencias
incluidas en el bucle, mientras que si la condición se evalúa a false finaliza el bucle.
Este tipo de bucles se utiliza con frecuencia para controlar la satisfacción de una determinada
condición de error o de convergencia.
Do {
Statements
} While (booleanExpression);
Sentencias
Sentencias break y continue: La sentencia break es válida tanto para las bifurcaciones
como para los bucles. Hace que se salga inmediatamente del bucle o bloque que se
está ejecutando, sin realizar la ejecución del resto de las sentencias.
La sentencia continue se utiliza en los bucles (no en bifurcaciones). Finaliza la iteración “i” que
en ese momento se está ejecutando (no ejecuta el resto de sentencias que hubiera hasta el
final del bucle). Vuelve al comienzo del bucle y comienza la siguiente iteración (i+1).
Sentencias break y continue con etiquetas: Las etiquetas permiten indicar un lugar
donde continuar la ejecución de un programa después de un break o continue. El único
lugar donde se pueden incluir etiquetas es justo delante de un bloque de código entre
llaves {} (if, switch, do...while, while, for) y sólo se deben utilizar cuando se tiene uno o
más bucles (o bloques) dentro de otro bucle y se desea salir (break) o continuar con la
siguiente interacción (continue) de un bucle que no es el actual.
Por tanto, la sentencia break labelName finaliza el bloque que se encuentre a continuación de
labelName. Por ejemplo, en las sentencias:
While (true) {
Debido a que la potencial acumulación de éstos últimos suele hacer que la edición y la
detección de errores se vuelva un proceso engorroso, los entornos de programación modernos
-así como los programas de planilla de cálculo- resaltan en negrita el par correspondiente a la
posición que está editando el programador o usuario en cada momento. El control
(automático) del balance o equilibrio entre los paréntesis de apertura y de cierre se suele
conocer como brace match checking en inglés.
ruta="C:\Probar.csv"
If FileExists (ruta) then
Open "C:\Probar.csv" for input as #1
do while not EOF(1)
line input #1, linea
if left(línea, 3)=cod then
'Realizar una acción o varias acciones
End if
loop
close #1
BuscarCodigo=valor_a_devolver
End function
Ruptura
Puedes usar Puntos de Ruptura para pausar tu programa en cierta instrucción (línea de
código).
Para añadir un Punto de Ruptura, selecciona primero la línea de código donde quieres parar.
Ahora haz clic en el menú Depurar y luego en Añadir / Quitar Punto de Ruptura (o pulsando
Ctrl+F5). Haciendo clic en la barra en el margen izquierdo del editor a la altura de la línea
tendrá el mismo efecto que los pasos anteriores:
Ahora puedes examinar los datos en tu programa o ejecutar paso a paso tu programa.
Interrupción
En C las interrupciones se manejan de manera distinta, cada una tiene su función, por ejemplo:
Interrupción externa:
#int_EXT
EXT_isr ()
{
…
}
Interrupción por Timer 1:
#int_timer1
timer1_isr ()
{
…
}
El compilador salta a la función de interrupción cuando se detecta una interrupción. Es el
propio compilador el encargado de generar el código para guardar y restaurar el estado del
procesador.
También es el compilador quien borrará la interrupción (el flag). Sin embargo, nuestro
programa es el encargado de llamar a la función ENABLE_INTERRUPT () para activar
previamente la interrupción junto con el señalizador (flag) global de interrupciones.
Manejo de excepciones
A veces estas excepciones, para una máquina, no son casos que no deberían estar
contemplados, tal y como un programador se lo asigna, sino que pueden ser indicadores para
comprobar que realmente todo está marchando bien o no.
Como una de las formas de control de errores más usuales era con goto, se usaron otras
variantes, como las aserciones de código (assertions, en inglés) o, con la llegada de la
programación orientada a objetos, de los comandos try, catch y throw.
Estructura de Almacenamiento
Una estructura es un tipo de dato compuesto que permite almacenar un conjunto de datos de
diferente tipo. Los datos que contiene una estructura pueden ser de tipo simple (caracteres,
números enteros o de coma flotante etc.) o a su vez de tipo compuesto (vectores, estructuras,
listas, etc.).
A cada uno de los datos o elementos almacenados dentro de una estructura se les
denomina miembros
de esa estructura y éstos pertenecerán a un tipo de dato determinado.
La definición de una estructura en C corresponde con la sintaxis siguiente:
En esta declaración aclararemos que:
Recordemos que una estructura define un tipo de dato, no una variable, lo que significa que
no existe reserva de memoria cuando el compilador está analizando la estructura.
Posteriormente habrá que declarar variables del tipo definido por la estructura para poder
almacenar y manipular datos.
struct {
long_int num_tarjeta;
char tipo_cuenta;
float saldo;
} cliente1, cliente2;
Los arreglos son estructuras de datos consistentes en un conjunto de datos del mismo tipo. Los
arreglos tienen un tamaño que es la cantidad de objetos del mismo tipo que pueden
almacenar. Los arreglos son entidades estáticas debido a que se declaran de un cierto tamaño
y conservan ´este todo a lo largo de la ejecución del programa en el cual fue declarado.
Decimos arreglo o array indistintamente.
Unidimensionales
Son un conjunto de valores que se relacionan por medio de un nombre en común. También se
puede decir que son datos que se almacenan bajo el mismo nombre y para diferenciarlos se
utiliza un índice.
En el lenguaje C++ un arreglo puede tener varias dimensiones, en esta ocasión hablaremos de
los arreglos unidimensionales (una dimensión).
Arreglos Unidimensionales
Un arreglo unidimensional es una lista de valores guardados bajo el mismo nombre y del
mismo tipo. Cada valor dentro del arreglo se le conoce como elemento del arreglo.
En “tipo de dato” introduciremos que tipo de dato queremos (int, char, float, etc.), luego en
“identificador” introducimos como llamaremos a nuestro arreglo para ubicarlo e identificarlo
de manera rápida. Y entre los corchetes colocaremos el tamaño que le demos a nuestro array.
Quedando de esta manera:
1 int arreglo[3];
Ya que tenemos declarado nuestro arreglo necesitamos declarar cada uno de los elementos
que lo conforman, para esto utilizamos lo siguiente:
1 arreglo[1]=valor;
Iniciamos con el nombre de nuestro arreglo en el apartado que dice arreglo, entre los
corchetes colocaremos que parte del array utilizaremos, en C++ los valores se inician en 0, esto
quiere decir que si nuestro arreglo es de tamaño 3, al hacer nuestro índice hay que tomar el 0
como valor inicial quedando [0], [1] y [2] completando así nuestros 3 valores del tamaño antes
mencionado.
1 arreglo[1]=100;
Ejemplo: el siguiente programa carga el arreglo sqrs con los cuadrados de los números del 1 al
10 y luego los visualiza
#include <iostream>
1 using namespace std;
2 int main()
4 int i;
5 for (i=1;i<11;i++) {
6 sqrs[i-1]=i*i;
7 }// Un ciclo for para ir aumentando el número que elevaremos al cuadrado y definir la
8 operación.
9 for (i=0;i<10;i++) {
10 cout<<sqrs[i]<<endl;
return 0;
Bidimensional
Una dimensión es usada para representar elementos en una lista o secuencia de valores. En
algunos casos la relación entre elementos del arreglo no puede representarse en forma de
lista. Un arreglo de 2 dimensiones es usado para representar elementos en una tabla con
columnas y filas, se puede acceder a cualquier elemento dentro del arreglo indicando el índice
de la columna y la fila del arreglo.
La siguiente figura muestra un arreglo con 4 filas y 4 columnas. Las filas se acceden integrando
un rango desde 0 hasta el 3 y las columnas con un rango del 0 al 3. Un arreglo bi-dimensional
se declara de la misma manera que un arreglo unidimensional, exceptuando que su tamaño
debe ser declarado.
Este ejemplo declara caja como un arreglo de 2 dimensiones cuyos elementos son variables del
tipo float. Para acceder a un elemento individual del arreglo debe de especificar 2 expresiones
(una por cada dimensión) ejemplo: caja [0] [2] donde [0] es fila y [2] columna.
Necesitamos un arreglo que muestre el clima de cada día de año indicando la semana y el día
(un arreglo de 52*7=364)
1 int clima[52][7];
Hay veces que necesitamos utilizar una operación en cada elemento de una fila o columna en
el arreglo. Suponiendo en el caso anterior del clima que queremos sacar un promedio de la
temperatura de una semana debemos sumar los valores en la fila semana y dividirlo entre 7,
este caso accede al arreglo a través de las filas, si por el contrario lo que queremos es el
promedio de un día de la semana en específico (ejemplo promedio de todos lunes del año)
debemos sumar los elementos de la columna días y dividirlo entre 52, este caso accede al
arreglo a través de las columnas, un ejemplo más, si queremos sacar el promedio del clima del
año entero debemos acceder a cada elemento del arreglo (en este caso el orden para acceder
a las filas o columnas no tiene relevancia) y dividirlo entre 364, esto accede a todo el arreglo.
Considerando los 4 ejemplos comunes para procesar los arreglos echemos un vistazo a los
siguientes patrones para acceder a ellos.
Primero definimos algunas constantes y variables usando identificadores generales como fila y
columna.
Búsqueda de Arreglos
Búsqueda Secuencial: Este algoritmo compara uno a uno los elementos del arreglo
hasta recorrerlo por completo indicando si el número buscado existe.
Búsqueda Binaria: Este algoritmo permite buscar de una manera más eficiente un dato
dentro de un arreglo, para hacer esto se determina el elemento central del arreglo y se
compara con el valor que se está buscando, si coincide termina la búsqueda y en caso
de no ser así se determina si el dato es mayor o menor que el elemento central, de
esta forma se elimina una mitad del arreglo junto con el elemento central para repetir
el proceso hasta encontrarlo o tener solo un elemento en el arreglo. Este algoritmo
compara elementos consecutivos del arreglo uno con respecto del otro, si es mayor o
menor según el tipo de ordenamiento y los cambia de posición. Este proceso se repite
recorriendo todo el arreglo para posicionar un solo dato, por lo que es necesario
repetirlo para los demás datos del arreglo.
Ordenamiento de Arreglos
QuickSort: El ordenamiento por partición (Quick Sort) se puede definir en una forma
más conveniente como un procedimiento recursivo. Tiene aparentemente la
propiedad de trabajar mejor para elementos de entrada desordenados
completamente, que para elementos semi ordenados. Esta situación es precisamente
la opuesta al ordenamiento de burbuja. Este tipo de algoritmos se basa en la técnica
"divide y vencerás", o sea es más rápido y fácil ordenar dos arreglos o listas de datos
pequeños, que un arreglo o lista grande. Normalmente al inicio de la ordenación se
escoge un elemento aproximadamente en la mitad del arreglo, así al empezar a
ordenar, se debe llegar a que el arreglo este ordenado respecto al punto de división o
la mitad del arreglo. Se podrá garantizar que los elementos a la izquierda de la mitad
son los menores y los elementos a la derecha son los mayores. Los siguientes pasos
son llamados recursivos con el propósito de efectuar la ordenación por partición al
arreglo izquierdo y al arreglo derecho, que se obtienen de la primera fase. El tamaño
de esos arreglos en promedio se reduce a la mitad. Así se continúa hasta que el
tamaño de los arreglos a ordenar es 1, es decir, todos los elementos ya están
ordenados. En promedio para todos los elementos de entrada de tamaño n, el método
hace O(n log n) comparaciones, el cual es relativamente eficiente.
http://www.alegsa.com.ar/Dic/secuencia_de_escape.php
https://doc.velneo.es/secuencias-de-escape-en-cadenas-de-caracteres.html
https://es.wikipedia.org/wiki/C%C3%B3digo_escape_ANSI
https://www.significados.com/dispositivos-de-entrada-y-salida/
http://www.carlospes.com/curso_de_lenguaje_c/01_09_01_03_secuencias_de_escap
e.php
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/archivos/flujos.htm
http://dptocomp.ing.uc.edu.ve/compAvanzada/teoria/UnidadI/FlujosEntradaSalida.ht
m
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article
&id=935:leer-y-escribir-archivos-o-ficheros-en-c-fopen-fclose-modos-de-acceso-read-
write-y-append-cu00536f&catid=82&Itemid=210
https://es.scribd.com/doc/54735075/Entradas-y-Salidas-Del-Lenguaje-C
http://multiprogrammers.activo.mx/t20-estructura-de-control-bucles-y-bifurcaciones
https://es.wikipedia.org/wiki/Anidamiento_(inform%C3%A1tica)
http://www.tel.uva.es/personales/josdie/fprog/Sesiones/manualDevCpp/puntos_de_r
uptura.html
https://www.todopic.com.ar/foros/index.php?topic=25058.0
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Excepciones
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap7/cap71.htm
https://www.fing.edu.uy/tecnoinf/mvd/cursos/prinprog/material/teo/prinprog-
teorico07.pdf
https://blog.michelletorres.mx/arreglos-unidimensionales-en-c/
https://es.scribd.com/document/282234872/Busqueda-y-Ordenamiento-de-Arreglos