Publicado el 9 de Mayo del 2017
1.211 visualizaciones desde el 9 de Mayo del 2017
880,0 KB
168 paginas
Creado hace 13a (26/05/2011)
Programación en C++
#include
using namespace
<iostream>
std;
main(void)
for
(int
cout
return 0;
= 0; cnt
cnt
<< ″I will not throw airplanes in class.\n″;
< 500; cnt++)
int
{
}
Contenidos
El entorno UNIX
¿Qué es programar?
Herramientas
Técnicas de programación
Estructuras de programación
Estilo de codificación
Tipos y estructuras
Operadores
Funciones y parámetros
Preproceso y bibliotecas
Herramientas
de datos
de desarrollo I
de desarrollo II
© Francisco Rosales
& Jose María Peña
Programación C++
3
El Entorno UNIX
¿Qué es UNIX?
¡Cómo es UNIX!
¡Cómo es Linux!
Usuarios y Grupos
Sesión de trabajo
Procesos y Concurrencia
Sistema de Ficheros
Descriptores de fichero
© Francisco Rosales
& Jose María Peña
Programación C++
4
¿Qué es UNIX?
Uno de los SSOO más extensos y potentes
■ Multiusuario
■ Mucho usuarios simultáneos
■ Multiproceso
■ Cada usuario ejecutando simultáneamente
muchos procesos
■ Multiplataforma
■ Escrito 99% en C
■ Portado a multitud de plataformas
© Francisco Rosales
& Jose María Peña
Programación C++
5
¡Cómo es UNIX!
■ Sensible al tipo de letra
unix <> Unix <> UNIX
■ Para usuarios NO torpes
■ Hace lo que se le pide sin preguntar
rm –r *
borraría TODO
■ Lo borrado es irrecuperable
© Francisco Rosales
& Jose María Peña
Programación C++
6
¡Cómo es Linux!
■ Estándar POSIX
■ Portable OperatingSystemInterface
■ Licencia GNU
■ Evoluciona
■ Debe suministrarse el código fuente!
■ Programadores voluntarios de todo el
mundo lo mantienen al día
■ Gratis
■ Se paga la "Distribución"
© Francisco Rosales
& Jose María Peña
Programación C++
7
Usuario
■ Debe tener abierta cuenta en el sistema
■ Se identifica con un nombre de usuario
I
loginname
■ Cuentas protegida por contraseña
password
■ Internamente el sistema identifica al usuario
con un número
UID
UserIdentifier
© Francisco Rosales
& Jose María Peña
Programación C++
8
Grupo
■ Los usuarios están organizados en
grupos
II
■ Cada usuario pertenece al menos a un
grupo
■ Internamente el sistema identifica al
grupo con un número
GID
GroupIdentifier
© Francisco Rosales
& Jose María Peña
Programación C++
9
Privilegios
■ Operaciones que un usuario puede
III
realizar en el sistema
■ Delimitadas en función de:
■ Su identidad (pareja UID y GID)
■ Permisos de acceso al fichero (9 bits)
eXecute
Write
Read
rwxrwxrwx
Owner
Group
Others
© Francisco Rosales
& Jose María Peña
Programación C++
10
IV
Superusuario
■ También denominado root
■ Encargado de administrar el sistema
■ Tiene UID = 0 (cero)
■ No tiene restricciones de ningún tipo
■ Puede hacer y deshacer lo que quiera
■ La administración de UNIX es:
■ Delicada y de responsabilidad
■ Exige amplios conocimientos
© Francisco Rosales
& Jose María Peña
Programación C++
11
Sesión de trabajo
I
■ Periodo de tiempo que un usuario está
utilizando el sistema
■ Identificación frente al sistema
login: loginname_
passwd: *******_
■ Se arranca un intérprete de mandatos
prompt> _
■ Para terminar...
exit
logout
o
© Francisco Rosales
& Jose María Peña
Programación C++
12
Intérprete de mandatos
■ La interacción del usuario con el
sistema UNIX suele ser a través de
un intérprete de mandatos
II
■ Se le denomina shell (concha)
■ No hay una sino varias, a escoger.
■ Para uso interactivo y programación
■ Para más información, realizar el tutorial
http://laurel.datsi.fi.upm.es/~ssoo/FPSO/download/Entorno%20UNIX.ps
© Francisco Rosales
& Jose María Peña
Programación C++
13
Mandatos
III
mandato [opciones] [argumentos...]
■ Campos separados por espacios
■ [ ]
■ ...
■ Las opciones comienzan por un -
■ Petición de ayuda sobre un mandato
indica opcional
indica uno o varios
(menos)
-h
--help
o
© Francisco Rosales
& Jose María Peña
Programación C++
14
man [what] Manual Pages
■ Copia onlinede los manuales del sistema
■ Secciones:
sh, man, cat)
open, umask)
printf, fopen)
Mandatos (ej.
Llamadas al sistema (ej.
Funciones de librería (ej.
Dispositivos (ej.
Formato de ficheros (ej.
Juegos
Miscelánea
Mandatos de Administración del Sistema
1.
2.
3.
4.
5.
6.
7.
8.
null)
passwd)
© Francisco Rosales
& Jose María Peña
Programación C++
15
Procesos
■ Al invocar un mandato:
I
■ Se ejecuta el fichero con ese nombre
■ Todo programa en ejecución es un
proceso
■ Internamente el sistema identifica cada
proceso con un número
PID
Process Identifier
© Francisco Rosales
& Jose María Peña
Programación C++
16
Concurrencia
■ Cada proceso activo de cada usuario del
sistema, compite con los demás por ejecutar
■ El sistema operativo decide cuál ejecuta en
II
cada momento
■ Todo sucede muy muy deprisa:
■ Cada proceso avanza como si fuera el único
■ Todos están avanzando simultáneamente
■ ps
Muestra los procesos del sistema
© Francisco Rosales
& Jose María Peña
Programación C++
17
III
Jerarquía
■ Los procesos se organizan en una
jerarquía padre--hijo(s)
■ El ancestro es el proceso init
con PID = 1
■ Cada proceso está asociado a su
proceso padre por el PPID
© Francisco Rosales
& Jose María Peña
Programación C++
18
Árbol de Ficheros
■ Una única estructura jerárquica de ficheros
■ En UNIX los dispositivos se “montan”
■ NO existe el concepto de “unidad”
I
■ Al entrar al sistema, nos situamos en el HOME
■ Pertenece al usuario
■ Por debajo de él podemos crear cuantos subdirectorios o
ficheros queramos
© Francisco Rosales
& Jose María Peña
Programación C++
19
■ Directorio raíz
■ Es la raíz de la jerárquica de nombres
■ se denota con / (dividido) no con el \
■ Directorio HOME
Tipos de objeto
■ Directorios:
■ Contienen siempre las dos entradas:
II
. (punto)
.. (punto punto)
refiere al directorio que la contiene
refiere al directorio padre de este
■ Ficheros normales:
■ Secuencias de bytes
■ Ficheros especiales:
■ Son el interfaz de acceso a los dispositivos
■ Están bajo el directorio /dev
■ Se tratan exactamente igual que los ficheros
normales, de forma que son indistinguibles
© Francisco Rosales
& Jose María Peña
Programación C++
20
pwd PrintWorkingDirectory
■ Cuál es el directorio en que nos
encontramos en cada momento, al cuál
denominamos directorio actual de
trabajo
© Francisco Rosales
& Jose María Peña
Programación C++
21
cd [dir] ChangeDirectory
■ Cambia del actual directorio a otro
cd
Invocado sin argumento
nos devuelve al HOME
Realmente nos deja en el
directorio actual de trabajo
Cambia al directorio padre
del directorio actual
cd ..
cd .
© Francisco Rosales
& Jose María Peña
Programación C++
22
ls [-opt] [dirs...]
■ Presenta el contenido en los directorios
List Directory
indicados
■ Si no se indica se asume el directorio actual
■ Las opciones más usadas:
■ -l
Una línea por entrada con: permisos,
propietario, grupo, tamaño, fecha, etc
■ -a Muestra entradas que empiezan por .
(punto), que normalmente no se ven
Recursivamente los subdirectorios
■ -R
© Francisco Rosales
& Jose María Peña
Programación C++
23
Descriptores de fichero
I
■ Los procesos manejan ficheros a través
de los denominados descriptores de
fichero
■ El resultado de abrir un fichero es un
descriptor
■ Las operaciones de manejo (lectura,
escritura, etc.) usan el descriptor
■ Para los programas, un descriptor no es
más que un número entero positivo
© Francisco Rosales
& Jose María Peña
Programación C++
24
Descriptores estándar
■ Son los descriptores 0, 1 y 2
■ Se considera que siempre están abiertos
■ Los programas estándar los usan debidamente
0 Entrada estándar
II
De él se leerán los datos a procesar
1 Salida estándar
En él se escribirán los resultados del proceso
2 Error estándar
En él se escribirán los errores del proceso
© Francisco Rosales
& Jose María Peña
Programación C++
25
¿Qué es programar?
¿Cómo es un ordenador por dentro?
¿Qué sabe hacer un ordenador?
¿Para qué se usan los ordenadores?
Ciclo de vida del software
Ciclo de programación
¿Cómo es un ordenador por dentro?
Memoria
Principal
RAM
Mapas de
memoria de
programa
PILA
PILA
PILA
DATOS
DATOS
TEXTO
TEXTO
DATOS
TEXTO
ROM
© Francisco Rosales
& Jose María Peña
Arquitectura
Von Newmann
Controladoras
de Perifericos
µP
ALU
Bus de datos
Registros
Bus de
Entrada/Salida
Controladora
Gráfica AGP
Controladora
de Disco IDE
Controladora
USB
Controladora
RS232 Modem
Programación C++
27
¿Qué sabe hacer un ordenador?
Muy poco Rapidííííííííísimo
■ Ejecuta un único hilo de instrucciones:
■ Aritméticas: suma, resta, multiplicación...
■ Lógicas: igual, mayor, menor...
■ Salto: condicional, incondicional, llamada...
■ A una increíble velocidad
■ PC a 3000 MIPS y subiendo
■ Sin pausa
© Francisco Rosales
& Jose María Peña
Programación C++
28
¿Para qué se usan los ordenadores?
■ Sólo hará lo que alguien le diga cómo
hacer
■ Problemas tengan solución “a mano”
■ Programas útiles para alguien:
■ Tareas complejas, de precisión, tediosas, etc
■ Es necesario desarrollar software
■ No es trivial
© Francisco Rosales
& Jose María Peña
Programación C++
29
A.--
B.--
C.--
1, 1.5
...2
Especificación
Análisis
Ciclo de vida
del software I
1.--
2.--
3.--
Diseño
main(){}
A.OK
B.OK
C.OK
Programación
Usuario
Implantación
© Francisco Rosales
& Jose María Peña
Validación
Programación C++
30
Ciclo de vida del software II
■ Especificación
■ ¿Qué quiere exactamente el usuario final?
■ Contrato
■ Análisis
■ ¿Cómo resolver el problema?
■ Descomposición
■ Diseño
■ Cada una de las partes y su interconexión
© Francisco Rosales
& Jose María Peña
Programación C++
31
Ciclo de vida del software III
■ Programación
■ Integración
■ Calidad e integración de cada módul
Comentarios de: Programación en C++ - Introducción (0)
No hay comentarios