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
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.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Fundamentos de la Programación Estructurada
Programación I Teoría I
Programación I Teoría III
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
Lenguaje C.
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.
Capítulo 5. Punteros y Cadenas de Caracteres
JAVA J.A.C..
Tema 2: Los tipos de datos
Estructura de un programa en C
Índice. Revisando conceptos acerca de la memoria.
Archivos.
Estructuras.
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Informática Ingeniería en Electrónica y Automática Industrial
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.
PUNTEROS Ing Anghello Quintero.
Archivos Programación I MC Beatriz Beltrán Martínez.
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,
Elementos básicos del lenguaje
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
PRINCIPIOS DE PROGRAMACIÓN

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.
Conceptos y Lenguaje Imperativo
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.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
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

Windows – Visual Studio Linux / Solaris – gcc Compiladores

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

int (4 bytes) char (1 byte) puntero a tipo de datos (4 bytes) Tipos de datos (32bits)

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. Introducción a 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

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.