27
Computación I (CI- Computación I (CI- 2125) 2125) Clase 2 Clase 2 Prof. Mireya Morales Prof. Mireya Morales

Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Embed Size (px)

Citation preview

Page 1: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Computación I (CI-2125)Computación I (CI-2125)Clase 2Clase 2

Prof. Mireya MoralesProf. Mireya Morales

Page 2: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Repaso de algunos tópicosRepaso de algunos tópicos

Abstracción: Consiste en extraer las Abstracción: Consiste en extraer las propiedades más importantes de un objeto, propiedades más importantes de un objeto, dejando los detalles para el diseño específico.dejando los detalles para el diseño específico.

La encapsulación: permite ofrecer a los La encapsulación: permite ofrecer a los usuarios una visión de caja negra, de manera usuarios una visión de caja negra, de manera que solo se exporte la interfaz de usuario.que solo se exporte la interfaz de usuario.

Ocultamiento de Información: Consiste en no Ocultamiento de Información: Consiste en no mostrar al exterior datos o funciones que no mostrar al exterior datos o funciones que no sean necesarias.sean necesarias.

Modularidad: Proceso de dividir un objeto en Modularidad: Proceso de dividir un objeto en piezas más pequeñaspiezas más pequeñas

Page 3: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Repaso de algunos tópicosRepaso de algunos tópicosPasos a seguir para el diseño de un Pasos a seguir para el diseño de un

AlgoritmoAlgoritmo

Definición o especificación del problema.Definición o especificación del problema. Descomposición del problema en subproblemas Descomposición del problema en subproblemas

más simples (análisis descendente).más simples (análisis descendente). Combinar las estructuras algorítmicas básicas Combinar las estructuras algorítmicas básicas

para resolver cada subproblema.para resolver cada subproblema. Ensamblar las soluciones de cada subproblemaEnsamblar las soluciones de cada subproblema

Page 4: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Repaso de algunos tópicosRepaso de algunos tópicos Definición o especificación del problemaDefinición o especificación del problema

Especificación de Entrada. Descripción de los datos de Especificación de Entrada. Descripción de los datos de entrada del programaentrada del programa Valores específicos de entrada del programaValores específicos de entrada del programa FormatoFormato Rango de validez para cada dato de entrada. Rango de validez para cada dato de entrada.

(Precondición)(Precondición) Especificación de salida. Descripción de los datos de Especificación de salida. Descripción de los datos de

salida del programasalida del programa Que valores deben ser producidos y que propiedades Que valores deben ser producidos y que propiedades

deben cumplir, expresadas en término de relaciones deben cumplir, expresadas en término de relaciones entre los datos de entrada y de salida (Postcondición)entre los datos de entrada y de salida (Postcondición)

Procesamiento especial (“Casos de borde”). Verificar y Procesamiento especial (“Casos de borde”). Verificar y procesar ciertas condiciones que podrían llevar a errorprocesar ciertas condiciones que podrían llevar a error

Page 5: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Repaso de algunos tópicosRepaso de algunos tópicos Definición o especificación del problemaDefinición o especificación del problema

Ejemplo. Dada una cantidad en segundos, calcular su Ejemplo. Dada una cantidad en segundos, calcular su equivalente en horas minutos y segundosequivalente en horas minutos y segundos

Var totalseg:enteroVar totalseg:entero /*Entrada*//*Entrada*/

Var horas, min, seg: entero /*Salida*/Var horas, min, seg: entero /*Salida*/

{Precondición: totalseg > 0}{Precondición: totalseg > 0}

{Postcondición: totalseg=seg + 60*min +3600*horas y 0<=seg, {Postcondición: totalseg=seg + 60*min +3600*horas y 0<=seg, min < 60 y horas >=0}min < 60 y horas >=0}

Page 6: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Historia del Lenguaje CHistoria del Lenguaje C

MULTICS

UNIX

BCPLMartin Richards, 1967

BKen Thompson, 1970

CDennis Ritchie, 1972

Page 7: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Historia del Lenguaje CHistoria del Lenguaje C

El lenguaje C fue implementado e inventado por Dennis El lenguaje C fue implementado e inventado por Dennis Ritchie bajo UNIX; basado en dos lenguajes anteriores: Ritchie bajo UNIX; basado en dos lenguajes anteriores: BCPL de Martín Richards y B de Ken Thompson. BCPL de Martín Richards y B de Ken Thompson.

Con la popularidad de las microcomputadoras muchas Con la popularidad de las microcomputadoras muchas compañías comenzaron a implementar su propio C por compañías comenzaron a implementar su propio C por lo cual surgieron discrepancias entre sí. Por esta razón lo cual surgieron discrepancias entre sí. Por esta razón ANSI (American National Standars Institute, por sus ANSI (American National Standars Institute, por sus siglas en inglés), estableció un comité en 1983 para siglas en inglés), estableció un comité en 1983 para crear una definición no ambigua del lenguaje C e crear una definición no ambigua del lenguaje C e independiente de la máquina que pudiera utilizarse en independiente de la máquina que pudiera utilizarse en

todos los tipostodos los tipos de C. de C.

Page 8: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

ContenidoContenidoEstructura general de un programa e

n C Constantes Constantes Variables Variables Tipos de datos básicos Tipos de datos básicos Expresiones aritméticas y lógicasExpresiones aritméticas y lógicas Orden de precedencia Orden de precedencia asignación asignación Entrada y salida (scanf, printf )Entrada y salida (scanf, printf )

Page 9: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

IdentificadoresIdentificadores

Es un nombre que se asigna a distintos Es un nombre que se asigna a distintos elementos de un programa, como pueden elementos de un programa, como pueden ser variables, nombre de funciones, etc.ser variables, nombre de funciones, etc.

Page 10: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

IdentificadoresIdentificadores

Los caracteres válidos para formar un Los caracteres válidos para formar un identificador son: a-z, A-Z, 0-9, y el identificador son: a-z, A-Z, 0-9, y el _(underscore)._(underscore).

LetraLetra

Identificador letra digitoIdentificador letra digito

“ “_”_”

Page 11: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

IdentificadoresIdentificadores

Pueden tener cualquier longitud, pero solo los Pueden tener cualquier longitud, pero solo los primeros 8 caracteres son significativos.primeros 8 caracteres son significativos.

Las mayúscula y minúsculas son significativasLas mayúscula y minúsculas son significativas Las palabras reservadas no pueden utilizarseLas palabras reservadas no pueden utilizarse Deben utilizarse identificadores nemónicos que Deben utilizarse identificadores nemónicos que

tipifiquen el contenido de la variable.tipifiquen el contenido de la variable. Se recomienda utilizar identificadores con Se recomienda utilizar identificadores con

letras minúsculas para variables y con letras minúsculas para variables y con mayúsculas para constantes simbólicas.mayúsculas para constantes simbólicas.

Page 12: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

ConstantesConstantes

Es un valor que se fija durante todo el Es un valor que se fija durante todo el período de vida que dura la ejecución de período de vida que dura la ejecución de un programa. Para definir una constante un programa. Para definir una constante en C se emplea la directiva en C se emplea la directiva #define#define. . Ejemplo:Ejemplo:#define PI 3.1415#define PI 3.1415

Page 13: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

VariablesVariables

Son objetos que pueden cambiar su valor Son objetos que pueden cambiar su valor durante la ejecución de un programa. durante la ejecución de un programa. Cada variable se asocia con una Cada variable se asocia con una determinada zona dentro de la memoria determinada zona dentro de la memoria del computador. El tamaño de esta zona, del computador. El tamaño de esta zona, en bytes, dependerá del tipo de datos del en bytes, dependerá del tipo de datos del valor que se almacene en la variable. valor que se almacene en la variable. Ejemplo:Ejemplo:A1=10A1=10A2= A1 + 15A2= A1 + 15A1= 20A1= 20

Page 14: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Tipos de datos básicosTipos de datos básicos

C dispone de tres tipos de datos básicos: C dispone de tres tipos de datos básicos: caracteres, números enteros y números caracteres, números enteros y números reales. La principal característica es que reales. La principal característica es que ocupan sólo una casilla de memoria.ocupan sólo una casilla de memoria.

Page 15: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Tipos de datos básicosTipos de datos básicos

Tipo de datosTipo de datos DescripciónDescripción RangoRango

intint EnterosEnteros -32.768 a -32.768 a +32.768+32.768

floatfloat RealesReales 3.4x103.4x10-38-38 a 3.4 x a 3.4 x 10103838

longlong Entero de largo Entero de largo alcancealcance

-2,147,483,648 a -2,147,483,648 a 2,147,483,6472,147,483,647

doubledouble Reales de doble Reales de doble precisiónprecisión

1.7 x 101.7 x 10-308-308 a 1.7 x a 1.7 x 1010308308

charchar caractercaracter Símbolos Símbolos encerrados en ´ ´encerrados en ´ ´

Page 16: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Tipos de datos booleanos en CTipos de datos booleanos en C C no dispone de un tipo de dato booleano C no dispone de un tipo de dato booleano

para representar los valores verdadero (true) o para representar los valores verdadero (true) o falso (false). falso (false).

Normalmente se emulan en C utilizando el Normalmente se emulan en C utilizando el valor 0 como falso y el valor 1 como valor 0 como falso y el valor 1 como verdadero. verdadero.

Se suele recurrir a la definición de las Se suele recurrir a la definición de las constantes TRUE y FALSE mediante la constantes TRUE y FALSE mediante la directiva define:directiva define: #define TRUE 1#define TRUE 1 #define FALSE 0#define FALSE 0

Page 17: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Operadores AritméticosOperadores Aritméticos

= Asignación= Asignación

* Multiplicación* Multiplicación

/ División/ División

% Módulo% Módulo

+ Suma+ Suma

- Resta- Resta

Page 18: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Operadores RelacionalesOperadores Relacionales

= = Igual= = Igual

!= Diferente!= Diferente

> Mayor> Mayor

>= Mayor o igual>= Mayor o igual

< Menor< Menor

<= Menor o igual<= Menor o igual

Page 19: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Operadores LógicosOperadores Lógicos

&& AND&& AND (x>6)&&(z==3)(x>6)&&(z==3) || OR|| OR (y==6) || (y!=7)(y==6) || (y!=7) ! NOT! NOT !(x>=8)!(x>=8)

Page 20: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Precedencia y Orden de EvaluaciónPrecedencia y Orden de Evaluación OperadorOperador Asociatividad Asociatividad () [ ] -> () [ ] -> ●● Izq a Der Izq a Der ! ++ -- (tipo) * & sizeof Der a Izq! ++ -- (tipo) * & sizeof Der a Izq * / %* / % Izq a Der Izq a Der + -+ - Izq a Der Izq a Der < >< > (Shift desplaza bits) (Shift desplaza bits) Izq a Der Izq a Der < <= > >=< <= > >= Izq a Der Izq a Der == !=== != Izq a Der Izq a Der & (a nivel de bits)& (a nivel de bits) Izq a Der Izq a Der &&&& Izq a Der Izq a Der || || Izq a Der Izq a Der = += -= *= %= /== += -= *= %= /= Izq a Der Izq a Der

Page 21: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Definiciones en el cálculo lógicoDefiniciones en el cálculo lógico

Conjunción Conjunción La conjunción es un operador que opera La conjunción es un operador que opera

sobre dos valores de verdad, típicamente sobre dos valores de verdad, típicamente los valores de verdad de dos los valores de verdad de dos proposiciones, devolviendo el valor de proposiciones, devolviendo el valor de verdad verdad verdaderoverdadero cuando ambas cuando ambas proposiciones son verdaderas, y proposiciones son verdaderas, y falsofalso en en cualquier otro caso.cualquier otro caso.

Page 22: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Tabla de verdad para la Tabla de verdad para la conjunción (&) es la siguiente:conjunción (&) es la siguiente:

Page 23: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

DisyunciónDisyunción

La disyunción es un operador que opera La disyunción es un operador que opera sobre dos valores de verdad, típicamente sobre dos valores de verdad, típicamente los valores de verdad de dos los valores de verdad de dos proposiciones, devolviendo el valor de proposiciones, devolviendo el valor de verdad verdad verdaderoverdadero cuando una de las cuando una de las proposiciones es verdadera, o cuando proposiciones es verdadera, o cuando ambas lo son, y ambas lo son, y falsofalso cuando ambas son cuando ambas son falsas.falsas.

Page 24: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

La tabla de verdad de la La tabla de verdad de la disyunción (||) es la siguiente:disyunción (||) es la siguiente:

Page 25: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

NegaciónNegación

La negación es un operador que opera La negación es un operador que opera sobre un único valor de verdad, sobre un único valor de verdad, típicamente el valor de verdad de una típicamente el valor de verdad de una proposición, devolviendo el valor de proposición, devolviendo el valor de verdad verdad verdaderoverdadero si la proposición es si la proposición es falsa, y falsa, y falsofalso si la proposición es si la proposición es verdadera.verdadera.

Page 26: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

La tabla de verdad de la La tabla de verdad de la negación es la siguiente:negación es la siguiente:

Page 27: Computación I (CI-2125) Clase 2 Prof. Mireya Morales

Entrada y salida (scanf, printf )Entrada y salida (scanf, printf )

Lenguaje C