Está en la página 1de 41

TECNOLOGICO NACIONAL DE MEXICO

CAMPUS APIZACO

Materia:
Introducción a la programación
Tema:
Portafolio de evidencias
Profesor:
José Ruperto Rodríguez Lezama
Alumno:
Daniel Vázquez Morales
Fecha:
14-11-2022
Unidad 1
(introducción a la programación por computadora)
HISTORIA DE LA COMPUTADORA
La historia de las computadoras es una narración de eventos, innovaciones y desarrollos
tecnológicos en el campo de la informática y la automatización que llevaron a la aparición
de lo que llamamos computadoras, computadoras o máquinas de computadoras. También
registra sus mejoras y modernizaciones hasta llegar a versiones en miniatura y rápidas del
siglo XXI.
La invención de este dispositivo en el siglo XX revolucionó para siempre la forma en que
entendemos los procesos industriales, el trabajo, la sociedad y muchas otras áreas de
nuestras vidas.

Antecedentes de la computadora
La historia de la computadora tiene largos antecedentes, que se remontan a las primeras
reglas de cálculo y a las primeras máquinas diseñadas para facilitarle al ser humano la tarea
de la aritmética. El ábaco, por ejemplo, fue un importante adelanto en la materia, creado
alrededor de 4.000 a. C.
También hubo inventos muy posteriores, como la máquina de Blaise Pascal, conocida como
Máquina de Pascal o Pascalina, creada en 1642.
Los intentos del ser humano por automatizar continuaron desde entonces: Joseph Marie
Jacquard inventó en 1802 un sistema de tarjetas perforadas para intentar automatizar sus
telares, y en 1822 el inglés Charles Babbage empleó dichas tarjetas para crear una máquina
de cálculo diferencial.

El primer computador
Harvard diseñó la primera computadora electromecánica en 1944debido a las necesidades
de los aliados durante la Segunda Guerra Mundial.
Al mismo tiempo, en Alemania, se había desarrollado la Z1 y Z2, modelos de prueba de
computadores similares construidos por Konrad Zuse.

La primera computadora de uso comercial


En febrero de 1951 apareció la Ferranti Mark 1, una versión moderna de la computadora
norteamericana del mismo nombre que estaba disponible comercialmente.
El primer lenguaje de programación
En 1953 apareció FORTRAN (“Traducción de fórmulas matemáticas de IBM”),
desarrollado como el primer lenguaje formal de programación, o sea, el primer programa
diseñado para fabricar programas computacionales.

La primera computadora moderna


La primera computadora moderna apareció en otoño de 1968, como un prototipo
presentado por Douglas Engelbart. Tenía por primera vez un ratón o puntero, y una interfaz
gráfica de usuario (GUI), cambiando para siempre el modo en que los usuarios y los
sistemas computarizados interactuarían en adelante.

Dispositivos de almacenamiento secundario


El primer dispositivo de intercambio de información entre un computador y otro fueron los
disquetes Floppy, creados en 1971 por IBM. Se trataba de cuadrados negros de plástico
flexible, en el medio de los cuales había un material magnetizable que permitía grabar y
recuperar información.

Las primeras redes informáticas


La primera red de computadores del mundo fue ARPANET, creada en 1968 por el
Departamento de Defensa de los Estados Unidos. Sirvió de plataforma rápida de
intercambio de información entre instituciones educativas y estatales, con fines
probablemente militares.

Computadoras del siglo XXI


Hoy en día, las computadoras se han convertido en una parte importante de la vida diaria y
para muchos es inconcebible ya un mundo sin ellas.
la mayoría de estas computadoras se encuentran en nuestros teléfonos celulares, en diversos
electrodomésticos, a cargo de instalaciones automatizadas, y desempeñando un sinfín de
operaciones de manera automática e independiente.
Componentes básicos de una computadora
La estructura de un ordenador o computador
La estructura de computadores es uno de los primeros puntos que se tratan en Informática.
Porque para poder trabajar en informática a nivel profesional, lo básico es conocer cómo
funciona y de qué están compuestos los ordenadores.

¿Cuál es la estructura de una computadora?


La estructura de computadores básica se divide en dos partes: el hardware y el software. El
hardware está formado por los componentes de un ordenador que podemos tocar.
En cuanto al software, es su parte lógica. Básicamente es un conjunto de órdenes e
instrucciones que dicen al hardware, o parte física, lo que tiene que hacer en un momento
dado. Es decir, el trabajo o tarea que tiene que hacer.

¿Qué partes componen un PC?


Dentro de los componentes hardware de un ordenador, es decir, las partes que componen un
PC, están los siguientes tipos de componentes:
Dispositivos de entrada: se encargan de la admisión de la entrada de cifras a un ordenador.
Muchos se conectan de manera externa a la parte del sistema donde está la CPU (Unidad
Central de Proceso), la memoria y otros componentes. Son los periféricos de entrada:
pantalla, teclado, ratón, webcam, escáner o micrófono. También hay otros que van
instalados dentro de la torre con los discos y la PCU, o bien en la parte del portátil que
queda bajo el teclado. Entre ellos están las tarjetas capturadoras de vídeo.
Dispositivos de salida: al contrario de lo que sucede con los dispositivos de entrada, estos
componentes son los que se encargan de mostrar la información que procesa un ordenador.
Y de hacerlo de manera que sea comprensible. En esta categoría están las pantallas, los
auriculares, los altavoces o las impresoras.
Dispositivos de almacenamiento: son los que hacen posible que se puedan guardar archivos
con todo tipo de información en un ordenador. Entre ellos están los discos SSD y los discos
duros HDD, pero también las unidades de almacenamiento externas, como los sticks de
memoria USB o los discos externos. También, el CD o el DVD.

Dispositivos de computación: estos realizan todas las tareas que tienen que ver con los
cálculos y operaciones del sistema. También gestionan y controlan el resto de los
componentes del equipo. Entre ellos están la memoria, la tarjeta gráfica, el bus de datos y la
CPU. Este último componente, dentro de la estructura de computadores, se considera el
corazón y el cerebro del equipo.
Dispositivos de comunicación: estos aparatos que se integran en un ordenador hacen
posible que este pueda comunicarse con otro. Tanto si está junto a él como si está a varios
miles de kilómetros. A esta categoría pertenecen el módem, el router y la tarjeta de red.
¿Cuál es la estructura del ordenador o computadora?
La estructura de computadores de un PC es muy sencilla, y generalmente se compone de un
núcleo central y varios periféricos conectados a él. Dentro de este núcleo central se llevan a
cabo todas las operaciones de cómputo del ordenador. Básicamente contiene una unidad de
almacenamiento, memoria, buses de datos, tarjeta de red, tarjeta gráfica y CPU. Si se trata
de un equipo de sobremesa, estos componentes estarán instalados en una estructura en
forma de caja, bien alargada o plana, con varios conectores y puertos en su parte posterior.
A ellos se conectarán el resto de los componentes que permiten trabajar con un ordenador.

Tipos de ordenadores que existen


Los principales tipos de ordenadores que hay en la actualidad son los siguientes:
Superordenador: en realidad es un conjunto de ordenadores caracterizados por tener un
rendimiento muy elevado. Funcionan de manera simultánea y se encargan del proceso y
gestión de grandes cantidades de datos. Tienen un tamaño muy grande, y también una
capacidad de proceso muy alta.
Mainframe: este tipo de ordenador también se utiliza para el proceso de volúmenes de
información muy grandes. Pero su función es ser una especie de centro de operación que
después distribuye información a otros cientos o miles de equipos a los que está conectado
a través de una red. Estos tienen toda una capacidad de potencia mucho menor.
Servidor: más que un ordenador, un servidor funciona como un equipo de distribución de
aplicaciones y datos -almacenados e instalados en él- a otros ordenadores que tiene
conectados, también a través de una red.
Estación de trabajo: conocido también por su traducción al inglés, 'workstation', se trata de
un ordenador de aspecto externo similar al de un PC convencional, pero con mayor
potencia de computación. Es capaz de abordar procesos complejos en los que trabajan
varios usuarios a la vez, además de realizar múltiples tareas al mismo tiempo. Se utilizan,
entre otros, en entornos profesionales relacionados con la ciencia, el trabajo con grandes
cantidades de datos y el mundo de la creación y producción multimedia.
Ordenador personal o PC: es el tipo de ordenador más popular, y el que tenemos
habitualmente la mayoría de los usuarios. Se utiliza para tareas básicas en informática,
como el proceso de textos. También para conectarse a internet o reproducir música, vídeos
y otros archivos multimedia. Puede ser de sobremesa, de grandes dimensiones y con
periféricos externos conectados, o portátil. Este último tipo de ordenador se caracteriza por
ser compacto y ligero, y por poder transportarse con facilidad.
PDA: ya en desuso, este tipo de equipos se pueden considerar los precursores de los
smartphones. Se trataba de un dispositivo de bolsillo con diversas funciones de agenda,
calendario o edición de texto. Algunos modelos, con capacidad de conectarse a internet,
ofrecían también correo electrónico y navegación web, así como herramientas de
mensajería.
Lista de partes de un computador (Componentes de la PC)
Aquí está la lista de piezas del computador con todas las piezas básicas de hardware que
necesitará para un PC en funcionamiento. Cada una de ellas la veremos en detalle para que
sepas que funcion tiene o como podrias emplear durante el ensamblaje de tu propio PC.
 Case
 Placa madre
 CPU [Procesador]
 GPU [Tarjeta gráfica] (si no hay GPU integrada)
 RAM [Memoria]
 Dispositivo de almacenamiento (SSD, NVME SSD, HDD)
 Refrigeración (CPU, chasis)
 PSU [Fuente de alimentación]
Case:
La caja del computador no es más que una caja de aspecto elegante que contiene todos los
componentes de la PC. Se puede abrir y cerrar y normalmente, tiene áreas predefinidas con
tornillos y agujeros donde se supone que todos los demás componentes deben ser colocados
y fijados.
En el mercado las podemos encontrar en diferentes colores, tamaños, con o sin
ventiladores, algunas tienen luces LED, otras no, algunas tienen paneles laterales de vidrio,
otras parecen absolutamente locas. Es el chasis de nuestro ordenador, así que sin ella
trabajamos en el aire.
Placa madre, Motherboard:
La placa madre es un circuito impreso al que se conectan todos los demás componentes del
ordenador. Desde esta placa se distribuye la energía a cada una de las partes del PC. La
Placa Madre tiene conectores para cables como los cables de alimentación y los cables de
datos, ranuras para tarjetas como las GPUs y enchufes para las CPUs.
También hay un montón de pequeños bloques de construcción como transistores,
condensadores, puentes y un montón de otras pequeñas partes, que van todos a hacer que
los diferentes componentes de hardware trabajen bien juntos.

Procesador (CPU):
Una CPU es la unidad central de procesamiento de un ordenador, y sin ella, nada funciona
realmente. Casi todo lo que haces en un ordenador tendrá que ser calculado por la CPU de
alguna manera, por lo que tener una CPU rápida (altos relojes y alto número de núcleos)
hará que tu PC sea más rápido.
Cada tipo de CPU tiene un enchufe específico, que se llama 2066, 1151, AM4, TR4 y así
sucesivamente, y la placa madre necesitará exactamente el mismo enchufe para ser
compatible con la CPU.
Este suele ser el primer paso para elegir nuevas piezas para la construcción de tu propio
ordenador. Elige una CPU, comprueba qué enchufe tiene, y luego elige una placa base
compatible.
Fan Cooler, ventilador de la CPU:
Todo lo que consume energía también produce calor y la CPU produce mucho calor. Esto
significa que tiene que ser enfriado para poder funcionar sin problemas. ¿Qué necesitamos
para enfriar un CPU? ¡Un enfriador de CPU!
Asegúrate de tener un CPU-Cooler compatible con tu CPU y tu Socket. Es el mismo que el
de la placa base y el de la CPU. El Enfriador tiene que encajar con la CPU y el Zócalo.
Tarjeta gráfica (GPU):
Lo siguiente es la tarjeta gráfica. Su propósito es el cálculo de cualquier cosa que tenga que
ver con las imágenes y envía estas imágenes (imágenes, interfaz de usuario, GUI) al
monitor.
Hay dos tipos principales de GPU, la GPU integrada (iGPU) y una GPU discreta.
La GPU integrada está integrada en la CPU. Esto significa que algunas CPU ya tienen un
chip gráfico integrado y no se necesita una GPU adicional para conectar un monitor.
Cuando tu CPU tiene gráficos integrados saldrá al adaptador de pantalla de la placa madre.
Lo que pasa con las GPU integradas es que son muy limitadas.
Suelen ser lo suficientemente buenas para tareas ligeras como el procesamiento de textos,
algunos juegos menores y similares, pero tan pronto como quieras sumergirte en tareas de
gran carga gráfica como el renderizado de GPU 3D, juegos de alta gama, edición de vídeo,
diseño gráfico o muchos otros, tendrás que conseguir una GPU discreta.

Una GPU discreta es una GPU que no es parte de la CPU. Normalmente viene en su propia
pequeña placa de circuito impreso (como la de la foto de arriba), que luego se conecta a una
ranura PCI Express de la placa madre.
Memoria (RAM):
La Memoria de Acceso Aleatorio, Random Access Memory (RAM), por sus siglas en
inglés. Es la parte de almacenamiento temporal del pensamiento de la computadora si la
comparas con un cerebro.
La RAM almacena los datos en los que trabaja activamente la CPU. Puede leer y escribir
muy rápido pero pierde todo lo que había almacenado una vez que se apaga. Una placa
madre tiene ranuras de RAM donde la RAM se conecta. La RAM viene en diferentes
tamaños, desde alrededor de 4 GB hasta 32 GB por Módulo en los sistemas actuales. Tener
más Módulos por supuesto multiplicará la cantidad de RAM.
Almacenamiento (HDD / SSD / NVME SSD), Disco Duro:
Debido a que la memoria RAM no puede almacenar nada sin energía y queremos poder
apagar nuestra computadora de vez en cuando, necesitamos un medio de almacenamiento
que conserve sus datos almacenados, incluso cuando la energía está apagada.
Hay 3 tipos principales de almacenamiento masivo:
El HDD
El SSD
El NVME SSD
Los tres hacen más o menos lo mismo, almacenan los datos por ti. La principal diferencia
entre los tres es la velocidad.
Un HDD (que todavía tiene partes mecánicas móviles) es el más lento de los tres y
normalmente leerá y guardará los datos a unos 100MByte/s.
Una SSD ya leerá y escribirá a unos 500MByte/s y una SSD NVME ya lee y escribe datos
secuenciales con hasta 3500MByte/s.
Los discos duros como los SSD se conectan a un enchufe SATA en la placa madre a través
de un cable SATA. También necesitan energía que reciben a través de un cable de
alimentación de la fuente de alimentación, la SSD NVME, sin embargo, sólo se conecta
directamente a la placa madre, es muy pequeña y no necesita cables adicionales.
Unidad de suministro de energía (PSU):
Es la parte del hardware que se encarga de brindarle energía a todos y cada uno de los
componentes de tu computador.
Lo importante es saber cuánta potencia necesitará tu PC actual para funcionar de forma
estable y tal vez cuánta necesites en el futuro si planeas añadir más componentes, como
GPUs o unidades de disco adicionales
Algoritmo
¿Qué es un algoritmo?
Un algoritmo es una serie de instrucciones secuenciales, es decir, que van uno después del
otro que permiten ejecutar acciones o programas. Es crucial para avances tecnológicos
como la inteligencia artificial. Algunos programadores afirman que dicha secuencia es más
importante que el lenguaje de programación y la computadora.

Tipos de algoritmos
En programación se pueden englobar dos tipos de algoritmo.
Cuantitativos:
Son aquellos cuya resolución depende de un cálculo matemático.
Ejemplo: volviendo a Facebook, muchas de las funciones de las métricas son cuantitativas.
Por ejemplo, sumar cuántas vistas tuvo una publicación, el número de interacciones y el
cruce resultante de ambos datos para tener una media.
Cualitativos:
Su resolución no involucra cálculos numéricos, sino secuencias lógicas.
Ejemplo: la inteligencia artificial ha permitido el desarrollo de programas para la detección
de fraudes bancarios.

Diagramas de flujo para representar programas


El diagrama de flujo se muestra como una representación esquemática de diversos pasos de
un determinado programa.
Metodología para la solución de problemas basados en computadora
A fin de resolver un problema utilizando sistemas de cómputo, debe seguirse una serie de
pasos que permiten avanzar por etapas bien definidas hacia la solución. Estas etapas son las
siguientes:
 Definición del problema.
 Análisis de los datos.
 Diseño de la solución.
 Codificación.
 Prueba y depuración.
 Documentación.
 Mantenimiento.
Definición del problema:
Está dada en sí por el enunciado del problema, el cual debe ser claro y complejo. Es
importante que conozcamos exactamente “que se desea obtener al final del proceso” ;
mientras esto no se comprenda no puede pasarse a la siguiente etapa.
Análisis de los datos:
Para poder definir con precisión el problema se requiere que las especificaciones de entrada
y salida sean descritas con detalle ya que esto es un requisito para lograr una solución
eficaz.
Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes
aspectos:
Los resultados esperados.
Los datos de entrada disponibles.
Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado (fórmulas,
tablas, accesorios diversos).
Una medida aconsejable para facilitar esta etapa consiste en colocarnos en lugar de la
computadora deduciendo los elementos que necesitaremos para alcanzar el resultado.

Diseño de la solución:
Una computadora no tiene capacidad para solucionar problemas más que cuando se le
proporcionan los sucesivos pasos a realizar, esto se refiere a la obtención de un algoritmo
que resuelva adecuadamente el problema. En caso de obtenerse varios algoritmos,
seleccionar uno de ellos utilizando criterios ya conocidos.
Esta etapa incluye la descripción del algoritmo resultante en un lenguaje natural, de
diagrama de flujo o natural de programación.
Como puede verse, solo se establece la metodología para alcanzar la solución en forma
conceptual, es decir ; sin alcanzar la implementación en el sistema de cómputo.
Codificación:
Se refiere a la obtención de un programa definitivo que pueda ser comprensible para la
máquina. Incluye una etapa que se reconoce como compilación.
Si la codificación original se realizó en papel, previo a la compilación deberá existir un
paso conocido como transcripción.
 Programa Fuente
Está escrito en un lenguaje de programación. (pascal, C++,Visual Fox, Visual Basic, etc).
Es entendible por el programador.
 Programa Ejecutable
Está en lenguaje máquina.
Entendible por la máquina.
Prueba y depuración:
Una vez que se ha obtenido el programa ejecutable, este es sometido a prueba a fin de
determinar si resuelve o no el problema planteado en forma satisfactoria.

Las pruebas que se le aplican son de diversa índole y generalmente dependen del tipo de
problema que se está resolviendo. Comúnmente se inicia la prueba de un programa
introduciendo datos válidos, inválidos e incongruentes y observando cómo reacciona en
cada ocasión.
El proceso de depuración consiste en localizar los errores y corregirlos en caso de que estos
existan. Si no existen errores, puede entenderse la depuración como una etapa de
refinamiento en la que se ajustan detalles para optimizar el desempeño del programa.
Documentación:
Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin
errores), se procede a la utilización para resolver problemas del tipo que dio origen a su
diseño. En vista de que esta utilización no podrá ser supervisada en todas las ocasiones por
el programador, debe crearse un manual o guía de operación que indique los pasos a seguir
para utilizar el programa.
Mantenimiento:
Se refiere a las actualizaciones que deban aplicarse al programa cuando las circunstancias
así lo requieran. Este programa deberá ser susceptible de ser modificado para adecuarlo a
nuevas condiciones de operación.
Cualquier actualización o cambio en el programa deberá reflejarse en su documentación.

Unidad 2
(El lenguaje y su entorno integrado de desarrollo)

Introducción al lenguaje y a su entorno de desarrollo


¿Qué es el lenguaje C?
El lenguaje C es un lenguaje de programación estructurado. Lo que quiere decir que el
código o algoritmo esta ordenado o estructurado. Así pues es fácilmente diferenciable de un
lenguaje orientado a objetos. El lenguaje C es uno de los lenguajes más rápidos y potentes
que existen hoy en día con una sintaxis sumamente compacta y de alta portabilidad.
La función principal de los lenguajes de programación es escribir programas que permiten
la comunicación usuario-máquina. Unos programas especiales (compiladores o intérpretes)
convierten las instrucciones escritas en código fuente, en instrucciones escritas en lenguaje
máquina

Desarrollo para el lenguaje de programación


Para los diversos lenguajes de programación que existen, se requiere utilizar un entorno de
desarrollo para la elaboración de programas, estas herramientas son comúnmente llamadas
Entorno de Desarrollo Integrado (IDE —Integrated Development Environment). Para este
propósito, cada lenguaje de programación tiene sus propios entornos de desarrollo para
generar código fuente, compilar, ejecutar y buscar errores de lógica conocidos como “bugs”
entre otras tareas de carácter muy específico.

Estructura de un programa
Estructura general de un programa
Un programa puede considerarse como una secuencia de acciones (instrucciones) que
manipulan un conjunto de objetos (datos).

Partes principales de un programa


Dentro del bloque de instrucciones de un programa se pueden diferenciar tres partes
fundamentales. En algunos casos, estas tres partes están perfectamente delimitadas, pero en
la mayoría sus instrucciones quedan entremezcladas a lo largo del programa, si bien
mantienen una cierta localización geométrica impuesta por la propia naturaleza de las
mismas.
 Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un
dispositivo externo, almacenándolos en la memoria central para que puedan ser
procesados.
 Proceso o algoritmo: está formado por las instrucciones que modifican los objetos a
partir de su estado inicial hasta el estado final, dejando éstos disponibles en la
memoria central.
 Salida de resultados: conjunto de instrucciones que toman los datos finales de la
memoria central y los envían a los dispositivos externos.

Clasificación de las Instrucciones


Una instrucción se caracteriza por un estado inicial y final del entorno. El estado final de
una instrucción coincide con el inicial de la siguiente. No siempre una instrucción modifica
el entorno, pues su cometido puede limitarse a una mera observación del mismo o a un
cambio en el orden de ejecución de otras. Las instrucciones pueden ser:
Instrucciones de declaración: Se utilizan en aquellos lenguajes de programación que no
tienen declaración explícita de los objetos. Su misión consiste en indicar al procesador que
reserve espacio en la memoria para un objeto del programa, indicando asimismo su
nombre, tipo y características.
Instrucciones primitivas: Son aquellas que ejecuta el procesador de modo inmediato. Las
principales son asignación, entrada y salida.
Instrucción de asignación: Consiste en calcular el valor de una expresión y almacenarlo en
una variable. En algún lenguaje es preciso calcular previamente el resultado de la
expresión, pues la instrucción de asignación sólo permite el movimiento de un valor simple.
Instrucción de entrada: Toma un dato de un dispositivo de entrada y lo almacena en un
objeto. En algún lenguaje, los datos de entrada no provienen de un dispositivo externo, sino
que han sido colocados previamente en el mismo programa.
Instrucción de salida: Toma el valor de una expresión u objeto y lo lleva a un dispositivo
externo.
Instrucciones compuestas: Son aquellas que el procesador no puede ejecutar directamente,
sino que realiza una llamada a un subprograma, subrutina o párrafo.
Instrucciones de control: Son aquellas de controlar la ejecución de otras instrucciones.
Instrucción alternativa: Controla la ejecución de unas u otras instrucciones según una
condición. Puede ser simple o doble (SI y SINO).
Instrucción de salto incondicional: Altera la secuencia normal de ejecución de un programa,
continuando la misma en la línea indicada en la propia instrucción (IR A).
Instrucción de salto condicional: Altera la secuencia normal de ejecución de un programa
únicamente en el caso de cumplimiento de una condición asociada a la propia instrucción
(SI ... IR A).
Instrucción repetitiva: Hace que se repitan una o varias instrucciones un número
determinado o indeterminado de veces (PARA, MIENTRAS, HASTA e ITERAR).

Elementos auxiliares de un programa


Son variables que realizan funciones específicas dentro de un programa, y por su gran
utilidad, frecuencia de uso y peculiaridades, conviene hacer un estudio separado de las
mismas. Las más importantes son:

Contadores: Un contador es un campo de memoria cuyo valor se incrementa en una


cantidad fija, positiva o negativa, generalmente asociado a un bucle. Toma un valor inicial
antes de comenzar su función, y cada vez que se realiza el suceso, incrementa su valor. Se
utiliza en los siguientes casos:
Para contabilizar el número de veces que es necesario repetir una acción (variable de
control de un bucle).
Para contar un suceso particular solicitado por el enunciado del problema (asociado a un
bucle o independientemente).
Acumuladores: Un acumulador es un campo de memoria cuyo valor se incrementa
sucesivas veces en cantidades variables. Se utiliza en aquellos casos en que se desea
obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el
valor 0. También en las situaciones en que hay que obtener un total como producto de
distintas cantidades se utiliza un acumulador, debiéndose inicializar con el valor 1.
Interruptores (switches): Un interruptor es un campo de memoria que puede tomar dos
valores exclusivos (0 y 1, -1 y 1, FALSO y CIERTO, etc.). Se utiliza para:
Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior,
para salir de un bucle o para decidir en una instrucción alternativa qué acción realizar.
Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.

Tipos de programas
Un programa, por lo general, estará compuesto por una secuencia de acciones, algunas de
las cuales serán alternativas o repetitivas. En determinados programas sencillos, no se da
esta mezcla de acciones, en cuyo caso se pueden clasificar como sigue:

Programas lineales: consisten en una secuencia de acciones primitivas (su ejecución es


lineal en el orden en que han sido escritas).
Programas alternativos: consisten en el anidamiento de acciones alternativas (las tablas de
decisión se realizan mediante programas alternativos).
Programas cíclicos: son aquellos en los que un conjunto de acciones se repiten un número
determinado o indeterminado de veces (un programa de este tipo se denomina bucle).
Otra clasificación relativa a la aplicación desarrollada por el programa es:

Programas de gestión: se caracterizan por el manejo de gran cantidad de datos con pocos
cálculos (resuelven problemas de gestión).
Programas técnicos-científicos: al contrario que los anteriores, realizan gran cantidad de
cálculos con pocos datos (revuelven problemas matemáticos, físicos, etc.).
Programas de diseño (CAD): se caracterizan por la utilización de técnicas gráficas para
resolver problemas de diseño.
Programas de simulación: intentan reflejar una situación real, para facilitar su estudio.
Programas educativos (EAO): utilizan las ventajas del ordenador para la docencia.
Programas de inteligencia artificial: se utilizan para simular el razonamiento humano.

Identificadores (Variables y constantes)


Identificadores en programación
Los identificadores representan los datos de un programa (constantes, variables, tipos de
datos). Un identificador es una secuencia de caracteres que sirve para identificar una
posición en la memoria de la computadora, que nos permite acceder a su contenido.

Constantes y Variables
Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la
ejecución del programa.
Ejemplo:
pi = 3.1416
Variable: Es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia
durante la ejecución del programa. Para poder reconocer una variable en la memoria de la
computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un
algoritmo.
Ejemplo:
área = pi * radio ^ 2
Las variables son : el radio, el área y la constate es pi

Clasificación de las Variables


Por su Contenido:
 Numéricas
 Lógicas
 Alfanuméricas (String)
Por su Uso:
 De Trabajo
 Contado
 Acumuladores

Tipos de datos
Cuáles son los tipos de datos en programación que existen
Los tipos de datos en un lenguaje de programación pueden ser muy variados, así que es
difícil preguntarte cuantos tipos de datos hay en un lenguaje, ya que incluso puedes crearte
los tuyos propios, mediante enumeraciones o estructuras.
Ponemos tres ejemplos de tipos de datos básicos que son los más utilizados: los números,
los textos y las fechas.
Si estamos trabajando con números, podemos sumar, restar, multiplicar, dividir y muchas
operaciones más, como comparar.
Si estamos con textos, podemos comparar (si son iguales o no), podemos sustituir parte del
texto, añadir texto a uno existente, etc.
Con fechas podemos también sumar o restar fechas (o días, meses, años), compararlas, etc.
Operadores aritméticos, lógicos y relacionales
Los operadores en programación están en categorías dependiendo de su funcionalidad, los
primeros son los operadores aritméticos que a su vez se dividen en binarios y unarios, los
operadores relacionales y los operadores lógicos.

Operadores aritméticos
Binarios: los operadores binarios indican operaciones sencillas de incremento (suma o
multiplicación) y decremento (resta, división y modulo), estos son los operadores binarios:
+: representa la suma de dos o más valores o variables.
–: representa la resta de dos o más valores o variables.
*: representa la multiplicación de dos o más valores o variables.
/: representa la división de dos o más valores o variables.
%: representa el módulo (obtención del residuo de una división) de dos o más valores o
variables.
Unarios: los operadores unarios representan operaciones simplificadas de incremento,
decremento y modificación de signos, estos son los operadores unarios:
++: Incrementa el valor de una variable en una unidad.
—: Decrementa el valor de una variable en una unidad.
–: Cambia el signo de una variable, es como multiplicar por -1.

Operadores Relacionales
Son operadores que se encargan de unir y comparar dos o más valores, siempre se utilizan
en comparaciones de parejas y están dadas por los símbolos:
== : igual que
!= : diferente a
> : mayor que
< : menor que
>= : mayor igual que
<= : menor igual que

Operadores Lógicos
Son operadores de unión, también llamados compuertas lógicas, estos operadores pueden
unir dos o más pares de valores comparados por medio de los operadores relaciones y están
dados por estos símbolos:
&&: Operador AND (Y) quiere decir que todas las condiciones deben ser verdaderas para
que se ejecute una acción.
||: Operador OR (O) quiere decir que de todas las condiciones solo una debe ser verdadera y
se asume que con eso es suficiente para hacer determinada acción.
!: Operador NOT (NO) quiere decir que se niega la afirmación para cambiar su valor, es
decir cambia de verdadero a falso y de falso a verdadero.

Programación estructurada
¿Qué es la programación estructurada?
La programación estructurada es una teoría orientada a mejorar la claridad, calidad y
tiempo de desarrollo utilizando únicamente subrutinas o funciones. Basada en el teorema
del programa estructurado propuesto por Böhm y Jacopini, ha permitido desarrollar
software de fácil comprensión.

Objetivo
El objetivo de la programación estructurada es realizar programas fáciles de escribir,
depurar y modificar. Los programas conseguidos son claros, ordenados, comprensibles, sin
saltos.

Características
Este modo de programación se caracteriza porque los programadores pueden fragmentar el
código fuente de sus programas en bloques lógicamente estructurados, que consisten en
bucles, bloques lógicos y comandos condicionales.

Estructuras de control
El teorema estructural indica que cualquier algoritmo con un único punto de inicio y de
culminación se puede constituir como una composición de tres estructuras de control.

Al programar de forma lógica y clara estas estructuras de control admitidas, la


programación estructurada permite un enfoque eficiente de las funciones con cualquier
grado de dificultad.
Estructura de secuencia o lineal:
Esta estructura es simplemente la secuencia o sucesión de dos o más operaciones o
comandos.
Estructura de decisión o de alternativas:
Es la selección de un comando entre dos posibles alternativas. También se permite elegir
entre más de dos alternativas.
Estructura de ciclo o repetitiva con una pregunta inicial:
Se repiten ciertos comandos siempre que se cumpla una determinada condición. También el
ciclo se puede realizar con un contador.

Programación orientada a objetos


La programación orientada a objetos se basa en el concepto de crear un modelo del
problema de destino en sus programas. La programación orientada a objetos disminuye los
errores y promociona la reutilización del código. Python es un lenguaje orientado a objetos.
Los objetos definidos en Características
Identidad: Cada objeto debe ser distinguido y ello debe poder demostrarse mediante
pruebas. Las pruebas is e is not existen para este fin.
Estado: Cada objeto debe ser capaz de almacenar el estado. Para este fin, existen atributos,
tales como variables de instancias y campos.
Comportamiento: Cada objeto debe ser capaz de manipular su estado. Para este fin existen
métodos.
Creación de objetos basada en clases: Las clases son plantillas para la creación de objetos.
Los objetos son estructuras de datos con el comportamiento asociado.
Herencia con polimorfismo: Python da soporte a la herencia individual y múltiple. Todos
los métodos de instancias de Python son polimórficos y se pueden alterar temporalmente
mediante subclases.
Encapsulación con ocultación de datos: Python permite ocultar los atributos. Cuando se
ocultan los atributos, se puede acceder a los mismos desde fuera de la clase únicamente
mediante los métodos de la clase. Las clases implementan métodos para modificar los
datos.

Unidad 3
(Estructuras condicionales, selectivas y repetitivas)
Estructuras condicionales (si, si entonces)
Este comando primero evalúa una expresión condicional lógica y puede devolver verdadero
o falso. Al devolver verdadero se ejecuta el comando entonces, al devolver falso se ejecuta
el comando El Sino. La sintaxis en Pseint es:

Por otro lado, tenga en cuenta que este tipo de declaración no tiene cláusula Sino, tan solo
quedando Si-Entonces y no como un Si-Entonces-Sino.

Estructuras selectivas (elegir)


Las estructuras de selección se utilizan para tomar decisiones lógicas, por lo que también se
les llama estructuras de decisión o alternativas. En las estructuras de selección se evalúa
una condición y en función del resultado de esta se realiza una serie de instrucciones u otra.
Las condiciones se especifican utilizando expresiones lógicas. Las estructuras de selección
pueden ser simples, dobles, compuestas o múltiples.

Estructura selectiva simple (IF - END IF)


La estructura de selección simple evalúa una condición, si ésta es verdadera ejecuta una o
varias instrucciones, si es falsa continua la ejecución normal del programa.

Sintaxis:
If <comprobación lógica>Then
[Acciones a realizarse si se cumple la condición]
End If

Ejemplo:
Verificar si un número es positivo.
If a > 0 Then
Label1.Caption = "positivo"
End If

Estructuras repetitivas (para, mientras, hacer


mientras)
Estructuras Repetitivas
Las estructuras repetitivas permiten ejecutar acciones que pueden descomponerse en otras
acciones primitivas, esta estructura debe tener una entrada y una salida en la cual se ejecute
la acción un determinado o indeterminado número de veces. Las estructuras repetitivas
pueden ser: WHILE (mientras), FOR (para), DO WHILE (hacer mientras).
FOR (PARA)
Esta estructura ejecuta las acciones del cuerpo del bucle un número especificado de veces,
y de modo automático controla el número de iteraciones o pasos.
Esta estructura se compone de tres expresiones. La primera expresión es aquella que asigna
un valor inicial (acción a ejecutar), la segunda expresión es la que determina como y
cuando se continua o no el bucle, una condición que debe ser satisfecha para que se
continue la ejecución (expresión lógica), y la tercera expresión permite que el valor inicial
(indice) se modifique en cada pasada.

WHILE (MIENTRAS)
Repite el cuerpo del bucle mientras se cumpla una determinada condición.
DO- WHILE (HACER MIENTRAS)
La estructura HACER MIENTRAS cumple la misma función que la estructura
MIENTRAS.
La diferencia está en que la estructura MIENTRAS comprueba la condición al inicio y
repetir lo hace al final. Es por ello que la estructura HACER MIENTRAS se ejecuta por lo
menos una vez.

Unidad 4
(Arreglos)
Unidimensionales: conceptos básicos, operaciones y aplicaciones
Conceptos básicos
Un arreglo unidimensional tiene una sola dimensión. A los arreglos de una dimensión
también se les llama listas.
Un arreglo unidimensional es un tipo de datos estructurado que está formado de una
colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar
listas de elementos iguales.
El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos
acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o
posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su
posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se
debe proporcionar la dirección base del arreglo, la cota superior y la inferior.

Operaciones
Para manejar un arreglo, las operaciones a efectuarse son:
 Declaración del arreglo
 Creación del arreglo
 Inicialización de los elementos del arreglo
 Acceso a los elementos del arreglo
Aplicaciones
Los elementos de un arreglo son variables del tipo base del vector, por lo que se utilizan de
la misma manera en expresiones y demás instrucciones, como la asignación. Por ejemplo,
para asignar un valor a un elemento de un arreglo basta con escribir:
arreglo[indice] = valor;
en donde arreglo es el nombre de la variable e índice hace referencia a la posición del
elemento al que se le quiere asignar el valor.

Multidimensionales: conceptos básicos, operaciones y aplicaciones


Conceptos básicos.
Los arreglos multidimensionales tienen más de una dimensión. Este también es un tipo de
dato estructurado, que está compuesto por n dimensiones. Para hacer referencia a cada
componente del arreglo es necesario utilizar n índices, uno para cada dimensión.

Operaciones
Para manejar un arreglo, las operaciones a efectuarse son:
· Declaración del arreglo
· Creación del arreglo
· Inicialización de los elementos del arreglo
· Acceso a los elementos del arreglo

Aplicaciones.
Se necesita manejar, en un arreglo, la posición de todos los caracteres escritos en una
enciclopedia. El arreglo deberá tener las siguientes dimensiones:
Una para manejar el renglón en la página,
otra para la columna en la página,
otra para la hoja en el volumen y
otra para el volumen en la enciclopedia.
Cada página tiene 30 renglones y 80 columnas.
Cada volumen tiene 500 páginas.
La enciclopedia tiene 18 volúmenes.
Unidad 5
(Programación modular)
Declaración de funciones
Un programa de C++ consta de varias entidades, como variables, funciones, tipos y
espacios de nombres. Cada una de estas entidades debe declararse para que puedan usarse.
Una declaración especifica un nombre único para la entidad, junto con información sobre
su tipo y otras características. En C++, el punto en el que se declara un nombre es el punto
en el que se vuelve visible para el compilador
Una definición de función consiste en la declaración y el cuerpo de la función, encerrado
entre llaves, que contiene declaraciones de variables, sentencias y expresiones.
Las variables declaradas dentro del cuerpo se denominan variables locales. Se salen del
ámbito cuando finaliza la función; por lo tanto, una función nunca debe devolver una
referencia a una variable local.

Con parámetros
Los parámetros formales son aquellos especificados en la cabecera de la función (entrada).
Al declarar un parámetro formal hay que especificar su tipo de dato. Los parámetros
formales sólo se conocen dentro del módulo. Los parámetros actuales son las expresiones
pasadas como argumento en la llamada a una función.

Control de flujo: Cuando se ejecuta la llamada resultado = Cuadrado(valor); el control de


flujo salta a la definición de la función. Se realiza la correspondencia entre parámetros. El
correspondiente parámetro formal recibe una copia del parámetro actual, es decir, en
tiempo de ejecución se realiza la asignación. parámetro formal = parámetro actual En el
ejemplo, entrada = 4 Empiezan a ejecutarse las sentencias de la función y cuando llega
alguna sentencia retorno, la función termina y devuelve al módulo llamador.
En el entorno se almacenan, entre otras cosas: Los parámetros formales.
Los datos locales (constantes y variables) La dirección de retorno de la función.
Cuando un módulo llama a otro, sus respectivos entornos se almacenan apilados uno
encima del otro.
Hasta que no termine de ejecutarse el último, el control no pasará al anterior.

Uso de bibliotecas de funciones


¿Qué son exactamente las librerías?
En C++, se conoce como librerías (o bibliotecas) a cierto tipo de archivos que podemos
importar o incluir en nuestro programa. Estos archivos contienen las especificaciones de
diferentes funcionalidades ya construidas y utilizables que podremos agregar a nuestro
programa, como por ejemplo leer del teclado o mostrar algo por pantalla entre muchas otras
más.
Sintaxis para declarar Librerías en C++
La declaración de librerías, tanto en C como en C++, se debe hacer al principio de todo
nuestro código, antes de la declaración de cualquier función o línea de código, debemos
indicarle al compilador que librerías usar, para el saber qué términos estarán correctos en la
escritura de nuestro código y cuáles no. La sintaxis es la siguiente: #include <nombre de la
librería> o alternativamente #include "nombre de la librería". Cualquiera de las 2 formas es
válido en C++ (no estoy seguro si en C sea válido), ten en cuenta que siempre el nombre de
la librería debe ir entre " y " o entre < y >. En tu código puedes declarar todas las librerías
que quieras, aunque en realidad no tienen sentido declarar una librería que no vas a usar en
tu programa, sin embargo, no existe límite para esto.
Algunas de las librerías de uso más común de C++ y que forman parte de las librerías
estándar de este lenguaje.
fstream: Flujos hacia/desde ficheros. Permite la manipulación de archivos desde el
programar, tanto leer como escribir en ellos.
iosfwd: Contiene declaraciones adelantadas de todas las plantillas de flujos y sus typedefs
estándar. Por ejemplo, ostream.
iostream: Parte del a STL que contiene los algoritmos estándar, es quizá la más usada e
importante (aunque no indispensable).
La biblioteca list: Parte de la STL relativa a contenedores tipo list; listas doblemente
enlazadas
math: Contiene los prototipos de las funciones y otras definiciones para el uso y
manipulación de funciones matemáticas.
memory: Utilidades relativas a la gestión de memoria, incluyendo asignadores y punteros
inteligentes (auto_ptr).
"auto_ptr" es una clase que conforma la librería memory y permite un fácil manejo de
punteros y su destrucción automáticamente.
Biblioteca new: Manejo de memoria dinámica
numeric: Parte de la librería numérica de la STL relativa a operaciones numéricas.
ostream: Algoritmos estándar para los flujos de salida.
queue: Parte de la STL relativa a contenedores tipo queue (colas de objetos).
Librería stdio: Contiene los prototipos de las funciones, macros, y tipos para manipular
datos de entrada y salida.
Librería stdlib: Contiene los prototipos de las funciones, macros, y tipos para utilidades de
uso general.
string: Parte de la STL relativa a contenedores tipo string; una generalización de las
cadenas alfanuméricas para albergar cadenas de objetos. Muy útil para el fácil uso de las
cadenas de caracteres, pues elimina muchas d elas dificultades que generan los char
typeinfo: Mecanismo de identificación de tipos en tiempo de ejecución
vector: Parte de la STL relativa a los contenedores tipo vector; una generalización de las
matrices unidimensionales C/C++
forward_list: Esta librería es útil para implementar con gran facilidad listas enlazadas
simples.
list: Permite implementar listas doblemente enlzadas (listas enlazadas dobles) fácilmente.
iterator: Proporciona un conjunto de clases para iterar elementos.
regex: Proporciona fácil acceso al uso de expresiones regulares para la comparación de
patrones.
thread: Útil para trabajar programación multihilos y crear múltiples hilos en nuestra
aplicación.
time: Útil para obtener marcas de tiempo durante ejecución. Se usa con frecuencia para
conocer el tiempo exacto durante un programa.

Entrada y salida
Definición:
Un stream en C++ es un objeto mediante el cual un programa puede insertar o extraer datos
utilizando los operadores de inserción << y de extracción >> o funciones. Los datos pueden
ser tipos fundamentales (int, char, double, etc.), o cadenas de caracteres. 2. Streams
predefinidos Por defecto, la salida asignada a un programa es la pantalla, y en C++ está
representada por el stream cout a la que se denomina “salida estándar”. Las definiciones
necesarias para su uso están contenidas en el archivo de encabezamiento iostream.
Caracteres, números y variables pueden insertarse en cout mediante el operador de
inserción <<.

Archivos
Archivos en C++
Los archivos o ficheros son la forma en la que C++ permite el acceso al disco.
Todos los procesos tienen abiertos, por defecto, los archivos 0(entrada), 1(salida) y 2(salida
de errores), de manera que en C++ se corresponden con los objetos cin, cout y cerr. De
estos últimos, el primero pertenece a la clase ifstream, que a su vez desciende de istream
(flujo de entrada). Los dos últimos pertenecen a la clase ofstream, que desciende de la clase
ostream (flujo de salida). Una jerarquía aproximada puede verse a continuación.

Archivos de texto
Los archivos de texto son los más sencillos de manejar, pues, como ya se ha mencionado,
para trabajar con ellos se emplean los operadores de inserción y extracción que ya se
conocen de la consola.

Archivos de entrada
El típico recorrido de un archivo de texto desconocido (al igual que uno binario), se hace
con lectura adelantada. Así, si en el directorio donde se ejecuta la aplicación hay un archivo
llamado entrada.txt, se puede volcar por pantalla de la siguiente forma, utilizando la clase
ifstream:

Archivos de salida
Un archivo de salida de texto se maneja con la clase ofstream:
int main()
{
ofstream f( "salida.txt" );
if ( f.is_open() ) {
f << "hola " << endl;
f << 5 << endl;
}
else cerr << "Error de apertura del archivo." << endl;
}
Para leer y volcar por pantalla este archivo que acabamos de generar, se haría lo siguiente:
int main()
{
string s;
ifstream f( "salida.txt" );
if ( f.is_open() ) {
getline( f, s );
cout << s << endl;

getline( f, s );
cout << atof( s.c_str() ) << endl;
}
else cerr << "Error de apertura del archivo." << endl;
}
Archivos binarios
Los archivos binarios se tratan con la clase fstream. En este caso, debemos especificar si se
desea entrada y salida, o sólo entrada o sólo salida. Uno de los usos más típicos es utilizar
el archivo como una pequeña base de datos, utilizando un registro (struct) como referencia.
Recordemos que los registros deben tener todo el mismo tamaño.
Cuando se deseen guardar registros de este tipo en un archivo, se puede hacer de la manera
siguiente:

Persona p1;
Persona p2;

strcpy( p1.nombre, "Baltasar" );


strcpy( p1.telefono, "988387028" );
p1.edad = 33;

strcpy( p2.nombre, "Pedro" );


strcpy( p2.telefono, "988387018" );
p1.edad = 33;

ofstream f( "datos.bin", ios::binary );


if ( f.is_open() ) {
f.write( (char *) &p1, sizeof( Persona ) );
f.write( (char *) &p2, sizeof( Persona ) );
} else cout << "Error de apertura de archivo." << endl;
}
Es posible realizar una lectura de cada registro de la siguiente forma:
Persona p;
ifstream f( "datos.bin", ios::binary );

if ( f.is_open() ) {
f.read( (char *) &p, sizeof( Persona ) );
while( !f.eof() ) {
volcar( cout, p );
f.read( (char *) &p, sizeof( Persona ) );
}
} else cout << "Error de apertura de archivo." << endl;
Entrada y salida
Además, los archivos binarios permiten el posicionamiento, tanto del puntero de lectura (el
lugar de dónde se va a leer) como el de escritura (el lugar del archivo donde se va a
escribir). Estos punteros sólo entienden de una posición en bytes en el archivo, y no de
registros.
Siendo prácticos, para avanzar al registro n, será necesario emplear la fórmula: (n-1) *
sizeof( Persona ). Así, para el tercer registro:
f.seekp( 2 * sizeof( Persona ), ios::beg ); // escritura
f.seekg( 2 * sizeof( Persona ), ios::beg ); // lectura
Es posible saber en qué punto del archivo se encuentra uno de los punteros mediante los
métodos:
f.tellg();
f.tellp();

Cadenas
Para las cadenas de texto, la situación se complica un poco: se crean como “arrays” de
caracteres. Están formadas por una sucesión de caracteres terminada con un carácter nulo (\
0), de modo que tendremos que reservar una letra más de las que necesitamos
Longitud de la cadena.
En una cadena que definamos como “char texto[40]” lo habitual es que realmente no
ocupemos las 39 letras que podríamos llegar a usar. Si guardamos 9 letras (y el carácter
nulo que marca el final), tendremos 30 posiciones que no hemos usado. Pero estas 30
posiciones generalmente contendrán “basura”, lo que hubiera previamente en esas
posiciones de memoria, porque el compilador las reserva para nosotros pero no las
“limpia”.

Ejercicio propuesto:
Un programa que te pida una frase y la muestre en pantalla sin espacios. Por ejemplo, si la
frase es Hola, cómo estás?, debería aparecer en pantalla, Hola, cómo estás?.
Existe un posible problema cuando se mezcla el uso de "gets" y el de "scanf": si primero
leemos un número, al usar "scanf("%d", ...", la variable numérica guardará el número...
pero el Intro que pulsamos en el teclado después de introducir ese número queda esperando
en el buffer (la memoria intermedia del teclado). Si a continuación leemos un segundo
número, no hay problema, porque se omite ese Intro, pero si leemos una cadena de texto,
ese Intro es aceptable, porque representaría una cadena vacía. Por eso, cuando primero
leemos un número y luego una cadena usando "gets", tendremos que "absorber" el Intro, o
de lo contrario el texto no se leería correctamente. Una forma de hacerlo sería usando
"getchar":
scanf("%d", &numero);
getchar();
gets(texto);
Cuando queremos dar a una variable el valor de otra, normalmente usamos construcciones
como a =2, o como a = b. Pero en el caso de las cadenas de texto, esta NO es la forma
correcta, no podemos hacer algo como saludo="hola" ni algo como texto1=texto2. Si
hacemos algo así, haremos que las dos cadenas estén en la misma posición de memoria, y
que los cambios que hagamos a una de ellas se reflejen también en la otra.

Otras funciones de cadenas: sprintf, sscanf, strstr, …


Hay dos posibilidades más de las cadenas de texto que merece la pena comentar. Son las
que nos ofrecen las funciones “sprintf” y “sscanf”:
La funcion “sprintf” crea una cadena de texto a partir de una especificación de formato y
unos ciertos parámetros, al igual que hace “printf”, pero la diferencia está en que “printf”
manda su salida a la pantalla, mientras que “sprintf” la deja guardada en una cadena de
texto.
¿Qué utilidad tiene esta orden? Nos puede resultar cómoda cuando queramos formatear
texto que no vaya a aparecer directamente en pantalla de texto, sino que lo vayamos a
enviar a un fichero, o que queramos mostrar en pantalla gráfica, o enviar a través de una red
mediante “sockets”, por ejemplo.
Por otra parte “sscanf” es similar a “scanf”, con la diferencia de que los valores para las
variables no se leen desde el teclado, sino desde una cadena de texto
strcpy(cadena, "20 30");
sscanf(cadena, "%d %d", &primerNum, &segundoNum);
Nota: sscanf devuelve el número de valores que realmente se han detectado, de modo que
podemos comprobar si ha tomado todos los que esperábamos o alguno menos (porque el
usuario haya tecleado menos de los que esperábamos o porque alguno esté tecleado
incorrectamente).
if (sscanf(cadena, "%d %d", &primerNum, &segundoNum)<2)
printf("Debia teclear dos números");
Unidad 6
(Programación de interfaces)
Programación de puertos de la computadora
Definición de puertos de la computadora
Un puerto en la computadora es por donde la información fluye hacia dentro o hacia fuera.
Los dispositivos Hardware como la impresora o la del modem pueden ser llamados puertos,
un puerto que manda información fuera de tu computadora puede ser el monitor o la
impresora. Un puerto que recibe información sería el modem o un scanner.
Se dividen en 2 tipos:
a) Puertos físicos de la computadora: son conectores integrados en tarjetas de expansión ó
en la tarjeta principal "Motherboard" de la computadora; diseñados con formas y
características electrónicas especiales, utilizados para interconectar una gran gama de
dispositivos externos con la computadora, es decir, los periféricos. Usualmente el conector
hembra estará montado en la computadora y el conector macho estará integrado en los
dispositivos ó cables. Varía la velocidad de transmisión de datos y la forma física del puerto
acorde al estándar y al momento tecnológico.
Anteriormente los puertos venían integrados exclusivamente en tarjetas de expansión
denominadas tarjetas controladoras, posteriormente se integraron en la tarjeta principal
"Motherboard" y tales controladoras perdieron competencia en el mercado, pero
actualmente se siguen comercializando sobre todo para servidores.
b) Puertos lógicos de la computadora: son puntos de acceso entre equipos para el uso de
servicios y flujo de datos entre ellos, ejemplos el puerto 21 correspondiente al servicio FTP
(permite el intercambio de archivos) ó el puerto 515 que está asociado con el servicio de
impresión.
Los puertos lógicos de la computadora
Al conectar un equipo a la red, este forma parte de la misma, y con ello adquiere
necesidades de comunicación con Switches, Servidores, otras computadoras, etc. por lo que
se asigna un identificador electrónico denominado IP (Internet Protocol), que consiste en su
versión IPv4, de 4 bloques de máximo 4 dígitos, como ejemplo 192.168.108.32, con lo cual
se presenta e identifica con el equipo destino.
En Internet debido a la gran cantidad de servicios que se ofrecen, es necesario
diferenciarlos, por lo que se utilizan los denominados puertos (independientemente de los
puertos físicos de la computadora). Estos son un tipo de puertos lógicos, son puntos de
acceso entre los equipos que les permitirán ó no, transferir información entre sí. Se han
contabilizado hasta 65,000 puertos para las conexiones, siendo algunos estratégicos para
ciertas actividades e incluso críticos.
Estos puertos pueden ser protegidos por medio de Software especializado en ello y
también por medio de Firewall (Corta fuegos: que se encarga de filtrar la información que
circula entre las redes).

Elaboración de interfaces
Tipos de Interfaces
La interfaz es de dos tipos que ellos son:
Interfaz Paralelo
Una interfaz paralela transfiere datos en la forma de uno o varios bytes en la paralela a o del
dispositivo.
Este constituye la respuesta de la interfaz a la petición leída emitida por la unidad central de
proceso. Tan pronto como la señal lista se cae a 0, la señal aceptaré es borrada y todo el
ducto es borrado. Note que cuando la memoria intermedia es dirigida, la bandera de estado
de insumo es reinicializada a 0. Este es esencial a fin de garantizar que cada artículo de
datos de insumo es leído por el ordenador sólo una vez. Una operación de producción
procede del mismo modo, cuando la señal habilitaré es puesta a 1.
Interfaz Consecutivo
Una interfaz consecutiva transmite y recibe datos un bit a la vez.
Una interfaz consecutiva contiene el mismo recorrido de control y dirección que la
interface paralela, pero con una adición controla para transferir datos en serie entre registros
y el dispositivo de entrada - salida. Aquí, un chip es usado, que es un barco de circuito
integrado que contiene todo el recorrido lógico para la conversión paralela y consecutiva
requerida.

Elaborar una interfaz:


Como consecuencia del uso masivo de internet y de la gran cantidad de documentación
disponible para desarrolladores, es posible encontrar en la actualidad una gran variedad de
productos de software. El problema está en que gran parte de esas aplicaciones no cumple
con el objetivo principal para el cual debieron ser diseñadas, que es facilitar la vida de sus
usuarios, razón por la que muchas veces son descartadas y reemplazadas por otras
aplicaciones. En la mayor parte de los casos esto no se debe a errores de codificación, sino
más bien a la forma en que las diferentes funcionalidades del software son presentadas a su
público, lo que de ahora en adelante conoceremos como "interfaz de usuario".
- Uso inmediato: nadie quiere perder el tiempo en aprender algo que no sabe si le servirá
finalmente, por esta razón, el software debe presentar sus funcionalidades básicas de la
forma más simple e intuitiva posible, debiendo quedar operativo desde el primer momento.
Si existe un set de acciones o funciones avanzadas, es ideal que no interfieran con el uso
básico del programa y que sólo sirvan como mejoras para cuando el usuario esté en
condiciones de utilizarlas.

- Distinción clara de los elementos: siempre que se incorpore un componente a la pantalla


del usuario, el diseñador deberá preocuparse que este sea diferenciable del resto y de que su
funcionalidad esté claramente expresada. Para ello, el mejor recurso es la utilización de
imágenes, las cuales se recomienda sean únicas para cada componente o agrupación de
estos, y semejantes a objetos de la vida real, de forma de hacer la aplicación más intuitiva.

- Atención a las glosas o textos: cada vez que se necesite colocar un texto en pantalla, ya
sea para reforzar el concepto de un componente o para entregar una instrucción o
advertencia, este deberá ser cuidadosamente escrito, procurando utilizar siempre el mismo
tamaño, color y fuente de letra, dejando fuera el uso de "negrita”, "cursiva" o cualquier otro
elemento que sobrecargue la pantalla más de lo necesario. Aunque suene obvio, los textos
deberán ser siempre lo más concisos y claros posibles, intentando idealmente localizarlos
de acuerdo con la región geográfica donde vayan a ser utilizados.

- Flexibilidad, ante todo: no se debe confundir el control con la falta de flexibilidad. Si un


usuario, por ejemplo, desea no incorporar una imagen en una tarjeta de presentación
utilizando un formato que, si la requiere, el software a lo más debería advertir sobre la falta
de la foto, pero no prohibirle que termine el proceso de elaboración de su tarjeta. Un
desarrollador nunca sabrá los alcances finales y usos definitivos de su software hasta que
sea utilizado por sus usuarios, por lo que es mejor enfocar los esfuerzos en mejorar la
robustez del software antes que caer en un control excesivo.
- Manejo de preferencias de usuario: con la tecnología de hoy no es difícil incorporar
mecanismos de almacenamiento personalizado de preferencias para los usuarios. Recordar
elementos tan sencillos como la configuración del idioma o la aparición de ciertos cuadros
de diálogo facilitan enormemente el trabajo de quienes utilizan una aplicación.
En resumen, una buena interfaz:
- Disminuye la resistencia natural del usuario a utilizar la aplicación.
- Reduce los tiempos de aprendizaje.
- Mejora la calidad de vida de los usuarios (facilita su labor).

Control de interfaces a través de computadora


Interfaz de control
Las interfaces de control se podrían así definir como placas multifunción de E/S
(entrada/salida) en configuración externa (es decir, no son placas instalables en ninguna
bahía de expansión del PC), que se conectan con el PC mediante alguno de los puertos de
comunicaciones propios del mismo (paralelo, serie o USB, generalmente) y sirven de
interfaz entre el mismo y los sensores y actuadores de un sistema de control.
Las interfaces proporcionan, de forma general, una o varias de las siguientes funciones:

Entradas analógicas: que convierten niveles analógicos de voltaje o de corriente en


información digital procesable por el ordenador. A este tipo de entradas se pueden conectar
distintos sensores analógicos, como por ejemplo una LDR.

Salidas analógicas: que convierten la información digital en corriente o voltaje analógicos


de forma que el ordenador pueda controlar sucesos del "mundo real". Su principal misión
es la de excitar distintos actuadores del equipamiento de control: válvulas, motores,
servomecanismos, etc.

Entradas y salidas digitales: usadas en aplicaciones donde el sistema de control sólo


necesita discriminar el estado de una magnitud digital (por ejemplo, un sensor de contacto)
y decidir la actuación o no de un elemento en un determinado proceso, pro ejemplo, la
activación/desactivación de una electroválvula.

Recuento y temporización: algunas tarjetas incluyen este tipo de circuitos que resultan
útiles en el recuento de sucesos, la medida de frecuencia y amplitud de pulsos, la
generación de señales y pulsos de onda cuadrada, y para la captación de señales en el
momento preciso.

Tipos de interfaces de usuario


• Dentro de las Interfaces de Usuario se puede distinguir básicamente tres tipos:
• A) Una interfaz de hardware, a nivel de los dispositivos utilizados para ingresar, procesar
y entregar los datos: teclado, ratón y pantalla visualizadora.

• B) Una interfaz de software, destinada a entregar información acerca de los procesos y


herramientas de control, a través de lo que el usuario observa habitualmente en la pantalla.
• C) Una interfaz de Software-Hardware, que establece un puente entre la máquina y las
personas, permite a la máquina entender la instrucción y al hombre entender el código
binario traducido a información legible

También podría gustarte