TÉCNICAS DE PROGRAMACIÓN Lenguaje C

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

Curso de java básico (scjp)
Inicio Índice Siguiente Anterior Final Dudas CAPITULO 4 FUNCIONES Y ESTRUCTURA DE PROGRAMAS C ha sido construido para fabricar funciones eficientes y fáciles.
Programación Interactiva Fundamentos de Programación
El lenguaje C Introducción.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Repaso para la construcción del intérprete 2012
Fundamentos de la Programación Estructurada
Programación, Algoritmos y Estructuras de Datos
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
FUNCIONES EN C.
INFORMATICA I Funciones CLASE 13.
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Aprende C en una lluviosa tarde de domingo (en algo más de un par de horas) Sintaxis del lenguaje C para implementar un programa imperativo.
Algoritmos y Estructuras de Datos
ESTRUCTURAS DE SECUENCIA
Una breve introducción
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Funciones y procedimientos
Funciones: conceptos básicos
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
APLICACIONES DE PILAS Estructuras de Datos.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Archivos Programación.
Semana 5 Subprogramas..
Características de “C”
Cadenas y apuntadores Programación.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Archivos.
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Capítulo 1 “Elementos de Programación”
Informática Ingeniería en Electrónica y Automática Industrial
Prof. Mayra M. Méndez Anota.  Herramientas  Características  Convenciones  Estructura de una clase  Sintaxis de: métodos, atributos, constructores.
CAPITULO 1 - INTRODUCCIÓN Comenzaremos con una rápida introducción al lenguaje C. Mostraremos algunos elementos esenciales del lenguaje en programas reales,
Computación II Repaso de java Karina Figueroa Mora.
NVA-LNG1 3. SENTENCIAS. NVA-LNG2 Asignación Es una sentencia que almacena: el valor del argumento ubicado a la derecha del símbolo que la representa En.
Manejo de Punteros y objetos en memoria dinámica en C++
Elementos básicos del lenguaje
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Unidad II Introducción a la programación en C++
TÉCNICAS DE PROGRAMACIÓN Lenguaje C - 2
Elementos básicos del lenguaje
TÉCNICAS DE PROGRAMACIÓN Lenguaje C Apuntadores y arreglos.
TÉCNICAS DE PROGRAMACIÓN Lenguaje C - 2
PROGRAMACIÓN MULTIMEDIA
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
INTRODUCCION A LA PROGRAMACION
PRINCIPIOS DE PROGRAMACIÓN

LENGUAJE “C” Programación.
1 TÉCNICAS DE PROGRAMACIÓN Lenguaje C Tercera Clase (Segunda de C)
Capítulo 2 “Subprogramas/Funciones - Arreglos”
CLASE 10. AGENDA 1 Repaso 2 Operadores 3 Directivas 14 Entrada y Salida de Datos.
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
OPERACIONES CON PILAS DECLARACIÓN O INICIALIZACIÓN DE LA PILA. Stack NombrePila=newStack (max);
TÉCNICAS DE PROGRAMACIÓN Lenguaje C
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Transcripción de la presentación:

TÉCNICAS DE PROGRAMACIÓN Lenguaje C Séptima Clase (Sexta de C)

FUNCIONES Y ESTRUCTURA DEL PROGRAMA CAPÍTULO 4 DE KyR

Ejemplo Imprimir las líneas de la entrada que contengan un patrón dado: while (haya otra línea) if (la línea contiene el patrón) imprimirla haya otra línea: getline. imprimirla: printf. Falta: la línea contiene el patrón.

Ejemplo #include <stdio.h> #define MAXLINE 1000 int getline(char line[], int max) int strindex(char source[], char searchfor[]); char pattern[] = "patrón"; main() { char line[MAXLINE]; int found = 0; while (getline(line, MAXLINE) > 0) if (strindex(line, pattern) >= 0) { printf("%s", line); found++; } return found;

getline(char, int) int getline(char s[], int lim) { int c, i; i = 0; while(--lim > 0 && (c=getchar()) !=EOF && c!='\n') s[i++] = c; if (c == '\n') s[i] = '\0'; return i; }

strindex int strindex(char s[], char t[]) { int i, j, k; for (i = 0; s[i] != '\0'; i++) { for(j=i, k=0; t[k]!='\0' && s[j]==t[k]; j++,k++) ; if (k > 0 && t[k] == '\0') return i; } return -1;

Forma de una función tipo-de-retorno nombre(declaraciones de argumentos) { declaraciones e instrucciones } Una función con un tipo de retorno distinto de void debe retornar algún valor Si la ejecución llega al final de la función y la última instrucción no es un return el valor de la función es "basura".

Funciones El programa fuente puede dividirse en varios archivos, mientras las funciones no se dividan. cc main.c getline.c strindex.c cc main.c getline.o strindex.o

atof #include <ctype.h> /* atof: convert string s to double */ double atof(char s[]) { double val, power; int i, sign; for (i = 0; isspace(s[i]); i++) ; sign = (s[i] == '-') ? -1 : 1; if (s[i] == '+' || s[i] == '-') i++; for (val = 0.0; isdigit(s[i]); i++) val = 10.0 * val + (s[i] - '0'); if (s[i] == '.') for (power = 1.0; isdigit(s[i]); i++) { power *= 10; } return sign * val / power;

Calculadora #include <stdio.h> #define MAXLINE 100 /* rudimentary calculator */ main() { double sum, atof(char []); char line[MAXLINE]; int getline(char line[], int max); sum = 0; while (getline(line, MAXLINE) > 0) printf("\t%g\n", sum+= atof(line)); return 0; }

double atof(char s[]); return (int) atof(s); } /* atoi: convert string s to integer using atof */ int atoi(char s[]) { double atof(char s[]); return (int) atof(s); }

Variables Externas Un programa en C consta de un conjunto de objetos externos: variables y funciones. Los argumentos y las variables definidas dentro de las funciones son "internos". Variables externas: Definidas fuera de cualquier función. Disponibles para muchas funciones. Las funciones siempre son externas.

Calculadora Polaca Inversa Notación infija: (1 – 2) * (4 + 5) Notación postfija: 1 2 – 4 5 + * No necesita paréntesis

Calculadora Polaca Inversa while(siguiente operador u operando no es fin de archivo) if (número) introducirlo else if (operador) extraer operandos hacer operación insertar resultado else if (nueva línea) extrae e imprime tope else error

Calculadora Polaca Inversa main() { int type; double op2; char s[MAXOP]; while ((type = getop(s)) != EOF) { switch (type) { case NUMBER: push(atof(s)); break; case '+': push(pop() + pop()); break; case '*': push(pop() * pop()); break; case '-': op2 = pop(); push(pop() - op2); break; case '/': if (op2 != 0.0) push(pop() / op2); else printf("error: zero divisor\n"); break; case '\n': printf("\t%.8g\n", pop()); break; default: printf("error: unknown command %s\n", s); break;} } return 0;}

Pila #define MAXVAL 100 /* maximum depth of val stack */ int sp = 0; /* next free stack position */ double val[MAXVAL]; /* value stack */ void push(double f) { if (sp < MAXVAL) val[sp++] = f; else printf("error: pila llena %g\n", f); } double pop(void) if (sp > 0) return val[--sp]; else { printf("error: stack empty\n"); return 0.0;

getop #include <ctype.h> int getch(void); void ungetch(int); int getop(char s[]) { int i, c; while ((s[0] = c = getch()) == ' ' || c == '\t'); s[1] = '\0'; if (!isdigit(c) && c != '.') return c; i = 0; if (isdigit(c)) while (isdigit(s[++i] = c = getch())); if (c == '.') s[i] = '\0'; if (c != EOF) ungetch(c); return NUMBER; }

getch y ungetch #define BUFSIZE 100 char buf[BUFSIZE]; /* buffer for ungetch */ int bufp = 0; /* next free position in buf */ int getch(void) { return (bufp > 0) ? buf[--bufp] : getchar(); } void ungetch(int c) if (bufp >= BUFSIZE) printf("ungetch: too many characters\n"); else buf[bufp++] = c;

Reglas de alcance El alcance de un nombre es la parte del programa en la cual puede usarse para referirse al mismo objeto. El alcance de las variables locales (incluidos argumentos) es la función en la cual se declaran. El alcance de variables y funciones externas va desde el punto en que se declaran hasta el fin del archivo. Para usar una variable externa fuera de su alcance hay que declararla nuevamente como extern.

Variables estáticas y register Si se define una variable o se declara una función externa como static sólo podrá ser usada dentro del archivo donde se define. Una variable static local se mantiene (con su valor) en vez de aparecer y desaparecer cada vez que se llama y se termina la función. Proporcionan un almacenamiento "permanente" y privado para una función. Variable register. Variables de bloques.

Inicialización de arreglos char pattern = "ould"; char pattern[] = { 'o', 'u', 'l', 'd', '\0' }; char pattern[10] = { 'o', 'u', 'l', 'd', '\0' }; == "ould" + basura; char pattern[4] = { 'o', 'u', 'l', 'd', '\0' }; ERROR;

Recursividad: printd #include <stdio.h> /* printd: print n in decimal */ void printd(int n) { if (n < 0) { putchar('-'); n = -n; } if (n / 10) printd(n / 10); putchar(n % 10 + '0');

Recursividad El código recursivo no ahorra ni espacio (memoria) ni tiempo. Usualmente es más lento. Es más coampacto y fácil de escribir y entender (no siempre: printd).

Directivas del preprocesador (#) #include : " " o < > Anidable #define nombre texto_de_reemplazo Alcance: archivo donde se define. #define : macros #define max(A, B) ((A) > (B) ? (A) : (B)) x = max(p+q, r+s); x = ((p+q) > (r+s) ? (p+q) : (r+s)); max(i++, j++) /* MALO */ #define square(x) x * x /* ¿¿¿correcto??? */ #undef

#if !defined(HDR) #define HDR /* contents of hdr.h go here */ #endif _____________________________ #if SYSTEM == SYSV #define HDR "sysv.h" #elif SYSTEM == BSD #define HDR "bsd.h" #elif SYSTEM == MSDOS #define HDR "msdos.h" #else #define HDR "default.h" #include HDR __________________________________ #ifdef; #ifndef