Page 1

UNIVERSIDAD TECNICA DE AMBATO

FACULTAD DE CIENCIAS HUMANAS Y DE LA EDUCACIÓN

CARRERA DOCENCIA EN INFORMATICA

Programación ii Nombre: Erika carrasco Semestre: tercero único Ing. Msc willma gavilanes


Elemento i


ELEMENTOS TEORICOS LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO La programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente

subrutinas y

tres

estructuras: secuencia,

selección

(if

y

switch)

e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación. Surgió en la década de 1960, particularmente del trabajo Böhm y Jacopini, 1 y una famosa carta, la sentencia goto considerada perjudicial, de Edsger Dijkstra en 19682 — y fue reforzado teóricamente por el teorema del programa estructurado, y prácticamente por la aparición de lenguajes como ALGOL con adecuadas y ricas estructuras de control.

ORIGENES DE LA PROGRAMACION ESTRUCTURADA A finales de los años 1970 surgió una nueva forma de programar que no solamente daba lugar a programas fiables y eficientes, sino que además estaban escritos de manera que facilitaba su mejor comprensión, no sólo proveyendo ventajas durante la fase de desarrollo, sino también posibilitando una más sencilla modificación posterior. El teorema del programa estructurado, propuesto por Böhm-Jacopini, demuestra que todo programa puede escribirse utilizando únicamente las tres instrucciones de control siguientes: 

Secuencia

Instrucción condicional.

Iteración (bucle de instrucciones) con condición al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio de estructuras de control, éstas pueden ser construidas mediante las tres básicas citadas.


VENTAJAS DE LA PROGRAMACION ESTRUCTURADA Ventajas de la programación estructurada comparada con el modelo anterior (hoy llamado despectivamente código espagueti). 

Los programas son más fáciles de entender, pueden ser leídos de forma secuencial y no hay necesidad de hacer engorrosos seguimientos en saltos de líneas (GOTO) dentro de los bloques de código para intentar entender la lógica.

La estructura de los programas es clara, puesto que las instrucciones están más ligadas o relacionadas entre sí.

Reducción del esfuerzo en las pruebas y depuración. El seguimiento de los fallos o errores del programa ("debugging") se facilita debido a su estructura más sencilla y comprensible, por lo que los errores se pueden detectar y corregir más fácilmente.

Reducción de los costos de mantenimiento. Análogamente a la depuración, durante la fase de mantenimiento, modificar o extender los programas resulta más fácil.

Los programas son más sencillos y más rápidos de confeccionar.

Se incrementa el rendimiento de los programadores, comparado con la forma anterior que utiliza GOTO.

PROGRAMACION ESTRUCTURADO DE BAJO NIVEL En un bajo nivel, los programas estructurados con frecuencia están compuestos de simples estructuras de flujo de programa jerárquicas. Estas son secuencia, selección y repetición: 

"Secuencia" se refiere a una ejecución ordenada de instrucciones.

En "selección", una de una serie de sentencias es ejecutada dependiendo del estado del programa. Esto es usualmente expresado con palabras clave como if, then, else, end if, switch, o case. En algunos lenguajes las palabras clave no se puede escribir textualmente, pero debe ser delimitada (stropped).

En la "repetición" se ejecuta una sentencia hasta que el programa alcance un estado determinado, o las operaciones han sido aplicadas a cada elemento de una colección. Esto es usualmente expresado con palabras clave como while, repeat, for o Do, until. A menudo se recomienda que cada bucle sólo debe tener un punto de


entrada (y en la programación estructural original, también sólo un punto de salida, y pocos lenguajes refuerzan esto).

Un lenguaje es descrito como estructurado en bloque cuando tiene una sintaxis para encerrar estructuras entre palabras clave tipo corchete, como una sentencia if, fi en ALGOL 68, o una sección de código entre corchetes BEGIN..END, como en PL/I - o la de llaves {...} de C y muchos otros lenguajes posteriores.

LENGUAJE C HISTORIA Es

un

lenguaje

orientado

a

la

implementación

de Sistemas

Operativos,

concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie Se trata de un lenguaje fuertemente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.


CARACTERÍSTICAS Propiedades 

Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de archivos, proporcionadas por bibliotecas.

Es un lenguaje muy flexible que permite programar con múltiples estilos. Uno de los más empleados es el estructurado "no llevado al extremo" (permitiendo ciertas licencias de ruptura).

Un sistema de tipos que impide operaciones sin sentido.

Usa un lenguaje de preprocesador, el preprocesador de C, para tareas como definir macros e incluir múltiples archivos de código fuente.

Acceso a memoria de bajo nivel mediante el uso de punteros.

Interrupciones al procesador con uniones.

Un conjunto reducido de palabras clave.

Por defecto, el paso de parámetros a una función se realiza por valor. El paso por referencia se consigue pasando explícitamente a las funciones las direcciones de memoria de dichos parámetros.

Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de encapsulado y polimorfismo.

Tipos de datos agregados (struct) que permiten que datos relacionados (como un empleado, que tiene un id, un nombre y un salario) se combinen y se manipulen como un todo (en una única variable "empleado").

VENTAJAS 

Lenguaje muy eficiente puesto que es posible utilizar sus características de bajo nivel para realizar implementaciones óptimas.

A pesar de su bajo nivel es el lenguaje más portado en existencia, habiendo compiladores para casi todos los sistemas conocidos.

Proporciona facilidades para realizar programas modulares y/o utilizar código o bibliotecas existentes.


DESVENTAJAS El mayor problema que presenta el lenguaje C frente a los lenguajes de tipo de dato dinámico es la gran diferencia en velocidad de desarrollo: es más lento programar en C, sobre todo para el principiante. La razón estriba en que el compilador de C se limita a traducir código sin apenas añadir nada. La gestión de la memoria es un ejemplo clásico: en C el programador ha de reservar y liberar la memoria explícitamente. En otros lenguajes (como BASIC, Matlab o C#) la memoria es gestionada de forma transparente para el programador. Esto alivia la carga de trabajo humano y en muchas ocasiones previene errores, aunque también supone mayor carga de trabajo para el procesador. El mantenimiento en algunos casos puede ser más difícil y costoso que con ciertos lenguajes de más alto nivel. CONSTANTES Y VARIABLES Una constante es un dato que permanece sin cambio durante el desarrollo del algoritmo o durante la ejecución del programa. La mayoría de los lenguajes de programación nos permiten el manejo de diferentes tipos de constantes, estas pueden ser enteras, reales, caracteres y cadenas. En lenguaje C una constante se define por medio de la instrucción #define (directiva del procesador). Una variable es un dato cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecución del programa. Hay diferentes tipos de variables: enteras, reales, caracteres y cadenas. Una variable que es de cierto tipo solo puede tomar valores que correspondan a ese tipo. Si se intenta asignar un valor de tipo diferente se producirá un error. Una variable se identifica por dos atributos: el nombre de la variable (identificador) y el tipo de la variable. El identificador se puede formar con caracteres alfanuméricos y el carácter de subrayado (_ ) empezando siempre por una letra. No se admiten como identificadoras palabras reservadas del lenguaje de programación que se esté utilizando. Los nombres de variables que se elijan para el algoritmo o programa deben ser significativos y tener relación con el objeto que representa.


EXPRESIONES ARITMร‰TICAS Este tipo de expresiones nos sirve para representar fรณrmulas matemรกticas y utilizan los operadores siguientes: Operador Acciรณn +

Suma

-

Resta

*

Multiplicaciรณn

/

Divisiรณn

%

Mรณdulo

++

Incremento

--

Decremento

Las expresiones que tienen 2 o mรกs operadores requieren reglas de precedencia que permiten determinar el orden en que habrรกn de efectuarse dichas operaciones. EXPRESIONES Lร“GICAS Estas emplean los operadores lรณgicos: Operador

Acciรณn

Operadores Relacionales >

Mayor que

>=

Mayor o igual

<

Menor que

<=

Menor o igual

==

Igual

!=

Diferente

Operadores lรณgicos


&&

Y

||

O

!

Negación

SENTENCIAS SIMPLE (IF) Una instrucción alternativa simple (o simplemente alternativa simple) es una variante (más sencilla) de una instrucción alternativa doble. En lenguaje C, para escribir una alternativa simple se utiliza la sintaxis: If( <expresión_lógica> ) { <bloque_de_instrucciones> } Al

igual

que

ocurre

con

una

instrucción

alternativa

doble,

cuando

el

<bloque_de_instrucciones> de una alternativa simple sólo contiene una instrucción, los caracteres abrir llave ({) y cerrar llave (}) también son opcionales. De modo que, para resolver el problema del ejemplo se puede escribir: #include <stdio.h> int main() { float nota; printf( "\n Introduzca nota (real): " ); scanf( "%f", &nota ); if ( nota >= 5 ) printf( "\n APROBADO" ); } DOBLE (IF - ELSE) Instrucción IF La sentencia if permite comparar 2 valores entre sí. Por medio de la condición cuando se cumple entra a realizar la accion1 si no pasa a cumplir la accion2 En lenguaje C, para escribir una instrucción alternativa doble se utiliza la sintaxis: if ( <expresión_lógica> )


{ <bloque_de_instrucciones_1> } else { <bloque_de_instrucciones_2> } A la <expresión_lógica> de una instrucción alternativa doble también se le denomina condición. Para que se ejecute el <bloque_de_instrucciones_1>, la condición tiene que ser verdadera.

Por

el

contrario,

si

la

condición

es

falsa,

se

ejecutará

el

<bloque_de_instrucciones_2>. En resumen, una instrucción alternativa doble (o simplemente alternativa doble) permite seleccionar, por medio de una condición, el siguiente bloque de instrucciones a ejecutar, de entre dos posibles. Cuando un bloque de instrucciones sólo contiene una instrucción, los caracteres abrir llave ({) y cerrar llave (}) son opcionales.

CICLOS REPETITIVOS CICLO DO - WHILE La estructura do while es otra estructura repetitiva, la cual ejecuta al menos una vez su bloque repetitivo, a diferencia del while o del for que podían no ejecutar el bloque. Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo. La condición de la estructura está abajo del bloque a repetir, a diferencia del while o del for que está en la parte superior. do { Grupo cierto de instrucción(es); Instrucción(es) de rompimiento de ciclo;


} while (condición); Veamos un ejemplo en donde se imprimen los números del 1 al 10 usando esta estructura. Al final también se imprime en pantalla el valor contenido en la variable principal a fin de mostrar cuál es su valor final.

num = 1; do { printf(“%d”, num); num = num + 1;

} while (num<=10); printf(“La variable num vale: %d\n”, num); CICLO WHILE While primero evalúa la condición y no se cumple entra en el ciclo While hasta que la condición se cumpla. While (condición) { .... sentencias .... } CICLO FOR La sentencia for o para permite ejecutar un conjunto de sentencias evaluando la condición central del for. Es una estructura de control en la que se puede indicar el número mínimo de iteraciones que debe cumplir el lazo for (inicialización; condición; incremento) La ejecución del for sucede de la siguiente manera: Se inicializan las variables en la sección de inicialización Se evalúa la condición


Si el resultado es verdadero se ejecuta el código y al final se ejecuta el incremento Si el resultado es falso se termina la ejecución del ciclo y se continúa con la siguiente línea del programa. El formato del ciclo for es: For (variable = valor inicial ; condición ; incremento) {... Sentencias.... } SENTENCIAS SELECTIVAS (SWITCH) La sentencia switch puede comparar una variable con más de un posible resultado Si ustedes tuvieron el gusto de programar en clíper la sentencia es muy parecida a Case. Una instrucción alternativa múltiple (o simplemente alternativa múltiple) permite seleccionar, por medio de una expresión, el siguiente bloque de instrucciones a ejecutar de entre varios posibles. En lenguaje C, para escribir una alternativa múltiple se utiliza la sintaxis: switch ( <expresión> ) { case <expresión_1> : [ <bloque_de_instrucciones_1> ] break; case <expresión_2> : [ <bloque_de_instrucciones_2> ] break; case <expresión_n> : [ <bloque_de_instrucciones_n> ] break; default : <bloque_de_instrucciones_n+1> ] } El resultado de evaluar la <expresión> debe ser un valor perteneciente a un tipo de dato finito y ordenado, es decir, entero, lógico, carácter, enumerado o subrango. Dependiendo del valor obtenido al evaluar la <expresión>, se ejecutará un bloque de instrucciones u otro.


Opcionalmente, se puede escribir un <bloque_de_instrucciones_n+1> después de default :. Este bloque de instrucciones se ejecutará en el caso de que el valor obtenido al evaluar la <expresión>, no se encuentre en ninguna de las expresiones después de cada case.

VECTORES Vector (llamados arrays) es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). Un vector es un conjunto de datos del mismo tipo que se identifican bajo un mismo nombre. Para acceder a un elemento específico se utiliza un índice (o posición).

En C, todos los vectores están constituidos por posiciones de memoria contiguas. Los vectores pueden tener una o varias dimensiones. El formato general de la declaración es: Tipo Nombre[Tamaño]; Ejemplos: int iVec[10]; int iVec[20]={0}; //Todos los elementos se inicializan al valor 0; int iVec[5]={5,7,8,9,1}; //Se pueden inicializar cada uno de los elementos


En todos los vectores el índice del primer elemento siempre es 0 por lo tanto, cuando se declara int iVec[10] se está declarando un vector que tiene 5 elementos, desde iVec[0] hasta iVec[9] ACCESO A ELEMENTOS Para acceder a un elemento en concreto se debe utilizar el nombre del vector y entre corchetes especificar la posición de la celda. iVec[0]=3 ; // Asignar el valor 3 al primer elemento // Inicializar todos los elementos a 1: for( i = 0; i<5; i ++) { iVec[i]= 1; }

EJERCICIOS ( VECTORES CON CARACTERES ) EJERCICIO #1 #include<conio.h> #include<stdio.h> #include<string.h> int i,limite,fila,op,h; void borde() { for(i=1;i<=80;i++) { gotoxy(i,1); printf("*"); gotoxy(i,24); printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i); printf("*"); gotoxy(80,i);printf("*"); } } void main() { do { clrscr(); fila=10;


h=0; char vector1[20],vector2[20]; flushall(); gotoxy(8,3); printf("Ingrese el caracter ==> " );gets(vector1); borde(); limite=strlen(vector1); for(i=0;i<limite;i++) { textcolor(i+2); gotoxy(8,5+i);cprintf("%c",vector1[i]); fila=fila+1; } for(i=0;i<limite;i++) { if(vector1[i]=='a'||vector1[i]=='A') { vector2[h]=vector1[i]; h=h+1; } } fila=10; for(i=0;i<h;i++) { gotoxy(30,5);printf("%c",vector2[i]); fila=fila+1; } gotoxy(15,23);printf(" 1 para continuar 0 para finalizar "); scanf("%d",&op); } while(op==1); getch(); }


CORRIDO


EJERCICIO #2 #include<conio.h> #include<stdio.h> #include<string.h> int i,limite,fila,op,h; void borde() { for(i=1;i<=80;i++) { gotoxy(i,1); printf("*"); gotoxy(i,24); printf("*"); } for(i=1;i<=24;i++) { gotoxy(1,i); printf("*"); gotoxy(80,i);printf("*"); } } void main() { do { clrscr(); fila=10; h=0; char vector1[20],vector2[20]; flushall(); gotoxy(8,3); printf("Ingrese el caracter ==> " );gets(vector1); borde(); limite=strlen(vector1); for(i=0;i<limite;i++) { textcolor(i+2); gotoxy(8,5+i);cprintf("%c",vector1[i]); fila=fila+1; } for(i=0;i<limite;i++) { if(vector1[i]=='a'||vector1[i]=='A') { vector2[h]=vector1[i]; h=h+1; } } fila=10; for(i=0;i<h;i++)


{ gotoxy(30,5);printf("%c",vector2[i]); fila=fila+1; } for(i=0;i<limite;i++) { if(vector1[i]=='e'||vector1[i]=='E') { vector2[h]=vector1[i]; h=h+1; } } fila=10; for(i=0;i<h;i++) { gotoxy(30,7);printf("%c",vector2[i]); fila=fila+1; } for(i=0;i<limite;i++) { if(vector1[i]=='i'||vector1[i]=='I') { vector2[h]=vector1[i]; h=h+1; } } fila=10; for(i=0;i<h;i++) { gotoxy(30,9);printf("%c",vector2[i]); fila=fila+1; } for(i=0;i<limite;i++) { if(vector1[i]=='o'||vector1[i]=='O') { vector2[h]=vector1[i]; h=h+1; } } fila=10; for(i=0;i<h;i++) { gotoxy(30,11);printf("%c",vector2[i]); fila=fila+1; }


for(i=0;i<limite;i++) { if(vector1[i]=='u'||vector1[i]=='U') { vector2[h]=vector1[i]; h=h+1; } } fila=10; for(i=0;i<h;i++) { gotoxy(30,13);printf("%c",vector2[i]); fila=fila+1; } gotoxy(15,23);printf(" 1 para continuar 0 para finalizar "); scanf("%d",&op); } while(op==1); getch(); }


CORRIDO


MATRICES En este tutorial se describen algunos de los pros y contras de matrices. Las matrices pueden ser divertido, pero lo más importante, pueden realmente ahorrar tiempo. Autor: Lionel británicos INTRODUCCIÓN Una matriz es, por definición, una matriz rectangular de cantidades numéricas o alfabéticas que están sujetas a operaciones matemáticas. Las matrices pueden ser definidas en términos de sus dimensiones (número de filas y columnas). Echemos un vistazo a una matriz con 4 filas y 3 columnas (denotamos como matriz de 4 × 3 y llamamos A):

Cada elemento individual en una matriz se llama una célula, y puede ser denotado por la fila y la columna en particular que reside pulg Por ejemplo, en la matriz A, el elemento a32 se puede encontrar en la tercera fila y la segunda columna se cruzan.

OPERACIONES EN MATRICES 1.ADDITION Y RESTA Las operaciones de suma y resta se pueden realizar fácilmente en matrices, las matrices han proporcionado las mismas dimensiones. Lo único que se necesita es sumar o restar las celdas correspondientes de cada matriz de involucrados en la operación. Echemos un vistazo a la adición de dos matrices 2 × 3, A y B:


MULTIPLICACIÓN 2.SCALAR Multiplicar una matriz por un valor escalar implica multiplicando cada elemento de la matriz por ese valor. Aquí multiplicamos nuestra 2 × 3 matriz A por un valor escalar β:

Puede utilizarse como base para la construcción de otras matrices. Una matriz de identidad puede ser de cualquier tamaño, siempre y cuando su diagonal consiste en 1 y todas las otras células se llenan con ceros, como se muestra:

El lenguaje C permite el uso de matrices, es decir, arrays bidimensionales. En general, todo lo que vamos a estudiar en esta sección se puede extrapolar a arrays incluso ndimensionales (o tensores), aunque en la práctica el uso de arrays con más de 2 dimensiones no es muy común. La matriz es una estructura de datos básica dentro de los lenguajes de programación y conceptualmente son idénticas a sus homónimas matemáticas. Por tanto una matriz es un conjunto de datos de un tamaño definido que se encuentran consecutivos en memoria y en la que es posible el acceso al elemento que deseemos simplemente con indicar su posición. Especifica una matriz de intescrito, organizados conceptual en una matriz bidimensional de cinco filas y siete columnas, como se muestra en la ilustración siguiente: diseño conceptual de matriz multidimensional


Una matriz es un arrays multidimensional. Se definen igual que los vectores excepto que se requiere un índice por cada dimensión. Su sintaxis es la siguiente:

<tipo> <identificador> [<filas>][<columnas>] Matriz <identificador>[<índice1>][<índice2>] INICIALIZACIÓN int matriz[2][3] = { {1,2,3}, {4,5,6} }; Una matriz bidimensional se podría representar gráficamente como una tabla con filas y columnas. En el ejemplo puedes ver como se rellena y visualiza una matriz bidimensional. Se necesitan dos bucles para cada una de las operaciones. Un bucle controla las filas y otro las columnas. INGRESO void ingreso (int lim) { col=10; fila=10; for (i=1;i<=lim;i++) { for (j=1;j<=lim;j++) { do { gotoxy (col,fila); printf(" "); gotoxy (col,fila); scanf("%d",& matriz1[i][j]); } while (matriz1[i][j]<4 || matriz1[i][j]>23); col=col+5; incremento las columnas } fila=fila+1; incremento las filas


col=10; inicializo las columnas } } IMPRESIĂ&#x201C;N void imprimo (int lim) { col = 30; fila = 10; for (i=1;i<=lim;i++) { for (j=1;j<=lim;j++) { gotoxy (col,fila); printf("%d", matriz1[i][j]); col = col + 5; } fila = fila +1; col=30; } }


BIBLIOGRAFIA

García-Bermejo Giner, José Rafael (2 de 2008) (en español). "Programación estructurada en C" (1 edición). Pearson Prentice Hall. ISBN 978-84-8322-423-6.

http://eztigma.brinkster.net/lenguajec.html

http://html.rincondelvago.com/lenguaje-c.html http://es.wikipedia.org/wiki/C_(lenguaje_de_programaci%C3%B3n)

http://www.monografias.com/trabajos4/lenguajec/lenguajec.shtml#ixzz2HDfnUIbz http://msdn.microsoft.com/es-es/library/7wkxxx2e.aspx

http://www.cpp-home.com/archives/185.html

Elemento I  

Producto Final

Read more
Read more
Similar to
Popular now
Just for you