Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos.

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

Introducción a C++ Sistemas Operativos
Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos.
Curso de java básico (scjp)
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
PROGRAMACIÓN EN C.
Uso de variables de tipo referencia
Informática I – 4to año Volumen II.
El lenguaje C Introducción.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Fundamentos de la Programación Estructurada
Programación I Teoría I
Programación I Teoría III
Programación I Teoría IV
Programación, Algoritmos y Estructuras de Datos
Direcciones, Arreglos y Argumentos de Funciones
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
1.2 Sintaxis del lenguaje Java.
Introducción al Lenguaje C (ANSI)
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación Estructurada
Una breve introducción
Ingeniero Anyelo Quintero
Herramientas para el acceso directo a memoria en C++
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Conceptos Básicos de Java
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
POO Java Módulo 3 Elementos de programas Identificadores
Archivos Programación.
Lenguaje C.
LENGUAJE “C” Programación.
Semana 5 Subprogramas..
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
Cadenas y apuntadores Programación.
Tema 2: Los tipos de datos
Índice. Revisando conceptos acerca de la memoria.
Archivos.
Estructuras.
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Informática Ingeniería en Electrónica y Automática Industrial
Sintaxis de C# (Declaraciones y Tipos)
Programa Vespertino de Automatización Equipos y Sistemas de Control Digital Lenguaje C Profesor: Felipe Páez Mejías D e p a r t a m e n t o d e I n g e.
Tipo de Datos Básicos.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
PUNTEROS Ing Anghello Quintero.
Unidad II Introducción a la programación en C++
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
PUNTEROS Y REFERENCIAS
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Alto Nivel. Y Es un compilador. YContiene un conjunto de palabras.
PROGRAMACIÓN MULTIMEDIA
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
FUNDAMENTOS DE PROGRAMACIÓN
Estructura de un programa C
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings

UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
CLASE 10. AGENDA 1 Repaso 2 Operadores 3 Directivas 14 Entrada y Salida de Datos.
Lenguaje de programación c
EL TIPO DE DATO LOGICO y constantes.
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
MEMORIA DINÁMICA.
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
Características de “C” Esta conformado por un Ambiente Integrado. Es un Lenguaje de Nivel medio.Es un compilador. Contiene un conjunto de palabras reservadas.
Transcripción de la presentación:

Universidad Tecnológica Nacional Facultad Regional Buenos Aires Ingeniería en Sistemas de Información Introducción a C Sistemas Operativos

Tipos de datos Operadores Mi primer programa en C Compiladores MakeFile Punteros - Operadores & y * Strings /= Streams Estructuras (structs) Procedimientos y funciones Biblioteca Estandar de C Agenda

Entero: int (4 bytes) –Puede ser unsigned int o signed int Entero largo: long long (8 bytes) Caractér: char (1 byte) Decimales: float (4 bytes) Estructuras: structs puntero a tipo de datos (4 bytes) El tamaño por defecto de los tipos de datos depende de la plataforma que se esté utilizando (32 o 64 bits) Tipos de datos

operadores.c #include int main(void) { int a = 1; int b = 2; int c; if (a == b) { c = a + b; printf(a y b son iguales. Su suma es %d\n", c); } else { printf(a es distinto (!=) b); } Operadores en C

archivo.c #include int main(void) { int a = 1; int b = 2; int c; c = a + b; printf("La suma de las variables es: %d\n", c); } Consola # gcc archivo.c –o archivo #./archivo La suma de las variables es: 3 Mi primer programa en C

Windows – Visual Studio Linux / Solaris – gcc Compiladores

Medianamente tipado. Toda la memoria se puede castear como otro tipo de datos. Todo devuelve un valor por ende todo se puede preguntar. Ej: If (a+b). Si ==0 falso y si !=0 verdadero El punto de inicio del programa es la función main. El código se puede ampliar mediante el uso de bibliotecas. Características de C

all: make clean make archivo clean: rm archivo archivo: gcc –ggdb archivo.c –o archivo Makefile – Ejemplo

debian:~/charlasC# make make clean make[1]: Entering directory `/root/charlasC' rm archivo make[1]: Leaving directory `/root/charlasC' make archivo make[1]: Entering directory `/root/charlasC' gcc -ggdb archivo.c -o archivo make[1]: Leaving directory `/root/charlasC' debian:~/charlasC#

B0CACACA Punteros Proceso Código (solo lectura) Datos (memoria dinámica) Stack (asignaciones estáticas) #include int main(void) { int a = 39; char *b; b = (char*) malloc(128); } 39a ????? ??????????????? ???????????????? B0CACACA b

#include int main(void) { int a = 1; char b = 'L'; int *c; c = &a; a = a + 1; printf("La variable 'a' vale: %d y la variable 'c' lo mismo: %d y la variable b: %c\n", a, *c, b); } Operadores & y * Puntero a un entero c y a referencian la misma variable

#include int main(void) { char[20] nombre; char *pnombre; strcpy (nombre, "Maria"); nombre[4] = 'o'; Printf ("El valor de nombre es %s y su long: %d\n", nombre, strlen(nombre)); pnombre = (char*)malloc(sizeof(char)*20); if (!pnombre) { printf("Se asigno la memoria"); } else { printf("La asignación falló"); } free (pnombre); } Strings – cadenas

Streams != Strings Hola char cadena[10]; Un stream es una secuencia de chars contiguos (vector) Un caso particular de los streams es el String, el cual es finalizado con \0 Hola\0 char cadena[10]; Todas las operaciones sobre strings (, printf, etc), no debe ser ejecutada sobre streams!

Sobre los Strings Como todos los vectores la primer posición es la cero! En la reserva de memoria se debe considerar el \0. (20 pos = 19 char + \0) La ausencia del \0 al final de una cadena puede generar que se sobreescriban variables del programa y en el mejor de los casos un Segmentation Fault

#include int main(void) { struct persona { int legajo; char nombre[20]; char apellido[25] ; char genero; float altura; }; struct persona p; struct persona *q; strcpy(p.nombre, "Santiago"); strcpy(p.apellido, "Ciciliani"); p.genero = 'M'; p.altura = 1.75; q = (struct persona*)malloc(sizeof(struct persona)); strcpy(q->nombre, "Peter"); strcpy(q->apellido, "Capusoto"); q->genero = 'F'; q->altura = 1.60; printf("Los dos nombres son: %s y %s", p.nombre, q->nombre); free(q); } Structs – un ejemplo Puntero a la estructura (4bytes) Como es un puntero, le tengo que asignar un espacio de memoria a donde apuntar! Operador flechita (->) equivalente a poner: (*q).

Pasar como referencia void elevarAlCuadrado (int *x); #include int main(void) { int a = 2; elevarAlCuadrado (&a); printf("El valor del cuadrado de a es: %d\n", a); } void elevarAlCuadrado (int *x) { (*x) = (*x) * (*x); } No paso a, sino su dirección Trabajo con eso que está apuntado en la dirección x y no con x que tiene una dirección de memoria

Funciones int elevarAlCuadrado (int x); #include int main(void) { int a = 2; printf("El valor del cuadrado de a es: %d\n", elevarAlCuadrado (a) ); } int elevarAlCuadrado (int x) { return x * x; // esto no se ejecuta! }

Biblioteca estandar Contiene la macro assert (aserción), utilizada para detectar errores lógicos y otros tipos de fallos en la depuración de un programa. Conjunto de funciones para manipular números complejos (nuevo en C99). Contiene funciones para clasificar caracteres según sus tipos o para convertir entre mayúsculas y minúsculas independientemente del conjunto de caracteres (típicamente ASCII o alguna de sus extensiones). Para testar los códigos de error devueltos por las funciones de biblioteca. Para controlar entornos en coma flotante (nuevo en C99). Contiene la definición de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mínima entre dos números en coma flotante (_EPSOLON), el número máximo de dígitos de precisión (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX). Para operaciones de conversión con precisión entre tipos enteros (nuevo en C99). Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1). Contiene la definición de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX). Para la función setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuración regional). Contiene las funciones matemáticas comunes. Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales. Para controlar algunas situaciones excepcionales como la división por cero. posibilita el acceso a una cantidad variable de argumentos pasados a una función. Para el tipo booleano (nuevo en C99). Para definir varios tipos enteros (nuevo en C99). Para definir varios tipos de macros de utilidad. Proporciona el núcleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable función printf). Para realizar ciertas operaciones como conversión de tipos, generación de números pseudo-aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, de señalización (??), de ordenación y búsqueda. Para manipulación de cadenas de caracteres. Contiene funcionalidades matemáticas de tipo genérico (type-generic) (nuevo en C99). Para tratamiento y conversión entre formatos de fecha y hora.