Está en la página 1de 53

Programación I

Mtra. Diana Antonia Martínez Sánchez


anaid1804@gmail.com
diana.martinez@ucad.edu.mx
Lenguajes de Programación

• ?Qué es un lenguaje de programación?


Son aquellos programas destinados a la construcción de otros programas informáticos,
su nombre se debe a que comprende un lenguaje formal (compuesto por símbolos y
reglas sintácticas y semánticas)
Tipos de lenguajes de programación

Lenguaje ensamblkador y
Lenguaje de bajo nivel
maquina

Lista de instrucciones
básicas y fáciles de leer y
Lenguaje ensamblador
fáciles de convertir en 0's
y 1's
Lenguajes de
programación
Lenguaje que se entiende
directamente con la
Lenguaje maquina
unidad de procesamiento
(lenguaje binario)

Fáciles de leer y
entender, usan palabras
Lenguaje de alto nivel
y símbolos
lógicos significativos
Tipos de lenguajes de programación
Lenguajes compilados (C, C++, Erlang, Haskell, Rust y Go.)
• Los lenguajes compilados son convertidos directamente a código máquina que el procesador puede ejecutar. Como
resultado, suelen ser más rápidos y más eficientes al ejecutarse en comparación con los lenguajes interpretados.
También le dan al desarrollador más control sobre aspectos del hardware, como la gestión de memoria y el uso del
CPU.
• Los lenguajes compilados necesitan un paso de compilación (build) - primero necesitan compilarse manualmente.
Necesitas "recompilar" el programa cada vez que necesites hacer un cambio.
Lenguajes interpretados (PHP, Ruby, Python y JavaScript.)
• Estos lenguajes ejecutan línea por línea el programa y a la vez ejecutan cada comando, el traductor puede decirte ese
cambio a medida que sucede.
• Los lenguajes interpretados alguna vez fueron significativamente más lentos que los lenguajes compilados. Pero, con
el desarrollo de la compilación justo a tiempo, esa diferencia se está reduciendo.
La Programación Orientada a Objetos (POO) es un modelo o un estilo de programación que nos da unas guías sobre
cómo trabajar con él. Se basa en el concepto de clases y objetos. Este tipo de programación se utiliza para estructurar un
programa de software en piezas simples y reutilizables de planos de código (clases) para crear instancias individuales de
objetos.
• Clases, objetos e instancias, encapsulación, abstracción, herencia, polimorfismo.
• La programación imperativa es un estilo de programación en el
que los programas están formados por instrucciones que
especifican cómo se ha de calcular el resultado.
Tipos de • La programación funcional/declarativa es un estilo de
programación programación cuyo método básico de computación es la
aplicación de funciones a sus argumentos.
Compilador

• Compilar es el proceso de transformar un programa informático escrito en un lenguaje en un conjunto de instrucciones en otro
formato o lenguaje que pueda entender la máquina.

• El compilador toma el código de fuente escrito en algún lenguaje de programación, lo traduce entero a código de máquina, y
luego lo guarda en un archivo ejecutable.
• La traducción la realiza de una sola vez, y al mismo tiempo se encarga de detectar errores. Si existen errores en el código, el
programa no compilará y en vez de eso se mostrarán mensajes indicando que errores hay en el programa para poder corregirlos y
volver a pedir al compilador que haga la traducción del código.
• Una vez que el programa compila y genera el archivo ejecutable se va a poder correr el programa sobre la plataforma para la cual
se programó.

• En términos informáticos esto quiere decir que el compilador genera un archivo ejecutable que solo sirve para la plataforma sobre
la cual se hizo el programa. Si quisiera que el programa se ejecutara sobre otra plataforma tendría que encargarme de compilarlo
nuevamente, pero esta vez para esa plataforma.
Interprete

• El intérprete es un programa que traduce el programa que se codificó con un cierto


lenguaje de programación a código de máquina. ¿O sea que es lo mismo que el
compilador? NO, ya que si bien hace lo mismo la diferencia radica en como hace esa
traducción.

• El compilador traduce todo el programa de una sola vez y genera un archivo ejecutable
mientras que el intérprete es un programa que reside en memoria y va traduciendo el
programa a medida que se vaya necesitando, lo que quiere decir que este intérprete no
genera ningún archivo ejecutable, y por tanto el mismo seguirá cargado en memoria
hasta que finalice el programa.
Editor
Un editor de código fuente es un editor de texto diseñado
específicamente para editar el código fuente de programas
informáticos

Librerías
Las librerías de programación son conjuntos de archivos de
código que se utilizan para desarrollar software. Su objetivo es
facilitar la programación, al proporcionar funcionalidades
comunes, que ya han sido resueltas previamente por otros
programadores.
Ejercicio
//mi segundo hola mundo en C
#include <conio.h>
#include <stdio.h>
//mi primer hola mundo en C
int main() {
//stdio.h (stdio, Standard Input/Output)
#include <stdio.h> printf( "Hola mundo." );
int main() /*permite realizar una "pausa"y se debe incluir
{
printf( "Hola mundo." ); el archivo de cabecera conio.h.*/

} getch(); /* Pausa */

return 0;

}
auto else return volatile
break enum short While

case extern signed union

char float sizeof unsigned

Palabras const
continue
for
goto
Static
struct

reservadas Default
Do
if
int long
switch
typedef

en C double register void


C cuenta con 32 palabras reservadas:

Nota
C es un lenguaje sensible al contexto, diferencia entre mayúsculas y
minúsculas, y por tanto, diferencia entre una palabra escrita total o
parcialmente en mayúsculas y otra escrita completamente en minúsculas.
Tipos de datos

• <tipo de dato> <nombre de variable> [, nombre de variable];

float a;
int b,c;
char caracter, otro_caracter;

unsigned char a;
long double b;
short int i;
Rango de las
diferentes variables
Modificadores de acceso

Los modificadores de acceso limitan el uso que puede realizarse de las


variables declaradas.
Los modificadores de acceso anteceden a la declaración del tipo de dato de la variable y
son los siguientes:

const : Variable de valor constante


Volatile: Variable cuyo valor es modificado externamente
Declaración de variables
En C, las variables pueden ser declaradas en cuatro lugares del módulo del
programa:
• Fuera de todas las funciones del programa, son las llamadas variables
globales, accesibles desde cualquier parte del programa.
• Dentro de una función, son las llamadas variables locales, accesibles tan solo por la
función en las que se declaran.
• Como parámetros a la función, accesibles de igual forma que si se declararan dentro de
la función.
• Dentro de un bloque de código del programa, accesible tan solo dentro del bloque
donde se declara. Esta forma de declaración puede interpretarse como una variable local
del bloque donde se declara.
Declaración de variables

int a;

La declaración de las variables en C, son altamente tipadas,


esto es se tiene que fijar el tipo y estas no podrán ser
cambiadas durante la ejecución del programa

Una vez que se declaran las variables, el compilador de C se comunica con el


Sistema Operativo y este a través del Kernel asigna un bloque de memoria,
con cuatro elementos, un TIPO, un NOMBRE, un VALOR y una REFERENCIA
(Dirección de RAM)
Declaración de variables

Tipo Nombre Valor Referencia


Todas la variables en cualquiera que
sea l Lenguaje de Programación se
inicializan con un valor aleatorio
para de esta manera tener el espacio
acorde al tamaño en Bytes de la
variable. Normalmente el valor que
int a; se le asigna es 0.
4 Bytes

int a 0

RAM

char = 1 Byte, int = 4 Bytes, float = 4 Bytes y double = 8 Bytes 16


Declaración de variables

Tipo Nombre Valor Referencia


Finalmente cada variable en C tiene
una referencia de la celda de
memoria donde comienza el espacio de
dicha variable. En este caso la
dirección de Memoria es la @62FE1C
ya que se maneja en código
int a; hexadecimal y la @ es para referirse
a un acrónimo de su dirección
completa.
4 Bytes

int a 0 @62FE1C

RAM

char = 1 Byte, int = 4 Bytes, float = 4 Bytes y double = 8 Bytes 17


Declaración de variables

Tipo Nombre Valor Referencia

Se le asigna el tipo
de variable que será
int a; de mucha importancia
para saber el tamaño
de la RAM asignada.
4 Bytes

int

RAM

char = 1 Byte, int = 4 Bytes, float = 4 Bytes y double = 8 Bytes 18


Declaración de variables

Tipo Nombre Valor Referencia


Con el carácter ampersand, &, en C
podemos acceder a la referencia de
la variable.

int a;

int = 4 Bytes
4 Bytes

int a 0 @1ED160
&a = @1ED160

RAM

19
Declaración de variables

Conteo de direcciones en RAM

Referencia

La Memoria RAM se comporta como una


PILA, es por ello que
Instrucciones

tradicionalmente tiene una


presentación de este estilo. Para C
normalmente se tiene dos partes que
lo conforman, este color amarillo se
utiliza para la sección donde irán
las instrucciones. El color azul
normalmente se utiliza para los
datos del programa, esto es, cada
una de las variables declaradas en
sus propias decodificaciones,
Datos\Variables

analicemos esta sección a detalle.

RAM
20
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 Esta división empieza por la


@000001
dirección 0 que estaría en la parte
superior y de allí se empiezan a
@000002 enumerar las direcciones Byte (8
Bits) por Byte, hasta llegar a la
@000003 última dirección la cual depende del
compilador de C y del Sistema
@000004 Operativo, pero normalmente es
@62FE1F.
@000005
.

@62FE1D

@62FE1E

@62FE1F
.

RAM -Datos
21
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 Para saber que dirección de Memoria


. continua en desplazamientos de
variables se utiliza aritmética
. básica de Sistema de Numeración
Hexadecimal, en particular la suma.
. Supongamos que declaramos una
variable:
int z;
Visualizamos su dirección de memoria
y nos arroja que es la @62FE1C.
La pregunta sería porque esta
apuntando a esa dirección en
@62FE1C particular?? La respuesta es porque
de esta dirección hacia abajo en
@62FE1D efecto solo existen 4 Bytes acordes
al tamaño de los int’s
@62FE1E

@62FE1F
.

RAM -Datos
22
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 Donde ocupar aritmética


. hexadecimal???
Si tenemos la dirección de memoria
. mediante el símbolo ampersand
(@62FE1C), podemos deducir dos
. cosas:
1. Si sumamos 4 Bytes a la dirección
en Hexadecimal obtenemos la
siguiente dirección donde estaría
la próxima variable, pero en este
caso estamos en el limite. Como
hacer esto???
@62FE1C
62FE1C (C=>12+4 =16)
@62FE1D + Cómo representar al 16
4 en Hexadecimal???
@62FE1E _________ El 16 se presenta cómo
62FE1? 16 (N10) = 10 (N16)
@62FE1F
.

RAM -Datos
23
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000

. Obviamente 10 no se puede
representar en un solo digito de
. Hexadecimal, es por ello que solo se
pone el 0 y se acarrea un 1 para
sumarlo al siguiente digito y en ese
espacio se pone un 0

@62FE1C

@62FE1D

@62FE1E

@62FE1F
.

RAM -Datos
24
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 Donde ocupar aritmética


. hexadecimal???

. 1
62FE1C
. +
4
_________
62FE10

Finalmente sumamos es 1 al siguiente


digito y tendríamos el siguiente
@62FE1C resultado:

@62FE1D 62FE20

@62FE1E

@62FE1F
.

RAM -Datos
25
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 2. La segunda cosa que podemos


. recabar es la siguiente dirección
que estará libre para la próxima
. variable, es por ello que es
@62FE1B.
. 3. Esto es importante porque si se
tiene una variable, por ejemplo
de tipo double, se le restarian 7
Bytes (7 y no 8 porque uno ya lo
consideramos que es la @62FE1B) y
saber cual es la primera
@62FE1B
dirección de memoria a la cual
@62FE1C apuntara la siguiente variable

@62FE1D

@62FE1E

@62FE1F
.

RAM -Datos
26
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 La resta que se realizaría seria la


. siguiente:

. 62FE1B
- B + 7 = 11 + 7 = 4
. 7
_________

@62FE1B

@62FE1C

@62FE1D

@62FE1E

@62FE1F
.

RAM -Datos
27
Declaración de variables

Conteo de direcciones en RAM

Referencia

@000000 La resta que se realizaría seria la


siguiente:

@62FE14 62FE1B
- B + 7 = 11 + 7 = 4
. 7 El resultado seria
_________
. 62FE14

@62FE1B

@62FE1C

@62FE1D

@62FE1E

@62FE1F
.

RAM -Datos
28
Declaración de variables

Declaración de una variable en C


Tipo Nombre Valor Referencia
Este mismo esquema se utiliza para
cada una de las variables simples, o
Tipo de Datos Primitivos (TDP), los
cuales son:
• int – Enteros
• float – Reales o Punto Flotante
int a; • double – Reales largos
• char – Caracteres
• void – Tipo de datos genérico o
vacío (Objetos).

@1ED15F int = 4 Bytes


4 Bytes

int a 0 @1ED160
&a = @1ED160
@1ED161
@1ED162
@1ED163
RAM

29
Declaración de variables

Declaración de apuntadores en C

int *a1 ;

Tipo de dato al Símbolo que Nombre del Símbolo para cerrar


que pertenece el caracteriza a apuntador la declaración en C
apuntador los apuntadores

30
Declaración de apuntadores

int *a1 ;

Un apuntador cuenta Dirección de Dirección de


con dos referencias, Nacimiento referencia Cabe señalar que
la dirección de puede parecer extraño
nacimiento y la @132EFA @4EFA10 el termino Dirección
dirección a la que va de Nacimiento y el de
apuntar o de Referencia
referencia

31
Declaración de apuntadores
Supongamos que tenemos declarado en nuestro
programa una variable y un apuntador.

Tipo Nombre Valor Referencia

Sabemos que los enteros tienen 4 Bytes de int *ap1 NULL @62FE10
espacio, pero cómo saberlo y más aún
int var 60 @62FE1C
cuantos Bytes tiene un apuntador y
porque???
Para saber este dato en C contamos con
la función sizeof()

32
Declaración de apuntadores
Con las nuevas incorporaciones veamos los
resultados que nos arroja el programa.

Tipo Nombre Valor Referencia

int *ap1 NULL @62FE10

int var 60 @62FE1C

33
Constantes

•las constantes se refieren a los valores fijos que el programa no puedealterar.


ejemplo :

❑char ‘a’ ‘9’ 'Q'


❑int 1 -34 21000
❑long int -34 67856L 456
❑short int 10 -12 1500
❑unsigned int 45600U 345 3
❑float 12.45 4.34e-3 -2.8e9
❑double -34.657 -2.2e-7 1.0e100
Constantes de
barra invertida
Operadores
Aritméticos

Racionales y Lógicos

Nota
C no diferencia
la asignación de cualquier
otro operador del lenguaje. Para C,
la asignación es un operador, el
llamado operador asignación (=)
Ejemplo operadores
/* Uso de las variables */
/* Uso de las variables */
#include <stdio.h>
#include <stdio.h>
main() /* Suma dos valores */
{ main() /* Suma dos valores */
{
if (algo){ int num1=4,num2,num3=6;
printf("El valor de num1 es %d",num1);
int num1=4,num2,num3=6; printf("\nEl valor de num3 es %d",num3);
num2=num1+num3;
printf("El valor de num1 es %d",num1); printf("\nnum1 + num3 = %d",num2);
printf("\nEl valor de num3 es %d",num3); }

num2=num1+num3;
printf("\nnum1 + num3 = %d",num2);
}
}
Inicio
Int numero
Int numero 2
Int resultado
Resultado=numero+numero2
Suma numero y numero 2
Guarda resultado de suma en resultado
Printf(resultado)
Muestra resultado
fin
Ejemplo operadores

/* Uso de las variables */

#include <stdio.h>

main() /* Resta dos valores */


{
int num1=7,num2=0,num3=3;
printf("El valor de num1 es %d",num1);
printf("\nEl valor de num3 es %d",num3);
num2=num1-num3;
printf("\nnum1 - num3 = %d",num2);
}
Ejemplo operadores
/* Uso de las variables */
#include <stdio.h>
main() /* incremeto y decremento */
{
int num1=0,var=0;
int num = 10, var1=0;
printf("El valor de num1 es %d",num1);
printf("\nEl valor de num es %d",num);
var=num1++;
printf("\nnum1 = %d",num1);
var1=num--;
printf("\nnum = %d",num);
}
Condicional If
La utilizamos cuando tenemos una condición que nos arroja dos resultados: Verdadero o Falso.
Sentencias de control
Condicional If
Condicional IF
Operadores condicionales, que son los siguientes: <, >, <=, >=,
==, !=

int main(){
int edad;
printf("Escriba su edad: ");
scanf("%d", &edad);
if (edad >= 18){
printf("Ya puedes votar");
}
else{
printf("No puedes votar");
}
}
Condicional IF
Los operadores lógicos son Y, O, y NO (AND, OR y NOT). En lenguaje C
se utilizan estos símbolos: &&, || y !
#include "stdio.h"
int main(){
float compra, descuento, total;
printf("Monto de la compra: ");
scanf("%f",&compra);
if (compra < 500){
descuento = 0;
}
if (compra >= 500 && compra < 1000){
descuento= compra * .10;
}
if (compra >= 1000 && compra < 2000){
descuento = compra * .20;
}
if (compra >= 2000){
descuento = compra * .30;
}
total = compra - descuento;
printf("Su descuento es: %.2f", descuento);
printf("\nEl total a pagar es: %.2f", total);
}
Condicional Swich-case

• La instrucción switch-case es una estructura condicional que ejecuta


diferentes bloques de instrucciones dependiendo del valor de una
variable.
• Esta instrucción es equivalente a las instrucciones anidadas si.
Condicional Swich-case
switch (val) {
case val1:
// instructions si val=val1
break;
case val2:
// instructions si val=val2
break;
default:
// instructions par défaut
break;
}
Condicional Swich-case
Ejercicios
• Días de la semana: ingresar un número y decir a que día de la semana
corresponde
• Vocales: Pedir una letra y decir a que vocal corresponde y si no es vocal decir
que se ha equivocado
• Menú : Realizar un menú con tres opciones
• 1: ingresar
• 2: salir
• 3: error
Desplegar un mensaje en cada opción.
Sentencias de control FOR
int VAR;

Para (VAR = Vi; VAR<Vf; VAR++ ) hacer {

Instrucción 1;

Instrucción 2;

Instrucción n;

}
Sentencias de control FOR
• Ejercicios:
• Tabla de multiplicar del 8
• Listado del 1 al 200
• Listado del 200 al 1
Sentencias de control FOR anidado

Int VAR;
Int VAR2;
Para (VAR = Vi; VAR<Vf; VAR++ ) hacer {
Para (VAR2 = Vji; VAR2<Vjf; VAR2++ ) hacer {

Instruccines …..

}
Sentencias de control FOR anidado
Ejercicios:

Tablas de multiplocar

Listado del 1 al 10 repetidos 10 renglones (agregar salto de linea \n)

También podría gustarte